mirror of
https://git.hiabuto.net/C3MA/CCMA.git
synced 2026-07-01 11:14:52 +02:00
refactor: localize UI labels and store filenames
This commit is contained in:
+14
-12
@@ -36,8 +36,10 @@ def evaluate(context):
|
||||
)
|
||||
|
||||
findings = Housekeeper(repository).run(today=date(2026, 6, 21))
|
||||
state = json.loads((repository.root / "hausmeister.json").read_text(encoding="utf-8"))
|
||||
state = json.loads((repository.root / "housekeeper.json").read_text(encoding="utf-8"))
|
||||
|
||||
assert not (repository.root / "hausmeister.json").exists()
|
||||
assert not (repository.root / ".hausmeister.lock").exists()
|
||||
assert any(finding.code == "override_active" for finding in findings)
|
||||
rule = next(item for item in state["rules"] if item["filename"] == "birthdate_check.py")
|
||||
assert rule["source"] == "store-override"
|
||||
@@ -60,7 +62,7 @@ def test_housekeeper_claim_actions_are_idempotent(tmp_path) -> None:
|
||||
first_claims = repository.get_contributions(member.member_id).claims
|
||||
housekeeper.run(today=date(2026, 4, 15))
|
||||
second_claims = repository.get_contributions(member.member_id).claims
|
||||
state = json.loads((repository.root / "hausmeister.json").read_text(encoding="utf-8"))
|
||||
state = json.loads((repository.root / "housekeeper.json").read_text(encoding="utf-8"))
|
||||
|
||||
assert {claim["claim_key"] for claim in first_claims} == {
|
||||
"admission-fee",
|
||||
@@ -85,7 +87,7 @@ def test_housekeeper_resolves_tasks_not_seen_in_current_run(tmp_path) -> None:
|
||||
member.birth_date = "1990-01-01"
|
||||
repository.save_member(member)
|
||||
housekeeper.run(today=date(2026, 6, 21))
|
||||
state = json.loads((repository.root / "hausmeister.json").read_text(encoding="utf-8"))
|
||||
state = json.loads((repository.root / "housekeeper.json").read_text(encoding="utf-8"))
|
||||
task = next(item for item in state["items"] if item["key"].endswith(":missing"))
|
||||
|
||||
assert task["status"] == "resolved"
|
||||
@@ -99,14 +101,14 @@ def test_failed_run_does_not_advance_persisted_run_id(tmp_path) -> None:
|
||||
repository.create_member(first_name="Failed", last_name="Rule")
|
||||
housekeeper = Housekeeper(repository)
|
||||
housekeeper.run(today=date(2026, 6, 21))
|
||||
state_before = (repository.root / "hausmeister.json").read_bytes()
|
||||
state_before = (repository.root / "housekeeper.json").read_bytes()
|
||||
(repository.root / "rules" / "broken.py").write_text("this is not python !!!", encoding="utf-8")
|
||||
|
||||
with pytest.raises(RuleLoadError):
|
||||
housekeeper.run(today=date(2026, 6, 21))
|
||||
|
||||
assert (repository.root / "hausmeister.json").read_bytes() == state_before
|
||||
assert not (repository.root / ".hausmeister.lock").exists()
|
||||
assert (repository.root / "housekeeper.json").read_bytes() == state_before
|
||||
assert not (repository.root / ".housekeeper.lock").exists()
|
||||
|
||||
|
||||
def test_broken_contributions_file_creates_task_without_overwriting_file(tmp_path) -> None:
|
||||
@@ -124,7 +126,7 @@ def test_broken_contributions_file_creates_task_without_overwriting_file(tmp_pat
|
||||
|
||||
assert path.read_bytes() == b""
|
||||
assert [finding.code for finding in findings] == ["invalid_member_record"]
|
||||
state = json.loads((repository.root / "hausmeister.json").read_text(encoding="utf-8"))
|
||||
state = json.loads((repository.root / "housekeeper.json").read_text(encoding="utf-8"))
|
||||
task = next(item for item in state["items"] if item["code"] == "invalid_member_record")
|
||||
assert task["status"] == "open"
|
||||
|
||||
@@ -139,7 +141,7 @@ def test_preflight_skips_all_rules_for_broken_member_file(tmp_path) -> None:
|
||||
member_path.write_text("{", encoding="utf-8")
|
||||
|
||||
findings = Housekeeper(repository).run(today=date(2026, 6, 21))
|
||||
state = json.loads((repository.root / "hausmeister.json").read_text(encoding="utf-8"))
|
||||
state = json.loads((repository.root / "housekeeper.json").read_text(encoding="utf-8"))
|
||||
|
||||
assert [finding.code for finding in findings] == ["invalid_member_record"]
|
||||
assert len(state["items"]) == 1
|
||||
@@ -176,7 +178,7 @@ def test_preflight_task_resolves_after_record_is_repaired(tmp_path) -> None:
|
||||
contributions_path.write_bytes(original)
|
||||
|
||||
housekeeper.run(today=date(2026, 6, 21))
|
||||
state = json.loads((repository.root / "hausmeister.json").read_text(encoding="utf-8"))
|
||||
state = json.loads((repository.root / "housekeeper.json").read_text(encoding="utf-8"))
|
||||
task = next(item for item in state["items"] if item["code"] == "invalid_member_record")
|
||||
|
||||
assert task["status"] == "resolved"
|
||||
@@ -192,7 +194,7 @@ def test_housekeeper_task_can_be_deleted_and_returns_on_next_run(tmp_path) -> No
|
||||
finding = next(item for item in findings if item.code == "missing_birth_date")
|
||||
|
||||
remaining = housekeeper.delete_task(finding.key)
|
||||
state_after_delete = json.loads((repository.root / "hausmeister.json").read_text(encoding="utf-8"))
|
||||
state_after_delete = json.loads((repository.root / "housekeeper.json").read_text(encoding="utf-8"))
|
||||
|
||||
assert remaining == []
|
||||
assert state_after_delete["run_counter"] == 1
|
||||
@@ -200,7 +202,7 @@ def test_housekeeper_task_can_be_deleted_and_returns_on_next_run(tmp_path) -> No
|
||||
|
||||
recreated = housekeeper.run(today=date(2026, 6, 21))
|
||||
recreated_finding = next(item for item in recreated if item.code == "missing_birth_date")
|
||||
state_after_run = json.loads((repository.root / "hausmeister.json").read_text(encoding="utf-8"))
|
||||
state_after_run = json.loads((repository.root / "housekeeper.json").read_text(encoding="utf-8"))
|
||||
recreated_task = next(item for item in state_after_run["items"] if item["key"] == recreated_finding.key)
|
||||
|
||||
assert recreated_finding.key == finding.key
|
||||
@@ -216,7 +218,7 @@ def test_housekeeper_removes_items_for_deleted_member_directory(tmp_path) -> Non
|
||||
shutil.rmtree(repository.members_root / member.member_id)
|
||||
|
||||
findings = housekeeper.run(today=date(2026, 6, 21))
|
||||
state = json.loads((repository.root / "hausmeister.json").read_text(encoding="utf-8"))
|
||||
state = json.loads((repository.root / "housekeeper.json").read_text(encoding="utf-8"))
|
||||
|
||||
assert findings == []
|
||||
assert not any(item.get("member_id") == member.member_id for item in state["items"])
|
||||
|
||||
Reference in New Issue
Block a user