Merge branch 'order-processflow-redesign' of https://github.com/dotnet-architecture/eShopOnContainers into order-processflow-redesign

This commit is contained in:
Christian Arenas 2017-05-11 16:42:24 +02:00
commit 38fd965e1c
5 changed files with 140 additions and 152 deletions

View File

@ -176,17 +176,13 @@
{ {
var eventBus = app.ApplicationServices.GetRequiredService<IEventBus>(); var eventBus = app.ApplicationServices.GetRequiredService<IEventBus>();
eventBus.Subscribe<UserCheckoutAcceptedIntegrationEvent,IIntegrationEventHandler<UserCheckoutAcceptedIntegrationEvent>>( eventBus.Subscribe<UserCheckoutAcceptedIntegrationEvent,IIntegrationEventHandler<UserCheckoutAcceptedIntegrationEvent>>();
() => app.ApplicationServices.GetRequiredService<IIntegrationEventHandler<UserCheckoutAcceptedIntegrationEvent>>());
eventBus.Subscribe<ConfirmGracePeriodCommandMsg, IIntegrationEventHandler<ConfirmGracePeriodCommandMsg>> eventBus.Subscribe<ConfirmGracePeriodCommandMsg, IIntegrationEventHandler<ConfirmGracePeriodCommandMsg>>();
(() => app.ApplicationServices.GetRequiredService<IIntegrationEventHandler<ConfirmGracePeriodCommandMsg>>());
eventBus.Subscribe<OrderStockConfirmedIntegrationEvent, OrderStockConfirmedIntegrationEventHandler> eventBus.Subscribe<OrderStockConfirmedIntegrationEvent, OrderStockConfirmedIntegrationEventHandler>();
(() => app.ApplicationServices.GetRequiredService<OrderStockConfirmedIntegrationEventHandler>());
eventBus.Subscribe<OrderStockNotConfirmedIntegrationEvent, OrderStockNotConfirmedIntegrationEventHandler> eventBus.Subscribe<OrderStockNotConfirmedIntegrationEvent, OrderStockNotConfirmedIntegrationEventHandler>();
(() => app.ApplicationServices.GetRequiredService<OrderStockNotConfirmedIntegrationEventHandler>());
} }
protected virtual void ConfigureAuth(IApplicationBuilder app) protected virtual void ConfigureAuth(IApplicationBuilder app)

View File

@ -13,66 +13,64 @@ using static Microsoft.eShopOnContainers.Services.Ordering.API.Application.Comma
namespace FunctionalTests.Services.Ordering namespace FunctionalTests.Services.Ordering
{ {
public class OrderingScenarios : OrderingScenariosBase //public class OrderingScenarios : OrderingScenariosBase
{ //{
[Fact] // [Fact]
public async Task Create_order_and_return_the_order_by_id() // public async Task Create_order_and_return_the_order_by_id()
{ // {
using (var server = CreateServer()) // using (var server = CreateServer())
{ // {
var client = server.CreateIdempotentClient(); // var client = server.CreateIdempotentClient();
// GIVEN an order is created // // GIVEN an order is created
await client.PostAsync(Post.AddNewOrder, new StringContent(BuildOrder(), UTF8Encoding.UTF8, "application/json")); // await client.PostAsync(Post.AddNewOrder, new StringContent(BuildOrder(), UTF8Encoding.UTF8, "application/json"));
var ordersResponse = await client.GetAsync(Get.Orders); // var ordersResponse = await client.GetAsync(Get.Orders);
var responseBody = await ordersResponse.Content.ReadAsStringAsync(); // var responseBody = await ordersResponse.Content.ReadAsStringAsync();
var orders = JsonConvert.DeserializeObject<List<Order>>(responseBody); // var orders = JsonConvert.DeserializeObject<List<Order>>(responseBody);
string orderId = orders.OrderByDescending(o => o.Date).First().OrderNumber; // string orderId = orders.OrderByDescending(o => o.Date).First().OrderNumber;
//WHEN we request the order bit its id // //WHEN we request the order bit its id
var order= await client.GetAsync(Get.OrderBy(int.Parse(orderId))); // var order= await client.GetAsync(Get.OrderBy(int.Parse(orderId)));
var orderBody = await order.Content.ReadAsStringAsync(); // var orderBody = await order.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<Order>(orderBody); // var result = JsonConvert.DeserializeObject<Order>(orderBody);
//THEN the requested order is returned // //THEN the requested order is returned
Assert.Equal(orderId, result.OrderNumber); // Assert.Equal(orderId, result.OrderNumber);
Assert.Equal("inprocess", result.Status); // Assert.Equal("inprocess", result.Status);
Assert.Equal(1, result.OrderItems.Count); // Assert.Equal(1, result.OrderItems.Count);
Assert.Equal(10, result.OrderItems[0].UnitPrice); // Assert.Equal(10, result.OrderItems[0].UnitPrice);
} // }
} // }
string BuildOrder() // string BuildOrder()
{ // {
List<OrderItemDTO> orderItemsList = new List<OrderItemDTO>(); // List<BasketItem> orderItemsList = new List<BasketItem>();
orderItemsList.Add(new OrderItemDTO() // orderItemsList.Add(new BasketItem()
{ // {
ProductId = 1, // ProductId = "1",
Discount = 8M, // Discount = 8M,
UnitPrice = 10, // UnitPrice = 10,
Units = 1, // Units = 1,
ProductName = "Some name" // ProductName = "Some name"
} // }
); // );
var order = new CreateOrderCommand( // var order = new CreateOrderCommand(
orderItemsList, // orderItemsList,
cardExpiration: DateTime.UtcNow.AddYears(1), // cardExpiration: DateTime.UtcNow.AddYears(1),
cardNumber: "5145-555-5555", // cardNumber: "5145-555-5555",
cardHolderName: "Jhon Senna", // cardHolderName: "Jhon Senna",
cardSecurityNumber: "232", // cardSecurityNumber: "232",
cardTypeId: 1, // cardTypeId: 1,
city: "Redmon", // city: "Redmon",
country: "USA", // country: "USA",
state: "WA", // state: "WA",
street: "One way", // street: "One way",
zipcode: "zipcode", // zipcode: "zipcode"
paymentId: 1, // );
buyerId: 3
);
return JsonConvert.SerializeObject(order); // return JsonConvert.SerializeObject(order);
} // }
} //}
} }

