Add grouped_run_statistics/tests/test_core.py
This commit is contained in:
parent
b367a42989
commit
18fc74a440
1 changed files with 75 additions and 0 deletions
75
grouped_run_statistics/tests/test_core.py
Normal file
75
grouped_run_statistics/tests/test_core.py
Normal file
|
|
@ -0,0 +1,75 @@
|
||||||
|
import pytest
|
||||||
|
from grouped_run_statistics.core import group_runs
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def sample_run_data():
|
||||||
|
# Mix aus pinned/unpinned und allen Statuswerten
|
||||||
|
return [
|
||||||
|
{"id": "1", "pinned": True, "status": "PASS"},
|
||||||
|
{"id": "2", "pinned": False, "status": "PASS"},
|
||||||
|
{"id": "3", "pinned": True, "status": "WARN"},
|
||||||
|
{"id": "4", "pinned": False, "status": "FAIL"},
|
||||||
|
{"id": "5", "pinned": True, "status": "FAIL"},
|
||||||
|
{"id": "6", "pinned": False, "status": "WARN"},
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def test_group_runs_nominal(sample_run_data):
|
||||||
|
stats = group_runs(sample_run_data)
|
||||||
|
assert isinstance(stats, dict)
|
||||||
|
expected_keys = {
|
||||||
|
"pinned_pass", "unpinned_pass", "pinned_warn", "unpinned_warn", "pinned_fail", "unpinned_fail"
|
||||||
|
}
|
||||||
|
assert set(stats.keys()) == expected_keys
|
||||||
|
|
||||||
|
# Überprüfe Aggregationsergebnisse
|
||||||
|
assert stats["pinned_pass"] == 1
|
||||||
|
assert stats["unpinned_pass"] == 1
|
||||||
|
assert stats["pinned_warn"] == 1
|
||||||
|
assert stats["unpinned_warn"] == 1
|
||||||
|
assert stats["pinned_fail"] == 1
|
||||||
|
assert stats["unpinned_fail"] == 1
|
||||||
|
|
||||||
|
|
||||||
|
def test_group_runs_all_pinned():
|
||||||
|
data = [
|
||||||
|
{"id": f"p{i}", "pinned": True, "status": status}
|
||||||
|
for i, status in enumerate(["PASS", "PASS", "FAIL", "WARN"], start=1)
|
||||||
|
]
|
||||||
|
result = group_runs(data)
|
||||||
|
assert result["pinned_pass"] == 2
|
||||||
|
assert result["pinned_warn"] == 1
|
||||||
|
assert result["pinned_fail"] == 1
|
||||||
|
assert result["unpinned_pass"] == 0
|
||||||
|
|
||||||
|
|
||||||
|
def test_group_runs_all_unpinned():
|
||||||
|
data = [
|
||||||
|
{"id": f"u{i}", "pinned": False, "status": status}
|
||||||
|
for i, status in enumerate(["FAIL", "FAIL", "PASS"], start=1)
|
||||||
|
]
|
||||||
|
result = group_runs(data)
|
||||||
|
assert result["unpinned_pass"] == 1
|
||||||
|
assert result["unpinned_fail"] == 2
|
||||||
|
assert result["pinned_pass"] == 0
|
||||||
|
|
||||||
|
|
||||||
|
def test_group_runs_invalid_input_type():
|
||||||
|
with pytest.raises((TypeError, KeyError, ValueError)):
|
||||||
|
group_runs("not a list")
|
||||||
|
|
||||||
|
with pytest.raises((TypeError, KeyError, ValueError)):
|
||||||
|
group_runs([{"id": 1, "pinned": "yes", "status": "PASS"}])
|
||||||
|
|
||||||
|
|
||||||
|
def test_group_runs_missing_fields():
|
||||||
|
incomplete = [{"id": "1", "pinned": True}] # status fehlt
|
||||||
|
with pytest.raises((KeyError, ValueError)):
|
||||||
|
group_runs(incomplete)
|
||||||
|
|
||||||
|
|
||||||
|
def test_group_runs_empty_input():
|
||||||
|
result = group_runs([])
|
||||||
|
# Alle Werte müssen 0 sein
|
||||||
|
assert all(v == 0 for v in result.values())
|
||||||
Loading…
Reference in a new issue