コード例 #1
0
        public async Task Consume_BookingCollisionMultiple_PublishFailedEventWithReason()
        {
            var id     = Guid.NewGuid();
            var id2    = Guid.NewGuid();
            var @event = new VerifyChangedTimeslotEvent()
            {
                EventId = Guid.NewGuid(),
                RoomIds = new List <Guid>()
                {
                    id,
                    id2
                },
                StartTime = new DateTime(2020, 1, 1, 1, 0, 0),
                EndTime   = new DateTime(2020, 1, 1, 2, 0, 0)
            };
            var club = new Club()
            {
                ClubId = Guid.NewGuid()
            };
            var room = new Room()
            {
                ClubId = club.ClubId,
                Name   = "NotDefault",
                RoomId = id
            };

            var room2 = new Room()
            {
                ClubId = club.ClubId,
                Name   = "NotDefault2",
                RoomId = id2
            };
            var booking = new Booking()
            {
                EventId   = Guid.NewGuid(),
                RoomId    = id,
                StartTime = new DateTime(2020, 1, 1, 1, 30, 0),
                EndTime   = new DateTime(2020, 1, 1, 2, 30, 0)
            };

            using (var context = _factory.CreateContext())
            {
                await context.Clubs.AddAsync(club);

                await context.Rooms.AddAsync(room);

                await context.Rooms.AddAsync(room2);

                await context.Bookings.AddAsync(booking);

                await context.SaveChangesAsync();
            }

            await SendEvent(@event);

            await _publishEndpoint.Received(1).Publish(Arg.Any <TimeslotReservationFailedEvent>());
        }
コード例 #2
0
        public async Task Consume_NoCollisionMultiple_BookingAccepted()
        {
            var id     = Guid.NewGuid();
            var id2    = Guid.NewGuid();
            var @event = new VerifyChangedTimeslotEvent()
            {
                EventId = Guid.NewGuid(),
                RoomIds = new List <Guid>()
                {
                    id,
                    id2
                },
                StartTime = new DateTime(2020, 1, 1, 1, 0, 0),
                EndTime   = new DateTime(2020, 1, 1, 2, 0, 0)
            };
            var club = new Club()
            {
                ClubId = Guid.NewGuid()
            };
            var room = new Room()
            {
                ClubId = club.ClubId,
                Name   = "NotDefault",
                RoomId = id
            };

            var room2 = new Room()
            {
                ClubId = club.ClubId,
                Name   = "NotDefault2",
                RoomId = id2
            };

            using (var context = _factory.CreateContext())
            {
                await context.Clubs.AddAsync(club);

                await context.Rooms.AddAsync(room);

                await context.Rooms.AddAsync(room2);

                await context.SaveChangesAsync();
            }

            await SendEvent(@event);

            await _publishEndpoint.Received(1).Publish(Arg.Is <TimeslotReservedEvent>(evt =>
                                                                                      evt.EventId == @event.EventId
                                                                                      ));

            using (var context = _factory.CreateContext())
            {
                Assert.That(context.Bookings.Count, Is.EqualTo(2));
            }
        }
コード例 #3
0
        public async Task Consume_RoomDoesNotExist_PublishFailedEventWithReason()
        {
            var @event = new VerifyChangedTimeslotEvent()
            {
                EventId = Guid.NewGuid(),
                RoomIds = new List <Guid>()
                {
                    Guid.NewGuid()
                }
            };

            await SendEvent(@event);

            await _publishEndpoint.Received(1).Publish(
                Arg.Any <TimeslotReservationFailedEvent>());
        }