diff options
author | uvok | 2025-04-18 17:30:34 +0200 |
---|---|---|
committer | uvok | 2025-04-18 17:30:34 +0200 |
commit | 63b4781b5bbff801fc08f71781e937827273a3fa (patch) | |
tree | b37a364ee7a3775f12ee3dfc3796e8a16d674c7b /test_ledger_process.py | |
parent | c11edf3d9a14e2b420787ae96797afd801b562b9 (diff) |
Add LP tests
Diffstat (limited to 'test_ledger_process.py')
-rw-r--r-- | test_ledger_process.py | 68 |
1 files changed, 68 insertions, 0 deletions
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() |