def test_full_organization():
    create_jurisdictions()
    org = ScrapeOrganization("United Nations", classification="international")
    org.add_identifier("un")
    org.add_name("UN", start_date="1945")
    org.add_contact_detail(type="phone",
                           value="555-555-1234",
                           note="this is fake")
    org.add_link("http://example.com/link")
    org.add_source("http://example.com/source")

    # import org
    od = org.as_dict()
    OrganizationImporter("jid1").import_data([od])

    # get person from db and assert it imported correctly
    o = Organization.objects.get()
    assert "ocd-organization" in o.id
    assert o.name == org.name

    assert o.identifiers.all()[0].identifier == "un"
    assert o.identifiers.all()[0].scheme == ""

    assert o.other_names.all()[0].name == "UN"
    assert o.other_names.all()[0].start_date == "1945"

    assert o.contact_details.all()[0].type == "phone"
    assert o.contact_details.all()[0].value == "555-555-1234"
    assert o.contact_details.all()[0].note == "this is fake"

    assert o.links.all()[0].url == "http://example.com/link"
    assert o.sources.all()[0].url == "http://example.com/source"
def test_deduplication_other_name_overlaps():
    create_jurisdictions()
    create_org()
    org = ScrapeOrganization("The United Nations",
                             classification="international")
    org.add_name("United Nations")
    od = org.as_dict()
    OrganizationImporter("jid1").import_data([od])
    assert Organization.objects.all().count() == 1
示例#3
0
def test_locked_field_subitem():
    create_jurisdiction()
    org = ScrapeOrganization("SHIELD")
    org.add_name("S.H.I.E.L.D.")
    oi = OrganizationImporter("jid")
    oi.import_data([org.as_dict()])

    # lock the field
    o = Organization.objects.get()
    o.locked_fields = ["other_names"]
    o.save()

    # reimport
    org = ScrapeOrganization("SHIELD").as_dict()
    oi = OrganizationImporter("jid")
    oi.import_data([org])

    o = Organization.objects.get()
    assert o.other_names.get().name == "S.H.I.E.L.D."
def test_deduplication_overlap_name_distinct_juris():
    create_jurisdictions()

    org_jid_1 = Organization.objects.create(
        name="World Wrestling Federation",
        classification="international",
        jurisdiction_id="jid1",
    )
    org_jid_1.other_names.create(name="WWF")

    org = ScrapeOrganization(name="WWF", classification="international")
    org.add_name("WWF")

    oi1 = OrganizationImporter("jid1")
    oi1.import_item(org.as_dict())
    assert Organization.objects.count() == 1

    oi2 = OrganizationImporter("jid2")
    oi2.import_item(org.as_dict())
    assert Organization.objects.count() == 2
    def dict_to_org(self, committee):
        names = sorted(committee["name"])
        first_name = names.pop()
        if "chamber" in committee:
            o = Organization(first_name,
                             classification="committee",
                             chamber=committee["chamber"])
        else:
            o = Organization(first_name,
                             classification="committee",
                             parent_id=committee["parent"])
        for other_name in names:
            o.add_name(other_name)
        for code in committee["code"]:
            if code:
                o.add_name(code)
        for source in committee["source"]:
            o.add_source(source)
            self.scrape_members(o, source)

        return o
def test_deduplication_error_overlaps():
    create_jurisdictions()

    Organization.objects.create(
        name="World Wrestling Federation",
        classification="international",
        jurisdiction_id="jid1",
    )
    wildlife = Organization.objects.create(
        name="World Wildlife Fund",
        classification="international",
        jurisdiction_id="jid1",
    )
    wildlife.other_names.create(name="WWF")

    org = ScrapeOrganization("World Wrestling Federation",
                             classification="international")
    org.add_name("WWF")
    od = org.as_dict()
    with pytest.raises(SameOrgNameError):
        OrganizationImporter("jid1").import_data([od])