示例#1
0
        public void GolfClubMembershipAggregate_RequestMembership_PlayerToYoung_RequestRejected()
        {
            GolfClubMembershipAggregate aggregate = GolfClubMembershipTestData.GetCreatedGolfClubMembershipAggregate();

            // Get the lowest valid age
            DateTime dateOfBirth = DateTime.Now.AddYears(-13);

            // Now add a day to make it invalid
            dateOfBirth = dateOfBirth.AddDays(1);

            aggregate.RequestMembership(GolfClubMembershipTestData.PlayerId,
                                        GolfClubMembershipTestData.PlayerFullName,
                                        dateOfBirth,
                                        GolfClubMembershipTestData.PlayerGender,
                                        GolfClubMembershipTestData.RequestDateAndTime);

            MembershipDataTransferObject membership = aggregate.GetMembership(GolfClubMembershipTestData.PlayerId, dateOfBirth, GolfClubMembershipTestData.PlayerGender);

            membership.MembershipId.ShouldNotBe(Guid.Empty);
            membership.PlayerId.ShouldBe(GolfClubMembershipTestData.PlayerId);
            membership.PlayerFullName.ShouldBe(GolfClubMembershipTestData.PlayerFullName);
            membership.PlayerDateOfBirth.ShouldBe(dateOfBirth);
            membership.PlayerGender.ShouldBe(GolfClubMembershipTestData.PlayerGender);
            membership.RejectedDateAndTime.ShouldBe(GolfClubMembershipTestData.RequestDateAndTime);
            membership.AcceptedDateAndTime.ShouldBe(DateTime.MinValue);
            membership.RejectionReason.ShouldBe($"Player Id {GolfClubMembershipTestData.PlayerId} is too young.");
            membership.Status.ShouldBe(2);
        }
示例#2
0
        public void GolfClubMembershipAggregate_GetMemberships_MembershipsReturned()
        {
            GolfClubMembershipAggregate aggregate = GolfClubMembershipTestData.GetCreatedGolfClubMembershipAggregateWithMultipleMembershipRequested();

            List <MembershipDataTransferObject> memberships = aggregate.GetMemberships();

            memberships.Count.ShouldBe(2);
        }
示例#3
0
        public void GolfClubMembershipAggregate_GetMemberships_NoMemberships_ErrorThrown()
        {
            GolfClubMembershipAggregate aggregate = GolfClubMembershipTestData.GetCreatedGolfClubMembershipAggregate();

            Should.Throw <NotFoundException>(() =>
            {
                aggregate.GetMemberships();
            });
        }
示例#4
0
        public void GolfClubMembershipAggregate_GetMembership_NoMemberships_ErrorThrown()
        {
            GolfClubMembershipAggregate aggregate = GolfClubMembershipTestData.GetCreatedGolfClubMembershipAggregate();

            Should.Throw <NotFoundException>(() =>
            {
                aggregate.GetMembership(GolfClubMembershipTestData.PlayerId,
                                        GolfClubMembershipTestData.PlayerDateOfBirth,
                                        GolfClubMembershipTestData.PlayerGender);
            });
        }
示例#5
0
        public void GolfClubMembershipAggregate_RequestMembership_DuplicatePlayerMembershipRequest_RequestRejected()
        {
            GolfClubMembershipAggregate aggregate = GolfClubMembershipTestData.GetCreatedGolfClubMembershipAggregateWithMembershipRequested();

            Should.Throw <InvalidOperationException>(() =>
            {
                aggregate.RequestMembership(GolfClubMembershipTestData.PlayerId,
                                            GolfClubMembershipTestData.PlayerFullName,
                                            GolfClubMembershipTestData.PlayerDateOfBirth,
                                            GolfClubMembershipTestData.PlayerGender,
                                            GolfClubMembershipTestData.RequestDateAndTime);
            });
        }
示例#6
0
        public void GolfClubMembershipAggregate_RequestMembership_InvalidData_ErrorThrown(Boolean validPlayerId,
                                                                                          String playerFullName,
                                                                                          Boolean validDateOfBirth,
                                                                                          String playerGender,
                                                                                          Type exceptionType)
        {
            Guid     playerId    = validPlayerId ? GolfClubMembershipTestData.PlayerId : Guid.Empty;
            DateTime dateOfBirth = validDateOfBirth ? GolfClubMembershipTestData.PlayerDateOfBirth : DateTime.MinValue;

            GolfClubMembershipAggregate aggregate = GolfClubMembershipTestData.GetCreatedGolfClubMembershipAggregate();

            Should.Throw(() => { aggregate.RequestMembership(playerId, playerFullName, dateOfBirth, playerGender, GolfClubMembershipTestData.RequestDateAndTime); },
                         exceptionType);
        }
