def expenses(): if 'access_token' not in session: return redirect(url_for("home2")) curr_dir = os.path.dirname(inspect.getfile(inspect.currentframe())) parent_dir = os.path.dirname(curr_dir) file_dir = os.path.join(parent_dir, 'txt_files') sObj = Splitwise(Config.consumer_key, Config.consumer_secret) sObj.setAccessToken(session['access_token']) exps = sObj.getExpenses(dated_after=session['date_from'], dated_before=session['date_to'], limit=0) expenseids = [] for i in exps: expenseids.append(i.getId()) exp_concat = [] for i in expenseids: exp = sObj.getExpense(i) for j in exp.getUsers(): if j.getFirstName() == 'Marathe': #3708390: if exp.getCreatedBy().getFirstName() == j.getFirstName( ) or exp.getDescription() == 'Payment': owed = 0 else: owed = j.getOwedShare() exp_concat.append([ exp.getId(), exp.getDate(), '', j.getFirstName(), exp.getCost(), exp.getCategory().getName(), exp.getDescription(), 'SPLITWISE', '', owed ]) else: pass df = pd.DataFrame(exp_concat, columns=[ 'transation_id', 'date', 'account_id', 'account_owner', 'amount', 'old_category', 'name', 'acct_type', 'pending', 'actual_amount' ]) df['category'] = '' df['date'] = pd.to_datetime(df['date']).dt.date df = df[df['name'] != 'Settle all balances'] df.to_csv(os.path.join(file_dir, 'trans_splitwise.txt'), sep='|', header=False, index=False) session.clear() return render_template('close_split.html')
class GetExpenseTestCase(unittest.TestCase): def setUp(self): self.sObj = Splitwise('consumerkey', 'consumersecret') def test_getExpense_equally_distributed_success(self, mockMakeRequest): mockMakeRequest.return_value = '{"expense":{"id":1010404721,"group_id":19433671,"friendship_id":null,"expense_bundle_id":null,"description":"test","repeats":false,"repeat_interval":"never","email_reminder":false,"email_reminder_in_advance":-1,"next_repeat":null,"details":null,"comments_count":0,"payment":false,"creation_method":"equal","transaction_method":"offline","transaction_confirmed":false,"transaction_id":null,"cost":"10.0","currency_code":"SGD","repayments":[{"from":643871,"to":79774,"amount":"5.0"}],"date":"2020-06-23T09:56:09Z","created_at":"2020-06-23T09:56:14Z","created_by":{"id":79774,"first_name":"Naman","last_name":"Aggarwal","picture":{"medium":"https://splitwise.s3.amazonaws.com/uploads/user/avatar/79774/medium_mypic.jpg"},"custom_picture":true},"updated_at":"2020-06-23T09:56:14Z","updated_by":null,"deleted_at":null,"deleted_by":null,"category":{"id":18,"name":"General"},"receipt":{"large":null,"original":null},"users":[{"user":{"id":79774,"first_name":"Naman","last_name":"Aggarwal","picture":{"medium":"https://splitwise.s3.amazonaws.com/uploads/user/avatar/79774/medium_mypic.jpg"}},"user_id":79774,"paid_share":"10.0","owed_share":"5.0","net_balance":"5.0"},{"user":{"id":643871,"first_name":"Shantanu","last_name":"Alshi","picture":{"medium":"https://s3.amazonaws.com/splitwise/uploads/user/default_avatars/avatar-blue19-100px.png"}},"user_id":643871,"paid_share":"0.0","owed_share":"5.0","net_balance":"-5.0"}],"comments":[]}}' # noqa: E501 expense = self.sObj.getExpense(1010404721) mockMakeRequest.assert_called_with( "https://secure.splitwise.com/api/v3.0/get_expense/1010404721") self.assertEqual(expense.getId(), 1010404721) self.assertEqual(expense.getGroupId(), 19433671) self.assertEqual(expense.getFriendshipId(), None) self.assertEqual(expense.getExpenseBundleId(), None) self.assertEqual(expense.getDescription(), "test") self.assertEqual(expense.getRepeatInterval(), "never") self.assertEqual(expense.getEmailReminderInAdvance(), -1) self.assertEqual(expense.getNextRepeat(), None) self.assertEqual(expense.getDetails(), None) self.assertEqual(expense.getCommentsCount(), 0) self.assertEqual(expense.getCreationMethod(), "equal") self.assertEqual(expense.getTransactionMethod(), "offline") # self.assertEqual(expense.getTransactionId(), None) self.assertEqual(expense.getCost(), "10.0") self.assertEqual(expense.getCurrencyCode(), "SGD") self.assertEqual(len(expense.getRepayments()), 1) self.assertEqual(expense.getRepayments()[0].getFromUser(), 643871) self.assertEqual(expense.getRepayments()[0].getToUser(), 79774) self.assertEqual(expense.getRepayments()[0].getAmount(), "5.0") self.assertEqual(expense.getDate(), "2020-06-23T09:56:09Z") self.assertEqual(expense.getCreatedAt(), "2020-06-23T09:56:14Z") self.assertEqual(expense.getCreatedBy().getId(), 79774) self.assertEqual(expense.getCreatedBy().getFirstName(), "Naman") self.assertEqual(expense.getCreatedBy().getLastName(), "Aggarwal") self.assertEqual( expense.getCreatedBy().getPicture().getMedium(), "https://splitwise.s3.amazonaws.com/uploads/user/avatar/79774/medium_mypic.jpg" ) self.assertEqual(expense.getUpdatedAt(), "2020-06-23T09:56:14Z") self.assertEqual(expense.getUpdatedBy(), None) self.assertEqual(expense.getDeletedAt(), None) self.assertEqual(expense.getDeletedBy(), None) self.assertEqual(expense.getCategory().getId(), 18) self.assertEqual(expense.getCategory().getName(), "General") self.assertEqual(expense.getReceipt().getLarge(), None) self.assertEqual(expense.getReceipt().getOriginal(), None) self.assertEqual(len(expense.getUsers()), 2) self.assertEqual(expense.getUsers()[0].getId(), 79774) self.assertEqual(expense.getUsers()[0].getFirstName(), "Naman") self.assertEqual(expense.getUsers()[0].getLastName(), "Aggarwal") self.assertEqual( expense.getUsers()[0].getPicture().getMedium(), "https://splitwise.s3.amazonaws.com/uploads/user/avatar/79774/medium_mypic.jpg" ) self.assertEqual(expense.getUsers()[0].getPaidShare(), "10.0") self.assertEqual(expense.getUsers()[0].getOwedShare(), "5.0") self.assertEqual(expense.getUsers()[0].getNetBalance(), "5.0") self.assertEqual(expense.getUsers()[1].getId(), 643871) self.assertEqual(expense.getUsers()[1].getFirstName(), "Shantanu") self.assertEqual(expense.getUsers()[1].getLastName(), "Alshi") self.assertEqual( expense.getUsers()[1].getPicture().getMedium(), "https://s3.amazonaws.com/splitwise/uploads/user/default_avatars/avatar-blue19-100px.png" ) self.assertEqual(expense.getUsers()[1].getPaidShare(), "0.0") self.assertEqual(expense.getUsers()[1].getOwedShare(), "5.0") self.assertEqual(expense.getUsers()[1].getNetBalance(), "-5.0") # self.assertEqual(len(expense.getComments()), 0) def test_getExpense_equally_except_one_success(self, mockMakeRequest): mockMakeRequest.return_value = '{"expense":{"id":1010396012,"group_id":10843533,"friendship_id":null,"expense_bundle_id":null,"description":"anna shop groceries parantha execpt curd","repeats":false,"repeat_interval":"never","email_reminder":false,"email_reminder_in_advance":-1,"next_repeat":null,"details":null,"comments_count":0,"payment":false,"creation_method":"equal","transaction_method":"offline","transaction_confirmed":false,"transaction_id":null,"cost":"8.0","currency_code":"SGD","repayments":[{"from":281236,"to":79774,"amount":"2.67"},{"from":643871,"to":79774,"amount":"2.66"}],"date":"2020-06-23T09:33:07Z","created_at":"2020-06-23T09:33:38Z","created_by":{"id":79774,"first_name":"Naman","last_name":"Aggarwal","picture":{"medium":"https://splitwise.s3.amazonaws.com/uploads/user/avatar/79774/medium_mypic.jpg"},"custom_picture":true},"updated_at":"2020-06-23T09:33:38Z","updated_by":null,"deleted_at":null,"deleted_by":null,"category":{"id":12,"name":"Groceries"},"receipt":{"large":null,"original":null},"users":[{"user":{"id":79774,"first_name":"Naman","last_name":"Aggarwal","picture":{"medium":"https://splitwise.s3.amazonaws.com/uploads/user/avatar/79774/medium_mypic.jpg"}},"user_id":79774,"paid_share":"8.0","owed_share":"2.67","net_balance":"5.33"},{"user":{"id":281236,"first_name":"Siddharth","last_name":"Goel","picture":{"medium":"https://splitwise.s3.amazonaws.com/uploads/user/avatar/281236/medium_f5fccc37-0a88-4519-9398-59c8c19b92aa.jpeg"}},"user_id":281236,"paid_share":"0.0","owed_share":"2.67","net_balance":"-2.67"},{"user":{"id":643871,"first_name":"Shantanu","last_name":"Alshi","picture":{"medium":"https://s3.amazonaws.com/splitwise/uploads/user/default_avatars/avatar-blue19-100px.png"}},"user_id":643871,"paid_share":"0.0","owed_share":"2.66","net_balance":"-2.66"}],"comments":[]}}' # noqa: E501 expense = self.sObj.getExpense(1010396012) mockMakeRequest.assert_called_with( "https://secure.splitwise.com/api/v3.0/get_expense/1010396012") self.assertEqual(expense.getId(), 1010396012) self.assertEqual(expense.getGroupId(), 10843533) self.assertEqual(expense.getFriendshipId(), None) self.assertEqual(expense.getExpenseBundleId(), None) self.assertEqual(expense.getDescription(), "anna shop groceries parantha execpt curd") self.assertEqual(expense.getRepeatInterval(), "never") self.assertEqual(expense.getEmailReminderInAdvance(), -1) self.assertEqual(expense.getNextRepeat(), None) self.assertEqual(expense.getDetails(), None) self.assertEqual(expense.getCommentsCount(), 0) self.assertEqual(expense.getCreationMethod(), "equal") self.assertEqual(expense.getTransactionMethod(), "offline") # self.assertEqual(expense.getTransactionId(), None) self.assertEqual(expense.getCost(), "8.0") self.assertEqual(expense.getCurrencyCode(), "SGD") self.assertEqual(len(expense.getRepayments()), 2) self.assertEqual(expense.getRepayments()[0].getFromUser(), 281236) self.assertEqual(expense.getRepayments()[0].getToUser(), 79774) self.assertEqual(expense.getRepayments()[0].getAmount(), "2.67") self.assertEqual(expense.getRepayments()[1].getFromUser(), 643871) self.assertEqual(expense.getRepayments()[1].getToUser(), 79774) self.assertEqual(expense.getRepayments()[1].getAmount(), "2.66") self.assertEqual(expense.getDate(), "2020-06-23T09:33:07Z") self.assertEqual(expense.getCreatedAt(), "2020-06-23T09:33:38Z") self.assertEqual(expense.getCreatedBy().getId(), 79774) self.assertEqual(expense.getCreatedBy().getFirstName(), "Naman") self.assertEqual(expense.getCreatedBy().getLastName(), "Aggarwal") self.assertEqual( expense.getCreatedBy().getPicture().getMedium(), "https://splitwise.s3.amazonaws.com/uploads/user/avatar/79774/medium_mypic.jpg" ) self.assertEqual(expense.getUpdatedAt(), "2020-06-23T09:33:38Z") self.assertEqual(expense.getUpdatedBy(), None) self.assertEqual(expense.getDeletedAt(), None) self.assertEqual(expense.getDeletedBy(), None) self.assertEqual(expense.getCategory().getId(), 12) self.assertEqual(expense.getCategory().getName(), "Groceries") self.assertEqual(expense.getReceipt().getLarge(), None) self.assertEqual(expense.getReceipt().getOriginal(), None) self.assertEqual(len(expense.getUsers()), 3) self.assertEqual(expense.getUsers()[0].getId(), 79774) self.assertEqual(expense.getUsers()[0].getFirstName(), "Naman") self.assertEqual(expense.getUsers()[0].getLastName(), "Aggarwal") self.assertEqual( expense.getUsers()[0].getPicture().getMedium(), "https://splitwise.s3.amazonaws.com/uploads/user/avatar/79774/medium_mypic.jpg" ) self.assertEqual(expense.getUsers()[0].getPaidShare(), "8.0") self.assertEqual(expense.getUsers()[0].getOwedShare(), "2.67") self.assertEqual(expense.getUsers()[0].getNetBalance(), "5.33") self.assertEqual(expense.getUsers()[1].getId(), 281236) self.assertEqual(expense.getUsers()[1].getFirstName(), "Siddharth") self.assertEqual(expense.getUsers()[1].getLastName(), "Goel") self.assertEqual( expense.getUsers()[1].getPicture().getMedium(), "https://splitwise.s3.amazonaws.com/uploads/user/avatar/281236/medium_f5fccc37-0a88-4519-9398-59c8c19b92aa.jpeg" ) self.assertEqual(expense.getUsers()[1].getPaidShare(), "0.0") self.assertEqual(expense.getUsers()[1].getOwedShare(), "2.67") self.assertEqual(expense.getUsers()[1].getNetBalance(), "-2.67") self.assertEqual(expense.getUsers()[2].getId(), 643871) self.assertEqual(expense.getUsers()[2].getFirstName(), "Shantanu") self.assertEqual(expense.getUsers()[2].getLastName(), "Alshi") self.assertEqual( expense.getUsers()[2].getPicture().getMedium(), "https://s3.amazonaws.com/splitwise/uploads/user/default_avatars/avatar-blue19-100px.png" ) self.assertEqual(expense.getUsers()[2].getPaidShare(), "0.0") self.assertEqual(expense.getUsers()[2].getOwedShare(), "2.66") self.assertEqual(expense.getUsers()[2].getNetBalance(), "-2.66") def test_getExpense_itemized_success(self, mockMakeRequest): mockMakeRequest.return_value = '{"expense":{"id":1004919507,"group_id":10843533,"friendship_id":null,"expense_bundle_id":null,"description":"Anna shop","repeats":false,"repeat_interval":"never","email_reminder":false,"email_reminder_in_advance":-1,"next_repeat":null,"details":"Mango - 2.20 (Naman Aggarwal)\\nBread - 3.00 (Siddharth Goel)\\nVegetable \\u0026 misc - 5.80 (Naman Aggarwal, Shantanu Alshi, Siddharth Goel)\\nTax: Naman Aggarwal - 0.00, ruks - 0.00, Shantanu Alshi - 0.00, Siddharth Goel - 0.00\\nTip: Naman Aggarwal - 0.00, ruks - 0.00, Shantanu Alshi - 0.00, Siddharth Goel - 0.00\\n","comments_count":0,"payment":false,"creation_method":"itemized","transaction_method":"offline","transaction_confirmed":false,"transaction_id":null,"cost":"11.0","currency_code":"SGD","repayments":[{"from":79774,"to":281236,"amount":"4.14"},{"from":643871,"to":281236,"amount":"1.93"}],"date":"2020-06-14T06:53:49Z","created_at":"2020-06-14T06:54:37Z","created_by":{"id":281236,"first_name":"Siddharth","last_name":"Goel","picture":{"medium":"https://splitwise.s3.amazonaws.com/uploads/user/avatar/281236/medium_f5fccc37-0a88-4519-9398-59c8c19b92aa.jpeg"},"custom_picture":true},"updated_at":"2020-06-14T06:54:37Z","updated_by":null,"deleted_at":null,"deleted_by":null,"category":{"id":12,"name":"Groceries"},"receipt":{"large":null,"original":null},"users":[{"user":{"id":281236,"first_name":"Siddharth","last_name":"Goel","picture":{"medium":"https://splitwise.s3.amazonaws.com/uploads/user/avatar/281236/medium_f5fccc37-0a88-4519-9398-59c8c19b92aa.jpeg"}},"user_id":281236,"paid_share":"11.0","owed_share":"4.93","net_balance":"6.07"},{"user":{"id":79774,"first_name":"Naman","last_name":"Aggarwal","picture":{"medium":"https://splitwise.s3.amazonaws.com/uploads/user/avatar/79774/medium_mypic.jpg"}},"user_id":79774,"paid_share":"0.0","owed_share":"4.14","net_balance":"-4.14"},{"user":{"id":643871,"first_name":"Shantanu","last_name":"Alshi","picture":{"medium":"https://s3.amazonaws.com/splitwise/uploads/user/default_avatars/avatar-blue19-100px.png"}},"user_id":643871,"paid_share":"0.0","owed_share":"1.93","net_balance":"-1.93"}],"comments":[]}}' # noqa: E501 expense = self.sObj.getExpense(1004919507) mockMakeRequest.assert_called_with( "https://secure.splitwise.com/api/v3.0/get_expense/1004919507") self.assertEqual(expense.getId(), 1004919507) self.assertEqual(expense.getGroupId(), 10843533) self.assertEqual(expense.getFriendshipId(), None) self.assertEqual(expense.getExpenseBundleId(), None) self.assertEqual(expense.getDescription(), "Anna shop") self.assertEqual(expense.getRepeatInterval(), "never") self.assertEqual(expense.getEmailReminderInAdvance(), -1) self.assertEqual(expense.getNextRepeat(), None) # self.assertEqual(expense.getDetails(), # "Mango - 2.20 (Naman Aggarwal)\nBread - 3.00 (Siddharth Goel)\nVegetable \u0026 misc - 5.80\ # (Naman Aggarwal, Shantanu Alshi, Siddharth Goel)\nTax: Naman Aggarwal - 0.00, ruks - 0.00, Shantanu Alshi - 0.00, \ # Siddharth Goel - 0.00\nTip: Naman Aggarwal - 0.00, ruks - 0.00, Shantanu Alshi - 0.00, Siddharth Goel - 0.00\n") self.assertEqual(expense.getCommentsCount(), 0) self.assertEqual(expense.getCreationMethod(), "itemized") self.assertEqual(expense.getTransactionMethod(), "offline") # self.assertEqual(expense.getTransactionId(), None) self.assertEqual(expense.getCost(), "11.0") self.assertEqual(expense.getCurrencyCode(), "SGD") self.assertEqual(len(expense.getRepayments()), 2) self.assertEqual(expense.getRepayments()[0].getFromUser(), 79774) self.assertEqual(expense.getRepayments()[0].getToUser(), 281236) self.assertEqual(expense.getRepayments()[0].getAmount(), "4.14") self.assertEqual(expense.getRepayments()[1].getFromUser(), 643871) self.assertEqual(expense.getRepayments()[1].getToUser(), 281236) self.assertEqual(expense.getRepayments()[1].getAmount(), "1.93") self.assertEqual(expense.getDate(), "2020-06-14T06:53:49Z") self.assertEqual(expense.getCreatedAt(), "2020-06-14T06:54:37Z") self.assertEqual(expense.getCreatedBy().getId(), 281236) self.assertEqual(expense.getCreatedBy().getFirstName(), "Siddharth") self.assertEqual(expense.getCreatedBy().getLastName(), "Goel") self.assertEqual( expense.getCreatedBy().getPicture().getMedium(), "https://splitwise.s3.amazonaws.com/uploads/user/avatar/281236/medium_f5fccc37-0a88-4519-9398-59c8c19b92aa.jpeg" ) self.assertEqual(expense.getUpdatedAt(), "2020-06-14T06:54:37Z") self.assertEqual(expense.getUpdatedBy(), None) self.assertEqual(expense.getDeletedAt(), None) self.assertEqual(expense.getDeletedBy(), None) self.assertEqual(expense.getCategory().getId(), 12) self.assertEqual(expense.getCategory().getName(), "Groceries") self.assertEqual(expense.getReceipt().getLarge(), None) self.assertEqual(expense.getReceipt().getOriginal(), None) self.assertEqual(len(expense.getUsers()), 3) self.assertEqual(expense.getUsers()[0].getId(), 281236) self.assertEqual(expense.getUsers()[0].getFirstName(), "Siddharth") self.assertEqual(expense.getUsers()[0].getLastName(), "Goel") self.assertEqual( expense.getUsers()[0].getPicture().getMedium(), "https://splitwise.s3.amazonaws.com/uploads/user/avatar/281236/medium_f5fccc37-0a88-4519-9398-59c8c19b92aa.jpeg" ) self.assertEqual(expense.getUsers()[0].getPaidShare(), "11.0") self.assertEqual(expense.getUsers()[0].getOwedShare(), "4.93") self.assertEqual(expense.getUsers()[0].getNetBalance(), "6.07") self.assertEqual(expense.getUsers()[1].getId(), 79774) self.assertEqual(expense.getUsers()[1].getFirstName(), "Naman") self.assertEqual(expense.getUsers()[1].getLastName(), "Aggarwal") self.assertEqual( expense.getUsers()[1].getPicture().getMedium(), "https://splitwise.s3.amazonaws.com/uploads/user/avatar/79774/medium_mypic.jpg" ) self.assertEqual(expense.getUsers()[1].getPaidShare(), "0.0") self.assertEqual(expense.getUsers()[1].getOwedShare(), "4.14") self.assertEqual(expense.getUsers()[1].getNetBalance(), "-4.14") self.assertEqual(expense.getUsers()[2].getId(), 643871) self.assertEqual(expense.getUsers()[2].getFirstName(), "Shantanu") self.assertEqual(expense.getUsers()[2].getLastName(), "Alshi") self.assertEqual( expense.getUsers()[2].getPicture().getMedium(), "https://s3.amazonaws.com/splitwise/uploads/user/default_avatars/avatar-blue19-100px.png" ) self.assertEqual(expense.getUsers()[2].getPaidShare(), "0.0") self.assertEqual(expense.getUsers()[2].getOwedShare(), "1.93") self.assertEqual(expense.getUsers()[2].getNetBalance(), "-1.93") def test_getExpense_non_group_success(self, mockMakeRequest): mockMakeRequest.return_value = '{"expense":{"id":982430660,"group_id":null,"friendship_id":null,"expense_bundle_id":null,"description":"From flatmates","repeats":false,"repeat_interval":"never","email_reminder":false,"email_reminder_in_advance":-1,"next_repeat":null,"details":null,"comments_count":0,"payment":false,"creation_method":"equal","transaction_method":"offline","transaction_confirmed":false,"transaction_id":null,"cost":"2162.82","currency_code":"SGD","repayments":[{"from":784241,"to":79774,"amount":"2162.82"}],"date":"2020-05-06T05:48:14Z","created_at":"2020-05-06T05:48:30Z","created_by":{"id":79774,"first_name":"Naman","last_name":"Aggarwal","picture":{"medium":"https://splitwise.s3.amazonaws.com/uploads/user/avatar/79774/medium_mypic.jpg"},"custom_picture":true},"updated_at":"2020-05-06T05:48:30Z","updated_by":null,"deleted_at":null,"deleted_by":null,"category":{"id":18,"name":"General"},"receipt":{"large":null,"original":null},"users":[{"user":{"id":79774,"first_name":"Naman","last_name":"Aggarwal","picture":{"medium":"https://splitwise.s3.amazonaws.com/uploads/user/avatar/79774/medium_mypic.jpg"}},"user_id":79774,"paid_share":"2162.82","owed_share":"0.0","net_balance":"2162.82"},{"user":{"id":784241,"first_name":"ruks","last_name":null,"picture":{"medium":"https://s3.amazonaws.com/splitwise/uploads/user/default_avatars/avatar-ruby47-100px.png"}},"user_id":784241,"paid_share":"0.0","owed_share":"2162.82","net_balance":"-2162.82"}],"comments":[]}}' # noqa: E501 expense = self.sObj.getExpense(982430660) mockMakeRequest.assert_called_with( "https://secure.splitwise.com/api/v3.0/get_expense/982430660") self.assertEqual(expense.getId(), 982430660) self.assertEqual(expense.getGroupId(), None) self.assertEqual(expense.getFriendshipId(), None) self.assertEqual(expense.getExpenseBundleId(), None) self.assertEqual(expense.getDescription(), "From flatmates") self.assertEqual(expense.getRepeatInterval(), "never") self.assertEqual(expense.getEmailReminderInAdvance(), -1) self.assertEqual(expense.getNextRepeat(), None) self.assertEqual(expense.getDetails(), None) self.assertEqual(expense.getCommentsCount(), 0) self.assertEqual(expense.getCreationMethod(), "equal") self.assertEqual(expense.getTransactionMethod(), "offline") # self.assertEqual(expense.getTransactionId(), None) self.assertEqual(expense.getCost(), "2162.82") self.assertEqual(expense.getCurrencyCode(), "SGD") self.assertEqual(len(expense.getRepayments()), 1) self.assertEqual(expense.getRepayments()[0].getFromUser(), 784241) self.assertEqual(expense.getRepayments()[0].getToUser(), 79774) self.assertEqual(expense.getRepayments()[0].getAmount(), "2162.82") self.assertEqual(expense.getDate(), "2020-05-06T05:48:14Z") self.assertEqual(expense.getCreatedAt(), "2020-05-06T05:48:30Z") self.assertEqual(expense.getCreatedBy().getId(), 79774) self.assertEqual(expense.getCreatedBy().getFirstName(), "Naman") self.assertEqual(expense.getCreatedBy().getLastName(), "Aggarwal") self.assertEqual( expense.getCreatedBy().getPicture().getMedium(), "https://splitwise.s3.amazonaws.com/uploads/user/avatar/79774/medium_mypic.jpg" ) self.assertEqual(expense.getUpdatedAt(), "2020-05-06T05:48:30Z") self.assertEqual(expense.getUpdatedBy(), None) self.assertEqual(expense.getDeletedAt(), None) self.assertEqual(expense.getDeletedBy(), None) self.assertEqual(expense.getCategory().getId(), 18) self.assertEqual(expense.getCategory().getName(), "General") self.assertEqual(expense.getReceipt().getLarge(), None) self.assertEqual(expense.getReceipt().getOriginal(), None) self.assertEqual(len(expense.getUsers()), 2) self.assertEqual(expense.getUsers()[0].getId(), 79774) self.assertEqual(expense.getUsers()[0].getFirstName(), "Naman") self.assertEqual(expense.getUsers()[0].getLastName(), "Aggarwal") self.assertEqual( expense.getUsers()[0].getPicture().getMedium(), "https://splitwise.s3.amazonaws.com/uploads/user/avatar/79774/medium_mypic.jpg" ) self.assertEqual(expense.getUsers()[0].getPaidShare(), "2162.82") self.assertEqual(expense.getUsers()[0].getOwedShare(), "0.0") self.assertEqual(expense.getUsers()[0].getNetBalance(), "2162.82") self.assertEqual(expense.getUsers()[1].getId(), 784241) self.assertEqual(expense.getUsers()[1].getFirstName(), "ruks") self.assertEqual(expense.getUsers()[1].getLastName(), None) self.assertEqual( expense.getUsers()[1].getPicture().getMedium(), "https://s3.amazonaws.com/splitwise/uploads/user/default_avatars/avatar-ruby47-100px.png" ) self.assertEqual(expense.getUsers()[1].getPaidShare(), "0.0") self.assertEqual(expense.getUsers()[1].getOwedShare(), "2162.82") self.assertEqual(expense.getUsers()[1].getNetBalance(), "-2162.82") def test_getExpense_exception(self, mockMakeRequest): mockMakeRequest.side_effect = Exception( "Invalid response %s. Please check your consumer key and secret." % 404) with self.assertRaises(Exception): self.sObj.getExpense(123) mockMakeRequest.assert_called_with( "https://secure.splitwise.com/api/v3.0/get_expense/123")