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"}')
Пример #3
0
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")