示例#7
0
        public void GolfClubMembershipAggregate_GetMembership_MembershipReturned()
        {
            GolfClubMembershipAggregate aggregate = GolfClubMembershipTestData.GetCreatedGolfClubMembershipAggregateWithMembershipRequested();

            MembershipDataTransferObject membership = aggregate.GetMembership(GolfClubMembershipTestData.PlayerId, GolfClubMembershipTestData.PlayerDateOfBirth, GolfClubMembershipTestData.PlayerGender);

            membership.MembershipId.ShouldNotBe(Guid.Empty);
            membership.PlayerId.ShouldBe(GolfClubMembershipTestData.PlayerId);
            membership.PlayerFullName.ShouldBe(GolfClubMembershipTestData.PlayerFullName);
            membership.PlayerDateOfBirth.ShouldBe(GolfClubMembershipTestData.PlayerDateOfBirth);
            membership.PlayerGender.ShouldBe(GolfClubMembershipTestData.PlayerGender);
            membership.AcceptedDateAndTime.ShouldBe(GolfClubMembershipTestData.RequestDateAndTime);
            membership.RejectedDateAndTime.ShouldBe(DateTime.MinValue);
            membership.RejectionReason.ShouldBeNullOrEmpty();
            membership.Status.ShouldBe(1);
        }
示例#8
0
        public void GolfClubMembershipAggregate_RequestMembership_NoSpaceForNewMembers_RequestRejected()
        {
            GolfClubMembershipAggregate aggregate = GolfClubMembershipTestData.GetCreatedGolfClubMembershipAggregateWithNumberOfAcceptedMembershipRequests(500);

            aggregate.RequestMembership(GolfClubMembershipTestData.PlayerId,
                                        GolfClubMembershipTestData.PlayerFullName,
                                        GolfClubMembershipTestData.PlayerDateOfBirth,
                                        GolfClubMembershipTestData.PlayerGender,
                                        GolfClubMembershipTestData.RequestDateAndTime);

            MembershipDataTransferObject membership = aggregate.GetMembership(GolfClubMembershipTestData.PlayerId,
                                                                              GolfClubMembershipTestData.PlayerDateOfBirth,
                                                                              GolfClubMembershipTestData.PlayerGender);

            membership.MembershipId.ShouldNotBe(Guid.Empty);
            membership.PlayerId.ShouldBe(GolfClubMembershipTestData.PlayerId);
            membership.PlayerFullName.ShouldBe(GolfClubMembershipTestData.PlayerFullName);
            membership.PlayerDateOfBirth.ShouldBe(GolfClubMembershipTestData.PlayerDateOfBirth);
            membership.PlayerGender.ShouldBe(GolfClubMembershipTestData.PlayerGender);
            membership.RejectedDateAndTime.ShouldBe(GolfClubMembershipTestData.RequestDateAndTime);
            membership.AcceptedDateAndTime.ShouldBe(DateTime.MinValue);
            membership.RejectionReason.ShouldBe($"No more space at club for Player Id {GolfClubMembershipTestData.PlayerId}");
            membership.Status.ShouldBe(2);
        }
示例#9
0
        public void GolfClubMembershipAggregate_RequestMembership_MembershipRequested()
        {
            GolfClubMembershipAggregate aggregate = GolfClubMembershipTestData.GetCreatedGolfClubMembershipAggregate();

            aggregate.RequestMembership(GolfClubMembershipTestData.PlayerId,
                                        GolfClubMembershipTestData.PlayerFullName,
                                        GolfClubMembershipTestData.PlayerDateOfBirth,
                                        GolfClubMembershipTestData.PlayerGender,
                                        GolfClubMembershipTestData.RequestDateAndTime);

            MembershipDataTransferObject membership = aggregate.GetMembership(GolfClubMembershipTestData.PlayerId,
                                                                              GolfClubMembershipTestData.PlayerDateOfBirth,
                                                                              GolfClubMembershipTestData.PlayerGender);

            membership.MembershipId.ShouldNotBe(Guid.Empty);
            membership.PlayerId.ShouldBe(GolfClubMembershipTestData.PlayerId);
            membership.PlayerFullName.ShouldBe(GolfClubMembershipTestData.PlayerFullName);
            membership.PlayerDateOfBirth.ShouldBe(GolfClubMembershipTestData.PlayerDateOfBirth);
            membership.PlayerGender.ShouldBe(GolfClubMembershipTestData.PlayerGender);
            membership.AcceptedDateAndTime.ShouldBe(GolfClubMembershipTestData.RequestDateAndTime);
            membership.AcceptedDateAndTime.ShouldNotBe(DateTime.MinValue);
            membership.MembershipNumber.ShouldBe("000001");
            membership.Status.ShouldBe(1);
        }
