Example #1
0
        public void Given_NumberOfSpots_When_Build_Then_RsvpAggregateCreated()
        {
            var aggregate = RsvpAggregate.WithNumberOfSpots(1);

            Assert.Equal(1, aggregate.NumberOfSpots);
            aggregate.MembersGoing.AssertEqual();
            aggregate.MembersNotGoing.AssertEqual();
            aggregate.MembersWaiting.AssertEqual();
        }
Example #2
0
        public void Given_NumberOfSpots_And_Members_When_Build_Then_RsvpAggregateCreated()
        {
            Guid bill = Guid.NewGuid(), joe = Guid.NewGuid(), susan = Guid.NewGuid(), carla = Guid.NewGuid();

            var aggregate = RsvpAggregate
                            .WithNumberOfSpots(4)
                            .WithMembersGoing(bill, joe, susan, carla);

            Assert.Equal(4, aggregate.NumberOfSpots);
            aggregate.MembersGoing.AssertEqual(bill, joe, susan, carla);
            aggregate.MembersNotGoing.AssertEqual();
            aggregate.MembersWaiting.AssertEqual();
        }
Example #3
0
        public void Given_MeetupEvents_When_Reduce_RsvpDeclined_Then_ExpectedRsvpAggregate()
        {
            Guid meetupId = Guid.NewGuid(), bill = Guid.NewGuid(), joe = Guid.NewGuid(), susan = Guid.NewGuid(), carla = Guid.NewGuid();

            var aggregate = RsvpAggregate
                            .WithNumberOfSpots(4)
                            .WithMembersGoing(bill, joe, susan, carla);

            // reduce twice for testing idempotency
            aggregate = aggregate.Reduce(new MeetupRsvpDeclinedEvent(meetupId, bill));
            aggregate = aggregate.Reduce(new MeetupRsvpDeclinedEvent(meetupId, bill));

            aggregate.MembersGoing.AssertEqual(joe, susan, carla);
            aggregate.MembersNotGoing.AssertEqual(bill);
            aggregate.MembersWaiting.AssertEqual();
        }
Example #4
0
        public void Given_MeetupEvents_When_Reduce_With_Not_AvailableSpots_RsvpAccepted_Then_ExpectedRsvpAggregate()
        {
            Guid meetupId = Guid.NewGuid(), bill = Guid.NewGuid(), joe = Guid.NewGuid(), susan = Guid.NewGuid(), carla = Guid.NewGuid();

            var aggregate = RsvpAggregate
                            .WithNumberOfSpots(2)
                            .WithMembersGoing(bill, joe)
                            .WithMembersWaiting(carla);

            // reduce twice for testing idempotency
            aggregate = aggregate.Reduce(new MeetupRsvpAcceptedEvent(meetupId, susan));
            aggregate = aggregate.Reduce(new MeetupRsvpAcceptedEvent(meetupId, susan));

            aggregate.MembersGoing.AssertEqual(bill, joe);
            aggregate.MembersWaiting.AssertEqual(carla, susan);
            aggregate.MembersNotGoing.AssertEqual();
        }
Example #5
0
        public void Given_RsvpAggregate_When_Reduce_With_Less_NumberOfSpots_Then_ExpectedRsvpAggregate()
        {
            Guid meetupId = Guid.NewGuid(), bill = Guid.NewGuid(), joe = Guid.NewGuid(), susan = Guid.NewGuid(), carla = Guid.NewGuid();

            var aggregate = RsvpAggregate
                            .WithNumberOfSpots(3)
                            .WithMembersGoing(bill, joe, susan)
                            .WithMembersWaiting(carla);

            // reduce twice for testing idempotency
            aggregate = aggregate.Reduce(new MeetupNumberOfSpotsChangedEvent(meetupId, 2));
            aggregate = aggregate.Reduce(new MeetupNumberOfSpotsChangedEvent(meetupId, 2));

            aggregate.MembersGoing.AssertEqual(bill, joe);
            aggregate.MembersWaiting.AssertEqual(susan, carla);
            aggregate.MembersNotGoing.AssertEqual();
        }
Example #6
0
        public void Given_MeetupEvents_When_Aggregate_Then_RsvpListCreated()
        {
            Guid meetupId = Guid.NewGuid(), bill = Guid.NewGuid(), joe = Guid.NewGuid(), susan = Guid.NewGuid(), carla = Guid.NewGuid();

            var aggregate = RsvpAggregate.Create(meetupId, new MeetupRsvpOpenedEvent(meetupId, numberOfSpots: 2));

            aggregate.MembersGoing.AssertEqual();
            aggregate.MembersWaiting.AssertEqual();
            aggregate.MembersNotGoing.AssertEqual();

            aggregate.Reduce(new MeetupRsvpAcceptedEvent(meetupId, bill));
            aggregate.MembersGoing.AssertEqual(bill);
            aggregate.MembersWaiting.AssertEqual();
            aggregate.MembersNotGoing.AssertEqual();

            aggregate.Reduce(new MeetupRsvpAcceptedEvent(meetupId, joe));
            aggregate.MembersGoing.AssertEqual(bill, joe);
            aggregate.MembersWaiting.AssertEqual();
            aggregate.MembersNotGoing.AssertEqual();

            aggregate.Reduce(new MeetupRsvpAcceptedEvent(meetupId, susan));
            aggregate.MembersGoing.AssertEqual(bill, joe);
            aggregate.MembersWaiting.AssertEqual(susan);
            aggregate.MembersNotGoing.AssertEqual();

            aggregate.Reduce(new MeetupRsvpAcceptedEvent(meetupId, carla));
            aggregate.MembersGoing.AssertEqual(bill, joe);
            aggregate.MembersWaiting.AssertEqual(susan, carla);
            aggregate.MembersNotGoing.AssertEqual();

            aggregate.Reduce(new MeetupRsvpDeclinedEvent(meetupId, bill));
            aggregate.MembersGoing.AssertEqual(joe, susan);
            aggregate.MembersWaiting.AssertEqual(carla);
            aggregate.MembersNotGoing.AssertEqual(bill);

            aggregate.Reduce(new MeetupNumberOfSpotsChangedEvent(meetupId, 3));
            aggregate.MembersGoing.AssertEqual(joe, susan, carla);
            aggregate.MembersWaiting.AssertEqual();
            aggregate.MembersNotGoing.AssertEqual(bill);
        }