public async Task Consume_EventDoesNotExistSomehow_IgnoresEvent() { SetupAnEntireClub(); var e = CreateEvent(); var @event = new TimeslotReservedEvent() { EventId = Guid.NewGuid(), }; await SendEvent(@event); await _publishEndpoint.Received(0).Publish( Arg.Any <EventCreatedEvent>()); }
public async Task Consume(ConsumeContext <VerifyChangedTimeslotEvent> context) { var bookingsToRemove = _roomContext.Bookings.Where(b => b.EventId == context.Message.EventId); _roomContext.Bookings.RemoveRange(bookingsToRemove); foreach (var roomId in context.Message.RoomIds) { var room = await _roomContext.Rooms .Include(room => room.Bookings) .FirstOrDefaultAsync(room => room.RoomId == roomId); if (room == null) { await FailureResponse(context, "Room does not exist"); return; } var booking = new Booking() { EventId = context.Message.EventId, EndTime = context.Message.EndTime, StartTime = context.Message.StartTime }; room.Bookings = room.Bookings.Where(b => b.EventId != context.Message.EventId).ToList(); room.Bookings.Add(booking); _roomContext.Rooms.Update(room); } try { var @event = new TimeslotReservedEvent() { EventId = context.Message.EventId, }; await _eventService.SaveEventAndDbContextChangesAsync(@event); await _eventService.PublishEventAsync(@event); } catch { await FailureResponse(context, "Timeslot already reserved"); } }
public async Task Consume_EventDoesExist_ChangesStatus() { SetupAnEntireClub(); var e = CreateEvent(); var @event = new TimeslotReservedEvent() { EventId = e.EventId, }; await SendEvent(@event); using (var context = _factory.CreateContext()) { var dbEvent = context.Events.Find(e.EventId); Assert.That(dbEvent.Status, Is.EqualTo(EventStatus.Confirmed)); } await _publishEndpoint.Received(1).Publish( Arg.Any <EventCreatedEvent>()); }