예제 #1
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);
        }
        public void GolfClubAggregate_AddTournamentDivision_DivisionAdded()
        {
            GolfClubAggregate aggregate = GolfClubTestData.GetGolfClubAggregateWithMeasuredCourse();
            TournamentDivisionDataTransferObject tournamentDivision = GolfClubTestData.GetTournamentDivision1();

            Should.NotThrow(() => { aggregate.AddTournamentDivision(tournamentDivision); });
        }
예제 #3
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);
        }
        public void GolfClubAggregate_AddTournamentDivision_ClubNotCreated_ErrorThrown()
        {
            GolfClubAggregate aggregate = GolfClubTestData.GetEmptyGolfClubAggregate();
            TournamentDivisionDataTransferObject tournamentDivision = GolfClubTestData.GetTournamentDivision1();

            Should.Throw <InvalidOperationException>(() => { aggregate.AddTournamentDivision(tournamentDivision); });
        }
        public void GolfClubAggregate_GetMeasuredCourse_MeasuredCourseWithHolesReturned()
        {
            GolfClubAggregate aggregate = GolfClubTestData.GetGolfClubAggregateWithMeasuredCourse();

            MeasuredCourseDataTransferObject measuredCourseDataTransferObject = GolfClubTestData.GetMeasuredCourseToAdd();

            MeasuredCourseDataTransferObject measuredCourse = aggregate.GetMeasuredCourse(measuredCourseDataTransferObject.MeasuredCourseId);

            measuredCourse.ShouldNotBeNull();
            measuredCourse.Name.ShouldBe(measuredCourseDataTransferObject.Name);
            measuredCourse.StandardScratchScore.ShouldBe(measuredCourseDataTransferObject.StandardScratchScore);
            measuredCourse.TeeColour.ShouldBe(measuredCourseDataTransferObject.TeeColour);
            measuredCourse.Holes.Count.ShouldBe(measuredCourseDataTransferObject.Holes.Count);

            IOrderedEnumerable <HoleDataTransferObject> resultHoles = measuredCourse.Holes.OrderBy(m => m.HoleNumber);

            foreach (HoleDataTransferObject holeDataTransferObject in resultHoles)
            {
                HoleDataTransferObject orignalHole = measuredCourseDataTransferObject.Holes.Single(h => h.HoleNumber == holeDataTransferObject.HoleNumber);

                holeDataTransferObject.HoleNumber.ShouldBe(orignalHole.HoleNumber);
                holeDataTransferObject.LengthInMeters.ShouldBe(orignalHole.LengthInMeters);
                holeDataTransferObject.LengthInYards.ShouldBe(orignalHole.LengthInYards);
                holeDataTransferObject.Par.ShouldBe(orignalHole.Par);
                holeDataTransferObject.StrokeIndex.ShouldBe(orignalHole.StrokeIndex);
            }
        }
        public void GolfClubAggregate_AddTournamentDivision_NullTournamentDivision_ErrorThrown()
        {
            GolfClubAggregate aggregate = GolfClubTestData.GetGolfClubAggregateWithMeasuredCourse();
            TournamentDivisionDataTransferObject tournamentDivision = null;

            Should.Throw <ArgumentNullException>(() => { aggregate.AddTournamentDivision(tournamentDivision); });
        }
        public void GolfClubAggregate_AddMeasuredCourse_ClubNotCreated_ErrorThrown()
        {
            GolfClubAggregate aggregate = GolfClubTestData.GetEmptyGolfClubAggregate();

            MeasuredCourseDataTransferObject measuredCourseDataTransferObject = GolfClubTestData.GetMeasuredCourseToAdd();

            Should.Throw <InvalidOperationException>(() => { aggregate.AddMeasuredCourse(measuredCourseDataTransferObject); });
        }
        public void GolfClubAggregate_AddMeasuredCourse_InvalidNumberOfHoles_ErrorThrown(Int32 numberHoles)
        {
            GolfClubAggregate aggregate = GolfClubTestData.GetCreatedGolfClubAggregate();

            MeasuredCourseDataTransferObject measuredCourseDataTransferObject = GolfClubTestData.GetMeasuredCourseToAdd(numberHoles);

            Should.Throw <InvalidDataException>(() => { aggregate.AddMeasuredCourse(measuredCourseDataTransferObject); });
        }
        public void GolfClubAggregate_GetMeasuredCourse_MeasuredCourseNotFound_ErrorThrown()
        {
            GolfClubAggregate aggregate = GolfClubTestData.GetGolfClubAggregateWithMeasuredCourse();

            MeasuredCourseDataTransferObject measuredCourseDataTransferObject = GolfClubTestData.GetMeasuredCourseToAdd();

            Should.Throw <NotFoundException>(() => { aggregate.GetMeasuredCourse(GolfClubTestData.InvalidMeasuredCourseId); });
        }
        public void GolfClubAggregate_GetMeasuredCourses_NoCourses_ErrorThrown()
        {
            GolfClubAggregate aggregate = GolfClubTestData.GetCreatedGolfClubAggregate();

            MeasuredCourseDataTransferObject measuredCourseDataTransferObject = GolfClubTestData.GetMeasuredCourseToAdd();

            Should.Throw <NotFoundException>(() => { aggregate.GetMeasuredCourses(); });
        }
        public void GolfClubAggregate_AddMeasuredCourse_InvalidHoleData_MissingHoleNumber_ErrorThrown(Int32 holeNumber)
        {
            GolfClubAggregate aggregate = GolfClubTestData.GetCreatedGolfClubAggregate();

            MeasuredCourseDataTransferObject measuredCourseDataTransferObject = GolfClubTestData.GetMeasuredCourseToAddWithMissingHoles(holeNumber);

            Should.Throw <InvalidDataException>(() => { aggregate.AddMeasuredCourse(measuredCourseDataTransferObject); });
        }
        public void GolfClubAggregate_CreateGolfClubAdministratorSecurityUser_GolfClubAdministratorSecurityUserCreated()
        {
            GolfClubAggregate aggregate = GolfClubTestData.GetCreatedGolfClubAggregate();

            aggregate.CreateGolfClubAdministratorSecurityUser(GolfClubTestData.GolfClubAdministratorSecurityUserId);

            aggregate.GolfClubAdministratorSecurityUserId.ShouldBe(GolfClubTestData.GolfClubAdministratorSecurityUserId);
            aggregate.HasAdminSecurityUserBeenCreated.ShouldBeTrue();
        }
        public void GolfClubAggregate_AddTournamentDivision_DuplicateDivision_ErrorThrown()
        {
            GolfClubAggregate aggregate = GolfClubTestData.GetGolfClubAggregateWithMeasuredCourse();
            TournamentDivisionDataTransferObject tournamentDivision = GolfClubTestData.GetTournamentDivision1();

            aggregate.AddTournamentDivision(tournamentDivision);

            Should.Throw <InvalidOperationException>(() => { aggregate.AddTournamentDivision(tournamentDivision); });
        }
        public void GolfClubAggregate_AddMeasuredCourse_InvalidHoleData_InvalidData_ErrorThrown(Int32 lengthInYards,
                                                                                                Int32 par)
        {
            GolfClubAggregate aggregate = GolfClubTestData.GetCreatedGolfClubAggregate();

            MeasuredCourseDataTransferObject measuredCourseDataTransferObject = GolfClubTestData.GetMeasuredCourseToAdd();

            measuredCourseDataTransferObject.Holes.First().LengthInYards = lengthInYards;
            measuredCourseDataTransferObject.Holes.First().Par           = par;
            Should.Throw <InvalidDataException>(() => { aggregate.AddMeasuredCourse(measuredCourseDataTransferObject); });
        }
        public void GolfClubAggregate_GetMeasuredCourses_MeasuredCoursesReturned()
        {
            GolfClubAggregate aggregate = GolfClubTestData.GetGolfClubAggregateWithMeasuredCourse();

            MeasuredCourseDataTransferObject measuredCourseDataTransferObject = GolfClubTestData.GetMeasuredCourseToAdd();

            List <MeasuredCourseDataTransferObject> measuredCourses = aggregate.GetMeasuredCourses();

            measuredCourses.ShouldNotBeEmpty();
            measuredCourses.First().MeasuredCourseId.ShouldBe(measuredCourseDataTransferObject.MeasuredCourseId);
            measuredCourses.First().Name.ShouldBe(measuredCourseDataTransferObject.Name);
            measuredCourses.First().TeeColour.ShouldBe(measuredCourseDataTransferObject.TeeColour);
            measuredCourses.First().StandardScratchScore.ShouldBe(measuredCourseDataTransferObject.StandardScratchScore);
        }
        public void GolfClubAggregate_AddTournamentDivision_InvalidDivisionData_ErrorThrown(Int32 division,
                                                                                            Int32 startHandicap,
                                                                                            Int32 endHandicap,
                                                                                            Type exceptionType)
        {
            GolfClubAggregate aggregate = GolfClubTestData.GetGolfClubAggregateWithMeasuredCourse();
            TournamentDivisionDataTransferObject tournamentDivision = new TournamentDivisionDataTransferObject
            {
                Division      = division,
                EndHandicap   = endHandicap,
                StartHandicap = startHandicap
            };

            Should.Throw(() => { aggregate.AddTournamentDivision(tournamentDivision); }, exceptionType);
        }
        public void GolfClubAggregate_AddMeasuredCourse_InvalidCourseData_ErrorThrown(Boolean validMeasuredCourseId,
                                                                                      String name,
                                                                                      String teeColour,
                                                                                      Int32 standardScratchScore)
        {
            GolfClubAggregate aggregate = GolfClubTestData.GetCreatedGolfClubAggregate();

            MeasuredCourseDataTransferObject measuredCourseDataTransferObject = GolfClubTestData.GetMeasuredCourseToAdd();

            measuredCourseDataTransferObject.MeasuredCourseId     = validMeasuredCourseId ? GolfClubTestData.MeasuredCourseId : Guid.Empty;
            measuredCourseDataTransferObject.Name                 = name;
            measuredCourseDataTransferObject.TeeColour            = teeColour;
            measuredCourseDataTransferObject.StandardScratchScore = standardScratchScore;

            Should.Throw <ArgumentNullException>(() => { aggregate.AddMeasuredCourse(measuredCourseDataTransferObject); });
        }
        public void GolfClubCommandHandler_HandleCommand_RequestClubMembershipCommand_CommandHandled()
        {
            Mock <IAggregateRepository <GolfClubAggregate> > repository = new Mock <IAggregateRepository <GolfClubAggregate> >();
            Mock <ISecurityService> oAuth2SecurityService = new Mock <ISecurityService>();
            Mock <IGolfClubMembershipApplicationService> golfClubMembershipApplicationService = new Mock <IGolfClubMembershipApplicationService>();

            golfClubMembershipApplicationService.Setup(x =>
                                                       x.RequestClubMembership(It.IsAny <Guid>(), It.IsAny <Guid>(), CancellationToken.None))
            .Returns(Task.CompletedTask);
            GolfClubCommandHandler handler = new GolfClubCommandHandler(repository.Object, oAuth2SecurityService.Object,
                                                                        golfClubMembershipApplicationService.Object);

            RequestClubMembershipCommand command = GolfClubTestData.GetRequestClubMembershipCommand();

            Should.NotThrow(async() => { await handler.Handle(command, CancellationToken.None); });
        }
        public void GolfClubAggregate_AddTournamentDivision_DivisionStartHandicapClashesWithExistingRange_ErrorThrown()
        {
            GolfClubAggregate aggregate = GolfClubTestData.GetGolfClubAggregateWithMeasuredCourse();
            TournamentDivisionDataTransferObject tournamentDivision = GolfClubTestData.GetTournamentDivision1();

            aggregate.AddTournamentDivision(tournamentDivision);

            TournamentDivisionDataTransferObject tournamentDivisionInvalid = new TournamentDivisionDataTransferObject
            {
                Division      = 2,
                EndHandicap   = 12,
                StartHandicap = GolfClubTestData.GetTournamentDivision1().StartHandicap
            };

            Should.Throw <InvalidDataException>(() => { aggregate.AddTournamentDivision(tournamentDivisionInvalid); });
        }
        public void GolfClubCommandHandler_HandleCommand_CreateMatchSecretaryCommand_CommandHandled()
        {
            Mock <IAggregateRepository <GolfClubAggregate> > repository = new Mock <IAggregateRepository <GolfClubAggregate> >();

            repository.Setup(r => r.GetLatestVersion(It.IsAny <Guid>(), CancellationToken.None)).ReturnsAsync(GolfClubTestData.GetCreatedGolfClubAggregate);
            Mock <ISecurityService> oAuth2SecurityService = new Mock <ISecurityService>();
            Mock <IGolfClubMembershipApplicationService> golfClubMembershipApplicationService = new Mock <IGolfClubMembershipApplicationService>();
            GolfClubCommandHandler handler = new GolfClubCommandHandler(repository.Object, oAuth2SecurityService.Object,
                                                                        golfClubMembershipApplicationService.Object);

            oAuth2SecurityService
            .Setup(o => o.RegisterUser(It.IsAny <RegisterUserRequest>(), CancellationToken.None))
            .ReturnsAsync(GolfClubTestData.GetRegisterUserResponse());

            CreateMatchSecretaryCommand command = GolfClubTestData.GetCreateMatchSecretaryCommand();

            Should.NotThrow(async() => { await handler.Handle(command, CancellationToken.None); });
        }
