feat: 百度通用文字识别提取供应商/日期(config api_key 持久化)
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
"""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()
|
||||
Reference in New Issue
Block a user