public async void FillMissingTimeLogs_SingleDay(
           [Frozen] Mock<IAuthenticationStorage> auth,
           [Frozen] Mock<IJobService> job,
           AuthenticationData authData,
           DaysService target)
        {
            var startOfTheMonth = new DateTime(2015, 07, 01);

            var notFilledDay1 = new Mock<IDayViewModel>();
            notFilledDay1.Setup(x => x.IsActive).Returns(true);
            notFilledDay1.Setup(x => x.IsFilled).Returns(false);
            notFilledDay1.Setup(x => x.Date).Returns(startOfTheMonth);

            var jobId = "1";

            job.Setup(x => x.GetJob(It.IsAny<DateTime>())).ReturnsAsync(jobId);
            auth.Setup(x => x.GetAuthenticationData()).Returns(authData);

            // Act
            await target.FillMissingTimeLogsAsync(notFilledDay1.Object);

            // Assert
            job.Verify(x => x.GetJob(startOfTheMonth), Times.Once);

            notFilledDay1.Verify(x => x.FillHoursAsync(authData.Id, jobId), Times.Once);
        }
        public async void FillMissingTimeLogs_AllNotFilledAndActiveDayFilledWithDeafultJob(
            [Frozen] Mock<IAuthenticationStorage> auth,
            [Frozen] Mock<IJobService> job,
            AuthenticationData authData,
            DaysService target)
        {
            var startOfTheMonth = new DateTime(2015, 07, 01);
            
            var days = new List<IDayViewModel>();

            var dayFromOtherMonth1 = new Mock<IDayViewModel>();
            days.Add(dayFromOtherMonth1.Object);

            var filledDay1 = new Mock<IDayViewModel>();
            filledDay1.Setup(x => x.IsActive).Returns(true);
            filledDay1.Setup(x => x.IsFilled).Returns(true);
            days.Add(filledDay1.Object);

            var notFilledDay1 = new Mock<IDayViewModel>();
            notFilledDay1.Setup(x => x.IsActive).Returns(true);
            notFilledDay1.Setup(x => x.IsFilled).Returns(false);
            notFilledDay1.Setup(x => x.Date).Returns(startOfTheMonth);
            days.Add(notFilledDay1.Object);

            var notFilledDay2 = new Mock<IDayViewModel>();
            notFilledDay2.Setup(x => x.IsActive).Returns(true);
            notFilledDay2.Setup(x => x.IsFilled).Returns(false);
            notFilledDay2.Setup(x => x.Date).Returns(startOfTheMonth.AddDays(1));
            days.Add(notFilledDay2.Object);

            var notFilledHolidayDay = new Mock<IDayViewModel>();
            notFilledHolidayDay.Setup(x => x.IsActive).Returns(true);
            notFilledHolidayDay.Setup(x => x.IsFilled).Returns(false);
            notFilledHolidayDay.Setup(x => x.IsHoliday).Returns(true);
            notFilledHolidayDay.Setup(x => x.Date).Returns(startOfTheMonth.AddDays(2));
            days.Add(notFilledHolidayDay.Object);

            var filledDay2 = new Mock<IDayViewModel>();
            filledDay2.Setup(x => x.IsActive).Returns(true);
            filledDay2.Setup(x => x.IsFilled).Returns(true);
            days.Add(filledDay2.Object);

            var dayFromOtherMonth2 = new Mock<IDayViewModel>();
            days.Add(dayFromOtherMonth2.Object);

            var jobId = "1";

            job.Setup(x => x.GetJob(It.IsAny<DateTime>())).ReturnsAsync(jobId);
            auth.Setup(x => x.GetAuthenticationData()).Returns(authData);
            
            // Act
            await target.FillMissingTimeLogsAsync(days);

            // Assert
            job.Verify(x => x.GetJob(startOfTheMonth), Times.Once);

            dayFromOtherMonth1.Verify(x => x.FillHoursAsync(It.IsAny<string>(), It.IsAny<string>()), Times.Never);
            filledDay1.Verify(x => x.FillHoursAsync(It.IsAny<string>(), It.IsAny<string>()), Times.Never);
            notFilledDay1.Verify(x => x.FillHoursAsync(authData.Id, jobId), Times.Once);
            notFilledDay2.Verify(x => x.FillHoursAsync(authData.Id, jobId), Times.Once);
            notFilledHolidayDay.Verify(x => x.FillHoursAsync(It.IsAny<string>(), It.IsAny<string>()), Times.Never);
            dayFromOtherMonth2.Verify(x => x.FillHoursAsync(It.IsAny<string>(), It.IsAny<string>()), Times.Never);
            filledDay2.Verify(x => x.FillHoursAsync(It.IsAny<string>(), It.IsAny<string>()), Times.Never);
        }