def test__get_spine_parameters__no_pmi__valid_except_names(
        client, faker, mock_convert_name):
    u = login(client, faker)
    dth = DemographicsTestHelper(faker=faker,
                                 user=u,
                                 find_pre_pmi_details=False)
    dr = dth.get_demographics_request__spine_lookup()
    drd = dr.data[0]

    error_message = 'ABCDEFG'

    mock_convert_name.return_value = (error_message, '')

    actual = get_spine_parameters(drd)

    mock_convert_name.call_count = 2

    assert parse_date(actual.dob) == parse_date(drd.dob)
    assert actual.family_name == None
    assert actual.gender == convert_gender(drd.gender)[1]
    assert actual.given_name == None
    assert actual.nhs_number == drd.nhs_number
    assert actual.postcode == drd.postcode

    assert len(actual.warnings) == 2
    assert actual.warnings[0].scope == 'family_name'
    assert actual.warnings[0].message == error_message
    assert actual.warnings[1].scope == 'given_name'
    assert actual.warnings[1].message == error_message

    _remove_files(dr)
def test__get_spine_parameters__with_pmi__valid_except_pmi_postcode(
        client, faker, mock_convert_postcode):
    u = login(client, faker)
    dth = DemographicsTestHelper(faker=faker, user=u)
    dr = dth.get_demographics_request__spine_lookup()
    drd = dr.data[0]

    error_message = 'ABCDEFG'

    mock_convert_postcode.side_effect = [
        (None, drd.postcode),
        (error_message, ''),
    ]

    actual = get_spine_parameters(drd)

    mock_convert_postcode.call_count == 2

    assert parse_date(actual.dob) == parse_date(drd.dob)
    assert actual.family_name == drd.family_name
    assert actual.gender == convert_gender(drd.gender)[1]
    assert actual.given_name == drd.given_name
    assert actual.nhs_number == drd.nhs_number
    assert actual.postcode == drd.postcode

    assert len(actual.warnings) == 1
    assert actual.warnings[0].scope == 'pmi_postcode'
    assert actual.warnings[0].message == error_message

    _remove_files(dr)