Exemple #1
0
def test_unmatched_voters():
    session, org, person = create_data()
    b = Bill.objects.create(identifier="HB2",
                            title="Two",
                            legislative_session_id=session)
    v1 = VoteEvent.objects.create(legislative_session_id=session,
                                  motion_text="Passage",
                                  bill=b,
                                  organization=org)
    v2 = VoteEvent.objects.create(legislative_session_id=session,
                                  motion_text="Override",
                                  bill=b,
                                  organization=org)

    report = generate_session_report(session)
    assert report.unmatched_voters == {}

    # add voters
    v1.votes.create(option="yes", voter_name="Roy")
    v1.votes.create(option="yes", voter_name="Wendy")
    v2.votes.create(option="yes", voter_name="Wendy")
    report = generate_session_report(session)
    assert len(report.unmatched_voters) == 2
    assert report.unmatched_voters["Roy"] == 1
    assert report.unmatched_voters["Wendy"] == 2

    # ensure that Roy goes away when linked
    voter = v1.votes.get(voter_name="Roy")
    voter.voter_id = person.id
    voter.save()
    report = generate_session_report(session)
    assert report.unmatched_voters == {"Wendy": 2}
Exemple #2
0
def test_unmatched_sponsors():
    session, org, person = create_data()
    b1 = Bill.objects.create(identifier="HB1",
                             title="One",
                             legislative_session_id=session)
    b2 = Bill.objects.create(identifier="HB2",
                             title="Two",
                             legislative_session_id=session)

    b1.sponsorships.create(name="Roy", entity_type="person")
    b1.sponsorships.create(name="Wendy", entity_type="person")
    b1.sponsorships.create(name="Committee On Legislation",
                           entity_type="organization")

    b2.sponsorships.create(name="Wendy", entity_type="person")

    report = generate_session_report(session)
    assert len(report.unmatched_sponsor_people) == 2
    assert report.unmatched_sponsor_people["Roy"] == 1
    assert report.unmatched_sponsor_people["Wendy"] == 2
    assert report.unmatched_sponsor_organizations == {
        "Committee On Legislation": 1
    }

    # ensure that Roy goes away when linked
    sp = b1.sponsorships.get(name="Roy")
    sp.person_id = person.id
    sp.save()
    report = generate_session_report(session)
    assert report.unmatched_sponsor_people == {"Wendy": 2}
Exemple #3
0
def test_missing_yes_no_counts():
    session, org, person = create_data()
    b = Bill.objects.create(identifier="HB2",
                            title="Two",
                            legislative_session_id=session)
    v = VoteEvent.objects.create(legislative_session_id=session,
                                 motion_text="Passage",
                                 bill=b,
                                 organization=org)
    VoteEvent.objects.create(
        legislative_session_id=session,
        motion_text="Amendment",
        bill=b,
        organization=org,
    )

    report = generate_session_report(session)
    assert report.votes_missing_yes_count == 2
    assert report.votes_missing_no_count == 2

    v.counts.create(option="yes", value=1)
    report = generate_session_report(session)
    assert report.votes_missing_yes_count == 1
    assert report.votes_missing_no_count == 2

    v.counts.create(option="no", value=0)
    report = generate_session_report(session)
    assert report.votes_missing_yes_count == 1
    assert report.votes_missing_no_count == 1
Exemple #4
0
def test_bills_missing_versions():
    session, org, person = create_data()
    Bill.objects.create(identifier="HB1",
                        title="One",
                        legislative_session_id=session)
    b = Bill.objects.create(identifier="HB2",
                            title="Two",
                            legislative_session_id=session)

    report = generate_session_report(session)
    assert report.bills_missing_versions == 2

    b.versions.create(note="Final Copy")
    report = generate_session_report(session)
    assert report.bills_missing_versions == 1
Exemple #5
0
def test_bills_missing_sponsors():
    session, org, person = create_data()
    Bill.objects.create(identifier="HB1",
                        title="One",
                        legislative_session_id=session)
    b = Bill.objects.create(identifier="HB2",
                            title="Two",
                            legislative_session_id=session)

    report = generate_session_report(session)
    assert report.bills_missing_sponsors == 2

    b.sponsorships.create(name="Roy", entity_type="person")
    report = generate_session_report(session)
    assert report.bills_missing_sponsors == 1
Exemple #6
0
def test_bills_missing_actions():
    session, org, person = create_data()
    Bill.objects.create(identifier="HB1",
                        title="One",
                        legislative_session_id=session)
    b = Bill.objects.create(identifier="HB2",
                            title="Two",
                            legislative_session_id=session)

    report = generate_session_report(session)
    assert report.bills_missing_actions == 2

    b.actions.create(description="Introduced", order=1, organization=org)
    report = generate_session_report(session)
    assert report.bills_missing_actions == 1
Exemple #7
0
def test_votes_missing_bill():
    session, org, person = create_data()
    b = Bill.objects.create(identifier="HB2",
                            title="Two",
                            legislative_session_id=session)
    v = VoteEvent.objects.create(legislative_session_id=session,
                                 motion_text="Passage",
                                 organization=org)
    VoteEvent.objects.create(legislative_session_id=session,
                             motion_text="Amendment",
                             organization=org)

    report = generate_session_report(session)
    assert report.votes_missing_bill == 2

    v.bill = b
    v.save()
    report = generate_session_report(session)
    assert report.votes_missing_bill == 1
Exemple #8
0
def test_votes_missing_voters():
    session, org, person = create_data()
    b = Bill.objects.create(identifier="HB2",
                            title="Two",
                            legislative_session_id=session)
    v = VoteEvent.objects.create(legislative_session_id=session,
                                 motion_text="Passage",
                                 bill=b,
                                 organization=org)
    VoteEvent.objects.create(
        legislative_session_id=session,
        motion_text="Amendment",
        bill=b,
        organization=org,
    )

    report = generate_session_report(session)
    assert report.votes_missing_voters == 2

    v.votes.create(option="yes", voter_name="Speaker")
    report = generate_session_report(session)
    assert report.votes_missing_voters == 1
Exemple #9
0
def test_votes_with_bad_counts():
    session, org, person = create_data()
    b = Bill.objects.create(identifier="HB2",
                            title="Two",
                            legislative_session_id=session)
    v = VoteEvent.objects.create(legislative_session_id=session,
                                 motion_text="Passage",
                                 bill=b,
                                 organization=org)

    report = generate_session_report(session)
    assert report.votes_with_bad_counts == 0

    # add count, breaking
    v.counts.create(option="yes", value=1)
    report = generate_session_report(session)
    assert report.votes_with_bad_counts == 1

    # add voter, fixing
    v.votes.create(option="yes", voter_name="One")
    report = generate_session_report(session)
    assert report.votes_with_bad_counts == 0

    # add voter, breaking
    v.votes.create(option="no", voter_name="Two")
    report = generate_session_report(session)
    assert report.votes_with_bad_counts == 1

    # add count, still not equal
    v.counts.create(option="no", value=2)
    report = generate_session_report(session)
    assert report.votes_with_bad_counts == 1

    # add voter, fixing
    v.votes.create(option="no", voter_name="Three")
    report = generate_session_report(session)
    assert report.votes_with_bad_counts == 0