From 63b4781b5bbff801fc08f71781e937827273a3fa Mon Sep 17 00:00:00 2001 From: uvok Date: Fri, 18 Apr 2025 17:30:34 +0200 Subject: Add LP tests --- test_ledger_process.py | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 test_ledger_process.py (limited to 'test_ledger_process.py') diff --git a/test_ledger_process.py b/test_ledger_process.py new file mode 100644 index 0000000..092619a --- /dev/null +++ b/test_ledger_process.py @@ -0,0 +1,68 @@ +import unittest +from decimal import Decimal +from ledger_action import LedgerAction +from ledger_process import LedgerProcess + + +class TestLedgerProcess(unittest.TestCase): + def setUp(self): + """Set up a LedgerProcess instance for testing.""" + self.lp = LedgerProcess() + + def test_process_trade_valid(self): + """Test valid processing of a trade with both EUR and crypto assets.""" + eur_trade = LedgerAction( + type="trade", + asset="EUR", + amount=Decimal("-500.00"), + fee=Decimal("2.00"), + timestamp="2025-04-17 10:00:00", + refid="12345", + ) + crypto_trade = LedgerAction( + type="trade", + asset="BTC", + amount=Decimal("0.1"), + fee=Decimal("0.001"), + timestamp="2025-04-17 10:00:00", + refid="12345", + ) + self.lp.process_ledger([eur_trade, crypto_trade]) + # Assert the remaining balance in the FIFO queue + self.assertEqual( + self.lp.fifo_queues["BTC"].get_remaining_amount(), Decimal("0.099") + ) + + def test_empty_actions(self): + """Test processing with no actions.""" + self.lp.process_ledger([]) + # with self.assertRaises(ValueError): + + def test_missing_trade_rows(self): + """Test processing a trade with missing EUR or crypto rows.""" + crypto_trade = LedgerAction( + type="trade", + asset="BTC", + amount=Decimal("0.1"), + fee=Decimal("0.001"), + timestamp="2025-04-17 10:00:00", + refid="12345", + ) + with self.assertRaises(ValueError): + self.lp.process_ledger([crypto_trade]) # EUR row missing + + def test_unsupported_deposit(self): + """Test handling unsupported deposits.""" + deposit = LedgerAction( + type="deposit", + asset="BTC", + amount=Decimal("1.00"), + fee=Decimal("0.00"), + timestamp="2025-04-17 10:00:00", + refid="67890", + ) + self.lp.process_ledger([deposit]) + + +if __name__ == "__main__": + unittest.main() -- cgit v1.2.3