public void AddWorkTime_NewTimeIfAfterStartTime_TrueResult()
        {
            // arrange
            var worker = new Worker {
                FirstName = "Ivan", SurName = "Ivanov", Id = 1, Email = "*****@*****.**", Telephone = "+375251234567"
            };
            var workers = new List <Worker>();

            workers.AddRange(new Worker[] {
                worker
            });
            var workerManagerMock = new Mock <IWorkerManager>();

            workerManagerMock.Setup(m => m.Get()).Returns(workers);

            var worker1time1 = new WorkTime
            {
                Worker    = worker,
                DateStart = new DateTime(2008, 09, 4, 10, 0, 0, DateTimeKind.Unspecified),
                DateEnd   = new DateTime(2008, 09, 4, 18, 0, 0, DateTimeKind.Unspecified)
            };
            var workTime = new List <WorkTime>();

            workTime.AddRange(new WorkTime[] {
                worker1time1
            });
            var workTimeManagerMock = new Mock <IWorkTimeManager>();

            workTimeManagerMock.Setup(m => m.Get()).Returns(workTime);
            workTimeManagerMock.Setup(m => m.Create(It.IsAny <WorkTime>())).Verifiable();

            var unitOfWorkMock = new Mock <IUnitOfWork>();

            unitOfWorkMock.Setup(m => m.WorkerManager).Returns(workerManagerMock.Object);
            unitOfWorkMock.Setup(m => m.WorkTimeManager).Returns(workTimeManagerMock.Object);


            var curentDate = new DateTime(2008, 09, 3, 12, 0, 0, DateTimeKind.Utc);
            var clockMock  = new Mock <IClock>();

            clockMock.Setup(m => m.CurentUtcDateTime()).Returns(curentDate);

            var workerService = new WorkerService(unitOfWorkMock.Object, clockMock.Object);
            var model         = new WorkTimeDTO
            {
                UserId    = worker.Id,
                StartTime = new DateTime(2008, 09, 4, 18, 0, 0, DateTimeKind.Utc),
                EndTime   = new DateTime(2008, 09, 4, 19, 0, 0, DateTimeKind.Utc)
            };
            // act
            var actual = workerService.AddWorkTime(model);

            // assert
            actual.Should().NotBeNull();
            workerManagerMock.VerifyAll();
            actual.Succedeed.Should().BeTrue();
        }
        public void AddWorkTime_StartTimeLessEndTime_FalseReturn()
        {
            // arrange
            var worker = new Worker {
                FirstName = "Ivan", SurName = "Ivanov", Id = 1, Email = "*****@*****.**", Telephone = "+375251234567"
            };
            var workers = new List <Worker>();

            workers.AddRange(new Worker[] {
                worker
            });
            var workerManagerMock = new Mock <IWorkerManager>();

            workerManagerMock.Setup(m => m.Get()).Returns(workers);

            var unitOfWorkMock = new Mock <IUnitOfWork>();

            unitOfWorkMock.Setup(m => m.WorkerManager).Returns(workerManagerMock.Object);

            var curentDate = new DateTime(2008, 09, 4, 12, 0, 0, DateTimeKind.Utc);
            var clockMock  = new Mock <IClock>();

            clockMock.Setup(m => m.CurentUtcDateTime()).Returns(curentDate);

            var workerService = new WorkerService(unitOfWorkMock.Object, clockMock.Object);
            var model         = new WorkTimeDTO
            {
                UserId    = worker.Id,
                StartTime = new DateTime(2008, 09, 4, 13, 0, 0, DateTimeKind.Utc),
                EndTime   = new DateTime(2008, 09, 4, 12, 0, 0, DateTimeKind.Utc)
            };
            // act
            var actual = workerService.AddWorkTime(model);

            // assert
            actual.Should().NotBeNull();
            actual.Succedeed.Should().BeFalse();
        }