32 lines
1.2 KiB
Python
32 lines
1.2 KiB
Python
import tempfile
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
from app.paper import PaperLedger, PaperLedgerError
|
|
|
|
|
|
class PaperLedgerTests(unittest.TestCase):
|
|
def test_ledger_persists_entries_and_reloads_after_restart(self):
|
|
with tempfile.TemporaryDirectory() as temp_dir:
|
|
path = Path(temp_dir) / "ledger.json"
|
|
first = PaperLedger(path)
|
|
entry = first.record({"symbol": "AOT", "target_weight": 0.25, "assumed_price": 60}, {"AOT"})
|
|
restarted = PaperLedger(path)
|
|
self.assertEqual(restarted.entries(), [entry])
|
|
|
|
def test_ledger_rejects_corrupt_persistent_file(self):
|
|
with tempfile.TemporaryDirectory() as temp_dir:
|
|
path = Path(temp_dir) / "ledger.json"
|
|
path.write_text("not-json", encoding="utf-8")
|
|
with self.assertRaisesRegex(PaperLedgerError, "unreadable"):
|
|
PaperLedger(path)
|
|
|
|
def test_ledger_defaults_to_in_memory_mode(self):
|
|
ledger = PaperLedger()
|
|
ledger.record({"symbol": "AOT", "target_weight": 0.25, "assumed_price": 60}, {"AOT"})
|
|
self.assertEqual(len(ledger.entries()), 1)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|