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.

152 lines
4.9 KiB

  1. using System;
  2. using Xunit;
  3. using System.Threading.Tasks;
  4. using Moq;
  5. using MediatR;
  6. using Microsoft.eShopOnContainers.Services.Ordering.API.Controllers;
  7. using Microsoft.eShopOnContainers.Services.Ordering.Api.Application.Commands;
  8. using Microsoft.AspNetCore.Mvc;
  9. using Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Services;
  10. using Microsoft.eShopOnContainers.Services.Ordering.Api.Application.Queries;
  11. using System.Collections.Generic;
  12. namespace UnitTest.Ordering.Controllers
  13. {
  14. public class OrderControllerTest
  15. {
  16. private readonly Mock<IMediator> _mediatorMock;
  17. private readonly Mock<IIdentityService> _identityMock;
  18. private readonly Mock<IOrderQueries> _queriesMock;
  19. public OrderControllerTest()
  20. {
  21. //Mocks;
  22. _mediatorMock = new Mock<IMediator>();
  23. _identityMock = new Mock<IIdentityService>();
  24. _queriesMock = new Mock<IOrderQueries>();
  25. }
  26. [Fact]
  27. public async Task AddOrder_ReturnsBadRequestResult_WhenPersitenceOperationFails()
  28. {
  29. // Arrange
  30. var orderRequest = new object() as IAsyncRequest<bool>;
  31. _mediatorMock.Setup(mediator => mediator.SendAsync(OrderFakeNotExpired()))
  32. .Returns(Task.FromResult(false));
  33. _identityMock.Setup(identity => identity.GetUserIdentity())
  34. .Returns(Guid.NewGuid().ToString());
  35. var controller = new OrdersController(_mediatorMock.Object, _queriesMock.Object, _identityMock.Object);
  36. // Act
  37. var badRequestResult = await controller.AddOrder(OrderFakeNotExpired());
  38. // Assert
  39. Assert.IsType<BadRequestResult>(badRequestResult);
  40. }
  41. [Fact]
  42. public async Task AddOrder_ReturnsOK_WhenPersistenceOperationSucceed()
  43. {
  44. // Arrange
  45. _mediatorMock.Setup(mediator => mediator.SendAsync(OrderFakeNotExpired()))
  46. .Returns(Task.FromResult(true));
  47. _identityMock.Setup(identity => identity.GetUserIdentity())
  48. .Returns(Guid.NewGuid().ToString());
  49. var controller = new OrdersController(_mediatorMock.Object, _queriesMock.Object, _identityMock.Object);
  50. // Act
  51. var badRequestResult = await controller.AddOrder(OrderFakeNotExpired());
  52. // Assert
  53. Assert.IsType<BadRequestResult>(badRequestResult);
  54. }
  55. [Fact]
  56. public async Task GetOrder_ReturnsNotFound_WhenItemNotFound()
  57. {
  58. // Arrange
  59. _queriesMock.Setup(queries => queries.GetOrder(1))
  60. .Throws(new KeyNotFoundException());
  61. var controller = new OrdersController(_mediatorMock.Object, _queriesMock.Object, _identityMock.Object);
  62. // Act
  63. var notFoundResult = await controller.GetOrder(1);
  64. // Assert
  65. Assert.IsType<NotFoundResult>(notFoundResult);
  66. }
  67. [Fact]
  68. public async Task GetOrder_ReturnsOkObjecResult_WheItemFound()
  69. {
  70. // Arrange
  71. _queriesMock.Setup(queries => queries.GetOrder(1))
  72. .Returns(Task.FromResult(new object()));
  73. var controller = new OrdersController(_mediatorMock.Object, _queriesMock.Object, _identityMock.Object);
  74. // Act
  75. var OkObjectResult = await controller.GetOrder(1);
  76. // Assert
  77. Assert.IsType<OkObjectResult>(OkObjectResult);
  78. }
  79. [Fact]
  80. public async Task GetOrders_ReturnsOkObjectResult()
  81. {
  82. // Arrange
  83. _queriesMock.Setup(queries => queries.GetOrders())
  84. .Returns(Task.FromResult(new object()));
  85. var controller = new OrdersController(_mediatorMock.Object, _queriesMock.Object, _identityMock.Object);
  86. // Act
  87. var OkObjectResult = await controller.GetOrders();
  88. // Assert
  89. Assert.IsType<OkObjectResult>(OkObjectResult);
  90. }
  91. [Fact]
  92. public async Task GetCardTypes()
  93. {
  94. // Arrange
  95. _queriesMock.Setup(queries => queries.GetCardTypes())
  96. .Returns(Task.FromResult(new object()));
  97. var controller = new OrdersController(_mediatorMock.Object, _queriesMock.Object, _identityMock.Object);
  98. // Act
  99. var OkObjectResult = await controller.GetCardTypes();
  100. // Assert
  101. Assert.IsType<OkObjectResult>(OkObjectResult);
  102. }
  103. //Fakes
  104. private NewOrderRequest OrderFakeNotExpired()
  105. {
  106. return new NewOrderRequest()
  107. {
  108. CardTypeId = 1,
  109. CardExpiration = DateTime.Now.AddYears(1)
  110. };
  111. }
  112. private NewOrderRequest OrderFakeExpired()
  113. {
  114. return new NewOrderRequest()
  115. {
  116. CardTypeId = 1,
  117. CardExpiration = DateTime.Now.AddYears(-1)
  118. };
  119. }
  120. }
  121. }