# SPDX-FileCopyrightText: 2026 Team Centurions # SPDX-License-Identifier: AGPL-3.0-or-later import tempfile from pathlib import Path import pytest from pageparse.schema import Record, SourceParseResult from pageparse.store import Store @pytest.fixture def store(): with tempfile.NamedTemporaryFile(suffix=".db", delete=False) as f: db_path = f.name s = Store(db_path) s.init_db() yield s s.close() Path(db_path).unlink(missing_ok=True) def test_save_and_list(store: Store): result = SourceParseResult( source_file="test.jpg", records=[Record(content="Buy milk", priority="high")], ) source_id = store.save(result, "Buy milk") assert source_id is not None sources = store.list_sources() assert len(sources) == 1 assert sources[0]["filename"] == "test.jpg" def test_get_records(store: Store): result = SourceParseResult( source_file="test.jpg", records=[Record(content="Task A", priority="high")], ) store.save(result, "Task A") records = store.get_records(priority="high") assert len(records) == 1 assert records[0]["content"] == "Task A" def test_update_record(store: Store): result = SourceParseResult( source_file="test.jpg", records=[Record(content="Task B", priority="medium")], ) store.save(result, "Task B") records = store.get_records() record_id = records[0]["id"] assert store.update_record(record_id, {"status": "done"}) updated = store.get_records() assert updated[0]["status"] == "done" def test_update_record_empty_updates(store: Store): result = SourceParseResult( source_file="test.jpg", records=[Record(content="Task C")], ) store.save(result, "Task C") records = store.get_records() record_id = records[0]["id"] assert not store.update_record(record_id, {}) def test_delete_record(store: Store): result = SourceParseResult( source_file="test.jpg", records=[Record(content="Task D")], ) store.save(result, "Task D") records = store.get_records() record_id = records[0]["id"] assert store.delete_record(record_id) remaining = store.get_records() assert len(remaining) == 0