drowzeys's picture
v1.0 alpha: keys-Auto Receipts Studio (iPhone / may add Autonomous Lamp Skill)
2edb151 verified
Raw
History Blame Contribute Delete
1.28 kB
from __future__ import annotations
import pytest
from app.config import Settings
from app.db import (
EmbedIndexError,
VecLoadError,
connect,
delete_receipt,
init_schema,
insert_receipt,
)
from app.schemas import ReceiptExtract, ReceiptStatus
def test_schema_and_meta(settings: Settings) -> None:
try:
con = connect(settings.db_path)
init_schema(con, settings)
except VecLoadError:
pytest.skip("sqlite-vec not loadable")
tables = {
row[0]
for row in con.execute("SELECT name FROM sqlite_master WHERE type IN ('table','view')")
}
assert "receipts" in tables
assert "catalog" in tables
rid = insert_receipt(
con,
source_path="x.jpg",
sha256="abc",
status=ReceiptStatus.needs_review,
extract=ReceiptExtract(vendor="A", category="dining"),
)
assert rid == 1
other = settings.model_copy(update={"embed_dim": 3840, "embed_model": "other"})
with pytest.raises(EmbedIndexError):
init_schema(con, other)
assert delete_receipt(con, rid, unlink_file=False) is True
assert con.execute("SELECT COUNT(*) AS n FROM receipts").fetchone()["n"] == 0
assert delete_receipt(con, rid, unlink_file=False) is False
con.close()