public void ShouldValidateOverTimeWithSingleTimePunch()
        {
            //GIVEN
            punches = new List <TimePunch>
            {
                new TimePunch {
                    ClockedIn  = DateTime.Parse("2017-10-11 21:11:00"),
                    ClockedOut = DateTime.Parse("2017-10-12 05:45:00"),
                    Created    = DateTime.Parse("2017-10-11 21:11:38"),
                    HourlyWage = 10,
                    Id         = 4046830,
                    LocationId = 4046830,
                    Modified   = DateTime.Parse("2017-10-12 05:45:49"),
                    UserId     = 517135
                }
            };

            labourSettings = new LabourSettings
            {
                DailyOvertimeMultiplier = 1.5,
                DailyOvertimeThreshold  = 480,
                Overtime = true,
                WeeklyOvertimeMultiplier = 2,
                WeeklyOvertimeThreshold  = 2400
            };

            //WHEN
            var calculator        = new WorkedHourCalculator(new BasicWageCalculator());
            var calculationResult = calculator.CalculateWorkedDay(punches, labourSettings);

            //THEN
            Assert.IsNotNull(calculationResult);
            Assert.AreEqual(8.0d, calculationResult.TotalRegularHours);
            Assert.AreEqual(0.57d, calculationResult.TotalOvertimeHours);
        }
        public void ShouldIdentifyAWorkDateWithMissingClockOut()
        {
            //GIVEN
            punches = new List <TimePunch>
            {
                new TimePunch {
                    ClockedIn  = DateTime.Parse("2017-10-11 21:11:00"),
                    ClockedOut = default(DateTime),
                    Created    = DateTime.Parse("2017-10-11 21:11:38"),
                    HourlyWage = 10,
                    Id         = 4046830,
                    LocationId = 4046830,
                    Modified   = DateTime.Parse("2017-10-12 05:45:49"),
                    UserId     = 517135
                }
            };

            labourSettings = new LabourSettings
            {
                DailyOvertimeMultiplier = 1.5,
                DailyOvertimeThreshold  = 480,
                Overtime = true,
                WeeklyOvertimeMultiplier = 2,
                WeeklyOvertimeThreshold  = 2400
            };

            //WHEN
            var calculator        = new WorkedHourCalculator(new BasicWageCalculator());
            var calculationResult = calculator.CalculateWorkedDay(punches, labourSettings);

            //THEN
            Assert.IsNotNull(calculationResult);
            Assert.IsTrue(calculationResult.Status == Domain.Enum.EWorkHourStatus.MissingClockEntries);
        }