public object Post(PremiumInput request) { try { if (string.IsNullOrEmpty(request.Name)) { throw new ArgumentException("We require your name"); } if (string.IsNullOrEmpty(request.Gender)) { throw new ArgumentException("We require your gender"); } var age = request.DateOfBirth.CalculateAge(); if (age < 18 || age > 65) { throw new ArgumentException("Can only receive a Premium if between the age of 18 and 65"); } var premium = PremiumCalculations.CalculatePremium(age, request.Gender); return(new PremiumInputResponse { Result = $"Your premium is ${premium}" }); } catch (ArgumentException e) { Response.StatusCode = (int)HttpStatusCode.BadRequest; return(new PremiumInputResponse { Errors = e.Message }); } }
public void CalculatePremiumReturnsExpectedResultFor30YrOldMale() { const int targetAgeToday = 30; const string gender = "male"; var input = TestingShared.GetPremiumInput(targetAgeToday, "A Rose", gender); var age = input.DateOfBirth.CalculateAge(); var premium = PremiumCalculations.CalculatePremium(age, input.Gender); Assert.AreEqual(3600, premium); }
public void CalculatePremiumReturnsExpectedResultFor40YrOldFemale() { //Arrange const int targetAgeToday = 40; const string gender = "female"; var input = TestingShared.GetPremiumInput(targetAgeToday, "A Rose", gender); var age = input.DateOfBirth.CalculateAge(); //Act var premium = PremiumCalculations.CalculatePremium(age, input.Gender); //Assert Assert.AreEqual(4400, premium); }
public void Can_call_GeneratePremiumService() { //Arrange var service = appHost.Container.Resolve <PremiumService>(); const int targetAgeToday = 18; var input = TestingShared.GetPremiumInput(targetAgeToday, "A Rose", "male"); var age = input.DateOfBirth.CalculateAge(); var premium = PremiumCalculations.CalculatePremium(age, input.Gender); //Act var response = (PremiumInputResponse)service.Post(input); //Assert Assert.That(response.Result, Is.EqualTo($"Your premium is ${premium}")); }
public void CalculatePremiumThrowsIfUnder18() { void CheckFunction() { //Arrange const int targetAgeToday = 17; var input = TestingShared.GetPremiumInput(targetAgeToday, "A Rose", "male"); var age = input.DateOfBirth.CalculateAge(); //Act PremiumCalculations.CalculatePremium(age, input.Gender); } //Assert Assert.Throws(typeof(ArgumentException), CheckFunction); }
public void Can_call_Premium_Service() { var client = CreateClient(); const int targetAgeToday = 18; var input = TestingShared.GetPremiumInput(targetAgeToday, "A Rose", "male"); var age = input.DateOfBirth.CalculateAge(); Assert.AreEqual(targetAgeToday, age); var premium = PremiumCalculations.CalculatePremium(age, input.Gender); var response = client.Post(input); Assert.That(response.Result, Is.EqualTo($"Your premium is ${premium}"));; }