deepfake-detection / tests /test_database.py
KLGrimmReaper's picture
v3 production-ready — full pipeline, API, async video, auth, CI/CD
872adca
Raw
History Blame Contribute Delete
1.77 kB
"""
Tests for database operations.
These use the real SQLite backend (a test DB would be cleaner, but for an
FYP the real DB is acceptable as long as tests are read-heavy and skip
destructive operations unless explicitly run).
"""
from __future__ import annotations
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
from database import (
init_db,
log_scan,
get_scan_history,
count_scans,
delete_scan,
get_stats,
get_disk_usage,
get_cache_stats,
)
class TestDatabase:
def test_init_db(self):
"""init_db should not raise."""
init_db() # idempotent
def test_log_and_retrieve(self):
"""Log a scan and verify it appears in history."""
# Use a unique name to avoid collisions
import uuid
tag = str(uuid.uuid4())[:8]
fname = f"test_{tag}.jpg"
log_scan(fname, "Fake", 85.5, 1)
history = get_scan_history(search=tag)
assert any(fname in row[1] for row in history)
def test_count_scans(self):
count = count_scans()
assert isinstance(count, int)
assert count >= 0
def test_get_stats_shape(self):
stats = get_stats()
for key in ("total_scans", "fake", "real", "no_face", "videos", "avg_confidence", "today", "model_version"):
assert key in stats, f"Missing key: {key}"
assert isinstance(stats["model_version"], str)
def test_disk_usage(self):
du = get_disk_usage()
for key in ("scans_dir", "database", "scans_dir_bytes", "database_bytes"):
assert key in du
def test_cache_stats(self):
cs = get_cache_stats()
assert "cached_images" in cs
assert "total_cache_hits" in cs