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()