Off-Grid-Field-Repair-Logbook / tests /test_manual_upload.py
Abhishek
Initialize project files and updated hackathon tags
50f83f4
Raw
History Blame Contribute Delete
2.07 kB
from __future__ import annotations
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
if str(ROOT) not in sys.path:
sys.path.insert(0, str(ROOT))
from app_kit.demo_pack import store_uploaded_manual
from app_kit.storage import connect, init_db
def test_store_uploaded_manual_persists_manual_and_sections(tmp_path: Path) -> None:
db_path = tmp_path / "field-repair.sqlite3"
init_db(db_path)
manual_path = tmp_path / "generator_manual.md"
manual_path.write_text(
"# Troubleshooting\n\nStart with the battery bank.\n\n# Fuel System\n\nCheck the filter and fuel lines.",
encoding="utf-8",
)
with connect(db_path) as conn:
manual_id = store_uploaded_manual(conn, manual_path)
conn.commit()
with connect(db_path) as conn:
manual_row = conn.execute(
"SELECT title, source_url, license_name, attribution, body_text FROM manuals WHERE id = ?",
(manual_id,),
).fetchone()
sections = conn.execute(
"""
SELECT section_title, section_slug, section_order, citation, is_demo
FROM manual_sections
WHERE manual_id = ?
ORDER BY section_order
""",
(manual_id,),
).fetchall()
assert manual_row is not None
assert manual_row["title"] == "generator_manual"
assert manual_row["source_url"] == manual_path.name
assert manual_row["license_name"] == "uploaded"
assert manual_row["attribution"] == manual_path.name
assert manual_row["body_text"].startswith("# Troubleshooting")
assert [row["section_title"] for row in sections] == ["Troubleshooting", "Fuel System"]
assert [row["section_slug"] for row in sections] == ["troubleshooting", "fuel_system"]
assert [row["section_order"] for row in sections] == [1, 2]
assert [row["citation"] for row in sections] == [
"generator_manual :: Troubleshooting",
"generator_manual :: Fuel System",
]
assert all(row["is_demo"] == 0 for row in sections)