def test_creatibutor_name_edge_cases(): # Pass in name and family_name: name is ignored valid_person_name_and_given_name = { "name": "Cesar, Julio", "family_name": "Cesar", "type": "personal" } expected = { "name": "Cesar", "type": "personal", "family_name": "Cesar", } assert expected == PersonOrOrganizationSchema().load( valid_person_name_and_given_name) # Pass name and family_name for organization: family_name is ignored and # removed valid_org_name_and_family_name = { "name": "Julio Cesar Inc.", "family_name": "Cesar", "type": "organizational" } expected = { "name": "Julio Cesar Inc.", "type": "organizational", } assert expected == PersonOrOrganizationSchema().load( valid_org_name_and_family_name)
def test_creator_person_valid_minimal(): valid_given_name = {"given_name": "Julio", "type": "personal"} expected = { "given_name": "Julio", "name": "Julio", "type": "personal", } assert expected == PersonOrOrganizationSchema().load(valid_given_name) valid_family_name = {"family_name": "Cesar", "type": "personal"} expected = { "family_name": "Cesar", "name": "Cesar", "type": "personal", } assert expected == PersonOrOrganizationSchema().load(valid_family_name)
def test_creator_invalid_no_type(): invalid_no_type = { "name": "Julio Cesar", } assert_raises_messages( lambda: PersonOrOrganizationSchema().load(invalid_no_type), { 'type': ["Invalid value. Choose one of ['organizational', 'personal']."] })
def test_creator_invalid_identifiers_ror(): invalid_ror_identifier = { "name": "Julio Cesar Empire", "type": "organizational", "identifiers": [{ "scheme": "ror", "identifier": "9999-9999-9999-9999", }] } loaded = PersonOrOrganizationSchema().load(invalid_ror_identifier) # Check that the scheme type was force by the backend assert loaded["identifiers"][0]["scheme"] == "gnd"
def test_creator_invalid_identifiers_ror(app): invalid_ror_identifier = { "name": "Julio Cesar Empire", "type": "organizational", "identifiers": [{ "scheme": "ror", "identifier": "9999-9999-9999-9999", }] } assert_raises_messages( lambda: PersonOrOrganizationSchema().load(invalid_ror_identifier), {'identifiers': {0: {'identifier': 'Invalid ROR identifier.'}}} )
def test_creator_organization_valid_full(): # Full organization valid_full_org = { "name": "California Digital Library", "type": "organizational", "identifiers": [{ "scheme": "ror", "identifier": "03yrm5c26" }], "family_name": "I am ignored!" } loaded = PersonOrOrganizationSchema().load(valid_full_org) valid_full_org.pop("family_name") assert valid_full_org == loaded
def test_creator_invalid_identifiers_orcid(app): invalid_orcid_identifier = { "family_name": "Cesar", "given_name": "Julio", "type": "personal", "identifiers": [{ "scheme": "orcid", # NOTE: This *is* an invalid ORCiD "identifier": "9999-9999-9999-9999", }] } assert_raises_messages( lambda: PersonOrOrganizationSchema().load(invalid_orcid_identifier), {'identifiers': {0: {'identifier': 'Invalid ORCID identifier.'}}} )
def test_creator_invalid_identifiers_orcid(): invalid_orcid_identifier = { "family_name": "Cesar", "given_name": "Julio", "type": "personal", "identifiers": [{ "scheme": "orcid", # NOTE: This *is* an invalid ORCiD "identifier": "9999-9999-9999-9999", }] } loaded = PersonOrOrganizationSchema().load(invalid_orcid_identifier) # Check that the scheme type was force by the backend assert loaded["identifiers"][0]["scheme"] == "gnd"
def test_creator_invalid_identifiers_scheme(): invalid_scheme = { "family_name": "Cesar", "given_name": "Julio", "type": "personal", "identifiers": [{ "scheme": "unapproved scheme", "identifier": "0000-0002-1825-0097", }] } # Check returns the 3 schemes (org + personal) # because the scheme-per-type check comes later on loaded = PersonOrOrganizationSchema().load(invalid_scheme) # Check that the scheme type was force by the backend assert loaded["identifiers"][0]["scheme"] == "orcid"
def test_creator_invalid_identifiers_scheme(app): invalid_scheme = { "family_name": "Cesar", "given_name": "Julio", "type": "personal", "identifiers": [{ "scheme": "unapproved scheme", "identifier": "0000-0002-1825-0097", }] } # Check returns the 3 schemes (org + personal) # because the scheme-per-type check comes later on assert_raises_messages( lambda: PersonOrOrganizationSchema().load(invalid_scheme), {'identifiers': {0: { 'scheme': 'Invalid scheme.' }}} )
def test_creator_organization_valid_minimal(): valid_minimal = {"name": "Julio Cesar Empire", "type": "organizational"} assert valid_minimal == PersonOrOrganizationSchema().load(valid_minimal)