Beispiel #1
0
        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();
        }
Beispiel #5
0
        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();
        }
Beispiel #6
0
        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();
        }