public async Task ScheduleShiftAddsUsersFromDto() { var patrol = new Api.Models.Patrol() { Id = 1, Name = "Test Patrol", TimeZone = "Eastern Standard Time" }; _patrolRepository.Setup(x => x.GetPatrol(patrol.Id)) .Returns(Task.FromResult(patrol)) .Verifiable(); var shift = new Shift() { Id = 1, Name = "Morning", PatrolId = patrol.Id, StartHour = 1, StartMinute = 2, EndHour = 13, EndMinute = 59 }; _shiftRepositoryMock.Setup(x => x.GetShift(shift.Id)) .Returns(Task.FromResult(shift)) .Verifiable(); _shiftRepositoryMock.Setup(x => x.GetScheduledShifts(patrol.Id, It.IsAny <DateTime>(), It.IsAny <DateTime>())) .Returns(Task.FromResult(new List <ScheduledShift>().AsEnumerable())) .Verifiable(); DateTime day = new DateTime(2001, 1, 1); var assignUserIds = new List <int?>() { 1 }; _shiftRepositoryMock.Setup(x => x.InsertScheduledShift(It.Is <ScheduledShift>(y => y.GroupId == null && y.ShiftId == shift.Id && y.StartsAt == new DateTime(day.Year, day.Month, day.Day, 6, 2, 0, DateTimeKind.Local) && y.EndsAt == new DateTime(day.Year, day.Month, day.Day, 18, 59, 0, DateTimeKind.Local)))).Verifiable(); _shiftRepositoryMock.Setup(x => x.InsertScheduledShiftAssignment(It.Is <ScheduledShiftAssignment>(y => y.AssignedUserId == assignUserIds.First()))) .Verifiable(); await _scheduleService.ScheduleShift(new ScheduledShiftUpdateDto() { PatrolId = patrol.Id, ShiftId = shift.Id, GroupId = null, Day = day, AssignUserIds = assignUserIds }); _patrolRepository.Verify(); _groupRepositoryMock.Verify(); _shiftRepositoryMock.Verify(); }
public async Task CanCreateShiftRecurringWorkItem() { var dto = new RecurringWorkItemDto(); int userId = 1; var shift = new Shift() { Name = "Shift", Id = 60, StartHour = 9, EndHour = 17 }; dto.CompletionMode = CompletionMode.AnyAssigned; dto.DescriptionMarkup = "Description"; dto.Location = "Location"; dto.Name = "Name"; dto.PatrolId = 1; dto.Shifts = new List <ShiftRecurringWorkItemDto>(); var shiftRecurringWorkItem = new ShiftRecurringWorkItemDto() { ScheduledAtHour = 10, ScheduledAtMinute = 0, ShiftAssignmentMode = ShiftAssignmentMode.Auto, ShiftId = shift.Id }; dto.Shifts.Add(shiftRecurringWorkItem); var patrol = new Api.Models.Patrol() { Id = 1, Name = "Patrol", TimeZone = TimeZoneInfo.Local.Id }; _patrolRepositoryMock.Setup(x => x.GetPatrol(patrol.Id)) .Returns(Task.FromResult(patrol)) .Verifiable(); _workItemRepository.Setup(x => x.InsertShiftRecurringWorkItem(It.Is <ShiftRecurringWorkItem>(y => y.ShiftId == shiftRecurringWorkItem.ShiftId))) .Verifiable(); _workItemRepository.Setup(x => x.InsertRecurringWorkItem(It.Is <RecurringWorkItem>(y => y.Name == dto.Name))) .Verifiable(); var now = new DateTimeOffset(2001, 1, 1, 0, 0, 0, new TimeSpan()); _systemClockMock.Setup(x => x.UtcNow).Returns(now); await _workItemService.SaveRecurringWorkItem(dto, userId, false, false); _workItemRepository.Verify(); }
public async Task CanCreateRecurringWorkItem() { var dto = new RecurringWorkItemDto(); int userId = 1; dto.CompletionMode = CompletionMode.AnyAssigned; dto.DescriptionMarkup = "Description"; dto.Location = "Location"; dto.Name = "Name"; dto.PatrolId = 1; dto.RecurStart = new DateTime(2001, 1, 1, 9, 0, 0); dto.RecurEnd = new DateTime(2001, 1, 10, 9, 0, 0); dto.RecurInterval = RecurInterval.Day; dto.RecurIntervalCount = 1; var patrol = new Api.Models.Patrol() { Id = 1, Name = "Patrol", TimeZone = TimeZoneInfo.Local.Id }; _patrolRepositoryMock.Setup(x => x.GetPatrol(patrol.Id)) .Returns(Task.FromResult(patrol)) .Verifiable(); _workItemRepository.Setup(x => x.InsertRecurringWorkItem(It.Is <RecurringWorkItem>(y => y.Name == dto.Name))) .Verifiable(); var now = new DateTimeOffset(2001, 1, 1, 0, 0, 0, new TimeSpan()); _systemClockMock.Setup(x => x.UtcNow).Returns(now); await _workItemService.SaveRecurringWorkItem(dto, userId, false, false); _workItemRepository.Verify(); }
public async Task CanCreateWorkItemsFromShiftRecurringWorkitem() { var dto = new RecurringWorkItemDto(); int userId = 1; var shift = new Shift() { Name = "Shift", Id = 60, StartHour = 9, EndHour = 17 }; dto.CompletionMode = CompletionMode.AnyAssigned; dto.DescriptionMarkup = "Description"; dto.Location = "Location"; dto.Name = "Name"; dto.PatrolId = 1; dto.Shifts = new List <ShiftRecurringWorkItemDto>(); var shiftRecurringWorkItem = new ShiftRecurringWorkItemDto() { ScheduledAtHour = 10, ScheduledAtMinute = 0, ShiftAssignmentMode = ShiftAssignmentMode.Auto, ShiftId = shift.Id }; dto.Shifts.Add(shiftRecurringWorkItem); var patrol = new Api.Models.Patrol() { Id = 1, Name = "Patrol", TimeZone = TimeZoneInfo.Local.Id }; _workItemRepository.Setup(x => x.GetShiftRecurringWorkItems(It.IsAny <int>())) .Returns(Task.FromResult(new List <ShiftRecurringWorkItem>() { new ShiftRecurringWorkItem() { RecurringWorkItemId = 0, ScheduledAtHour = 9, ScheduledAtMinute = 0, ShiftAssignmentMode = ShiftAssignmentMode.Auto, ShiftId = shift.Id } }.AsEnumerable())) .Verifiable(); var now = new DateTimeOffset(2001, 1, 1, 0, 0, 0, new TimeSpan()); _systemClockMock.Setup(x => x.UtcNow).Returns(now); _workItemRepository.Setup(x => x.GetWorkItems(It.IsAny <int>(), now.UtcDateTime)) .Returns(Task.FromResult(new List <WorkItem>() { }.AsEnumerable())) .Verifiable(); var assignments = new List <ScheduledShiftAssignmentDto>(); assignments.Add(new ScheduledShiftAssignmentDto() { Id = 1, AssignedUser = new UserIdentifier() { Id = 1, FirstName = "1" }, StartsAt = new DateTime(2001, 1, 1, 9, 0, 0), EndsAt = new DateTime(2001, 1, 1, 17, 0, 0), ScheduledShiftId = 1, Shift = shift }); assignments.Add(new ScheduledShiftAssignmentDto() { Id = 2, AssignedUser = new UserIdentifier() { Id = 2, FirstName = "2" }, StartsAt = new DateTime(2001, 1, 1, 9, 0, 0), EndsAt = new DateTime(2001, 1, 1, 17, 0, 0), ScheduledShiftId = 1, Shift = shift }); assignments.Add(new ScheduledShiftAssignmentDto() { Id = 3, AssignedUser = new UserIdentifier() { Id = 1, FirstName = "1" }, StartsAt = new DateTime(2001, 1, 2, 9, 0, 0), EndsAt = new DateTime(2001, 1, 2, 17, 0, 0), ScheduledShiftId = 2, Shift = shift }); assignments.Add(new ScheduledShiftAssignmentDto() { Id = 4, AssignedUser = new UserIdentifier() { Id = 2, FirstName = "2" }, StartsAt = new DateTime(2001, 1, 2, 9, 0, 0), EndsAt = new DateTime(2001, 1, 2, 17, 0, 0), ScheduledShiftId = 2, Shift = shift }); _shiftRepositoryMock.Setup(x => x.GetScheduledShiftAssignments(dto.PatrolId, null, now.UtcDateTime, null, null, null, null, dto.Shifts.First().ShiftId)) .Returns(Task.FromResult(assignments.AsEnumerable())) .Verifiable(); _workItemRepository.Setup(x => x.InsertWorkItem(It.Is <WorkItem>(y => y.ScheduledShiftId == 1))) .Verifiable(); _workItemRepository.Setup(x => x.InsertWorkItem(It.Is <WorkItem>(y => y.ScheduledShiftId == 2))) .Verifiable(); await _workItemService.PopulateShiftWorkItemOccurences(dto, now.UtcDateTime, userId, patrol, false); _workItemRepository.Verify(); _shiftRepositoryMock.Verify(); }
public async Task ScheduleShiftFindsExistingShiftByHoursIfNotSpecified() { var patrol = new Api.Models.Patrol() { Id = 1, Name = "Test Patrol", TimeZone = "Eastern Standard Time" }; _patrolRepository.Setup(x => x.GetPatrol(patrol.Id)) .Returns(Task.FromResult(patrol)) .Verifiable(); var shift = new Shift() { Id = 1, Name = "Morning", PatrolId = patrol.Id, StartHour = 1, StartMinute = 2, EndHour = 13, EndMinute = 59 }; _shiftRepositoryMock.Setup(x => x.GetShifts(patrol.Id, shift.StartHour, shift.StartMinute, shift.EndHour, shift.EndMinute)) .Returns(Task.FromResult(new List <Shift>() { shift }.AsEnumerable())) .Verifiable(); _shiftRepositoryMock.Setup(x => x.GetScheduledShifts(patrol.Id, It.IsAny <DateTime>(), It.IsAny <DateTime>())) .Returns(Task.FromResult(new List <ScheduledShift>().AsEnumerable())) .Verifiable(); var group = new Group() { Id = 1, Name = "Test Group", PatrolId = patrol.Id }; var groupMembers = new List <User>() { new User() { Id = 1 } }; _groupRepositoryMock.Setup(x => x.GetGroup(group.Id)) .Returns(Task.FromResult(group)) .Verifiable(); _groupRepositoryMock.Setup(x => x.GetUsersInGroup(group.Id)) .Returns(Task.FromResult(groupMembers.AsEnumerable())) .Verifiable(); DateTime day = new DateTime(2001, 1, 1); DateTime start = new DateTime(2001, 1, 1, 6, 2, 0, DateTimeKind.Unspecified); DateTime end = new DateTime(2001, 1, 1, 18, 59, 0, DateTimeKind.Unspecified); _shiftRepositoryMock.Setup(x => x.InsertScheduledShift(It.Is <ScheduledShift>(y => y.GroupId == group.Id && y.ShiftId == shift.Id && y.StartsAt == start && y.EndsAt == end))).Verifiable(); _shiftRepositoryMock.Setup(x => x.InsertScheduledShiftAssignment(It.Is <ScheduledShiftAssignment>(y => y.AssignedUserId == groupMembers.First().Id))).Verifiable(); await _scheduleService.ScheduleShift(new ScheduledShiftUpdateDto() { PatrolId = patrol.Id, ShiftId = null, GroupId = group.Id, StartsAt = start, EndsAt = end }); _patrolRepository.Verify(); _groupRepositoryMock.Verify(); _shiftRepositoryMock.Verify(); }
public async Task ScheduleShiftCopiesGroupMemebersToShift() { var patrol = new Api.Models.Patrol() { Id = 1, Name = "Test Patrol", TimeZone = "Eastern Standard Time" }; _patrolRepository.Setup(x => x.GetPatrol(patrol.Id)) .Returns(Task.FromResult(patrol)) .Verifiable(); var shift = new Shift() { Id = 1, Name = "Morning", PatrolId = patrol.Id, StartHour = 1, StartMinute = 2, EndHour = 13, EndMinute = 59 }; _shiftRepositoryMock.Setup(x => x.GetShift(shift.Id)) .Returns(Task.FromResult(shift)) .Verifiable(); _shiftRepositoryMock.Setup(x => x.GetScheduledShifts(patrol.Id, It.IsAny <DateTime>(), It.IsAny <DateTime>())) .Returns(Task.FromResult(new List <ScheduledShift>().AsEnumerable())) .Verifiable(); var group = new Group() { Id = 1, Name = "Test Group", PatrolId = patrol.Id }; var groupMembers = new List <User>() { new User() { Id = 1 } }; _groupRepositoryMock.Setup(x => x.GetGroup(group.Id)) .Returns(Task.FromResult(group)) .Verifiable(); _groupRepositoryMock.Setup(x => x.GetUsersInGroup(group.Id)) .Returns(Task.FromResult(groupMembers.AsEnumerable())) .Verifiable(); _shiftRepositoryMock.Setup(x => x.InsertScheduledShift(It.Is <ScheduledShift>(y => y.GroupId == group.Id))) .Verifiable(); _shiftRepositoryMock.Setup(x => x.InsertScheduledShiftAssignment(It.Is <ScheduledShiftAssignment>(y => y.AssignedUserId == groupMembers.First().Id))) .Verifiable(); await _scheduleService.ScheduleShift(new ScheduledShiftUpdateDto() { PatrolId = patrol.Id, ShiftId = shift.Id, GroupId = group.Id, Day = new DateTime(2001, 1, 1) }); _patrolRepository.Verify(); _groupRepositoryMock.Verify(); _shiftRepositoryMock.Verify(); }