コード例 #1
0
        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);
            }
        }
コード例 #2
0
        public async Task ValidateAsync_OnGetInvitationsQuery_ShouldReturnFalse_WhenNoAccessToProject()
        {
            // Arrange
            var query = new GetInvitationsQuery(_projectWithoutAccess);

            // act
            var result = await _dut.ValidateAsync(query);

            // Assert
            Assert.IsFalse(result);
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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());
            }
        }
コード例 #5
0
        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);
            }
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
            }
        }
コード例 #8
0
        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());
            }
        }
コード例 #9
0
        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);
            }
        }
コード例 #10
0
        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);
            }
        }
コード例 #11
0
        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);
            }
        }
コード例 #12
0
        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);
            }
        }
コード例 #13
0
        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);
            }
        }
コード例 #14
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);
            }
        }
コード例 #15
0
        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));
            }
        }