def test_query_by_user_id(client): new_account = Account(id="account_id", balance=100, user_id="Bob") db.session.add(new_account) new_account = Account(id="account_id_2", balance=100, user_id="Bob") db.session.add(new_account) db.session.commit() r = client.get('/accounts/users/Bob/') json_response = json.loads(r.get_data(as_text=True)) assert json_response == [ {'balance': 100.0, 'id': 'account_id', 'user_id': 'Bob'}, {'balance': 100.0, 'id': 'account_id_2', 'user_id': 'Bob'} ], "Wrong return from user_id query" assert r.status == '200 OK', "Response not 200"
def apply(self): account_id = str(uuid4()) if 'account_id' in self.payload: account_id = self.payload['account_id'] new_account = Account(id=account_id, balance=self.payload['balance'], user_id=self.payload['user_id']) db.session.add(new_account) self.payload['account_id'] = new_account.id self.update_accounts_version()
def apply_snapshot(snapshot_response): snapshot = snapshot_response['snapshot'] version = snapshot_response['version'] from accountService.eventSourcing.aggregates import Account, Constants, db for account in snapshot: new_account = Account(id=account['id'], balance=account['balance'], user_id=account['user_id']) db.session.add(new_account) service_version = Constants.query.filter_by(key="accounts_version").first() service_version.value = version db.session.commit()
def test_delete_account_command(client): account_id = "TEST_ID" new_account = Account(id=account_id, balance=100, user_id="Bob") db.session.add(new_account) db.session.commit() delete_account_command = { "type": "DELETE", "payload": { "account_id": account_id } } r = client.post('/accounts/commands/', data=json.dumps(delete_account_command)) accounts = Account.query.all() assert len(accounts) == 0, "Account was not deleted" assert r.status == '202 ACCEPTED', "Response not 202" version = Constants.query.filter_by(key='accounts_version').first() assert version.value == 1, "Aggregate version not updated"
def test_deposit_created_event(client): new_account = Account(id="account_id", balance=100, user_id="Bob") db.session.add(new_account) db.session.commit() deposit_created_event = { "type": "DEPOSIT_CREATED", "command_id": "test", "payload": { "account_id": "account_id", "amount": 50, "transaction_id": "transaction_id" } } r = client.post('/accounts/events/', data=json.dumps(deposit_created_event)) account = Account.query.filter_by(id="account_id").first() assert account.balance == 150, "Account balance was not increased." assert r.status == '202 ACCEPTED', "Response not 202" version = Constants.query.filter_by(key='accounts_version').first() assert version.value == 1, "Aggregate version not updated"