Add drift_data_collection/tests/test_core.py

This commit is contained in:
Mika 2026-01-29 16:23:30 +00:00
parent 7306182a4e
commit 06def8ca31

View file

@ -0,0 +1,51 @@
import json
import pytest
from datetime import datetime
from pathlib import Path
from drift_data_collection import core
@pytest.fixture
def sample_run_ids(tmp_path: Path):
file = tmp_path / "run_ids.json"
data = ["run_001", "run_002", "run_003"]
file.write_text(json.dumps(data))
return file, data
def test_collect_frozen_runs_returns_list(sample_run_ids):
_, run_ids = sample_run_ids
result = core.collect_frozen_runs(run_ids)
assert isinstance(result, list)
# Ensure structure consistency
for item in result:
assert isinstance(item, dict)
assert set(["run_id", "status", "timestamp", "pinned_state", "metrics"]).issubset(item.keys())
def test_collect_frozen_runs_content_valid(sample_run_ids):
_, run_ids = sample_run_ids
result = core.collect_frozen_runs(run_ids)
valid_statuses = {"PASS", "WARN", "FAIL"}
for run_data in result:
# Validate run_id
assert run_data["run_id"] in run_ids
# Validate allowed statuses
assert run_data["status"] in valid_statuses
# Validate timestamp format
ts = datetime.fromisoformat(run_data["timestamp"])
assert isinstance(ts, datetime)
# Validate pinned_state
assert isinstance(run_data["pinned_state"], bool)
# Validate metrics field
assert isinstance(run_data["metrics"], str)
def test_collect_frozen_runs_empty_input():
result = core.collect_frozen_runs([])
assert result == []
def test_collect_frozen_runs_invalid_input_type():
with pytest.raises((TypeError, AssertionError)):
core.collect_frozen_runs(None) # type: ignore