Ejemplo n.º 1
0
 public void Run(EmployeeCostDto employeeCost, CompanyCostsDto companyCosts)
 {
     if (string.IsNullOrWhiteSpace(employeeCost.Employee.Id))
     {
         employeeCost.Employee.Id = Guid.NewGuid().ToString();
     }
 }
Ejemplo n.º 2
0
        private decimal CalculateEmployeeCosts(EmployeeCostDto employeeCost, CompanyCostsDto companyCosts, List <IPersonDiscount> personDiscounts)
        {
            var employeeDiscounts = personDiscounts.Where(x => x.AppliedToEmployee).ToList();
            var person            = employeeCost.Employee;
            var cost          = companyCosts.EmployeeCost;
            var totalDiscount = GetTotalDiscount(person, cost, employeeDiscounts);

            return(cost - totalDiscount);
        }
Ejemplo n.º 3
0
        protected override void Context()
        {
            base.Context();
            _employeeCost = new EmployeeCostDto()
            {
                Employee = new EmployeeDto()
                {
                    FirstName  = "Anne",
                    LastName   = "Barber",
                    Dependents = new List <DependentDto>()
                    {
                        new DependentDto()
                        {
                            FirstName = "Alex",
                            LastName  = "Barber"
                        },
                        new DependentDto()
                        {
                            FirstName = "Foo",
                            LastName  = "Barber"
                        }
                    }
                }
            };

            _companyCosts = new CompanyCostsDto()
            {
                EmployeeCost  = 1000m,
                DependentCost = 500m,
                Discounts     = new List <DiscountDto>()
                {
                    new NameDiscountDto()
                    {
                        StartsWith         = "A",
                        Percent            = 10m,
                        AppliedToEmployee  = true,
                        AppliedToDependent = true
                    }
                }
            };

            _expectedEmployeeCost  = 900m;
            _expectedDependentCost = 950m;

            _mockDiscount = new Mock <IPersonDiscount>();
            _mockDiscount.SetupGet(x => x.AppliedToEmployee).Returns(true);
            _mockDiscount.SetupGet(x => x.AppliedToDependent).Returns(true);
            _mockDiscount.Setup(x => x.GetDiscount(_employeeCost.Employee, _companyCosts.EmployeeCost)).Returns(100m);
            _mockDiscount.Setup(x => x.GetDiscount(_employeeCost.Employee.Dependents.First(), _companyCosts.DependentCost)).Returns(50m);
            _mockDiscount.Setup(x => x.GetDiscount(_employeeCost.Employee.Dependents[1], _companyCosts.DependentCost)).Returns(0);

            PersonDiscountFactoryMock
            .Setup(x => x.AddDiscount(It.IsAny <IList <IPersonDiscount> >(), _companyCosts.Discounts.First()))
            .Callback((IList <IPersonDiscount> discounts, DiscountDto discount) => { discounts.Add(_mockDiscount.Object); })
            ;
        }
Ejemplo n.º 4
0
        protected override void Context()
        {
            base.Context();
            _companyId    = 1;
            _employeeDto  = new EmployeeDto();
            _companyCosts = new CompanyCostsDto();
            _employeeCost = new EmployeeCostDto();

            BenefitsRepositoryMock.Setup(x => x.GetCompanyCosts(_companyId)).Returns(_companyCosts);
            EmployeeCostPipeMock.Setup(x => x.GetEmployeeCost(_employeeDto, _companyCosts)).Returns(_employeeCost);
        }
Ejemplo n.º 5
0
        public void Run(EmployeeCostDto employeeCost, CompanyCostsDto companyCosts)
        {
            var personDiscounts = new List <IPersonDiscount>();

            foreach (var companyCostsDiscount in companyCosts.Discounts)
            {
                _personDiscountFactory.AddDiscount(personDiscounts, companyCostsDiscount);
            }

            employeeCost.EmployeeCost  = CalculateEmployeeCosts(employeeCost, companyCosts, personDiscounts);
            employeeCost.DependentCost = CalculateDependentCosts(employeeCost, companyCosts, personDiscounts);
            employeeCost.TotalCost     = employeeCost.EmployeeCost + employeeCost.DependentCost;
        }
Ejemplo n.º 6
0
        protected override void Context()
        {
            base.Context();
            _employeeCost = new EmployeeCostDto()
            {
                Employee = new EmployeeDto()
                {
                    Id = string.Empty,
                }
            };

            _companyCosts = new CompanyCostsDto();
        }
Ejemplo n.º 7
0
        protected override void Context()
        {
            base.Context();
            _employeeId   = Guid.NewGuid().ToString();
            _employeeCost = new EmployeeCostDto()
            {
                Employee = new EmployeeDto()
                {
                    Id = _employeeId,
                }
            };

            _companyCosts = new CompanyCostsDto();
        }
Ejemplo n.º 8
0
        public EmployeeCostDto GetEmployeeCost(EmployeeDto employee, CompanyCostsDto companyCosts)
        {
            var employeeCost = new EmployeeCostDto()
            {
                Employee = employee
            };

            foreach (var employeeCostFilter in _filters)
            {
                employeeCostFilter.Run(employeeCost, companyCosts);
            }

            return(employeeCost);
        }
Ejemplo n.º 9
0
        private decimal CalculateDependentCosts(EmployeeCostDto employeeCost, CompanyCostsDto companyCosts, List <IPersonDiscount> personDiscounts)
        {
            var dependentDiscounts = personDiscounts.Where(x => x.AppliedToDependent).ToList();
            var totalCost          = 0m;
            var totalDiscount      = 0m;
            var cost = companyCosts.DependentCost;

            foreach (var person in employeeCost.Employee.Dependents)
            {
                totalCost     += cost;
                totalDiscount += GetTotalDiscount(person, cost, dependentDiscounts);
            }

            return(totalCost - totalDiscount);
        }
Ejemplo n.º 10
0
        protected override void Context()
        {
            base.Context();
            _employeeCost = new EmployeeCostDto()
            {
                EmployeeCost  = 900m,
                DependentCost = 950m,
                TotalCost     = 1850m
            };

            _companyCosts = new CompanyCostsDto()
            {
                NumberOfPaychecks = 26
            };

            _expectedTotalCostPerPaycheck         = _employeeCost.TotalCost / _companyCosts.NumberOfPaychecks;
            _expectedGrossPaycheck                = 2000m;
            _expectedPaycheckAmountAfterDeduction = _expectedGrossPaycheck - _expectedTotalCostPerPaycheck;
        }
Ejemplo n.º 11
0
 public void Run(EmployeeCostDto employeeCost, CompanyCostsDto companyCosts)
 {
     employeeCost.TotalCostPerPaycheck         = employeeCost.TotalCost / companyCosts.NumberOfPaychecks;
     employeeCost.GrossPaycheck                = 2000m; // Note: If we ever make this be calculated by employee, we would want to include this on the employee.
     employeeCost.PaycheckAmountAfterDeduction = employeeCost.GrossPaycheck - employeeCost.TotalCostPerPaycheck;
 }
Ejemplo n.º 12
0
 protected override void Because()
 {
     PipeUnderTest.RegisterFilters(_employeeCostFilterMock.Object);
     _result = PipeUnderTest.GetEmployeeCost(_employee, _companyCosts);
 }
Ejemplo n.º 13
0
 private bool VerifyEmployeeCost(EmployeeCostDto dto)
 {
     Assert.AreSame(dto.Employee, _employee);
     return(true);
 }
Ejemplo n.º 14
0
 protected override void Because()
 {
     _result = ServiceUnderTest.GetEmployeeCost(_companyId, _employeeDto);
 }