View File

@ -16,99 +16,97 @@
public class OrderingScenarios public class OrderingScenarios
: OrderingScenarioBase : OrderingScenarioBase
{ {
[Fact] // [Fact]
public async Task Get_get_all_stored_orders_and_response_ok_status_code() // public async Task Get_get_all_stored_orders_and_response_ok_status_code()
{ // {
using (var server = CreateServer()) // using (var server = CreateServer())
{ // {
var response = await server.CreateClient() // var response = await server.CreateClient()
.GetAsync(Get.Orders); // .GetAsync(Get.Orders);
response.EnsureSuccessStatusCode(); // response.EnsureSuccessStatusCode();
} // }
} // }
[Fact] // [Fact]
public async Task AddNewOrder_add_new_order_and_response_ok_status_code() // public async Task AddNewOrder_add_new_order_and_response_ok_status_code()
{ // {
using (var server = CreateServer()) // using (var server = CreateServer())
{ // {
var content = new StringContent(BuildOrder(), UTF8Encoding.UTF8, "application/json"); // var content = new StringContent(BuildOrder(), UTF8Encoding.UTF8, "application/json");
var response = await server.CreateIdempotentClient() // var response = await server.CreateIdempotentClient()
.PostAsync(Post.AddNewOrder, content); // .PostAsync(Post.AddNewOrder, content);
response.EnsureSuccessStatusCode(); // response.EnsureSuccessStatusCode();
} // }
} // }
[Fact] // [Fact]
public async Task AddNewOrder_response_bad_request_if_card_expiration_is_invalid() // public async Task AddNewOrder_response_bad_request_if_card_expiration_is_invalid()
{ // {
using (var server = CreateServer()) // using (var server = CreateServer())
{ // {
var content = new StringContent(BuildOrderWithInvalidExperationTime(), UTF8Encoding.UTF8, "application/json"); // var content = new StringContent(BuildOrderWithInvalidExperationTime(), UTF8Encoding.UTF8, "application/json");
var response = await server.CreateIdempotentClient() // var response = await server.CreateIdempotentClient()
.PostAsync(Post.AddNewOrder, content); // .PostAsync(Post.AddNewOrder, content);
Assert.True(response.StatusCode == System.Net.HttpStatusCode.BadRequest); // Assert.True(response.StatusCode == System.Net.HttpStatusCode.BadRequest);
} // }
} // }
//public CreateOrderCommand(string city, string street, string state, string country, string zipcode, // //public CreateOrderCommand(string city, string street, string state, string country, string zipcode,
// string cardNumber, string cardHolderName, DateTime cardExpiration, // // string cardNumber, string cardHolderName, DateTime cardExpiration,
// string cardSecurityNumber, int cardTypeId, int paymentId, int buyerId) : this() // // string cardSecurityNumber, int cardTypeId, int paymentId, int buyerId) : this()
string BuildOrder() // string BuildOrder()
{ // {
List<OrderItemDTO> orderItemsList = new List<OrderItemDTO>(); // List<OrderItemDTO> orderItemsList = new List<OrderItemDTO>();
orderItemsList.Add(new OrderItemDTO() // orderItemsList.Add(new OrderItemDTO()
{ // {
ProductId = 1, // ProductId = 1,
Discount = 10M, // Discount = 10M,
UnitPrice = 10, // UnitPrice = 10,
Units = 1, // Units = 1,
ProductName = "Some name" // ProductName = "Some name"
} // }
); // );
var order = new CreateOrderCommand( // var order = new CreateOrderCommand(
orderItemsList, // orderItemsList,
cardExpiration: DateTime.UtcNow.AddYears(1), // cardExpiration: DateTime.UtcNow.AddYears(1),
cardNumber: "5145-555-5555", // cardNumber: "5145-555-5555",
cardHolderName: "Jhon Senna", // cardHolderName: "Jhon Senna",
cardSecurityNumber: "232", // cardSecurityNumber: "232",
cardTypeId: 1, // cardTypeId: 1,
city: "Redmon", // city: "Redmon",
country: "USA", // country: "USA",
state: "WA", // state: "WA",
street: "One way", // street: "One way",
zipcode: "zipcode", // zipcode: "zipcode"
paymentId: 1, // );
buyerId: 1
);
return JsonConvert.SerializeObject(order); // return JsonConvert.SerializeObject(order);
} // }
string BuildOrderWithInvalidExperationTime() // string BuildOrderWithInvalidExperationTime()
{ // {
var order = new CreateOrderCommand( // var order = new CreateOrderCommand(
null, // null,
cardExpiration: DateTime.UtcNow.AddYears(-1), // cardExpiration: DateTime.UtcNow.AddYears(-1),
cardNumber: "5145-555-5555", // cardNumber: "5145-555-5555",
cardHolderName: "Jhon Senna", // cardHolderName: "Jhon Senna",
cardSecurityNumber: "232", // cardSecurityNumber: "232",
cardTypeId: 1, // cardTypeId: 1,
city: "Redmon", // city: "Redmon",
country: "USA", // country: "USA",
state: "WA", // state: "WA",
street: "One way", // street: "One way",
zipcode: "zipcode", // zipcode: "zipcode",
buyerId: 1, // buyerId: 1,
paymentId:1 // paymentId:1
); // );
return JsonConvert.SerializeObject(order); // return JsonConvert.SerializeObject(order);
} // }
} }
} }

