public void Should_Return_Null_When_Employee_Not_Present()
            {
                //Arrange

                int employeeId = 100;
                int weekNumber = 2;

                //Act
                weekDetails = timeSheet.CalculateWeeklyWages(employeeId, weekNumber);

                //Assert
                Assert.IsNull(weekDetails, "Employee present in the system");
            }
            public void Should_Return_Null_When_Employee_Entry_Not_Present()
            {
                //Arrange

                int employeeId = 1;
                int weekNumber = 2;

                //Act
                weekDetails = timeSheet.CalculateWeeklyWages(employeeId, weekNumber);

                //Assert
                Assert.IsNull(weekDetails, "Entry Present for the Employee");
            }
            public void Should_Return_Null_When_Dates_NotIn_SameWeek()
            {
                //Arrange

                int      employeeId    = 1;
                DateTime weekStartDate = new DateTime(1999, 1, 13);
                DateTime weekEndDate   = new DateTime(1999, 2, 13);

                //Act
                weekDetails = timeSheet.CalculateWeeklyWages(employeeId, weekStartDate, weekEndDate);

                //Assert
                Assert.IsNull(weekDetails, "Dates present in same week");
            }
            public void TestInit()
            {
                timeSheet   = new TimeSheet();
                employees   = EmployeeBook.Instance();
                weekDetails = new WorkWeekDetails();

                Employee emp = new Employee()
                {
                    EmpId       = 1,
                    EmpName     = "NewUser",
                    EmpHourRate = 25
                };

                employees.Add(emp);
            }
            public void TestCleanup()
            {
                if (File.Exists(timesheetpath))
                {
                    File.Delete(timesheetpath);
                }

                if (File.Exists(employeepath))
                {
                    File.Delete(employeepath);
                }

                timeSheet   = null;
                employees   = null;
                weekDetails = null;
                EmployeeBook.ClearInstance();
            }
            public void Should_Return_Total_HoursWorked_Cost_ForWeek_When_Employee_EntryPresent()
            {
                //Arrange

                TimeSheetEntry firstEntry = new TimeSheetEntry()
                {
                    EmployeeID = 1,
                    InTime     = new DateTime(2019, 1, 15, 09, 00, 00),
                    OutTime    = new DateTime(2019, 1, 15, 16, 30, 00)
                };
                TimeSheetEntry secondEntry = new TimeSheetEntry()
                {
                    EmployeeID = 1,
                    InTime     = new DateTime(2019, 1, 16, 09, 00, 00),
                    OutTime    = new DateTime(2019, 1, 16, 16, 30, 00)
                };

                WorkWeekDetails expected = new WorkWeekDetails()
                {
                    WeekNumber  = 3,
                    HoursWorked = 15,
                    Cost        = 375
                };

                timeSheet.AddEntry(firstEntry);
                timeSheet.AddEntry(secondEntry);

                int employeeId = 1;
                int weekNumber = 3;



                //Act
                weekDetails = timeSheet.CalculateWeeklyWages(employeeId, weekNumber);

                //Assert
                Assert.AreEqual(Newtonsoft.Json.JsonConvert.SerializeObject(expected),
                                Newtonsoft.Json.JsonConvert.SerializeObject(weekDetails));
            }