public List <CalculationResponseModel> CalculatePremiums([FromBody] CalculationRequestModel model) { model.Tariff.InsuranceEndDate = model.Tariff.FullYear ? null : model.Tariff.InsuranceEndDate; List <CalculationRequestModel> requestModels = PrepareDataForCalculation(model); List <CalculationResponseModel> result = new List <CalculationResponseModel>(); foreach (CalculationRequestModel requestModel in requestModels) { string requestString = JsonConvert.SerializeObject(requestModel); string responseString = ApiHelper.MakeRequest(_apiConfiguration.Url + "travel/calculation", _apiConfiguration.Username, _apiConfiguration.Password, "POST", requestString); CalculationResponseModel response = JsonConvert.DeserializeObject <CalculationResponseModel>(responseString); response.ProductVariant = requestModel.Tariff.ProductVariant; response.AmountInsured = requestModel.Tariff.AmountInsured; result.Add(response); } return(result); }
async public Task GetCalculationCurrentVersion_GivenCalculationExistsAndWasWasFoundInCache_ReturnsOK() { //Arrange const string specificationId = "specId"; DateTimeOffset lastModifiedDate = DateTimeOffset.Now; CalculationResponseModel calculation = new CalculationResponseModel { Author = new Reference(UserId, Username), LastUpdated = lastModifiedDate, SourceCode = "source code", Version = 1, Name = "any name", Id = CalculationId, FundingStreamId = "18/19", CalculationType = CalculationType.Additional, SpecificationId = specificationId, }; ILogger logger = CreateLogger(); ICalculationsRepository calculationsRepository = CreateCalculationsRepository(); ICacheProvider cacheProvider = CreateCacheProvider(); cacheProvider .GetAsync <CalculationResponseModel>(Arg.Is($"{CacheKeys.CurrentCalculation}{CalculationId}")) .Returns(calculation); CalculationService service = CreateCalculationService(logger: logger, calculationsRepository: calculationsRepository, cacheProvider: cacheProvider); //Act IActionResult result = await service.GetCalculationById(CalculationId); //Assert result .Should() .BeOfType <OkObjectResult>() .Which .Value .Should().BeEquivalentTo(new CalculationResponseModel { Author = new Reference(UserId, Username), LastUpdated = lastModifiedDate, SourceCode = "source code", Version = 1, Name = "any name", Id = CalculationId, FundingStreamId = "18/19", CalculationType = CalculationType.Additional, SpecificationId = specificationId, }); await calculationsRepository .Received(0) .GetCalculationById(Arg.Any <string>()); await cacheProvider .Received(1) .GetAsync <CalculationResponseModel>(Arg.Is($"{CacheKeys.CurrentCalculation}{CalculationId}")); }
private async Task UpdateCalculationInCache(CalculationResponseModel currentVersion) { // Set current version in cache await _cachePolicy.ExecuteAsync(() => _cacheProvider.SetAsync($"{CacheKeys.CurrentCalculation}{currentVersion.Id}", currentVersion, TimeSpan.FromDays(7), true)); }