Exemplo n.º 1
0
        public static MeetupAggregate CreateMeetup()
        {
            var meetup = Aggregate <MeetupId> .Build <MeetupAggregate>();

            meetup.Create(MeetupId.From(id), MeetupTitle.From(title));
            return(meetup);
        }
Exemplo n.º 2
0
        public static async Task <TReadModel> Query <TReadModel, TProjection>(this IEventStoreRepository eventStore, Guid id)
            where TProjection : IProjection <TReadModel>, new()
            where TReadModel : new()
        {
            var events = await eventStore.GetEventStream <MeetupAggregate, MeetupId>(MeetupId.From(id));

            return(new TProjection().Project(new TReadModel(), events.ToArray()));
        }
Exemplo n.º 3
0
 public void Given_Invalid_Meetup_When_Build_Then_Throws(MeetupState state)
 {
     Assert.Throws <MeetupDomainException>(() =>
                                           new Meetup(
                                               MeetupId.From(id),
                                               MeetupTitle.From(title),
                                               Address.None,
                                               SeatsNumber.From(numberOfSeats),
                                               timeRange,
                                               state));
 }
Exemplo n.º 4
0
        public void Given_ValidEvents_When_Build_Then_Built()
        {
            var id     = MeetupId.From(Guid.NewGuid());
            var meetup = Aggregate <MeetupId> .Build <MeetupAggregate>(
                new Events.MeetupCreated(id, "EventSourcing with Marten"),
                new Events.MeetupNumberOfSeatsUpdated(id, 10),
                new Events.MeetupLocationUpdated(id, "Barcelona"),
                new Events.MeetupTimeUpdated(id, DateTime.UtcNow, DateTime.UtcNow.AddHours(2)),
                new Events.MeetupPublished(id)
                );

            Assert.Equal(id, meetup.Id);
        }
Exemplo n.º 5
0
        public void Given_Invalid_EvenStream_When_Build_Then_Throws()
        {
            var id = MeetupId.From(Guid.NewGuid());

            Assert.Throws <MeetupDomainException>(() =>
                                                  MeetupAggregate.Build(
                                                      id,
                                                      new Events.MeetupCreated(id, "EventSourcing with Marten"),
                                                      new Events.MeetupNumberOfSeatsUpdated(id, 10),
                                                      new Events.MeetupLocationUpdated(id, "Barcelona"),
                                                      new Events.MeetupPublished(id),
                                                      new Events.MeetupTimeUpdated(id, DateTime.UtcNow, DateTime.UtcNow.AddHours(2))
                                                      ));
        }
Exemplo n.º 6
0
        public void Given_Valid_Created_Meetup_When_Build_Then_Built()
        {
            var meetup = new Meetup(
                MeetupId.From(id),
                MeetupTitle.From(title),
                Address.None,
                SeatsNumber.None,
                DateTimeRange.None,
                MeetupState.Created);

            Assert.Equal(id, meetup.Id);
            Assert.Equal(title, meetup.Title);
            Assert.Equal(MeetupState.Created, meetup.State);
        }
Exemplo n.º 7
0
        public async Task <Domain.Meetup> Get(Guid id)
        {
            var doc = await _meetups
                      .Find <MeetupDocument>(meetup => meetup.Id == id)
                      .FirstOrDefaultAsync();

            return(doc != null
            ? new Domain.Meetup(
                       MeetupId.From(id),
                       MeetupTitle.From(doc.Title),
                       Address.From(doc.Location),
                       SeatsNumber.From(doc.NumberOfSeats),
                       DateTimeRange.From(doc.Start, doc.End),
                       Enum.Parse <MeetupState>(doc.State))
            : null);
        }
Exemplo n.º 8
0
        public void Given_Valid_Meetup_When_Build_Then_Built(MeetupState state)
        {
            var meetup = new Meetup(
                MeetupId.From(id),
                MeetupTitle.From(title),
                Address.From(address),
                SeatsNumber.From(numberOfSeats),
                timeRange,
                state);

            Assert.Equal(id, meetup.Id);
            Assert.Equal(title, meetup.Title);
            Assert.Equal(address, meetup.Location);
            Assert.Equal(numberOfSeats, meetup.NumberOfSeats);
            Assert.Equal(timeRange, meetup.TimeRange);
            Assert.Equal(state, meetup.State);
        }
