"""Test for ledger_adjustment schema.""" from moneyhub.constants.constants import DistributionType from moneyhub.constants.constants import PAGINATION_TYPE_STANDARD from moneyhub.schemas.ledger_adjustment import BreakdownItemSchema from moneyhub.schemas.ledger_adjustment import ExpenseSchema from moneyhub.schemas.ledger_adjustment import ExpenseSubaccountSchema from moneyhub.schemas.ledger_adjustment import LedgerAdjustmentAppliedSchema from moneyhub.schemas.ledger_adjustment import LedgerAdjustmentBreakdownItemSchema from moneyhub.schemas.ledger_adjustment import LedgerAdjustmentExpenseArtistSchema from moneyhub.schemas.ledger_adjustment import LedgerAdjustmentExpenseSchema from moneyhub.schemas.ledger_adjustment import LedgerAdjustmentExpenseUPCsSchema from moneyhub.schemas.ledger_adjustment import LedgerAdjustmentSchema from moneyhub.schemas.ledger_adjustment import PaginatedExpenseSchema from moneyhub.schemas.pagination import PaginationSchema def test_ledger_adjustment_schema(): """Test ledger adjustment schema.""" expected = LedgerAdjustmentSchema( worksheet_adjustment_id=1, account_id=35968, activity_statement_period_id=285, adjustment_amount_payee_currency=20.00, adjustment_payee_currency_code='USD', apply_to_statement_period_id=286, contract_id=None, reference_adjustment_type_id=1, reference_adjustment_type_name='Label Earnings', note='mock adjustment', ) data = { 'worksheet_adjustment_id': 1, 'account_id': 35968, 'activity_statement_period_id': 285, 'adjustment_amount_payee_currency': '20.00', 'adjustment_payee_currency_code': 'USD', 'apply_to_statement_period_id': 286, 'contract_id': None, 'reference_adjustment_type_id': 1, 'reference_adjustment_type_name': 'Label Earnings', 'note': 'mock adjustment', } actual = LedgerAdjustmentSchema(**data) assert actual == expected def test_ledger_adjustment_applied_schema(): """Test ledger adjustment schema.""" expected = LedgerAdjustmentAppliedSchema( adjustment_total_payee_currency=4581.98, adjustment_payee_currency_code='AUD', breakdown_items=[ LedgerAdjustmentBreakdownItemSchema( adjustment_total_payee_currency=4581.98, adjustment_payee_currency_code='AUD', contract_id=1, reference_adjustment_type_id=1, reference_adjustment_type_name='Label Earnings' ) ], statement_period_id=1 ) data = { 'adjustment_total_payee_currency': '4581.98', 'adjustment_payee_currency_code': 'AUD', 'breakdown_items': [ { 'adjustment_total_payee_currency': '4581.98', 'adjustment_payee_currency_code': 'AUD', 'contract_id': 1, 'reference_adjustment_type_id': 1, 'reference_adjustment_type_name': 'Label Earnings' } ], 'statement_period_id': 1 } actual = LedgerAdjustmentAppliedSchema(**data) assert actual == expected def test_ledger_adjustment_detail_applied_schema(): """Test ledger adjustment detail applied schema.""" expected = LedgerAdjustmentExpenseSchema( amount=4581.98, currency_code='AUD', breakdown_items=[ BreakdownItemSchema( adjustment_total_payee_currency=4581.98, adjustment_payee_currency_code='AUD', reference_adjustment_type_id=1, reference_adjustment_type_name='Label Earnings' ) ], statement_period_id=123 ) data = { 'amount': '4581.98', 'currency_code': 'AUD', 'breakdown_items': [ { 'adjustment_total_payee_currency': '4581.98', 'adjustment_payee_currency_code': 'AUD', 'reference_adjustment_type_id': 1, 'reference_adjustment_type_name': 'Label Earnings' } ], 'statement_period_id': 123 } actual = LedgerAdjustmentExpenseSchema(**data) assert actual == expected def test_expense_schema(): """Test getting expense schema.""" expected = ExpenseSchema( account_id=123, worksheet_adjustment_detail_id=1, apply_to_statement_period_id=286, contract_id=None, distribution_type='digital', reference_adjustment_type_id=1, reference_adjustment_type_name='Name', subaccount_id=None, subaccount_name=None, adjustment_amount_payee_currency=100.00, adjustment_payee_currency_code='USD', note='mock adjustment', upc='10101010', ) payload = { 'account_id': 123, 'worksheet_adjustment_detail_id': 1, 'apply_to_statement_period_id': 286, 'contract_id': None, 'distribution_type': 'digital', 'reference_adjustment_type_id': 1, 'reference_adjustment_type_name': 'Name', 'subaccount_id': None, 'subaccount_name': None, 'adjustment_amount_payee_currency': '100.00', 'adjustment_payee_currency_code': 'USD', 'note': 'mock adjustment', 'upc': '10101010' } actual = ExpenseSchema(**payload) assert actual == expected def test_paginated_expense_schema(): """Test getting paginated expense by artist schema.""" expected = PaginatedExpenseSchema( items=[ExpenseSchema( account_id=123, worksheet_adjustment_detail_id=1, apply_to_statement_period_id=286, contract_id=None, distribution_type='digital', reference_adjustment_type_id=1, reference_adjustment_type_name='Name', adjustment_amount_payee_currency=100.00, adjustment_payee_currency_code='USD', note='mock adjustment', upc='10101010', )], pagination=PaginationSchema( pagination_type=PAGINATION_TYPE_STANDARD, total_records=1 ) ) data = { 'items': [{ 'account_id': 123, 'worksheet_adjustment_detail_id': 1, 'apply_to_statement_period_id': 286, 'contract_id': None, 'distribution_type': 'digital', 'reference_adjustment_type_id': 1, 'reference_adjustment_type_name': 'Name', 'adjustment_amount_payee_currency': '100.00', 'adjustment_payee_currency_code': 'USD', 'note': 'mock adjustment', 'upc': '10101010' }], 'pagination': { 'pagination_type': PAGINATION_TYPE_STANDARD, 'total_records': 1 } } actual = PaginatedExpenseSchema(**data) assert actual == expected def test_ledger_adjustment_expense_artist_schema(): """Test LedgerAdjustmentExpenseArtist serialization.""" expected = LedgerAdjustmentExpenseArtistSchema( artist_id=1234, artist_name='Cool Guy', ) data = { 'artist_id': 1234, 'artist_name': 'Cool Guy', } actual = LedgerAdjustmentExpenseArtistSchema(**data) assert actual == expected def test_expense_subaccount_schema(): """Test ExpenseSubaccountSchema serialization.""" expected = ExpenseSubaccountSchema( account_id=1234, subaccount_id=7111, subaccount_name='Another Subaccount Name', ) data = { 'account_id': 1234, 'subaccount_id': 7111, 'subaccount_name': 'Another Subaccount Name', } actual = ExpenseSubaccountSchema(**data) assert actual == expected def test_ledger_adjustment_expense_upcs_schema(): """Test LedgerAdjustmentExpenseUPCs serialization.""" expected = LedgerAdjustmentExpenseUPCsSchema( account_id=35968, upc='10101010', distribution_type=DistributionType.DIGITAL ) data = { 'account_id': 35968, 'upc': '10101010', 'distribution_type': DistributionType.DIGITAL } actual = LedgerAdjustmentExpenseUPCsSchema(**data) assert actual == expected