Пример #1
0
        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
                });
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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}"));
        }
Пример #5
0
        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);
        }
Пример #6
0
        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}"));;
        }