public async Task Handler_ShouldReturnCorrectDto() { using (var context = new IPOContext(_dbContextOptions, _plantProvider, _eventDispatcher, _currentUserProvider)) { var query = new GetInvitationsQuery(_projectName); var dut = new GetInvitationsQueryHandler(context); var result = await dut.Handle(query, default); var invitationDto = result.Data.Invitations.First(); var invitation = _invitation1; Assert.AreEqual(0, invitationDto.CommPkgNos.Count()); Assert.AreEqual(invitation.ProjectName, invitationDto.ProjectName); Assert.AreEqual(invitation.Title, invitationDto.Title); Assert.AreEqual(invitation.Description, invitationDto.Description); Assert.AreEqual(invitation.Id, invitationDto.Id); Assert.AreEqual(invitation.Location, invitationDto.Location); Assert.AreEqual(invitation.Type, invitationDto.Type); Assert.AreEqual( invitation.Participants.Single(p => p.SortKey == 0 && p.Type == IpoParticipantType.FunctionalRole) .FunctionalRoleCode, invitationDto.ContractorRep); Assert.IsTrue(invitationDto.ConstructionCompanyRep.StartsWith(invitation.Participants.Single(p => p.SortKey == 1).FirstName)); Assert.IsTrue(invitationDto.CommissioningReps.Any(p => p.StartsWith(invitation.Participants.First(part => part.Organization == Organization.Commissioning).FirstName))); Assert.AreEqual(invitationDto.CommissioningReps.Count(), invitation.Participants.Count(p => p.Organization == Organization.Commissioning)); Assert.IsTrue(invitationDto.ExternalGuests.Any(p => p.StartsWith(invitation.Participants.First(part => part.Organization == Organization.External).Email))); Assert.AreEqual(invitationDto.ExternalGuests.Count(), invitation.Participants.Count(p => p.Organization == Organization.External)); Assert.AreEqual(invitation.McPkgs.Single().McPkgNo, invitationDto.McPkgNos.Single()); Assert.AreEqual(invitation.Status, invitationDto.Status); Assert.AreEqual(invitation.EndTimeUtc, invitationDto.EndTimeUtc); Assert.AreEqual(invitation.StartTimeUtc, invitationDto.StartTimeUtc); Assert.AreEqual(invitation.CompletedAtUtc, invitationDto.CompletedAtUtc); Assert.AreEqual(invitation.AcceptedAtUtc, invitationDto.AcceptedAtUtc); } }
public async Task ValidateAsync_OnGetInvitationsQuery_ShouldReturnFalse_WhenNoAccessToProject() { // Arrange var query = new GetInvitationsQuery(_projectWithoutAccess); // act var result = await _dut.ValidateAsync(query); // Assert Assert.IsFalse(result); }
public async Task Handler_ShouldReturnCorrectNumberOfInvitations_NoFilter() { using (var context = new IPOContext(_dbContextOptions, _plantProvider, _eventDispatcher, _currentUserProvider)) { var query = new GetInvitationsQuery(_projectName); var dut = new GetInvitationsQueryHandler(context); var result = await dut.Handle(query, default); AssertCount(result.Data, 1); } }
public async Task Handler_ShouldReturnEmptyPageButMaxAvailable_WhenGettingBehindLastPage() { using (var context = new IPOContext(_dbContextOptions, _plantProvider, _eventDispatcher, _currentUserProvider)) { var query = new GetInvitationsQuery(_projectName2, null, null, new Paging(1, 50)); var dut = new GetInvitationsQueryHandler(context); var result = await dut.Handle(query, default); Assert.AreEqual(2, result.Data.MaxAvailable); Assert.AreEqual(0, result.Data.Invitations.Count()); } }
public async Task Handler_ShouldReturnOkResult() { using (var context = new IPOContext(_dbContextOptions, _plantProvider, _eventDispatcher, _currentUserProvider)) { var query = new GetInvitationsQuery(_projectName); var dut = new GetInvitationsQueryHandler(context); var result = await dut.Handle(query, default); Assert.IsNotNull(result); Assert.AreEqual(ResultType.Ok, result.ResultType); } }
private static GetInvitationsQuery CreateGetInvitationsQuery(FilterDto filter, SortingDto sorting, PagingDto paging) { var query = new GetInvitationsQuery( filter.ProjectName, new Sorting(sorting.Direction, sorting.Property), new Filter(), new Paging(paging.Page, paging.Size) ); FillFilterFromDto(filter, query.Filter); return(query); }
public async Task Handler_ShouldReturnInvitationsByStartTime_WhenSortingDesc() { using (var context = new IPOContext(_dbContextOptions, _plantProvider, _eventDispatcher, _currentUserProvider)) { var query = new GetInvitationsQuery(_projectName2, new Sorting(SortingDirection.Desc, SortingProperty.PunchOutDateUtc)); var dut = new GetInvitationsQueryHandler(context); var result = await dut.Handle(query, default); AssertCount(result.Data, 2); Assert.AreEqual(_invitation3.Id, result.Data.Invitations.First().Id); Assert.AreEqual(_invitation2.Id, result.Data.Invitations.Last().Id); } }
public async Task Handler_ShouldReturnPageSize() { using (var context = new IPOContext(_dbContextOptions, _plantProvider, _eventDispatcher, _currentUserProvider)) { var query = new GetInvitationsQuery(_projectName2, null, null, new Paging(1, 1)); var dut = new GetInvitationsQueryHandler(context); var result = await dut.Handle(query, default); var invitationResults = result.Data; Assert.AreEqual(2, invitationResults.MaxAvailable); Assert.AreEqual(1, invitationResults.Invitations.Count()); } }
public async Task Handler_ShouldSortOnType_Desc() { var sorting = new Sorting(SortingDirection.Desc, SortingProperty.Type); using (var context = new IPOContext(_dbContextOptions, _plantProvider, _eventDispatcher, _currentUserProvider)) { var query = new GetInvitationsQuery(_projectName2, sorting); var dut = new GetInvitationsQueryHandler(context); var result = await dut.Handle(query, default); Assert.AreEqual(_invitation2.Id, result.Data.Invitations.First().Id); Assert.AreEqual(_invitation3.Id, result.Data.Invitations.Last().Id); AssertCount(result.Data, 2); } }
public async Task Handler_ShouldFilterOnLastChangedAtToThreeWeeks_TwoInvitations() { var filter = new Filter { LastChangedAtToUtc = _timeProvider.UtcNow.AddWeeks(3) }; using (var context = new IPOContext(_dbContextOptions, _plantProvider, _eventDispatcher, _currentUserProvider)) { var query = new GetInvitationsQuery(_projectName2, null, filter); var dut = new GetInvitationsQueryHandler(context); var result = await dut.Handle(query, default); AssertCount(result.Data, 2); } }
public async Task Handler_ShouldFilterOnMcPkgNoStartWith() { var filter = new Filter { McPkgNoStartsWith = _mcPkgNo }; using (var context = new IPOContext(_dbContextOptions, _plantProvider, _eventDispatcher, _currentUserProvider)) { var query = new GetInvitationsQuery(_projectName2, null, filter); var dut = new GetInvitationsQueryHandler(context); var result = await dut.Handle(query, default); AssertCount(result.Data, 1); } }
public async Task Handler_ShouldFilterOnPunchOutDate_FromTwoWeeksInFuture() { var filter = new Filter { PunchOutDateFromUtc = _timeProvider.UtcNow.AddWeeks(2) }; using (var context = new IPOContext(_dbContextOptions, _plantProvider, _eventDispatcher, _currentUserProvider)) { var query = new GetInvitationsQuery(_projectName2, null, filter); var dut = new GetInvitationsQueryHandler(context); var result = await dut.Handle(query, default); AssertCount(result.Data, 1); } }
public async Task Handler_ShouldFilterOnPunchOutInThisWeek_NoInvitation() { var filter = new Filter { PunchOutDates = new List <PunchOutDateFilterType> { PunchOutDateFilterType.ThisWeek } }; using (var context = new IPOContext(_dbContextOptions, _plantProvider, _eventDispatcher, _currentUserProvider)) { var query = new GetInvitationsQuery(_projectName2, null, filter); var dut = new GetInvitationsQueryHandler(context); var result = await dut.Handle(query, default); AssertCount(result.Data, 0); } }
public async Task Handler_ShouldFilterOnStatusPlanned() { var filter = new Filter { IpoStatuses = new List <IpoStatus> { IpoStatus.Planned } }; using (var context = new IPOContext(_dbContextOptions, _plantProvider, _eventDispatcher, _currentUserProvider)) { var query = new GetInvitationsQuery(_projectName2, null, filter); var dut = new GetInvitationsQueryHandler(context); var result = await dut.Handle(query, default); AssertCount(result.Data, 2); } }
public async Task Handler_ShouldSeparateOutAdditionalConstructionCompanyParticipants() { using (var context = new IPOContext(_dbContextOptions, _plantProvider, _eventDispatcher, _currentUserProvider)) { var query = new GetInvitationsQuery(_projectName); var dut = new GetInvitationsQueryHandler(context); var result = await dut.Handle(query, default); var invitationDto = result.Data.Invitations.First(); var invitation = _invitation1; var firstConstructionCompanyRep = invitation.Participants.Single(p => p.Organization == Organization.ConstructionCompany && p.SortKey == 1); Assert.IsTrue(invitationDto.ConstructionCompanyRep.StartsWith(firstConstructionCompanyRep.FirstName)); Assert.IsFalse(invitationDto.AdditionalConstructionCompanyReps .Any(p => p.StartsWith(firstConstructionCompanyRep.FirstName))); Assert.AreEqual(invitationDto.AdditionalConstructionCompanyReps.Count(), invitation.Participants.Count(p => p.Organization == Organization.ConstructionCompany && p.SortKey != 1)); } }