You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

143 lines
5.7 KiB

  1. using MediatR;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.AspNetCore.SignalR;
  4. using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands;
  5. using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Queries;
  6. using Microsoft.eShopOnContainers.Services.Ordering.API.Controllers;
  7. using Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Services;
  8. using Moq;
  9. using Ordering.API.Application.Commands;
  10. using Ordering.API.Infrastructure.Hubs;
  11. using System;
  12. using System.Linq;
  13. using System.Threading;
  14. using System.Threading.Tasks;
  15. using Xunit;
  16. namespace UnitTest.Ordering.Application
  17. {
  18. public class OrdersWebApiTest
  19. {
  20. private readonly Mock<IMediator> _mediatorMock;
  21. private readonly Mock<IOrderQueries> _orderQueriesMock;
  22. private readonly Mock<IIdentityService> _identityServiceMock;
  23. public OrdersWebApiTest()
  24. {
  25. _mediatorMock = new Mock<IMediator>();
  26. _orderQueriesMock = new Mock<IOrderQueries>();
  27. _identityServiceMock = new Mock<IIdentityService>();
  28. }
  29. [Fact]
  30. public async Task Create_order_with_requestId_success()
  31. {
  32. //Arrange
  33. _mediatorMock.Setup(x => x.Send(It.IsAny<IdentifiedCommand<CancelOrderCommand, bool>>(), default(CancellationToken)))
  34. .Returns(Task.FromResult(true));
  35. //Act
  36. var orderController = new OrdersController(_mediatorMock.Object, _orderQueriesMock.Object, _identityServiceMock.Object);
  37. var actionResult = await orderController.CancelOrder(new CancelOrderCommand(1), Guid.NewGuid().ToString()) as OkResult;
  38. //Assert
  39. Assert.Equal(actionResult.StatusCode, (int)System.Net.HttpStatusCode.OK);
  40. }
  41. [Fact]
  42. public async Task Cancel_order_bad_request()
  43. {
  44. //Arrange
  45. _mediatorMock.Setup(x => x.Send(It.IsAny<IdentifiedCommand<CancelOrderCommand, bool>>(), default(CancellationToken)))
  46. .Returns(Task.FromResult(true));
  47. //Act
  48. var orderController = new OrdersController(_mediatorMock.Object, _orderQueriesMock.Object, _identityServiceMock.Object);
  49. var actionResult = await orderController.CancelOrder(new CancelOrderCommand(1), String.Empty) as BadRequestResult;
  50. //Assert
  51. Assert.Equal(actionResult.StatusCode, (int)System.Net.HttpStatusCode.BadRequest);
  52. }
  53. [Fact]
  54. public async Task Ship_order_with_requestId_success()
  55. {
  56. //Arrange
  57. _mediatorMock.Setup(x => x.Send(It.IsAny<IdentifiedCommand<ShipOrderCommand, bool>>(), default(System.Threading.CancellationToken)))
  58. .Returns(Task.FromResult(true));
  59. //Act
  60. var orderController = new OrdersController(_mediatorMock.Object, _orderQueriesMock.Object, _identityServiceMock.Object);
  61. var actionResult = await orderController.ShipOrder(new ShipOrderCommand(1), Guid.NewGuid().ToString()) as OkResult;
  62. //Assert
  63. Assert.Equal(actionResult.StatusCode, (int)System.Net.HttpStatusCode.OK);
  64. }
  65. [Fact]
  66. public async Task Ship_order_bad_request()
  67. {
  68. //Arrange
  69. _mediatorMock.Setup(x => x.Send(It.IsAny<IdentifiedCommand<CreateOrderCommand, bool>>(), default(System.Threading.CancellationToken)))
  70. .Returns(Task.FromResult(true));
  71. //Act
  72. var orderController = new OrdersController(_mediatorMock.Object, _orderQueriesMock.Object, _identityServiceMock.Object);
  73. var actionResult = await orderController.ShipOrder(new ShipOrderCommand(1), String.Empty) as BadRequestResult;
  74. //Assert
  75. Assert.Equal(actionResult.StatusCode, (int)System.Net.HttpStatusCode.BadRequest);
  76. }
  77. [Fact]
  78. public async Task Get_orders_success()
  79. {
  80. //Arrange
  81. var fakeDynamicResult = Enumerable.Empty<OrderSummary>();
  82. _orderQueriesMock.Setup(x => x.GetOrdersAsync())
  83. .Returns(Task.FromResult(fakeDynamicResult));
  84. //Act
  85. var orderController = new OrdersController(_mediatorMock.Object, _orderQueriesMock.Object, _identityServiceMock.Object);
  86. var actionResult = await orderController.GetOrders() as OkObjectResult;
  87. //Assert
  88. Assert.Equal(actionResult.StatusCode, (int)System.Net.HttpStatusCode.OK);
  89. }
  90. [Fact]
  91. public async Task Get_order_success()
  92. {
  93. //Arrange
  94. var fakeOrderId = 123;
  95. var fakeDynamicResult = new Order();
  96. _orderQueriesMock.Setup(x => x.GetOrderAsync(It.IsAny<int>()))
  97. .Returns(Task.FromResult(fakeDynamicResult));
  98. //Act
  99. var orderController = new OrdersController(_mediatorMock.Object, _orderQueriesMock.Object, _identityServiceMock.Object);
  100. var actionResult = await orderController.GetOrder(fakeOrderId) as OkObjectResult;
  101. //Assert
  102. Assert.Equal(actionResult.StatusCode, (int)System.Net.HttpStatusCode.OK);
  103. }
  104. [Fact]
  105. public async Task Get_cardTypes_success()
  106. {
  107. //Arrange
  108. var fakeDynamicResult = Enumerable.Empty<CardType>();
  109. _orderQueriesMock.Setup(x => x.GetCardTypesAsync())
  110. .Returns(Task.FromResult(fakeDynamicResult));
  111. //Act
  112. var orderController = new OrdersController(_mediatorMock.Object, _orderQueriesMock.Object, _identityServiceMock.Object);
  113. var actionResult = await orderController.GetCardTypes() as OkObjectResult;
  114. //Assert
  115. Assert.Equal(actionResult.StatusCode, (int)System.Net.HttpStatusCode.OK);
  116. }
  117. }
  118. }