def test_schema_0_2_basic_1(): cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()) json_filename = os.path.join( os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.2", "pep_status_1.json", ) results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.2" assert results["statistics"][ "count_person_statements_have_pep_status"] == 1 # We want to test the dict has the correct keys! # So these tests are deliberately written so they will error if the specified key is not in that dict assert (results["statistics"] ["count_person_statements_have_pep_status_statuses"]["isPep"] == 1) assert ( results["statistics"] ["count_person_statements_have_pep_status_statuses"]["isNotPep"] == 0) assert results["additional_checks_count"] == 0
def test_schema_0_2_pep_details_no_missing_info_but_incorrect_status_1(): cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()) json_filename = os.path.join( os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.2", "pep_details_no_missing_info_but_incorrect_status_1.json", ) results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.2" assert results["statistics"][ "count_person_statements_have_pep_status"] == 1 # We want to test the dict has the correct keys! # So these tests are deliberately written so they will error if the specified key is not in that dict assert (results["statistics"] ["count_person_statements_have_pep_status_statuses"]["isPep"] == 0) assert ( results["statistics"] ["count_person_statements_have_pep_status_statuses"]["isNotPep"] == 1) assert results["additional_checks_count"] == 1 assert (results["additional_checks"][0]["type"] == "has_pep_details_without_missing_info_but_incorrect_pep_status") assert results["additional_checks"][0]["statement_type"] == "person" assert (results["additional_checks"][0]["statement"] == "a5680770-899f-4f7a-b795-e266f1ce8668")
def test_schema_0_3_pep_details_but_incorrect_status_2(): cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()) json_filename = os.path.join( os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.3", "pep_details_but_incorrect_status_2.json", ) results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.3" assert results["statistics"][ "count_person_statements_have_pep_status"] == 0 # We want to test the dict has the correct keys! # So these tests are deliberately written so they will error if the specified key is not in that dict assert (results["statistics"] ["count_person_statements_have_pep_status_statuses"]["isPep"] == 0) assert ( results["statistics"] ["count_person_statements_have_pep_status_statuses"]["isNotPep"] == 0) assert ( results["statistics"] ["count_person_statements_have_pep_status_statuses"]["unknown"] == 0) assert results["additional_checks_count"] == 1 assert (results["additional_checks"][0]["type"] == "has_pep_details_but_incorrect_pep_status") assert results["additional_checks"][0]["statement_type"] == "person" assert (results["additional_checks"][0]["statement"] == "019a93f1-e470-42e9-957b-03559861b2e2")
def test_basic_with_operating_mic_code_missing_1(): cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()) json_filename = os.path.join( os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.3", "basic_with_operating_mic_code_missing_1.json", ) results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.3" assert results["validation_errors_count"] == 0 assert results["additional_fields_count"] == 0 assert results["additional_checks_count"] == 1 assert ( results["additional_checks"][0]["type"] == "entity_security_listing_market_identifier_code_set_but_not_operating_market_identifier_code" ) assert results["additional_checks"][0]["statement_type"] == "entity" assert (results["additional_checks"][0]["statement"] == "1dc0e987-5c57-4a1c-b3ad-61353b66a9b7")
def test_dict_then_0_2(): cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()) json_filename = os.path.join( os.path.dirname(os.path.realpath(__file__)), "fixtures", "mixed", "dict_then_0.2.json", ) results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.3" assert results["additional_checks_count"] == 2 assert results["additional_checks"][0][ "type"] == "unknown_schema_version_used" assert results["additional_checks"][0]["schema_version"] == "{}" assert results["additional_checks"][1][ "type"] == "inconsistent_schema_version_used" assert (results["additional_checks"][1]["statement"] == "fbfd0547-d0c6-4a00-b559-5c5e91c34f5c") assert results["additional_checks"][1][ "statement_type"] == "ownership_or_control" assert results["additional_checks"][1]["schema_version"] == "0.2"
def test_schema_0_3_basic_1(): cove_temp_folder = tempfile.mkdtemp( prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir() ) json_filename = os.path.join( os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.3", "basic_1.json" ) results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.3" # We want to test the dict has the correct keys! # So these tests are deliberately written so they will error if the specified key is not in that dict assert ( 1 == results["statistics"][ "count_ownership_or_control_statement_interest_direct_or_indirect" ]["direct"] ) assert ( 0 == results["statistics"][ "count_ownership_or_control_statement_interest_direct_or_indirect" ]["indirect"] ) assert ( 0 == results["statistics"][ "count_ownership_or_control_statement_interest_direct_or_indirect" ]["unknown"] )
def test_schema_0_1(): cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()) json_filename = os.path.join(os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.1", "basic_1.json") results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.1" # Schema v0.1 and Schema v0.2 have different enum options, make sure that is reflected in data keys = results["statistics"][ "count_ownership_or_control_statement_interest_statement_types"].keys( ) assert 12 == len(keys) # We want to test the dict has the correct keys! # So these tests are deliberately written so they will error if the specified key is not in that dict assert (1 == results["statistics"] ["count_ownership_or_control_statement_interest_statement_types"] ["shareholding"]) assert (0 == results["statistics"] ["count_ownership_or_control_statement_interest_statement_types"] ["voting-rights"]) assert (0 == results["statistics"] ["count_ownership_or_control_statement_interest_statement_types"] ["appointment-of-board"]) # noqa assert (0 == results["statistics"] ["count_ownership_or_control_statement_interest_statement_types"] ["influence-or-control"]) # noqa assert (0 == results["statistics"] ["count_ownership_or_control_statement_interest_statement_types"] ["senior-managing-official"]) # noqa assert (0 == results["statistics"] ["count_ownership_or_control_statement_interest_statement_types"] ["settlor-of-trust"]) # noqa assert (0 == results["statistics"] ["count_ownership_or_control_statement_interest_statement_types"] ["trustee-of-trust"]) # noqa assert (0 == results["statistics"] ["count_ownership_or_control_statement_interest_statement_types"] ["protector-of-trust"]) # noqa assert (0 == results["statistics"] ["count_ownership_or_control_statement_interest_statement_types"] ["beneficiary-of-trust"]) # noqa assert (0 == results["statistics"] ["count_ownership_or_control_statement_interest_statement_types"] ["other-influence-or-control-of-trust"]) # noqa assert (0 == results["statistics"] ["count_ownership_or_control_statement_interest_statement_types"] ["rights-to-surplus-assets"]) # noqa assert (0 == results["statistics"] ["count_ownership_or_control_statement_interest_statement_types"] ["rights-to-profit-or-income"]) # noqa
def test_basic_1(): cove_temp_folder = tempfile.mkdtemp(prefix='lib-cove-bods-tests-', dir=tempfile.gettempdir()) json_filename = os.path.join(os.path.dirname( os.path.realpath(__file__)), 'fixtures', 'api', 'basic_1.json' ) results = bods_json_output(cove_temp_folder, json_filename) assert results['validation_errors_count'] == 0 assert results['additional_fields_count'] == 0 assert results['file_type'] == 'json'
def test_basic_1(): cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()) json_filename = os.path.join(os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.3", "basic_1.json") results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.3" assert results["validation_errors_count"] == 0 assert results["additional_fields_count"] == 0 assert results["additional_checks_count"] == 0
def test_not_in_old_schema(): cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()) json_filename = os.path.join(os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.1", "basic_1.json") results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.1" assert "count_person_statements_have_pep_status" not in results[ "statistics"] assert results["additional_checks_count"] == 0
def test_schema_0_2(): cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()) json_filename = os.path.join(os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.2", "basic_1.json") results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.2" assert (1 == results["statistics"][ "count_ownership_or_control_statement_with_at_least_one_interest_beneficial"] )
def test_basic_missing_statement_ids(): cove_temp_folder = tempfile.mkdtemp(prefix='lib-cove-bods-tests-', dir=tempfile.gettempdir()) json_filename = os.path.join(os.path.dirname( os.path.realpath(__file__)), 'fixtures', 'api', 'basic_missing_statement_ids.json' ) results = bods_json_output(cove_temp_folder, json_filename) assert results['file_type'] == 'json' assert results['validation_errors_count'] == 3 assert results['additional_fields_count'] == 0 for validation_error, data in results['validation_errors']: validation_error_data = json.loads(validation_error) assert 'is not valid under any of the given schemas' in validation_error_data['message']
def test_person_address_alternative_and_other_1(): """This has an alternative and another address, which is fine""" cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()) json_filename = os.path.join( os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.2", "person_address_alternative_and_other_1.json", ) results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.2" assert results["additional_checks_count"] == 0
def test_schema_0_2(): cove_temp_folder = tempfile.mkdtemp( prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir() ) json_filename = os.path.join( os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.2", "basic_1.json" ) results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.2" # Schema v0.1 and Schema v0.2 do not have this stat at all. assert ( "count_ownership_or_control_statement_interest_direct_or_indirect" not in results["statistics"].keys() )
def test_iscompontent_os_03_dr_03(): """This is a piece of sample data direct from the schema with iscomponent / componentStatementIDs data. Make sure it passes all our tests""" cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()) json_filename = os.path.join( os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.2", "iscompontent-os-03-dr-03.json", ) results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.2" assert results["validation_errors_count"] == 0 assert results["additional_fields_count"] == 0 assert results["additional_checks_count"] == 0
def test_basic_address_with_postcode_in_address_1(): cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()) json_filename = os.path.join( os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.1", "basic_address_with_postcode_in_address_1.json", ) results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.1" assert results["statistics"]["count_addresses"] == 1 assert results["statistics"]["count_addresses_with_postcode"] == 1 assert results["statistics"]["count_addresses_with_country"] == 0 assert (results["statistics"] ["count_addresses_with_postcode_duplicated_in_address"] == 1)
def test_bad_statement_id_type(): cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()) json_filename = os.path.join( os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.2", "bad_statement_id_type.json", ) results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.2" assert results["validation_errors_count"] == 1 validation_error = json.loads(results["validation_errors"][0][0]) assert validation_error["message"].startswith( "'statementID' should be a string.") assert results["additional_fields_count"] == 0 assert results["additional_checks_count"] == 0
def test_schema_0_1_file_1(): cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()) json_filename = os.path.join( os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.1", "beneficialOwnershipOrControl_but_unspecified_person_1.json", ) results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.1" assert results["validation_errors_count"] == 0 assert results["additional_checks_count"] == 1 assert ( results["additional_checks"][0]["type"] == "statement_is_beneficialOwnershipOrControl_but_no_person_specified")
def test_entity_only_alternative_1(): cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()) json_filename = os.path.join( os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.2", "entity_address_only_alternative_1.json", ) results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.2" assert results["additional_checks_count"] == 1 assert (results["additional_checks"][0]["type"] == "alternative_address_with_no_other_address_types") assert (results["additional_checks"][0]["statement"] == "1dc0e987-5c57-4a1c-b3ad-61353b66a9b7") assert results["additional_checks"][0]["statement_type"] == "entity"
def test_person_only_alternative_1(): cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()) json_filename = os.path.join( os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.2", "person_address_only_alternative_1.json", ) results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.2" assert results["additional_checks_count"] == 1 assert (results["additional_checks"][0]["type"] == "alternative_address_with_no_other_address_types") assert (results["additional_checks"][0]["statement"] == "019a93f1-e470-42e9-957b-03559861b2e2") assert results["additional_checks"][0]["statement_type"] == "person"
def test_entity_sub_type_does_not_align_1(): cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()) json_filename = os.path.join( os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.3", "entity_sub_type_does_not_align_1.json", ) results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.3" assert results["validation_errors_count"] == 0 assert results["additional_fields_count"] == 0 assert results["additional_checks_count"] == 1 assert (results["additional_checks"][0]["type"] == "statement_entity_type_and_entity_sub_type_do_not_align") assert (results["additional_checks"][0]["statement"] == "1dc0e987-5c57-4a1c-b3ad-61353b66a9b7")
def test_has_public_listing_information_but_has_public_listing_is_false_1(): cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()) json_filename = os.path.join( os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.3", "has_public_listing_information_but_has_public_listing_is_false_1.json", ) results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.3" assert results["validation_errors_count"] == 0 assert results["additional_fields_count"] == 0 assert results["additional_checks_count"] == 1 assert (results["additional_checks"][0]["type"] == "has_public_listing_information_but_has_public_listing_is_false") assert (results["additional_checks"][0]["statement"] == "1dc0e987-5c57-4a1c-b3ad-61353b66a9b7")
def test_0_1_then_0_2(): cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()) json_filename = os.path.join( os.path.dirname(os.path.realpath(__file__)), "fixtures", "mixed", "0.1_then_0.2.json", ) results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.1" assert results["additional_checks_count"] == 1 assert results["additional_checks"][0][ "type"] == "inconsistent_schema_version_used" assert (results["additional_checks"][0]["statement"] == "019a93f1-e470-42e9-957b-03559861b2e2") assert results["additional_checks"][0]["statement_type"] == "person" assert results["additional_checks"][0]["schema_version"] == "0.2"
def test_iscomponent_true_but_has_component_statement_ids_1(): cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()) json_filename = os.path.join( os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.2", "iscomponent_true_but_has_component_statement_ids_1.json", ) results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.2" assert results["additional_checks_count"] == 1 assert ( results["additional_checks"][0]["type"] == "ownership_or_control_statement_has_is_compontent_and_component_statement_ids" ) # noqa assert (results["additional_checks"][0]["statement"] == "12340547-d0c6-4a00-b559-5c5e91c34f5d")
def test_statement_is_component_but_is_not_used_1(): cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()) json_filename = os.path.join( os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.2", "statement_is_component_but_is_not_used_1.json", ) results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.2" assert results["additional_checks_count"] == 1 assert (results["additional_checks"][0]["type"] == "statement_is_component_but_not_used_in_component_statement_ids") assert (results["additional_checks"][0]["statement"] == "426b7dc8-8b7a-4d50-93de-8e200a4aedf5") assert results["additional_checks"][0][ "statement_type"] == "ownership_or_control"
def test_statement_is_component_but_is_used_in_the_wrong_order_1(): cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()) json_filename = os.path.join( os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.2", "statement_is_component_but_is_used_in_the_wrong_order_1.json", ) results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.2" assert results["additional_checks_count"] == 1 assert (results["additional_checks"][0]["type"] == "statement_is_component_but_is_after_use_in_component_statement_id" ) # noqa assert (results["additional_checks"][0]["statement"] == "24e604f2-790f-4600-8ff2-7fd8e46f047e") assert results["additional_checks"][0][ "statement_type"] == "ownership_or_control"
def test_component_statement_ids_not_in_package_1(): cove_temp_folder = tempfile.mkdtemp(prefix="lib-cove-bods-tests-", dir=tempfile.gettempdir()) json_filename = os.path.join( os.path.dirname(os.path.realpath(__file__)), "fixtures", "0.2", "component_statement_ids_not_in_package_1.json", ) results = bods_json_output(cove_temp_folder, json_filename) assert results["schema_version"] == "0.2" assert results["additional_checks_count"] == 1 assert (results["additional_checks"][0]["type"] == "component_statement_id_not_in_package") assert (results["additional_checks"][0] ["seen_in_ownership_or_control_statement"] == "fbfd0547-d0c6-4a00-b559-5c5e91c34f5c") # noqa assert (results["additional_checks"][0]["component_statement_id"] == "000a00a0-a000-00a0-000a-00000000a0a0")