File size: 2,255 Bytes
8c3e275
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# 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