Initial commit: LoraTester Android + server

This commit is contained in:
2026-06-04 13:05:21 +03:00
commit 83d0353754
124 changed files with 7892 additions and 0 deletions
+68
View File
@@ -0,0 +1,68 @@
import sqlite3
import tempfile
from pathlib import Path
import pytest
from core import storage
from core.schema import SCHEMA_VERSION, apply_migrations, check_db_ok, column_exists
@pytest.fixture
def temp_db(monkeypatch):
with tempfile.TemporaryDirectory() as tmp:
path = str(Path(tmp) / "test.db")
monkeypatch.setattr(storage, "DATABASE_PATH", path)
yield path
def test_fresh_db_has_all_tables(temp_db):
storage.init_db()
status = storage.db_status()
assert status["db_ok"] is True
assert status["schema_version"] == SCHEMA_VERSION
def test_old_telemetry_without_meta_gets_migrated(temp_db):
conn = sqlite3.connect(temp_db)
conn.execute(
"""
CREATE TABLE telemetry (
id INTEGER PRIMARY KEY,
device_id TEXT,
lat REAL, lon REAL, rssi REAL, range_m REAL,
raw_frame TEXT, ts REAL
)
"""
)
conn.commit()
conn.close()
storage.init_db()
conn = sqlite3.connect(temp_db)
assert column_exists(conn, "telemetry", "meta")
assert check_db_ok(conn)
conn.close()
def test_tracks_crud(temp_db):
storage.init_db()
start = storage.start_track("android-12345678")
tid = start["track_id"]
storage.add_track_points(
tid,
[
{
"ts": 1.0,
"lat": 55.75,
"lon": 37.62,
"rssi": -70.0,
"role": "RX",
"meta": '{"packet":1}',
}
],
)
fin = storage.finish_track(tid)
assert fin["point_count"] == 1
track = storage.get_track(tid)
assert len(track["points"]) == 1