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 CanCreateWorkItemAssignmentsForRecurringWorkitem() { 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 now = new DateTimeOffset(2001, 1, 1, 0, 0, 0, new TimeSpan()); _systemClockMock.Setup(x => x.UtcNow).Returns(now); 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.GetWorkItemsForShifts(It.Is <List <int> >(x => assignments.Select(x => x.ScheduledShiftId).Distinct().ToArray().SequenceEqual(x.ToArray())))) .Returns(Task.FromResult(new List <WorkItem>() { new WorkItem() { Id = 1, ScheduledShiftId = 1, RecurringWorkItemId = 1, CompletionMode = dto.CompletionMode, DescriptionMarkup = dto.DescriptionMarkup, Name = dto.Name, Location = dto.Location, ScheduledAt = new DateTime(2001, 1, 1, 9, 0, 0) }, new WorkItem() { Id = 2, ScheduledShiftId = 2, RecurringWorkItemId = 1, CompletionMode = dto.CompletionMode, DescriptionMarkup = dto.DescriptionMarkup, Name = dto.Name, Location = dto.Location, ScheduledAt = new DateTime(2001, 1, 2, 9, 0, 0) } }.AsEnumerable())) .Verifiable(); _workItemRepository.Setup(x => x.GetWorkItemAssignmentsForShifts(It.Is <List <int> >(x => assignments.Select(x => x.ScheduledShiftId).Distinct().ToArray().SequenceEqual(x.ToArray())))) .Returns(Task.FromResult(new List <WorkItemAssignment>().AsEnumerable())) .Verifiable(); _workItemRepository.Setup(x => x.GetRecurringWorkItemsForShifts(It.Is <List <int> >(x => assignments.Select(x => x.ScheduledShiftId).Distinct().ToArray().SequenceEqual(x.ToArray())))) .Returns(Task.FromResult(new List <RecurringWorkItem>() { new RecurringWorkItem() { CompletionMode = dto.CompletionMode, DescriptionMarkup = dto.DescriptionMarkup, Id = 1, Location = dto.Location, Name = dto.Name, PatrolId = dto.PatrolId, } }.AsEnumerable())) .Verifiable(); _workItemRepository.Setup(x => x.GetShiftRecurringWorkItemsForShifts(It.Is <List <int> >(x => assignments.Select(x => x.ScheduledShiftId).Distinct().ToArray().SequenceEqual(x.ToArray())))) .Returns(Task.FromResult(new List <ShiftRecurringWorkItem>() { new ShiftRecurringWorkItem() { Id = 1, RecurringWorkItemId = 1, ScheduledAtHour = shiftRecurringWorkItem.ScheduledAtHour, ScheduledAtMinute = shiftRecurringWorkItem.ScheduledAtMinute, ShiftAssignmentMode = shiftRecurringWorkItem.ShiftAssignmentMode, ShiftId = shift.Id } }.AsEnumerable())) .Verifiable(); _workItemRepository.Setup(x => x.InsertWorkItemAssignment(It.Is <WorkItemAssignment>(y => y.UserId == 1))) .Verifiable(); _workItemRepository.Setup(x => x.InsertWorkItemAssignment(It.Is <WorkItemAssignment>(y => y.UserId == 2))) .Verifiable(); await _workItemService.RecalculateShiftWorkItemAssignments(assignments); _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(); }