def test_resolve_json_id(): create_jurisdiction() o = Organization.objects.create(name="WWE", jurisdiction_id="jid") p = Person.objects.create(name="Dwayne Johnson", family_name="Johnson") p.other_names.create(name="Rock") p.memberships.create(organization=o) pi = PersonImporter("jid") assert pi.resolve_json_id('~{"name": "Dwayne Johnson"}') == p.id assert pi.resolve_json_id('~{"name": "Rock"}') == p.id assert pi.resolve_json_id('~{"name": "Johnson"}') == p.id
def test_resolve_json_id_multiple_family_name(): create_jurisdiction() o = Organization.objects.create(name="WWE", jurisdiction_id="jid") p1 = Person.objects.create(name="Dwayne Johnson", family_name="Johnson") p1.other_names.create(name="Rock") p2 = Person.objects.create(name="Adam Johnson", family_name="Johnson") for p in Person.objects.all(): Membership.objects.create(person=p, organization=o) # If there are multiple people with a family name, full name/other name # lookups should work but family name lookups should fail. pi = PersonImporter("jid") assert pi.resolve_json_id('~{"name": "Dwayne Johnson"}') == p1.id assert pi.resolve_json_id('~{"name": "Adam Johnson"}') == p2.id with pytest.raises(UnresolvedIdError): pi.resolve_json_id('~{"name": "Johnson"}')
def test_resolve_json_id(): p1 = ScrapePerson("Dwayne").as_dict() p2 = ScrapePerson("Dwayne").as_dict() pi = PersonImporter("jid") # do import and get database id p1_id = p1["_id"] p2_id = p2["_id"] pi.import_data([p1, p2]) db_id = Person.objects.get().id # simplest case assert pi.resolve_json_id(p1_id) == db_id # duplicate should resolve to same id assert pi.resolve_json_id(p2_id) == db_id # a null id should map to None assert pi.resolve_json_id(None) is None # no such id with pytest.raises(UnresolvedIdError): pi.resolve_json_id("this-is-invalid")