Example #1
0
def test_parent_validation_subcommittee():
    # subcommittees can be any string...
    ScrapeCommittee(
        name="Pre-K", chamber="upper", parent="Education", classification="subcommittee"
    )
    # must set parent if subcommittee
    with pytest.raises(ValidationError):
        ScrapeCommittee(name="Pre-K", chamber="upper", classification="subcommittee")
    # must set can't set parent without subcommittees
    with pytest.raises(ValidationError):
        ScrapeCommittee(name="Pre-K", chamber="upper", parent="Education")
Example #2
0
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)
Example #3
0
def test_add_committee():
    comdir = CommitteeDir(
        abbr="wa",
        directory=TEST_DATA_PATH / "committees",
    )
    with patch.object(comdir, "save_committee") as patch_obj:
        sc = ScrapeCommittee(chamber="lower", name="New Business")
        comdir.add_committee(sc)
        full_com = comdir.coms_by_chamber_and_name[sc.chamber][sc.name]
        assert full_com.name == sc.name
        assert full_com.id.startswith("ocd-organization")
        assert full_com.jurisdiction == JURISDICTION_ID
        assert patch_obj.called_once_with(full_com)
Example #4
0
def test_scrapecommittee():
    assert ScrapeCommittee(name="Health", chamber="upper")
    with pytest.raises(ValidationError):
        ScrapeCommittee(name="Health \n Roads", chamber="upper")
Example #5
0
def test_validation_chamber():
    ScrapeCommittee(name="Education", chamber="lower")
    ScrapeCommittee(name="Education", chamber="upper")
    ScrapeCommittee(name="Education", chamber="legislature")
    with pytest.raises(ValidationError):
        ScrapeCommittee(name="Education", chamber="joint")