def test_returns_multiple_practices(): mock_data_fetcher = Mock() mock_observability_probe = Mock() mock_data_fetcher.fetch_all_practices.return_value = [ OrganisationDetails(ods_code="A12345", name="GP Practice"), OrganisationDetails(ods_code="B56789", name="GP Practice 2"), OrganisationDetails(ods_code="C56789", name="GP Practice 3"), ] metadata_service = Gp2gpOrganisationMetadataService( data_fetcher=mock_data_fetcher, observability_probe=mock_observability_probe) asid_lookup = AsidLookup([ OdsAsid(ods_code="A12345", asid="123456781234"), OdsAsid(ods_code="B56789", asid="443456781234"), OdsAsid(ods_code="C56789", asid="773456781234"), ]) expected = [ PracticeDetails(asids=["123456781234"], ods_code="A12345", name="GP Practice"), PracticeDetails(asids=["443456781234"], ods_code="B56789", name="GP Practice 2"), PracticeDetails(asids=["773456781234"], ods_code="C56789", name="GP Practice 3"), ] actual = metadata_service.retrieve_practices_with_asids(asid_lookup) assert actual == expected
def test_returns_multiple_practices_and_ccgs(): practice_metadata = [ PracticeDetails(asids=["123456781234"], ods_code="A12345", name="GP Practice"), PracticeDetails(asids=["443456781234"], ods_code="B56789", name="GP Practice 2"), PracticeDetails(asids=["773456781234"], ods_code="C56789", name="GP Practice 3"), ] ccg_metadata = [ CcgDetails(ods_code="12A", name="CCG", practices=[]), CcgDetails(ods_code="34A", name="CCG 2", practices=["A12345"]), CcgDetails(ods_code="56A", name="CCG 3", practices=["B56789", "C56789"]), ] actual = OrganisationMetadata.from_practice_and_ccg_lists( practices=practice_metadata, ccgs=ccg_metadata, year=2019, month=6) assert actual.practices == practice_metadata assert actual.ccgs == ccg_metadata
def test_returns_multiple_ccgs_with_at_least_one_practice(): mock_observability_probe = Mock() fake_data_fetcher = FakeDataFetcher(ccgs=[ CCGPracticeAllocation( ccg=OrganisationDetails(ods_code="12A", name="CCG"), practices=[], ), CCGPracticeAllocation( ccg=OrganisationDetails(ods_code="34A", name="CCG 2"), practices=[ OrganisationDetails(ods_code="C45678", name="GP Practice") ], ), CCGPracticeAllocation( ccg=OrganisationDetails(ods_code="56A", name="CCG 3"), practices=[ OrganisationDetails(ods_code="D34567", name="GP Practice 2"), OrganisationDetails(ods_code="E98765", name="GP Practice 3"), OrganisationDetails(ods_code="F23456", name="GP Practice 4"), ], ), ]) canonical_practice_list = [ PracticeDetails(name="GP Practice", ods_code="C45678", asids=["123456789123"]), PracticeDetails(name="GP Practice 2", ods_code="D34567", asids=["223456789123"]), PracticeDetails(name="GP Practice 3", ods_code="E98765", asids=["323456789123"]), PracticeDetails(name="GP Practice 4", ods_code="F23456", asids=["423456789123"]), ] metadata_service = Gp2gpOrganisationMetadataService( fake_data_fetcher, mock_observability_probe) expected = [ CcgDetails(ods_code="34A", name="CCG 2", practices=["C45678"]), CcgDetails(ods_code="56A", name="CCG 3", practices=["D34567", "E98765", "F23456"]), ] actual = metadata_service.retrieve_ccg_practice_allocations( canonical_practice_list=canonical_practice_list) assert actual == expected
def test_filters_out_ccg_practice_that_are_not_in_the_canonical_list(): mock_observability_probe = Mock() fake_data_fetcher = FakeDataFetcher(ccgs=[ CCGPracticeAllocation( ccg=OrganisationDetails(ods_code="X12", name="CCG"), practices=[ OrganisationDetails(ods_code="A12345", name="GP Practice"), OrganisationDetails(ods_code="A12346", name="Other Practice"), ], ) ]) canonical_practice_list = [ PracticeDetails(ods_code="A12345", name="GP Practice", asids=["123456781234"]) ] metadata_service = Gp2gpOrganisationMetadataService( fake_data_fetcher, mock_observability_probe) expected = [CcgDetails(ods_code="X12", name="CCG", practices=["A12345"])] actual = metadata_service.retrieve_ccg_practice_allocations( canonical_practice_list=canonical_practice_list) assert actual == expected
def test_returns_unique_ccgs(): mock_observability_probe = Mock() fake_data_fetcher = FakeDataFetcher(ccgs=[ CCGPracticeAllocation( ccg=OrganisationDetails(ods_code="X12", name="CCG"), practices=[ OrganisationDetails(ods_code="A12345", name="GP Practice") ], ), CCGPracticeAllocation( ccg=OrganisationDetails(ods_code="X12", name="Another CCG"), practices=[ OrganisationDetails(ods_code="A12345", name="GP Practice") ], ), ]) canonical_practice_list = [ PracticeDetails(name="GP Practice", ods_code="A12345", asids=["123456789123"]) ] metadata_service = Gp2gpOrganisationMetadataService( fake_data_fetcher, mock_observability_probe) expected = [CcgDetails(ods_code="X12", name="CCG", practices=["A12345"])] actual = metadata_service.retrieve_ccg_practice_allocations( canonical_practice_list) mock_observability_probe.record_duplicate_organisation.assert_called_once_with( "X12") assert actual == expected
def test_returns_single_ccg_with_one_practice(): mock_observability_probe = Mock() fake_data_fetcher = FakeDataFetcher(ccgs=[ CCGPracticeAllocation( ccg=OrganisationDetails(ods_code="X12", name="CCG"), practices=[ OrganisationDetails(ods_code="A12345", name="GP Practice") ], ) ]) canonical_practice_list = [ PracticeDetails(name="GP Practice", ods_code="A12345", asids=["123456789123"]) ] metadata_service = Gp2gpOrganisationMetadataService( fake_data_fetcher, mock_observability_probe) expected = [CcgDetails(ods_code="X12", name="CCG", practices=["A12345"])] actual = metadata_service.retrieve_ccg_practice_allocations( canonical_practice_list=canonical_practice_list) assert actual == expected
def test_returns_unique_practices(): mock_data_fetcher = Mock() mock_observability_probe = Mock() mock_data_fetcher.fetch_all_practices.return_value = [ OrganisationDetails(name="GP Practice", ods_code="A12345"), OrganisationDetails(name="GP Practice 2", ods_code="A12345"), ] metadata_service = Gp2gpOrganisationMetadataService( data_fetcher=mock_data_fetcher, observability_probe=mock_observability_probe) asid_lookup = AsidLookup([OdsAsid("A12345", "123456789123")]) expected = [ PracticeDetails(asids=["123456789123"], ods_code="A12345", name="GP Practice") ] actual = metadata_service.retrieve_practices_with_asids(asid_lookup) mock_observability_probe.record_duplicate_organisation.assert_called_once_with( "A12345") assert actual == expected
def test_skips_practice_and_warns_when_ods_not_in_asid_mapping(): mock_data_fetcher = Mock() mock_observability_probe = Mock() mock_data_fetcher.fetch_all_practices.return_value = [ OrganisationDetails(ods_code="A12345", name="GP Practice"), OrganisationDetails(ods_code="B12345", name="GP Practice 2"), ] metadata_service = Gp2gpOrganisationMetadataService( data_fetcher=mock_data_fetcher, observability_probe=mock_observability_probe) asid_lookup = AsidLookup([ OdsAsid(ods_code="B12345", asid="123456781234"), ]) expected = [ PracticeDetails(asids=["123456781234"], ods_code="B12345", name="GP Practice 2") ] actual = metadata_service.retrieve_practices_with_asids(asid_lookup) mock_observability_probe.record_asids_not_found.assert_called_once_with( "A12345") assert actual == expected