Exemple #1
0
        public async Task HoursForASpecificTypeCannotBeDeleted48HoursPastEntry_AndExceptionWillBeThrown()
        {
            var date = DateTime.UtcNow.Date.AddHours(-48);
            await timeEntryService.CreateBillableTimeEntry(date, 8, 1);

            var lateDate = DateTime.UtcNow.Date.AddHours(-48.01);
            await timeEntryService.CreateBillableTimeEntry(lateDate, 2, 1);

            await timeEntryService.CreateNonBillableTimeEntry(lateDate, 3, null, TimeEntryTypeEnum.Vacation);

            await timeEntryService.CreateNonBillableTimeEntry(lateDate, 1, "flu", TimeEntryTypeEnum.Sick);

            try
            {
                await timeEntryService.DeleteHoursForTimeEntryType(lateDate, TimeEntryTypeEnum.BillableProject);
            }
            catch (Exception e)
            {
                Assert.Equal("Entries older than 48 hours cannot be deleted.", e.Message);
            }

            var timeEntries = await database.TimeEntries.Where(x => x.UserId == userId).ToListAsync();

            var hoursLeft = timeEntries.Sum(x => x.Hours);

            hoursLeft.Should().Be(14);

            var hoursDeleted = await timeEntryService.DeleteHoursForTimeEntryType(date, TimeEntryTypeEnum.BillableProject);

            timeEntries = await database.TimeEntries.Where(x => x.UserId == userId).ToListAsync();

            hoursLeft = timeEntries.Sum(x => x.Hours);

            hoursLeft.Should().Be(6);
            hoursDeleted.Should().Be(8);
        }
Exemple #2
0
        protected override async Task <SlackMessageResponse> RespondTo(DeleteInterpretedMessage message)
        {
            var userService = new UserService(dbContext);

            var user = await userService.FindOrCreateSlackUser(message.UserId, message.UserName);

            var timeEntryService = new TimeEntryService(user.UserId, dbContext);

            double hoursDeleted;

            if (message.TimeEntryType.HasValue)
            {
                hoursDeleted = await timeEntryService.DeleteHoursForTimeEntryType(message.Date, message.TimeEntryType.Value);

                return(new SlackMessageResponse($"Deleted {hoursDeleted:F1} {message.TimeEntryType} hours for date: {message.Date:D}", true));
            }

            hoursDeleted = await timeEntryService.DeleteHours(message.Date);

            return(new SlackMessageResponse($"Deleted {hoursDeleted:F1} hours for date: {message.Date:D}", true));
        }