public async Task IndexPublishedProvider_GivenSearchRepository_NoExceptionThrownAsync(bool hasErrors) { //Arrange PublishedProviderVersion publishedProviderVersion = new PublishedProviderVersion { Provider = GetProvider(1), ProviderId = "1234", FundingStreamId = "PSG", FundingPeriodId = "AY-1920", Version = 1, MajorVersion = 1, MinorVersion = 0, VariationReasons = new List <VariationReason> { VariationReason.NameFieldUpdated, VariationReason.FundingUpdated }, Errors = hasErrors ? new List <PublishedProviderError> { new PublishedProviderError { SummaryErrorMessage = "summary error message" } } : null }; ILogger logger = CreateLogger(); ISearchRepository <PublishedProviderIndex> searchRepository = CreateSearchRepository(); PublishedProviderIndexerService publishedProviderIndexerService = CreatePublishedProviderIndexerService(logger: logger, searchRepository: searchRepository); //Act await publishedProviderIndexerService.IndexPublishedProvider(publishedProviderVersion); await searchRepository .Received(1) .Index(Arg.Is <IEnumerable <PublishedProviderIndex> >( d => d.First().Id == publishedProviderVersion.PublishedProviderId && d.First().ProviderType == publishedProviderVersion.Provider.ProviderType && d.First().ProviderSubType == publishedProviderVersion.Provider.ProviderSubType && d.First().LocalAuthority == publishedProviderVersion.Provider.Authority && d.First().FundingStatus == publishedProviderVersion.Status.ToString() && d.First().ProviderName == publishedProviderVersion.Provider.Name && d.First().UKPRN == publishedProviderVersion.Provider.UKPRN && d.First().UPIN == publishedProviderVersion.Provider.UPIN && d.First().URN == publishedProviderVersion.Provider.URN && d.First().FundingValue == Convert.ToDouble(publishedProviderVersion.TotalFunding) && d.First().SpecificationId == publishedProviderVersion.SpecificationId && d.First().FundingStreamId == "PSG" && d.First().FundingPeriodId == publishedProviderVersion.FundingPeriodId && d.First().HasErrors == publishedProviderVersion.HasErrors && d.First().Errors.Any() == publishedProviderVersion.HasErrors && (!hasErrors || d.First().Errors.First() == "summary error message") )); }
public void IndexPublishedProvider_GivenSearchRepositoryCausesException_LogsAndThrowsException() { //Arrange const string errorMessage = "Encountered error 802 code"; PublishedProviderVersion publishedProviderVersion = new PublishedProviderVersion { Provider = GetProvider(1), ProviderId = "1234", FundingStreamId = "PSG", FundingPeriodId = "AY-1920", Version = 1, MajorVersion = 1, MinorVersion = 0, VariationReasons = new List <VariationReason> { VariationReason.NameFieldUpdated, VariationReason.FundingUpdated } }; ILogger logger = CreateLogger(); ISearchRepository <PublishedProviderIndex> searchRepository = CreateSearchRepository(); searchRepository .Index(Arg.Any <IEnumerable <PublishedProviderIndex> >()) .Returns(new[] { new IndexError() { ErrorMessage = errorMessage } }); PublishedProviderIndexerService publishedProviderIndexerService = CreatePublishedProviderIndexerService(logger: logger, searchRepository: searchRepository); //Act Func <Task> test = () => publishedProviderIndexerService.IndexPublishedProvider(publishedProviderVersion); //Assert test .Should() .ThrowExactly <RetriableException>(); logger .Received(1) .Error($"Could not index Published Providers because: {errorMessage}"); }
public void IndexPublishedProvider_GivenANullDefinitionPublishedProviderSupplied_LogsAndThrowsException() { //Arrange PublishedProviderVersion publishedProviderVersion = null; ILogger logger = CreateLogger(); ISearchRepository <PublishedProviderIndex> searchRepository = CreateSearchRepository(); PublishedProviderIndexerService publishedProviderIndexerService = CreatePublishedProviderIndexerService(logger: logger); //Act Func <Task> test = () => publishedProviderIndexerService.IndexPublishedProvider(publishedProviderVersion); //Assert test .Should() .ThrowExactly <NonRetriableException>(); logger .Received(1) .Error("Null published provider version supplied"); }