예제 #21
0
        public void TournamentCommandHandler_HandleCommand_CreateTournamentCommand_CommandHandled()
        {
            Mock <IAggregateRepository <GolfClubAggregate> > golfClubRepository = new Mock <IAggregateRepository <GolfClubAggregate> >();

            golfClubRepository.Setup(c => c.GetLatestVersion(It.IsAny <Guid>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(GolfClubTestData.GetGolfClubAggregateWithMeasuredCourse());

            Mock <IAggregateRepository <TournamentAggregate> > tournamentRepository = new Mock <IAggregateRepository <TournamentAggregate> >();

            tournamentRepository.Setup(t => t.GetLatestVersion(It.IsAny <Guid>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(TournamentTestData.GetEmptyTournamentAggregate);

            Mock <ITournamentApplicationService> tournamentApplicationService = new Mock <ITournamentApplicationService>();

            TournamentCommandHandler handler = new TournamentCommandHandler(golfClubRepository.Object,
                                                                            tournamentRepository.Object,
                                                                            tournamentApplicationService.Object);

            CreateTournamentCommand command = TournamentTestData.GetCreateTournamentCommand();

            Should.NotThrow(async() => { await handler.Handle(command, CancellationToken.None); });
        }
        public void PlayerCommandHandler_HandleCommand_RegisterPlayerCommand_CommandHandled()
        {
            Mock <IAggregateRepository <PlayerAggregate> > playerRepository = new Mock <IAggregateRepository <PlayerAggregate> >();

            playerRepository.Setup(c => c.GetLatestVersion(It.IsAny <Guid>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(PlayerTestData.GetEmptyPlayerAggregate());
            Mock <ISecurityService> oAuth2SecurityService = new Mock <ISecurityService>();

            oAuth2SecurityService
            .Setup(o => o.RegisterUser(It.IsAny <RegisterUserRequest>(), CancellationToken.None))
            .ReturnsAsync(PlayerTestData.GetRegisterUserResponse());
            Mock <IAggregateRepository <GolfClubAggregate> > clubRepository = new Mock <IAggregateRepository <GolfClubAggregate> >();

            clubRepository.Setup(c => c.GetLatestVersion(It.IsAny <Guid>(), CancellationToken.None))
            .ReturnsAsync(GolfClubTestData.GetGolfClubAggregateWithMeasuredCourse());

            PlayerCommandHandler handler = new PlayerCommandHandler(playerRepository.Object, oAuth2SecurityService.Object, clubRepository.Object);

            RegisterPlayerCommand command = PlayerTestData.GetRegisterPlayerCommand();

            Should.NotThrow(async() => { await handler.Handle(command, CancellationToken.None); });
        }
        public void GolfClubAggregate_CreateGolfClubAdministratorSecurityUser_AdminSecurityUserAlreadyCreated_ErrorThrown()
        {
            GolfClubAggregate aggregate = GolfClubTestData.GetCreatedGolfClubAggregateWithGolfClubAdministratorUser();

            Should.Throw <InvalidOperationException>(() => { aggregate.CreateGolfClubAdministratorSecurityUser(GolfClubTestData.GolfClubAdministratorSecurityUserId); });
        }
        public void GolfClubAggregate_CreateGolfClubAdministratorSecurityUser_InvalidData_ErrorThrown()
        {
            GolfClubAggregate aggregate = GolfClubTestData.GetCreatedGolfClubAggregate();

            Should.Throw <ArgumentNullException>(() => { aggregate.CreateGolfClubAdministratorSecurityUser(Guid.Empty); });
        }
        public void GolfClubAggregate_CreateMatchSecretarySecurityUser_ClubNotCreated_ErrorThrown()
        {
            GolfClubAggregate aggregate = GolfClubTestData.GetEmptyGolfClubAggregate();

            Should.Throw <InvalidOperationException>(() => { aggregate.CreateMatchSecretarySecurityUser(GolfClubTestData.MatchSecretarySecurityUserId); });
        }
        public void GolfClubAggregate_CreateMatchSecretarySecurityUser_DuplicateSecurityUserId()
        {
            GolfClubAggregate aggregate = GolfClubTestData.GetCreatedGolfClubAggregateWithMatchSecretaryUser();

            Should.Throw <InvalidOperationException>(() => { aggregate.CreateMatchSecretarySecurityUser(GolfClubTestData.MatchSecretarySecurityUserId); });
        }
        public void GolfClubAggregate_CreateMatchSecretarySecurityUser_InvalidData_ErrorThrown()
        {
            GolfClubAggregate aggregate = GolfClubTestData.GetEmptyGolfClubAggregate();

            Should.Throw <ArgumentNullException>(() => { aggregate.CreateMatchSecretarySecurityUser(Guid.Empty); });
        }
        public void GolfClubAggregate_CreateMatchSecretarySecurityUser_MatchSecretaryUserAdded()
        {
            GolfClubAggregate aggregate = GolfClubTestData.GetCreatedGolfClubAggregate();

            Should.NotThrow(() => { aggregate.CreateMatchSecretarySecurityUser(GolfClubTestData.MatchSecretarySecurityUserId); });
        }