public void TournamentDivisionAddedEvent_CanBeCreated_IsCreated()
        {
            TournamentDivisionAddedEvent tournamentDivisionAddedEvent = TournamentDivisionAddedEvent.Create(GolfClubTestData.AggregateId, GolfClubTestData.Division, GolfClubTestData.StartHandicap,
                                                                                                            GolfClubTestData.EndHandicap);

            tournamentDivisionAddedEvent.ShouldNotBeNull();
            tournamentDivisionAddedEvent.AggregateId.ShouldBe(GolfClubTestData.AggregateId);
            tournamentDivisionAddedEvent.EventCreatedDateTime.ShouldNotBe(DateTime.MinValue);
            tournamentDivisionAddedEvent.EventId.ShouldNotBe(Guid.Empty);
            tournamentDivisionAddedEvent.Division.ShouldBe(GolfClubTestData.Division);
            tournamentDivisionAddedEvent.StartHandicap.ShouldBe(GolfClubTestData.StartHandicap);
            tournamentDivisionAddedEvent.EndHandicap.ShouldBe(GolfClubTestData.EndHandicap);
        }
Esempio n. 2
0
        /// <summary>
        /// Adds the tournament division.
        /// </summary>
        /// <param name="tournamentDivision">The tournament division.</param>
        public void AddTournamentDivision(TournamentDivisionDataTransferObject tournamentDivision)
        {
            Guard.ThrowIfNull(tournamentDivision, typeof(ArgumentNullException), "Tournament Division cannot be null");

            this.CheckHasGolfClubAlreadyBeenCreated();

            // Check for duplicate division
            this.ValidateForDuplicateDivision(tournamentDivision.Division);

            // check for clashing ranges
            this.ValidateDivisionRanges(tournamentDivision);

            this.ValidateTournamentDivision(tournamentDivision);

            // Raise a domain event
            TournamentDivisionAddedEvent tournamentDivisionAddedEvent =
                TournamentDivisionAddedEvent.Create(this.AggregateId, tournamentDivision.Division, tournamentDivision.StartHandicap, tournamentDivision.EndHandicap);

            // Apply and pend
            this.ApplyAndPend(tournamentDivisionAddedEvent);
        }
Esempio n. 3
0
        /// <summary>
        /// Plays the event.
        /// </summary>
        /// <param name="domainEvent">The domain event.</param>
        private void PlayEvent(TournamentDivisionAddedEvent domainEvent)
        {
            TournamentDivision tournamentDivision = TournamentDivision.Create(domainEvent.Division, domainEvent.StartHandicap, domainEvent.EndHandicap);

            this.TournamentDivisions.Add(tournamentDivision);
        }