public async Task SubmitBookingTest() { var saga = new ProcessBookingSaga() { Data = new ProcessBookingSaga.BookingData() }; var context = new TestableMessageHandlerContext(); SubmitBooking submitBooking = new SubmitBooking(); submitBooking.BookingItem = new BookingItem(); submitBooking.BookingItem.Name = "Jon snow"; submitBooking.BookingItem.Phone = "13324124"; submitBooking.BookingItem.Email = "*****@*****.**"; submitBooking.BookingItem.CheckInDatetime = DateTime.Now; submitBooking.BookingItem.CheckOutDatetime = DateTime.Now; await saga.Handle(submitBooking, context) .ConfigureAwait(false); var bookingPlaced = (BookingPlaced)context.PublishedMessages[0].Message; Assert.AreEqual(Constants.Booked, bookingPlaced.BookingItem.Status); Assert.AreEqual(Constants.Booked, saga.Data.BookingItem.Status); }
public async Task PlaceBooking(BookingItem bookingItem) { var command = new SubmitBooking { ClientId = Context.ConnectionId, BookingNumber = Interlocked.Increment(ref bookingNumber), BookingItem = bookingItem }; var sendOptions = new SendOptions(); await MvcApplication.EndpointInstance.Send(command, sendOptions); }
public Task Handle(SubmitBooking message, IMessageHandlerContext context) { Data.BookingNumber = message.BookingNumber; Data.BookingItem = message.BookingItem; Data.ClientId = message.ClientId; log.Info($"Received Booking request #{message.BookingNumber} ."); Data.BookingItem.Status = Constants.Booked; // tell the client the order was received var bookingPlaced = new BookingPlaced { ClientId = message.ClientId, BookingNumber = message.BookingNumber, BookingItem = message.BookingItem }; return(context.Publish(bookingPlaced)); }