示例#10
0
        public void GolfClubMembershipApplicationService_RequestClubMembership_ClubNotCreated_ErrorThrown()
        {
            Mock <IAggregateRepository <GolfClubAggregate> > golfClubRepository = new Mock <IAggregateRepository <GolfClubAggregate> >();

            golfClubRepository.Setup(g => g.GetLatestVersion(It.IsAny <Guid>(), CancellationToken.None))
            .ReturnsAsync(GolfClubTestData.GetEmptyGolfClubAggregate());

            Mock <IAggregateRepository <PlayerAggregate> > playerRepository = new Mock <IAggregateRepository <PlayerAggregate> >();

            playerRepository.Setup(p => p.GetLatestVersion(It.IsAny <Guid>(), CancellationToken.None))
            .ReturnsAsync(PlayerTestData.GetRegisteredPlayerAggregate());

            Mock <IAggregateRepository <GolfClubMembershipAggregate> > golfClubMembershipRepository = new Mock <IAggregateRepository <GolfClubMembershipAggregate> >();

            golfClubMembershipRepository.Setup(g => g.GetLatestVersion(It.IsAny <Guid>(), CancellationToken.None)).ReturnsAsync(GolfClubMembershipTestData.GetCreatedGolfClubMembershipAggregate());

            GolfClubMembershipApplicationService service = new GolfClubMembershipApplicationService(golfClubRepository.Object,
                                                                                                    playerRepository.Object,
                                                                                                    golfClubMembershipRepository.Object);

            Should.Throw <InvalidDataException>(async() => await service.RequestClubMembership(GolfClubMembershipTestData.PlayerId, GolfClubMembershipTestData.AggregateId,
                                                                                               CancellationToken.None));

            golfClubMembershipRepository.Verify(
                x => x.SaveChanges(It.IsAny <GolfClubMembershipAggregate>(), CancellationToken.None), Times.Never);
        }
示例#11
0
        public async Task GolfClubMembershipApplicationService_RequestClubMembership_MembershipRequestProcessed()
        {
            Mock <IAggregateRepository <GolfClubAggregate> > golfClubRepository = new Mock <IAggregateRepository <GolfClubAggregate> >();

            golfClubRepository.Setup(g => g.GetLatestVersion(It.IsAny <Guid>(), CancellationToken.None))
            .ReturnsAsync(GolfClubTestData.GetCreatedGolfClubAggregate());

            Mock <IAggregateRepository <PlayerAggregate> > playerRepository = new Mock <IAggregateRepository <PlayerAggregate> >();

            playerRepository.Setup(p => p.GetLatestVersion(It.IsAny <Guid>(), CancellationToken.None))
            .ReturnsAsync(PlayerTestData.GetRegisteredPlayerAggregate());

            Mock <IAggregateRepository <GolfClubMembershipAggregate> > golfClubMembershipRepository = new Mock <IAggregateRepository <GolfClubMembershipAggregate> >();

            golfClubMembershipRepository.Setup(g => g.GetLatestVersion(It.IsAny <Guid>(), CancellationToken.None)).ReturnsAsync(GolfClubMembershipTestData.GetCreatedGolfClubMembershipAggregate());

            GolfClubMembershipApplicationService service = new GolfClubMembershipApplicationService(golfClubRepository.Object,
                                                                                                    playerRepository.Object,
                                                                                                    golfClubMembershipRepository.Object);

            await service.RequestClubMembership(GolfClubMembershipTestData.PlayerId, GolfClubMembershipTestData.AggregateId,
                                                CancellationToken.None);

            golfClubMembershipRepository.Verify(
                x => x.SaveChanges(It.IsAny <GolfClubMembershipAggregate>(), CancellationToken.None), Times.Once);
        }