def test_sync_company_with_dnb_all_fields( requests_mock, dnb_response_uk, base_company_dict, update_descriptor, ): """ Test the sync_company_with_dnb task when all fields should be synced. """ requests_mock.post( DNB_SEARCH_URL, json=dnb_response_uk, ) company = CompanyFactory(duns_number='123456789') original_company = Company.objects.get(id=company.id) task_result = sync_company_with_dnb.apply_async( args=[company.id], kwargs={'update_descriptor': update_descriptor}, ) assert task_result.successful() company.refresh_from_db() uk_country = Country.objects.get(iso_alpha2_code='GB') assert model_to_dict_company(company) == { **base_company_dict, 'address_1': 'Unit 10, Ockham Drive', 'address_2': '', 'address_country': uk_country.id, 'address_county': '', 'address_postcode': 'UB6 0F2', 'address_town': 'GREENFORD', 'archived_documents_url_path': original_company.archived_documents_url_path, 'business_type': original_company.business_type_id, 'company_number': '01261539', 'created_by': original_company.created_by_id, 'duns_number': '123456789', 'employee_range': original_company.employee_range_id, 'export_experience_category': original_company.export_experience_category_id, 'global_ultimate_duns_number': '291332174', 'id': original_company.id, 'is_number_of_employees_estimated': True, 'modified_by': original_company.modified_by_id, 'name': 'FOO BICYCLE LIMITED', 'number_of_employees': 260, 'sector': original_company.sector_id, 'turnover': 50651895, 'turnover_range': original_company.turnover_range_id, 'uk_region': original_company.uk_region_id, 'dnb_modified_on': now(), } versions = list(Version.objects.get_for_object(company)) assert len(versions) == 1 version = versions[0] expected_update_descriptor = f'celery:sync_company_with_dnb:{task_result.id}' if update_descriptor: expected_update_descriptor = update_descriptor assert version.revision.comment == f'Updated from D&B [{expected_update_descriptor}]' assert version.revision.user is None
def test_sync_outdated_companies_with_dnb_all_fields( requests_mock, dnb_response_uk, base_company_dict, existing_company_dnb_modified_on, caplog, ): """ Test the sync_outdated_companies_with_dnb task when all fields should be synced. """ caplog.set_level('INFO') if callable(existing_company_dnb_modified_on): existing_company_dnb_modified_on = existing_company_dnb_modified_on() requests_mock.post( DNB_SEARCH_URL, json=dnb_response_uk, ) company = CompanyFactory( duns_number='123456789', dnb_modified_on=existing_company_dnb_modified_on, ) original_company = Company.objects.get(id=company.id) task_result = sync_outdated_companies_with_dnb.apply_async( kwargs={ 'dnb_modified_on_before': now() + timedelta(days=1), 'simulate': False, }, ) assert task_result.successful() company.refresh_from_db() uk_country = Country.objects.get(iso_alpha2_code='GB') assert model_to_dict_company(company) == { **base_company_dict, 'address_1': 'Unit 10, Ockham Drive', 'address_2': '', 'address_country': uk_country.id, 'address_county': '', 'address_postcode': 'UB6 0F2', 'address_town': 'GREENFORD', 'archived_documents_url_path': original_company.archived_documents_url_path, 'business_type': original_company.business_type_id, 'company_number': '01261539', 'created_by': original_company.created_by_id, 'duns_number': '123456789', 'employee_range': original_company.employee_range_id, 'export_experience_category': original_company.export_experience_category_id, 'global_ultimate_duns_number': '291332174', 'id': original_company.id, 'is_number_of_employees_estimated': True, 'modified_by': original_company.modified_by_id, 'name': 'FOO BICYCLE LIMITED', 'number_of_employees': 260, 'sector': original_company.sector_id, 'turnover': 50651895, 'turnover_range': original_company.turnover_range_id, 'uk_region': original_company.uk_region_id, 'dnb_modified_on': now(), } expected_message = f'Syncing dnb-linked company "{company.id}" Succeeded' assert expected_message in caplog.text
def test_link_company_with_dnb_success( requests_mock, dnb_response_uk, base_company_dict, ): """ Test the link_company_with_dnb utility. """ requests_mock.post( DNB_V2_SEARCH_URL, json=dnb_response_uk, ) company = CompanyFactory() original_company = Company.objects.get(id=company.id) modifying_adviser = AdviserFactory() link_company_with_dnb(company.id, '123456789', modifying_adviser) company.refresh_from_db() uk_country = Country.objects.get(iso_alpha2_code='GB') assert model_to_dict_company(company) == { **base_company_dict, 'address_1': 'Unit 10, Ockham Drive', 'address_2': '', 'address_country': uk_country.id, 'address_county': '', 'address_postcode': 'UB6 0F2', 'address_area': None, 'address_town': 'GREENFORD', 'archived_documents_url_path': original_company.archived_documents_url_path, 'business_type': original_company.business_type_id, 'company_number': '01261539', 'created_by': original_company.created_by_id, 'duns_number': '123456789', 'employee_range': original_company.employee_range_id, 'export_experience_category': original_company.export_experience_category_id, 'global_ultimate_duns_number': '291332174', 'id': original_company.id, 'modified_by': modifying_adviser.id, 'name': 'FOO BICYCLE LIMITED', 'is_number_of_employees_estimated': True, 'number_of_employees': 260, 'pending_dnb_investigation': False, 'reference_code': '', 'registered_address_area': None, 'sector': original_company.sector_id, 'export_segment': original_company.export_segment, 'export_sub_segment': original_company.export_sub_segment, 'turnover': 50651895, 'turnover_range': original_company.turnover_range_id, 'uk_region': original_company.uk_region_id, 'dnb_modified_on': now(), }
def test_update_company_from_dnb_data(dnb_response_uk, base_company_dict): """ Test the update_company_from_dnb_data command when all DNB fields are updated. """ company = CompanyFactory(duns_number='123456789') original_company = Company.objects.get(id=company.id) update_descriptor = 'foobar' task_result = update_company_from_dnb_data.apply_async( args=[dnb_response_uk['results'][0]], kwargs={'update_descriptor': update_descriptor}, ) assert task_result.successful() company.refresh_from_db() uk_country = Country.objects.get(iso_alpha2_code='GB') assert model_to_dict_company(company) == { **base_company_dict, 'address_1': 'Unit 10, Ockham Drive', 'address_2': '', 'address_country': uk_country.id, 'address_county': '', 'address_postcode': 'UB6 0F2', 'address_area': None, 'address_town': 'GREENFORD', 'archived_documents_url_path': original_company.archived_documents_url_path, 'business_type': original_company.business_type_id, 'company_number': '01261539', 'created_by': original_company.created_by_id, 'duns_number': '123456789', 'employee_range': original_company.employee_range_id, 'export_experience_category': original_company.export_experience_category_id, 'global_ultimate_duns_number': '291332174', 'id': original_company.id, 'is_number_of_employees_estimated': True, 'modified_by': original_company.modified_by_id, 'name': 'FOO BICYCLE LIMITED', 'number_of_employees': 260, 'sector': original_company.sector_id, 'export_segment': original_company.export_segment, 'export_sub_segment': original_company.export_sub_segment, 'turnover': 50651895, 'turnover_range': original_company.turnover_range_id, 'uk_region': original_company.uk_region_id, 'dnb_modified_on': now(), } versions = list(Version.objects.get_for_object(company)) assert len(versions) == 1 version = versions[0] assert version.revision.comment == f'Updated from D&B [{update_descriptor}]'
def test_update_company_from_dnb_all_fields( self, formatted_dnb_company, base_company_dict, adviser_callable, update_descriptor, ): """ Test that update_company_from_dnb will update all fields when the fields kwarg is not specified. """ duns_number = '123456789' company = CompanyFactory(duns_number=duns_number, pending_dnb_investigation=True) original_company = Company.objects.get(id=company.id) adviser = adviser_callable() update_company_from_dnb( company, formatted_dnb_company, user=adviser, update_descriptor=update_descriptor, ) company.refresh_from_db() uk_country = Country.objects.get(iso_alpha2_code='GB') assert model_to_dict_company(company) == { **base_company_dict, 'address_1': 'Unit 10, Ockham Drive', 'address_2': '', 'address_country': uk_country.id, 'address_county': '', 'address_postcode': 'UB6 0F2', 'address_town': 'GREENFORD', 'archived_documents_url_path': original_company.archived_documents_url_path, 'business_type': original_company.business_type.id, 'company_number': '01261539', 'created_by': original_company.created_by.id, 'duns_number': '123456789', 'employee_range': original_company.employee_range.id, 'export_experience_category': original_company.export_experience_category.id, 'global_ultimate_duns_number': '291332174', 'id': original_company.id, 'is_number_of_employees_estimated': True, 'modified_by': adviser.id if adviser else original_company.modified_by.id, 'name': 'FOO BICYCLE LIMITED', 'number_of_employees': 260, 'sector': original_company.sector.id, 'turnover': 50651895, 'turnover_range': original_company.turnover_range.id, 'uk_region': original_company.uk_region.id, 'dnb_modified_on': now(), } versions = list(Version.objects.get_for_object(company)) assert len(versions) == 1 version = versions[0] if update_descriptor: assert version.revision.comment == f'Updated from D&B [{update_descriptor}]' else: assert version.revision.comment == 'Updated from D&B' assert version.revision.user == adviser if not adviser: assert company.modified_on == original_company.modified_on