public async Task Then_Postcodes_Are_Added_To_The_Providers_That_Are_Registered_And_Lat_Lon_Updated(
            List <Domain.Entities.Provider> providerEntities,
            string expectedPostcode,
            PostcodeLookup postcodeLookup,
            List <ContactDetail> contactDetails,
            [Frozen] Mock <IRoatpApiService> roatpApiService,
            [Frozen] Mock <IProviderRepository> providerRepository,
            [Frozen] Mock <IProviderRegistrationRepository> providerRegistrationRepository,
            [Frozen] Mock <IProviderRegistrationImportRepository> providerRegistrationImportRepository,
            [Frozen] Mock <IPostcodeApiService> postcodeApiService,
            ProviderRegistrationAddressImportService service)
        {
            //Arrange
            contactDetails = contactDetails.Select(c =>
            {
                c.ContactType             = "P";
                c.ContactAddress.PostCode = expectedPostcode;
                return(c);
            }).ToList();
            postcodeLookup.Result = postcodeLookup.Result.Select(c =>
            {
                c.Query           = expectedPostcode;
                c.Result.Postcode = expectedPostcode;
                return(c);
            }).ToList();
            var providerRegistrationLookup = new ProviderRegistrationLookup
            {
                Results = new List <ProviderResult>()
            };

            foreach (var provider in providerEntities)
            {
                providerRegistrationLookup.Results.Add(new ProviderResult
                {
                    Ukprn          = provider.Ukprn,
                    ContactDetails = contactDetails
                });
            }
            providerRepository.Setup(x => x.GetAllRegistered()).ReturnsAsync(providerEntities);
            roatpApiService
            .Setup(x => x.GetProviderRegistrationLookupData(It.IsAny <List <int> >()))
            .ReturnsAsync(providerRegistrationLookup);
            postcodeApiService.Setup(x => x.GetPostcodeData(It.Is <PostcodeLookupRequest>(c => c.Postcodes.TrueForAll(y => y.Equals(expectedPostcode)))))
            .ReturnsAsync(postcodeLookup);

            //Act
            await service.ImportAddressData();

            //Assert
            foreach (var provider in providerRegistrationLookup.Results)
            {
                providerRegistrationImportRepository.Verify(x => x.UpdateAddress(provider.Ukprn, It.Is <ContactAddress>(c => c.PostCode == expectedPostcode), It.IsAny <double>(), It.IsAny <double>()), Times.Once());
            }
            providerRegistrationRepository.Verify(x => x.UpdateAddressesFromImportTable(), Times.Once);
        }
        public async Task Then_The_Audit_Record_Is_Updated(
            List <Domain.Entities.Provider> providerEntities,
            string expectedPostcode,
            PostcodeLookup postcodeLookup,
            List <ContactDetail> contactDetails,
            [Frozen] Mock <IRoatpApiService> roatpApiService,
            [Frozen] Mock <IProviderRepository> providerRepository,
            [Frozen] Mock <IProviderImportRepository> providerImportRepository,
            [Frozen] Mock <IPostcodeApiService> postcodeApiService,
            [Frozen] Mock <IImportAuditRepository> importAuditRepository,
            ProviderRegistrationAddressImportService service)
        {
            //Arrange
            contactDetails = contactDetails.Select(c =>
            {
                c.ContactType             = "P";
                c.ContactAddress.PostCode = expectedPostcode;
                return(c);
            }).ToList();
            postcodeLookup.Result = postcodeLookup.Result.Select(c =>
            {
                c.Query           = expectedPostcode;
                c.Result.Postcode = expectedPostcode;
                return(c);
            }).ToList();
            var providerRegistrationLookup = new ProviderRegistrationLookup
            {
                Results = new List <ProviderResult>()
            };

            foreach (var provider in providerEntities)
            {
                providerRegistrationLookup.Results.Add(new ProviderResult
                {
                    Ukprn          = provider.Ukprn,
                    ContactDetails = contactDetails
                });
            }
            providerRepository.Setup(x => x.GetAllRegistered()).ReturnsAsync(providerEntities);
            roatpApiService
            .Setup(x => x.GetProviderRegistrationLookupData(It.IsAny <List <int> >()))
            .ReturnsAsync(providerRegistrationLookup);
            postcodeApiService.Setup(x => x.GetPostcodeData(It.Is <PostcodeLookupRequest>(c => c.Postcodes.TrueForAll(y => y.Equals(expectedPostcode)))))
            .ReturnsAsync(postcodeLookup);

            //Act
            await service.ImportAddressData();

            //Assert
            importAuditRepository.Verify(x => x.Insert(
                                             It.Is <ImportAudit>(c =>
                                                                 c.ImportType.Equals(ImportType.ProviderAddressData) &&
                                                                 c.RowsImported.Equals(providerEntities.Count))), Times.Once);
        }