Ejemplo n.º 1
0
        public async Task ApproveAllCalculations_CalcExistsOnGivenSpecification_UpdateBulkPublishStatus()
        {
            ApproveAllCalculationsService approveAllCalculationsService = BuildApproveAllCalculationsService();

            GivenTheOtherwiseValidMessage();

            IEnumerable <Calculation> calculations = new List <Calculation> {
                NewCalculation(c => c.WithId("calc_1").WithFundingStreamId(_fundingStreamId).WithCurrentVersion(NewCalculationVersion(cv => cv.WithPublishStatus(PublishStatus.Draft)))),
                NewCalculation(c => c.WithId("calc_2").WithFundingStreamId(_fundingStreamId).WithCurrentVersion(NewCalculationVersion(cv => cv.WithPublishStatus(PublishStatus.Updated))))
            };

            _calculationsRepositoryMock
            .Setup(_ => _.GetCalculationsBySpecificationId(_specificationId))
            .ReturnsAsync(calculations);

            SpecModel.SpecificationSummary specificationSummary = new SpecModel.SpecificationSummary()
            {
                Id             = _specificationId,
                Name           = "spec name",
                FundingStreams = new[]
                {
                    new Reference(_fundingStreamId, "funding stream name")
                }
            };

            _specificationsApiClientMock
            .Setup(_ => _.GetSpecificationSummaryById(_specificationId))
            .ReturnsAsync(new Common.ApiClient.Models.ApiResponse <SpecModel.SpecificationSummary>(HttpStatusCode.OK, specificationSummary));

            await approveAllCalculationsService.Process(_message);

            _cacheProviderMock.Verify(_ => _.KeyDeleteAsync <List <CalculationSummaryModel> >($"{CacheKeys.CalculationsSummariesForSpecification}{_specificationId}")
                                      , Times.Once);

            _cacheProviderMock.Verify(_ => _.KeyDeleteAsync <List <CalculationResponseModel> >($"{CacheKeys.CurrentCalculationsForSpecification}{_specificationId}")
                                      , Times.Once);

            _cacheProviderMock.Verify(_ => _.KeyDeleteAsync <List <CalculationResponseModel> >($"{CacheKeys.CalculationsMetadataForSpecification}{_specificationId}")
                                      , Times.Once);

            _cacheProviderMock.Verify(_ => _.SetAsync($"{CacheKeys.CurrentCalculation}calc_1", It.IsAny <CalculationResponseModel>(), TimeSpan.FromDays(7), true, null)
                                      , Times.Once);

            _cacheProviderMock.Verify(_ => _.SetAsync($"{CacheKeys.CurrentCalculation}calc_2", It.IsAny <CalculationResponseModel>(), TimeSpan.FromDays(7), true, null)
                                      , Times.Once);

            _searchRepositoryMock.Verify(_ => _.Index(It.Is <IEnumerable <CalculationIndex> >(c =>
                                                                                              c.FirstOrDefault() != null && c.FirstOrDefault().Status == PublishStatus.Approved.ToString() &&
                                                                                              c.LastOrDefault() != null && c.LastOrDefault().Status == PublishStatus.Approved.ToString()))
                                         , Times.Once);

            _calculationsRepositoryMock
            .Verify(_ => _.UpdateCalculations(
                        It.Is <IEnumerable <Calculation> >(c =>
                                                           c.FirstOrDefault() != null && c.FirstOrDefault().Current.PublishStatus == PublishStatus.Approved &&
                                                           c.LastOrDefault() != null && c.LastOrDefault().Current.PublishStatus == PublishStatus.Approved)), Times.Once);
        }
Ejemplo n.º 2
0
        public async Task ApproveAllCalculations_CalcNotExistsOnGivenSpecification_CompletesJob()
        {
            ApproveAllCalculationsService approveAllCalculationsService = BuildApproveAllCalculationsService();

            GivenTheOtherwiseValidMessage();

            _calculationsRepositoryMock
            .Setup(_ => _.GetCalculationsBySpecificationId(_specificationId))
            .ReturnsAsync(Enumerable.Empty <Calculation>());

            await approveAllCalculationsService.Process(_message);
        }