Files
orc-order-v2/tests/test_order_metadata_db.py
T

60 lines
2.0 KiB
Python

"""OrderMetadataDB 单元测试。"""
import unittest
import sys
import tempfile
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent.parent))
from app.core.db.order_metadata_db import OrderMetadataDB
class TestOrderMetadataDB(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp()
self.db_path = str(Path(self.tmpdir) / "test_cache.db")
self.db = OrderMetadataDB(self.db_path)
def test_save_and_get(self):
ok = self.db.save("hash001", supplier="永辉超市", bill_date="20260717",
total_amount=656.00, raw_supplier_text="永辉超市供货单")
self.assertTrue(ok)
row = self.db.get("hash001")
self.assertIsNotNone(row)
self.assertEqual(row["supplier"], "永辉超市")
self.assertEqual(row["bill_date"], "20260717")
self.assertAlmostEqual(row["total_amount"], 656.00)
def test_upsert(self):
self.db.save("hash001", supplier="永辉", bill_date="20260717", total_amount=100)
self.db.save("hash001", supplier="永辉2", bill_date="20260718", total_amount=200)
row = self.db.get("hash001")
self.assertEqual(row["supplier"], "永辉2")
self.assertEqual(row["bill_date"], "20260718")
self.assertAlmostEqual(row["total_amount"], 200)
def test_get_missing(self):
self.assertIsNone(self.db.get("nonexistent"))
def test_list_all(self):
for i in range(3):
self.db.save(f"hash{i}", supplier=f"s{i}")
rows = self.db.list_all()
self.assertEqual(len(rows), 3)
def test_count(self):
self.assertEqual(self.db.count(), 0)
self.db.save("h1")
self.db.save("h2")
self.assertEqual(self.db.count(), 2)
def test_empty_hash_skipped(self):
self.assertFalse(self.db.save("", supplier="x"))
def test_delete(self):
self.db.save("h1")
self.db.delete("h1")
self.assertIsNone(self.db.get("h1"))
if __name__ == '__main__':
unittest.main()