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.

141 lines
5.6 KiB

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