Example #1
0
        public void Calculate_DescendingSortByPolicyNumbersIsSpecifiedInSettings_PoliciesAreSortedByDecendingOrderOfPolicyNumbers()
        {
            // Arrange
            var input = CreateCalculationInputWith3Policies();

            input.Settings.PolicySorter = new DescendingOrderOfPoliciesNumber();
            var facebookBonusCalculator = new FacebookBonusCalculator();

            // Act
            var facebookBonus = facebookBonusCalculator.Calculate(input);

            // Assert
            Assert.That(facebookBonus.PolicyBonuses, Is.Ordered.Descending.By(nameof(PolicyBonus.PolicyNumber)));
        }
Example #2
0
        public void Calculate_BonusLimitIsSpecifiedInFacebookBonusSettings_TotalPointsShouldNotExceedTheLimit()
        {
            // Arrange
            var       input = CreateCalculationInputWith3Policies();
            var       facebookBonusCalculator = new FacebookBonusCalculator();
            const int maxiumBonus             = 10;

            // Act
            var facebookBonus = facebookBonusCalculator.Calculate(input);

            // Assert
            int totalPoint = facebookBonus.Total;

            Assert.That(totalPoint, Is.LessThanOrEqualTo(maxiumBonus));
        }
Example #3
0
        public void Calculate_GivenIncentivePoints_IncentivePointsAreRoundedDownToTheNearestInteger()
        {
            // Arrange
            var       input = CreateCalculationInputWithSinglePolicy(premium: 133, percentage: 3);
            var       facebookBonusCalculator = new FacebookBonusCalculator();
            const int expectedBonusPoint      = 3;

            // Act
            var facebookBonus = facebookBonusCalculator.Calculate(input);

            // Assert
            var actualBonusPoint = facebookBonus.PolicyBonuses[0].BonusInPoints;

            Assert.That(actualBonusPoint, Is.EqualTo(expectedBonusPoint));
        }
Example #4
0
        public void Calculate_GivenPremiumAndPercentage_IncentivePointsArePercentageOfPolicyPremium()
        {
            // Arrange
            var       input = CreateCalculationInputWithSinglePolicy(premium: 200, percentage: 3);
            var       facebookBonusCalculator = new FacebookBonusCalculator();
            const int expectedIncentivePoint  = 6;

            // Act
            var facebookBonus = facebookBonusCalculator.Calculate(input);

            // Assert
            int actualBonusPoint = facebookBonus.PolicyBonuses[0].BonusInPoints;

            Assert.That(actualBonusPoint, Is.EqualTo(expectedIncentivePoint));
        }
Example #5
0
        public void Calculate_GivenCustomerPolicies_InctivePointsAreCalculatedForEachPolicy()
        {
            // Arrange
            var       input = CreateCalculationInputWith3Policies();
            var       facebookBonusCalculator   = new FacebookBonusCalculator();
            const int expectedFirstPolicyBonus  = 6;
            const int expectedSecondPolicyBonus = 3;

            // Act
            var facebookBonus = facebookBonusCalculator.Calculate(input);

            // Assert
            int actualFirstPolicyPoint  = facebookBonus.PolicyBonuses[0].BonusInPoints;
            int actualSecondPolicyPoint = facebookBonus.PolicyBonuses[1].BonusInPoints;

            Assert.That(actualFirstPolicyPoint, Is.EqualTo(expectedFirstPolicyBonus));
            Assert.That(actualSecondPolicyPoint, Is.EqualTo(expectedSecondPolicyBonus));
        }
Example #6
0
        public void FacebookBonus_BonusInPointLargerThanMaximumBonus_Total()
        {
            FacebookBonusCalculator facebookBonusCalculator = new FacebookBonusCalculator();
            var output = facebookBonusCalculator.Calculate(Initialize.GetListSortingByDate());

            PolicyBonus policyBonus1 = new PolicyBonus {
                PolicyNumber = "P001", BonusInPoints = 6
            };
            PolicyBonus policyBonus2 = new PolicyBonus {
                PolicyNumber = "P002", BonusInPoints = 4
            };

            PolicyBonus[] policyBonuses = new PolicyBonus[] { policyBonus1, policyBonus2 };
            FacebookBonus expected      = new FacebookBonus {
                PolicyBonuses = policyBonuses
            };

            NUnit.Framework.Assert.AreEqual(expected.Total, output.Total);
        }
Example #7
0
        public void FacebookBonus_BonusInPointSmallerThanMaximumBonus_ListPolicyBonus()
        {
            FacebookBonusCalculator facebookBonusCalculator = new FacebookBonusCalculator();
            var output = facebookBonusCalculator.Calculate(Initialize.GetListSortingByDateWithSmallBonusOfPoint());

            PolicyBonus policyBonus1 = new PolicyBonus {
                PolicyNumber = "P001", BonusInPoints = 6
            };
            PolicyBonus policyBonus2 = new PolicyBonus {
                PolicyNumber = "P002", BonusInPoints = 3
            };

            PolicyBonus[] policyBonuses = new PolicyBonus[] { policyBonus1, policyBonus2 };
            FacebookBonus expected      = new FacebookBonus {
                PolicyBonuses = policyBonuses
            };

            NUnit.Framework.Assert.AreEqual(expected.ToString(), output.ToString());
        }
Example #8
0
        public void Calculate_BonusLimitIsSpecifiedInFacebookBonusSettings_BonusPointsAreDistributedCorrectly()
        {
            // Arrange
            var       input = CreateCalculationInputWith3Policies();
            var       facebookBonusCalculator    = new FacebookBonusCalculator();
            const int expecctedFirstBonusPoints  = 6;
            const int expecctedSecondBonusPoints = 3;
            const int expecctedThirdBonusPoints  = 1;

            // Act
            var facebookBonus = facebookBonusCalculator.Calculate(input);

            // Assert
            var actualFirstBonusPoints  = facebookBonus.PolicyBonuses[0].BonusInPoints;
            var actualSecondBonusPoints = facebookBonus.PolicyBonuses[1].BonusInPoints;
            var actualThirdBonusPoints  = facebookBonus.PolicyBonuses[2].BonusInPoints;

            Assert.That(actualFirstBonusPoints, Is.EqualTo(expecctedFirstBonusPoints));
            Assert.That(actualSecondBonusPoints, Is.EqualTo(expecctedSecondBonusPoints));
            Assert.That(actualThirdBonusPoints, Is.EqualTo(expecctedThirdBonusPoints));
        }