"""Tests for reserve_take_item module.""" from decimal import Decimal from reserves_take.reserve_take_item import ReserveTakeItem def test_reserve_take_item_values(): """Test for ReserveTakeItem properties' values.""" abacus_event_id = 10 statement_period_id = 20 accounting_run_id = 30 contract_reserve_id = 40 contract_id = 1 account_id = 2 currency_code = 'USD' gross_sales = Decimal('1234.555555555555') gross_returns = Decimal('-789.112233445566') reserve_rate = Decimal('0.18') reserve_item = ReserveTakeItem( contract_id, account_id, currency_code, gross_sales, gross_returns, reserve_rate ) assert reserve_item.gross_sales_rounded == Decimal('1234.56') assert reserve_item.gross_returns_rounded == Decimal('-789.12') assert reserve_item.gross_sales_remainder == Decimal('-0.004444444445') assert reserve_item.gross_returns_remainder == Decimal('0.007766554434') assert reserve_item.remaining_amount == Decimal('0.003322109989') assert reserve_item.net_revenue == Decimal('445.44') assert reserve_item.reserve_amount == Decimal('-80.18') assert reserve_item.net_revenue_after_reserve == Decimal('365.26') assert reserve_item.format_reserve_taken_entry( abacus_event_id, accounting_run_id, contract_reserve_id, statement_period_id ) == { 'abacus_event_id': abacus_event_id, 'contract_reserve_id': contract_reserve_id, 'accounting_run_id': accounting_run_id, 'statement_period_id': statement_period_id, 'currency_code': currency_code, 'gross_sales': '1234.56', 'gross_returns': '-789.12', 'net_revenue': '445.44', 'reserve_amount': '-80.18', 'net_revenue_after_reserve': '365.26' } assert reserve_item.format_ledger_deposit_entry(abacus_event_id) == { 'account_id': account_id, 'contract_id': contract_id, 'abacus_event_id': abacus_event_id, 'currency_code': currency_code, 'model_type': 'deposit', 'rounded_amount': '445.44', 'remaining_amount': '0.003322109989' }