public async System.Threading.Tasks.Task GetPremiumValueTestAsync()
        {
            var controller = new MonthlyPremiumController(_occupationBAL, _premiumCalculatorBAL)
            {
                Request       = new System.Net.Http.HttpRequestMessage(),
                Configuration = new System.Web.Http.HttpConfiguration()
            };

            // Test data
            var premiumParams = new PremiumParametersData();

            premiumParams.Age          = 25;
            premiumParams.OccupationId = 1;
            premiumParams.SumInsured   = 150000;

            var response = await controller.GetPremiumValue(premiumParams);

            var controllerResponse = response.ExecuteAsync(CancellationToken.None).Result;

            Assert.IsNotNull(response);
            Assert.IsTrue(controllerResponse.IsSuccessStatusCode);
            Assert.AreEqual(HttpStatusCode.OK, controllerResponse.StatusCode);
            Assert.IsNotNull(controllerResponse.Content);

            decimal premiumValue;

            Assert.IsTrue(controllerResponse.TryGetContentValue <decimal>(out premiumValue));
            Assert.AreEqual((decimal)468.75, premiumValue);
        }
Ejemplo n.º 2
0
        public async Task <IHttpActionResult> GetPremiumValue([FromBody] PremiumParametersData premiumParametersData)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            try
            {
                var result = await _premiumCalculatorBAL.getPremiumValue(premiumParametersData);

                return(ResponseMessage(Request.CreateResponse(HttpStatusCode.OK, result)));
            }
            catch (Exception ex)
            {
                ErrorSignal.FromCurrentContext().Raise(ex);
                return(ResponseMessage(Request.CreateResponse(HttpStatusCode.InternalServerError, ex)));
            }
        }
        public async Task <decimal> getPremiumValue(PremiumParametersData premiumParamData)
        {
            var occupationFactor = await _occupationBAL.getOccupationFactor(premiumParamData.OccupationId);

            return((premiumParamData.SumInsured * occupationFactor * premiumParamData.Age) / (1000 * 12));
        }