mirror of
https://git.hiabuto.net/C3MA/CCMA.git
synced 2026-07-01 03:04:52 +02:00
feat: allow deleting housekeeper tasks
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import json
|
||||
import shutil
|
||||
from datetime import date
|
||||
|
||||
import pytest
|
||||
@@ -180,3 +181,42 @@ def test_preflight_task_resolves_after_record_is_repaired(tmp_path) -> None:
|
||||
|
||||
assert task["status"] == "resolved"
|
||||
assert task["resolved_run"] == "2026-06-21:000002"
|
||||
|
||||
|
||||
def test_housekeeper_task_can_be_deleted_and_returns_on_next_run(tmp_path) -> None:
|
||||
repository = MemberRepository(tmp_path)
|
||||
repository.initialize()
|
||||
repository.create_member(first_name="Manual", last_name="Delete")
|
||||
housekeeper = Housekeeper(repository)
|
||||
findings = housekeeper.run(today=date(2026, 6, 21))
|
||||
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"))
|
||||
|
||||
assert remaining == []
|
||||
assert state_after_delete["run_counter"] == 1
|
||||
assert state_after_delete["items"] == []
|
||||
|
||||
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"))
|
||||
recreated_task = next(item for item in state_after_run["items"] if item["key"] == recreated_finding.key)
|
||||
|
||||
assert recreated_finding.key == finding.key
|
||||
assert recreated_task["first_seen_run"] == "2026-06-21:000002"
|
||||
|
||||
|
||||
def test_housekeeper_removes_items_for_deleted_member_directory(tmp_path) -> None:
|
||||
repository = MemberRepository(tmp_path)
|
||||
repository.initialize()
|
||||
member = repository.create_member(first_name="Deleted", last_name="Member")
|
||||
housekeeper = Housekeeper(repository)
|
||||
assert housekeeper.run(today=date(2026, 6, 21))
|
||||
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"))
|
||||
|
||||
assert findings == []
|
||||
assert not any(item.get("member_id") == member.member_id for item in state["items"])
|
||||
|
||||
Reference in New Issue
Block a user