From b5ceacdb258b9f1e8ab2b24dc8da7e3a0521e0e6 Mon Sep 17 00:00:00 2001
From: uvok
Date: Fri, 18 Apr 2025 17:36:03 +0200
Subject: Add custom type

---
 exceptions.py          | 2 ++
 ledger_process.py      | 5 +++--
 test_ledger_process.py | 3 ++-
 3 files changed, 7 insertions(+), 3 deletions(-)
 create mode 100644 exceptions.py

diff --git a/exceptions.py b/exceptions.py
new file mode 100644
index 0000000..ec210a2
--- /dev/null
+++ b/exceptions.py
@@ -0,0 +1,2 @@
+class MismatchedTradeError(Exception):
+    pass
diff --git a/ledger_process.py b/ledger_process.py
index dd82877..adcaacb 100644
--- a/ledger_process.py
+++ b/ledger_process.py
@@ -3,6 +3,7 @@ from itertools import groupby
 import logging
 from typing import Dict, List
 
+from exceptions import MismatchedTradeError
 from ledger_action import LedgerAction
 from trade import Trade
 from trade_queue import FIFOQueue
@@ -98,7 +99,7 @@ class LedgerProcess:
                     )
             else:
                 logger.error(f"Trade group doesn't have expected currencies.")
-                raise ValueError(f"Unexpected trade grouping for refid {refid}")
+                raise MismatchedTradeError(f"Unexpected trade grouping for refid {refid}")
         else:
             logger.error(f"Trade group has {len(trades)} trades, expected 2.")
-            raise ValueError(f"Unexpected number of trades for refid {refid}")
+            raise MismatchedTradeError(f"Unexpected number of trades for refid {refid}")
diff --git a/test_ledger_process.py b/test_ledger_process.py
index 092619a..fbbae1d 100644
--- a/test_ledger_process.py
+++ b/test_ledger_process.py
@@ -1,5 +1,6 @@
 import unittest
 from decimal import Decimal
+from exceptions import MismatchedTradeError
 from ledger_action import LedgerAction
 from ledger_process import LedgerProcess
 
@@ -48,7 +49,7 @@ class TestLedgerProcess(unittest.TestCase):
             timestamp="2025-04-17 10:00:00",
             refid="12345",
         )
-        with self.assertRaises(ValueError):
+        with self.assertRaises(MismatchedTradeError):
             self.lp.process_ledger([crypto_trade])  # EUR row missing
 
     def test_unsupported_deposit(self):
-- 
cgit v1.2.3