public void TestCorrectRoundingLoss() { var request = CompensationSummaryRequestContractData.GetCompensationSummaryRequestContract(); var paychecks = CompensationSummaryResultContractData.GetCompensationSummaryResultContract().Paychecks; var totalAnnualDiscounts = 0.0m; var expectedDifference = Math.Abs(request.Employee.AnnualElectedBenefitsCost - paychecks.Select(x => x.DeductionsAmount).Sum()); var result = _summaryRoundingLossCalculators.CorrectRoundingLoss(request, totalAnnualDiscounts, paychecks); var adjustedAmmount = Math.Abs(result.Paychecks.Where(x => x.PayPeriodOrdinal == 0).FirstOrDefault().DeductionsAmount - result.Paychecks.Where(x => x.PayPeriodOrdinal == 25).FirstOrDefault().DeductionsAmount); Assert.AreEqual(expectedDifference, adjustedAmmount); }
public void TestCalculateEmployeeAnnualCompensationSummary() { var request = CompensationSummaryRequestContractData.GetCompensationSummaryRequestContract(); _mockDeductionCalculators.Setup(x => x.CalculateEmployeePersonalPaycheckDeduction(It.IsAny <EmployeeContract>(), It.IsAny <int>())).Returns(request.Employee.AnnualElectedBenefitsCost); _mockDeductionCalculators.Setup(x => x.CalculateEmployeeDependentPaycheckDeduction(It.IsAny <DependentContract>(), It.IsAny <int>())).Returns(request.Employee.Dependents.FirstOrDefault()?.AnnualElectedBenefitsCost ?? 0m); var mockDiscountValue = 0.5m; _mockDiscountCalculators.Setup(x => x.CalculateBeneficiaryDiscountPaycheckValue(It.IsAny <BeneficiaryContract>(), It.IsAny <IEnumerable <IDiscount> >(), It.IsAny <int>())).Returns(mockDiscountValue); _mockSummaryRoundingLossCalculators.Setup(x => x.CorrectRoundingLoss(It.IsAny <CompensationSummaryRequestContract>(), It.IsAny <decimal>(), It.IsAny <IEnumerable <PaycheckContract> >())).Returns(CompensationSummaryResultContractData.GetCompensationSummaryResultContract()); var result = _compensationSummaryProxy.CalculateEmployeeAnnualCompensationSummary(request); var dependentCount = request.Employee.Dependents.Count(); _mockDeductionCalculators.Verify(x => x.CalculateEmployeePersonalPaycheckDeduction(It.IsAny <EmployeeContract>(), It.IsAny <int>()), Times.Once); _mockDeductionCalculators.Verify(x => x.CalculateEmployeeDependentPaycheckDeduction(It.IsAny <DependentContract>(), It.IsAny <int>()), Times.Exactly(dependentCount)); _mockDiscountCalculators.Verify(x => x.CalculateBeneficiaryDiscountPaycheckValue(It.IsAny <BeneficiaryContract>(), It.IsAny <IEnumerable <IDiscount> >(), It.IsAny <int>()), Times.Exactly(1 + dependentCount)); _mockSummaryRoundingLossCalculators.Verify(x => x.CorrectRoundingLoss(It.IsAny <CompensationSummaryRequestContract>(), It.IsAny <decimal>(), It.IsAny <IEnumerable <PaycheckContract> >()), Times.Once); }