import pytest from explorer_helpers import inspect_positions_for_issues def test_inspect_positions_for_issues_basic(): # Construct synthetic positions_by_window with 3 windows positions_by_window = { "2021-01": { "mp_1": (0.1, 0.2), "mp_2 (Amsterdam)": (0.5, 0.6), }, "2021-02": { "mp_2 (Amsterdam)": (0.4, 0.7), "mp_3": (0.9, 0.1), }, "2021-03": { "mp_1": (0.2, 0.3), # an MP id that is not in party_map "unknown_mp": (0.0, 0.0), }, } party_map = { "mp_1": "P1", "mp_2": "P2", "mp_3": "P3", } res = inspect_positions_for_issues(positions_by_window, party_map) assert res["windows_count"] == 3 assert res["party_map_count"] == len(party_map) # parties_with_centroid_counts: P1 present in windows 2021-01 and 2021-03 -> 2 assert res["parties_with_centroid_counts"].get("P1") == 2 # P2 present in 2021-01 and 2021-02 -> 2 assert res["parties_with_centroid_counts"].get("P2") == 2 # P3 present in 2021-02 -> 1 assert res["parties_with_centroid_counts"].get("P3") == 1 # mismatched_mp_ids_sample should contain 'unknown_mp' assert "unknown_mp" in res["mismatched_mp_ids_sample"] # mp_id_set should contain all seen MPs assert res["mp_id_set"] >= {"mp_1", "mp_2 (Amsterdam)", "mp_3", "unknown_mp"}