Exemplo n.º 9
0
 public void Given_Invalid_Meetup_When_Build_Then_Throws()
 {
     new[] { MeetupState.Published, MeetupState.Canceled, MeetupState.Closed }
     .ToList().ForEach(state =>
     {
         Assert.Throws <MeetupDomainException>(() =>
                                               new Meetup(
                                                   MeetupId.From(id),
                                                   MeetupTitle.From(title),
                                                   Address.None,
                                                   SeatsNumber.From(numberOfSeats),
                                                   timeRange,
                                                   new Dictionary <MemberId, DateTime>(),
                                                   new Dictionary <MemberId, DateTime>(),
                                                   state));
     });
 }
Exemplo n.º 10
0
        public async Task <MeetupAggregate> Get(Guid meetupId)
        {
            var doc = await _collection.Find <MeetupMongoDocument>(doc => doc.Id == meetupId).FirstOrDefaultAsync();

            if (doc == null)
            {
                return(null);
            }

            return(new MeetupAggregate(
                       MeetupId.From(doc.Id),
                       new MeetupTitle(doc.Title),
                       Location.From(doc.Location),
                       NumberOfSeats.From(doc.NumberOfSeats),
                       doc.State.ToLower() switch
            {
                "published" => MeetupState.Published,
                "canceled" => MeetupState.Canceled,
                "created" => MeetupState.Created,
                _ => MeetupState.Created
            },
Exemplo n.º 11
0
        public async Task <Domain.Meetup> Get(Guid id)
        {
            var doc = await _meetups
                      .Find <MeetupDocument>(meetup => meetup.Id == id)
                      .FirstOrDefaultAsync();

            return(doc != null
            ? new Domain.Meetup(
                       MeetupId.From(id),
                       MeetupTitle.From(doc.Title),
                       Address.From(doc.Location),
                       SeatsNumber.From(doc.NumberOfSeats),
                       DateTimeRange.From(doc.Start, doc.End),
                       doc.MembersGoing.ToDictionary(k => MemberId.From(Guid.Parse(k.Key)), v => v.Value),
                       doc.MembersNotGoing.ToDictionary(k => MemberId.From(Guid.Parse(k.Key)), v => v.Value),
                       doc.State.ToLower() switch
            {
                "created" => MeetupState.Created,
                "published" => MeetupState.Published,
                "closed" => MeetupState.Closed,
                "canceled" => MeetupState.Canceled,
                _ => MeetupState.Created,
            })
Exemplo n.º 12
0
        public void Given_Valid_Meetup_When_Build_Then_Built()
        {
            new[] { MeetupState.Created, MeetupState.Published, MeetupState.Canceled, MeetupState.Closed }
            .ToList().ForEach(state =>
            {
                var meetup = new Meetup(
                    MeetupId.From(id),
                    MeetupTitle.From(title),
                    Address.From(address),
                    SeatsNumber.From(numberOfSeats),
                    timeRange,
                    new Dictionary <MemberId, DateTime>(),
                    new Dictionary <MemberId, DateTime>(),
                    state);

                Assert.Equal(id, meetup.Id);
                Assert.Equal(title, meetup.Title);
                Assert.Equal(address, meetup.Location);
                Assert.Equal(numberOfSeats, meetup.NumberOfSeats);
                Assert.Equal(timeRange, meetup.TimeRange);
                Assert.Equal(state, meetup.State);
            });
        }
Exemplo n.º 13
0
 public static Meetup CreateMeetup() => new Meetup(
     MeetupId.From(id),
     MeetupTitle.From(title));
Exemplo n.º 14
0
 public static MeetupAggregate CreateMeetup() => new MeetupAggregate(
     MeetupId.From(id),
     MeetupTitle.From(title));