"""Test Ledger Account schema.""" from datetime import datetime from ledger.schemas.ledger_account import ( LedgerAccountCurrentBalanceSchema, LedgerAccountListSchema, LedgerAccountSchema, ) from tests.utils.factories import LedgerAccountFactory def test_ledger_account_schema(mock_event_fixtures): """Test Ledger Account schema.""" ledger_account = LedgerAccountFactory.create(account_id=1) res = LedgerAccountSchema().dump(ledger_account) assert res == { 'ledger_account_id': ledger_account.ledger_account_id, 'currency_amount': str(ledger_account.currency_amount), 'currency_code': ledger_account.currency_code, 'current_balance': str(ledger_account.current_balance), 'abacus_event_id': ledger_account.abacus_event_id, 'note': ledger_account.note, 'account_id': ledger_account.account_id, 'contract_id': ledger_account.contract_id, 'previous_balance': str(ledger_account.previous_balance), } def test_ledger_account_schema_load(): """Test Ledger Account schema to load.""" test_data = [ { 'currency_amount': '-100.5', 'currency_code': 'CAD', 'abacus_event_id': 6, 'account_id': 10331, 'note': 'some note', } ] entries = LedgerAccountSchema( exclude=( 'ledger_account_id', 'current_balance', 'previous_balance', ), many=True, ).load(test_data) assert str(entries[0]['currency_amount']) == str(test_data[0]['currency_amount']) def test_current_balance_schema(): """Test Ledger Account current balance schema.""" mock_data = { 'current_balance': '6324.73', 'currency_code': 'SEK', 'currency_name': 'Swedish Krona', } res = LedgerAccountCurrentBalanceSchema(exclude=['account_id']).dump(mock_data) assert res == mock_data def test_ledger_account_list_schema(): """Test ledger_account list serialization.""" mock_ledger_account_details = { 'ledger_account_id': 1, 'account_id': 123, 'accounting_period_id': 1, 'amount': '320260.99', 'contract_id': 44, 'currency_code': 'USD', 'date': datetime(2020, 5, 17), 'ending_balance': '320260.99', 'opening_balance': '0.00', 'transaction_type': 'accounting_run', } result = LedgerAccountListSchema().dump(mock_ledger_account_details) mock_ledger_account_details['date'] = '2020-05-17' mock_ledger_account_details['currency_name'] = 'US Dollar' assert result == mock_ledger_account_details