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); }
public async Task ApproveAllCalculations_CalcNotExistsOnGivenSpecification_CompletesJob() { ApproveAllCalculationsService approveAllCalculationsService = BuildApproveAllCalculationsService(); GivenTheOtherwiseValidMessage(); _calculationsRepositoryMock .Setup(_ => _.GetCalculationsBySpecificationId(_specificationId)) .ReturnsAsync(Enumerable.Empty <Calculation>()); await approveAllCalculationsService.Process(_message); }