public static PutOrderPlacedCommand ToPutPlacedOrderCommand( this OrderPlacedSubscriptionEvent subscriptionEvent) { var result = new PutOrderPlacedCommand ( subscriptionEvent.Id, subscriptionEvent.PersonId, subscriptionEvent.Quantity ); return(result); }
public async Task Given_PutOrderPlacedCommand_Which_Should_Publish_A_PutOrderPlacedEvent_Expect_OrderResponse_With_OrderPlacedEvent_Published() { // Arrange const string topic = "OrderPlacedUpdated"; const string subscriptionId = "OrderPlacedUpdated_IntegrationTest"; var command = new PutOrderPlacedCommand(1, 5, 2); var order = new Order { Id = 1, Name = "product zero one", Quantity = 10 }; Factory.Seed <Startup, MicroserviceDbContext>(db => { db.Clear(); db.Orders.Add(order); }); // Act var response = await Client.PutAsJsonAsync($"{GetBaseRoute()}/place", command); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK)); var result = response.Content.Deserialize <OrderResponse>().Result; var subscriptionResponse = await MessageBrokerClient.Subscribe <OrderPlacedEvent>( topic, subscriptionId, AssertCallback, c => c.UseBasicQos()); // Assert PutOrderPlaced Response Assert.That(result.Quantity, Is.EqualTo(8)); Assert.That(result.Id, Is.EqualTo(order.Id)); StringAssert.AreEqualIgnoringCase(order.Name, result.Name); // Assert Messagebus OrderCreatedEvent Task AssertCallback(OrderPlacedEvent orderPlacedEvent) { var tcs = new TaskCompletionSource <OrderPlacedEvent>(); Assert.That(orderPlacedEvent.QuantityBeforeReduction, Is.EqualTo(order.Quantity)); Assert.That(orderPlacedEvent.Quantity, Is.EqualTo(result.Quantity)); Assert.That(result.Id, Is.EqualTo(order.Id)); StringAssert.AreEqualIgnoringCase(order.Name, result.Name); tcs.SetResult(orderPlacedEvent); return(tcs.Task); } }
public async Task <IActionResult> PlaceOrder([FromBody] PutOrderPlacedCommand orderPlacedCommand) { var result = await _mediator.Send(orderPlacedCommand); return(result != null ? (IActionResult)Ok(result) : NotFound()); }