def test_get_merge_plan_by_parent(person_matcher): comdir = CommitteeDir( abbr="wa", directory=TEST_DATA_PATH / "committees", ) comdir.person_matcher = person_matcher newdata = [ # identical ScrapeCommittee( name="Education", chamber="lower", sources=[Link(url="https://example.com/committee")], members=[ Membership(name="Jones", role="chair"), Membership(name="Nguyen", role="co-chair"), Membership(name="Green", role="member"), Membership(name="Cristobal", role="member"), ], ), # new ScrapeCommittee( name="Science", chamber="lower", sources=[Link(url="https://example.com/committee")], members=[ Membership(name="Jones", role="chair"), Membership(name="Nguyen", role="co-chair"), ], ), # changed ScrapeCommittee( name="Rules", chamber="lower", sources=[Link(url="https://example.com/committee")], members=[ Membership(name="Fox", role="chair"), Membership(name="Fawkes", role="co-chair"), Membership(name="Faux", role="member"), ], ), ] plan = comdir.get_merge_plan_by_parent("lower", newdata) assert plan.names_to_add == {"Science"} assert plan.names_to_remove == {"Agriculture"} assert plan.same == 1 # Edcuation assert len(plan.to_merge) == 1 old, new = plan.to_merge[0] assert old.name == new.name == "Rules" assert len(old.members) < len(new.members)
def test_ingest_scraped_json_names_resolved(): comdir = CommitteeDir( abbr="wa", directory=TEST_DATA_PATH / "committees", ) richardson_id = "ocd-person/11111111-0000-0000-0000-555555555555" comdir.person_matcher = PersonMatcher("wa", TEST_DATA_PATH / "no-such-dir") comdir.person_matcher.add_name("lower", "Richardson", richardson_id) committees = comdir.ingest_scraped_json(TEST_DATA_PATH / "scraped-committees") assert len(committees) == 2 committees = sorted(committees, key=lambda c: c.name) assert committees[0].name == "Judiciary 2" # ensure that names are matched assert committees[0].members[0].name == "Richardson" assert committees[0].members[0].role == "chair" assert committees[0].members[0].person_id == richardson_id assert committees[1].name == "Judiciary 4"