Files
MajoorWaldi 4411c72e4e Refactor test imports and clean up unused code across multiple test files
- Removed unnecessary imports from various test files to improve readability and maintainability.
- Added new settings for the Generated Feed display in the settingsFeed.js file.
- Introduced a new configuration file for Pyright type checking.
2026-03-28 13:26:28 +01:00

89 lines
3.0 KiB
Python

"""Tests for scan_diagnostics.py — covers all 4 functions."""
from mjr_am_backend.features.index import scan_diagnostics as sd
def test_batch_error_messages_returns_str_pair() -> None:
"""Lines 10-14 — batch_error_messages returns (msg, lower)."""
msg, lower = sd.batch_error_messages(ValueError("TEST Error"))
assert msg == "TEST Error"
assert lower == "test error"
def test_batch_error_messages_with_none() -> None:
"""Lines 10-14 — batch_error_messages with None-like error."""
msg, lower = sd.batch_error_messages(Exception(""))
assert msg == ""
assert lower == ""
def test_is_unique_filepath_error_true() -> None:
"""Line 18 — detects UNIQUE constraint violation on assets.filepath."""
assert sd.is_unique_filepath_error("unique constraint failed: assets.filepath")
assert not sd.is_unique_filepath_error("unique constraint failed: other.field")
assert not sd.is_unique_filepath_error("some other error")
def test_diagnose_unique_filepath_error_with_duplicate() -> None:
"""Lines 22-24 — when batch has duplicate filepath."""
prepared = [
{"filepath": "a.png"},
{"filepath": "a.png"},
]
result = sd.diagnose_unique_filepath_error(prepared)
assert result is not None
fp, reason = result
assert fp == "a.png"
assert "duplicate" in reason.lower()
def test_diagnose_unique_filepath_error_no_duplicate_but_has_fp() -> None:
"""Lines 25-27 — no duplicate, but has filepath (DB conflict)."""
prepared = [{"filepath": "b.png"}]
result = sd.diagnose_unique_filepath_error(prepared)
assert result is not None
fp, reason = result
assert fp == "b.png"
assert "filepath" in reason.lower()
def test_diagnose_unique_filepath_error_empty() -> None:
"""Line 28 — no prepared entries → fp is None."""
result = sd.diagnose_unique_filepath_error([])
assert result is not None
fp, reason = result
assert fp is None
assert "UNIQUE" in reason
def test_diagnose_batch_failure_unique_constraint() -> None:
"""Lines 32-38 — detects unique constraint and delegates to diagnose_unique_filepath_error."""
class _Scanner:
pass
prepared = [{"filepath": "c.png"}, {"filepath": "c.png"}]
exc = Exception("unique constraint failed: assets.filepath")
fp, reason = sd.diagnose_batch_failure(_Scanner(), prepared, exc)
assert fp == "c.png"
assert "duplicate" in reason.lower()
def test_diagnose_batch_failure_generic_error() -> None:
"""Lines 32-38 — non-unique error → returns filepath + error message."""
class _Scanner:
pass
prepared = [{"filepath": "d.png"}]
exc = ValueError("some other error")
fp, reason = sd.diagnose_batch_failure(_Scanner(), prepared, exc)
assert fp == "d.png"
assert "some other error" in reason
def test_append_batch_context_includes_batch_size_and_duplicate() -> None:
prepared = [{"filepath": "x.png"}, {"filepath": "x.png"}]
out = sd.append_batch_context("boom", prepared)
assert "prepared=2" in out
assert "batch_duplicate=" in out