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.

136 lines
4.4 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. private readonly string _userIdentity;
  20. public OrderControllerTest()
  21. {
  22. //Mocks;
  23. _mediatorMock = new Mock<IMediator>();
  24. _identityMock = new Mock<IIdentityService>();
  25. _queriesMock = new Mock<IOrderQueries>();
  26. _userIdentity = Guid.NewGuid().ToString();
  27. }
  28. [Fact]
  29. public async Task AddOrder_ReturnsBadRequestResult_WhenPersitenceOperationFails()
  30. {
  31. // Arrange
  32. var orderRequest = new object() as IAsyncRequest<bool>;
  33. _mediatorMock.Setup(mediator => mediator.SendAsync(OrderFakeNotExpired()))
  34. .Returns(Task.FromResult(false));
  35. _identityMock.Setup(identity => identity.GetUserIdentity())
  36. .Returns(Guid.NewGuid().ToString());
  37. var controller = new OrdersController(_mediatorMock.Object, _queriesMock.Object, _identityMock.Object);
  38. // Act
  39. var badRequestResult = await controller.AddOrder(OrderFakeNotExpired());
  40. // Assert
  41. Assert.IsType<BadRequestResult>(badRequestResult);
  42. }
  43. [Fact]
  44. public async Task GetOrder_ReturnsNotFound_WhenItemNotFound()
  45. {
  46. // Arrange
  47. _queriesMock.Setup(queries => queries.GetOrder(1))
  48. .Throws(new KeyNotFoundException());
  49. var controller = new OrdersController(_mediatorMock.Object, _queriesMock.Object, _identityMock.Object);
  50. // Act
  51. var notFoundResult = await controller.GetOrder(1);
  52. // Assert
  53. Assert.IsType<NotFoundResult>(notFoundResult);
  54. }
  55. [Fact]
  56. public async Task GetOrder_ReturnsOkObjecResult_WheItemFound()
  57. {
  58. // Arrange
  59. _queriesMock.Setup(queries => queries.GetOrder(1))
  60. .Returns(Task.FromResult(new object()));
  61. var controller = new OrdersController(_mediatorMock.Object, _queriesMock.Object, _identityMock.Object);
  62. // Act
  63. var OkObjectResult = await controller.GetOrder(1);
  64. // Assert
  65. Assert.IsType<OkObjectResult>(OkObjectResult);
  66. }
  67. [Fact]
  68. public async Task GetOrders_ReturnsOkObjectResult()
  69. {
  70. // Arrange
  71. _queriesMock.Setup(queries => queries.GetOrders())
  72. .Returns(Task.FromResult(new object()));
  73. var controller = new OrdersController(_mediatorMock.Object, _queriesMock.Object, _identityMock.Object);
  74. // Act
  75. var OkObjectResult = await controller.GetOrders();
  76. // Assert
  77. Assert.IsType<OkObjectResult>(OkObjectResult);
  78. }
  79. [Fact]
  80. public async Task GetCardTypes()
  81. {
  82. // Arrange
  83. _queriesMock.Setup(queries => queries.GetCardTypes())
  84. .Returns(Task.FromResult(new object()));
  85. var controller = new OrdersController(_mediatorMock.Object, _queriesMock.Object, _identityMock.Object);
  86. // Act
  87. var OkObjectResult = await controller.GetCardTypes();
  88. // Assert
  89. Assert.IsType<OkObjectResult>(OkObjectResult);
  90. }
  91. //Fakes
  92. private NewOrderRequest OrderFakeNotExpired()
  93. {
  94. return new NewOrderRequest()
  95. {
  96. CardTypeId = 1,
  97. CardExpiration = new DateTime(2020, 12, 12),
  98. Buyer = _userIdentity
  99. };
  100. }
  101. private NewOrderRequest OrderFakeExpired()
  102. {
  103. return new NewOrderRequest()
  104. {
  105. CardTypeId = 1,
  106. CardExpiration = DateTime.Now.AddYears(-1)
  107. };
  108. }
  109. }
  110. }