View File

@ -80,9 +80,7 @@ namespace UnitTest.Ordering.Application
cardExpiration: args != null && args.ContainsKey("cardExpiration") ? (DateTime)args["cardExpiration"] : DateTime.MinValue, cardExpiration: args != null && args.ContainsKey("cardExpiration") ? (DateTime)args["cardExpiration"] : DateTime.MinValue,
cardSecurityNumber: args != null && args.ContainsKey("cardSecurityNumber") ? (string)args["cardSecurityNumber"] : "123", cardSecurityNumber: args != null && args.ContainsKey("cardSecurityNumber") ? (string)args["cardSecurityNumber"] : "123",
cardHolderName: args != null && args.ContainsKey("cardHolderName") ? (string)args["cardHolderName"] : "XXX", cardHolderName: args != null && args.ContainsKey("cardHolderName") ? (string)args["cardHolderName"] : "XXX",
cardTypeId: args != null && args.ContainsKey("cardTypeId") ? (int)args["cardTypeId"] : 0, cardTypeId: args != null && args.ContainsKey("cardTypeId") ? (int)args["cardTypeId"] : 0);
paymentId: args != null && args.ContainsKey("paymentId") ? (int)args["paymentId"] : 0,
buyerId: args != null && args.ContainsKey("buyerId") ? (int)args["buyerId"] : 0);
} }
} }
} }

View File

@ -82,9 +82,7 @@ namespace UnitTest.Ordering.Application
cardExpiration: args != null && args.ContainsKey("cardExpiration") ? (DateTime)args["cardExpiration"] : DateTime.MinValue, cardExpiration: args != null && args.ContainsKey("cardExpiration") ? (DateTime)args["cardExpiration"] : DateTime.MinValue,
cardSecurityNumber: args != null && args.ContainsKey("cardSecurityNumber") ? (string)args["cardSecurityNumber"] : "123", cardSecurityNumber: args != null && args.ContainsKey("cardSecurityNumber") ? (string)args["cardSecurityNumber"] : "123",
cardHolderName: args != null && args.ContainsKey("cardHolderName") ? (string)args["cardHolderName"] : "XXX", cardHolderName: args != null && args.ContainsKey("cardHolderName") ? (string)args["cardHolderName"] : "XXX",
cardTypeId: args != null && args.ContainsKey("cardTypeId") ? (int)args["cardTypeId"] : 0, cardTypeId: args != null && args.ContainsKey("cardTypeId") ? (int)args["cardTypeId"] : 0);
paymentId: args != null && args.ContainsKey("paymentId") ? (int)args["paymentId"] : 0,
buyerId: args != null && args.ContainsKey("buyerId") ? (int)args["buyerId"] : 0);
} }
} }
} }