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
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])