from repo_manager.retirement_disposition import ( PRESERVED_PARENT_UUIDS, REFUSED_DUPLICATE_PROJECTIONS, check_disposition, ) EXACT = sorted(REFUSED_DUPLICATE_PROJECTIONS) EMPTY = {u: 0 for u in EXACT} def test_exact_empty_set_is_consistent(): assert check_disposition(EXACT, EMPTY) == [] def test_missing_projection_is_reported(): problems = check_disposition(EXACT[:2], EMPTY) assert any("missing from disposition" in p for p in problems) def test_preserved_parent_is_refused(): parent = next(iter(PRESERVED_PARENT_UUIDS)) problems = check_disposition(EXACT + [parent], EMPTY) assert any("preserved source-bound parent" in p for p in problems) def test_unknown_uuid_and_nonempty_projection_are_reported(): counts = dict(EMPTY, **{EXACT[0]: 3}) problems = check_disposition(EXACT + ["00000000-0000-0000-0000-000000000000"], counts) assert any("not refused" in p for p in problems) assert any("holds 3 tasks" in p for p in problems) def test_unverified_task_counts_are_not_assumed_empty(): assert all("not verified" in p for p in check_disposition(EXACT)) def test_duplicates_are_reported(): assert "duplicate UUIDs" in check_disposition(EXACT + [EXACT[0].upper()], EMPTY)[0]