Exemplo n.º 1
0
        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")
                       ));
        }
Exemplo n.º 2
0
        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}");
        }
Exemplo n.º 3
0
        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");
        }