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.

86 lines
3.1 KiB

  1. using Microsoft.AspNetCore.Http;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.eShopOnContainers.WebMVC.Controllers;
  4. using Microsoft.eShopOnContainers.WebMVC.Services;
  5. using Microsoft.eShopOnContainers.WebMVC.ViewModels;
  6. using Moq;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Threading.Tasks;
  10. using Xunit;
  11. using BasketModel = Microsoft.eShopOnContainers.WebMVC.ViewModels.Basket;
  12. namespace UnitTest.Ordering.Application
  13. {
  14. public class OrderControllerTest
  15. {
  16. private readonly Mock<IOrderingService> _orderServiceMock;
  17. private readonly Mock<IBasketService> _basketServiceMock;
  18. private readonly Mock<IIdentityParser<ApplicationUser>> _identityParserMock;
  19. private readonly Mock<HttpContext> _contextMock;
  20. public OrderControllerTest()
  21. {
  22. _orderServiceMock = new Mock<IOrderingService>();
  23. _basketServiceMock = new Mock<IBasketService>();
  24. _identityParserMock = new Mock<IIdentityParser<ApplicationUser>>();
  25. _contextMock = new Mock<HttpContext>();
  26. }
  27. [Fact]
  28. public async Task Get_order_list_success()
  29. {
  30. //Arrange
  31. var expectedTotalResults = 1;
  32. var fakeOrder = GetFakeOrder();
  33. _orderServiceMock.Setup(x => x.GetMyOrders(It.IsAny<ApplicationUser>()))
  34. .Returns(Task.FromResult(new List<Order>() { fakeOrder }));
  35. //Act
  36. var orderController = new OrderController(_orderServiceMock.Object, _basketServiceMock.Object, _identityParserMock.Object);
  37. orderController.ControllerContext.HttpContext = _contextMock.Object;
  38. var actionResult = await orderController.Index(fakeOrder);
  39. //Assert
  40. var viewResult = Assert.IsType<ViewResult>(actionResult);
  41. var model = Assert.IsAssignableFrom<List<Order>>(viewResult.ViewData.Model);
  42. Assert.Equal(model.Count, expectedTotalResults);
  43. }
  44. [Fact]
  45. public async Task Get_order_detail_success()
  46. {
  47. //Arrange
  48. var fakeOrderId = "12";
  49. var fakeOrder = GetFakeOrder();
  50. _orderServiceMock.Setup(x => x.GetOrder(It.IsAny<ApplicationUser>(), It.IsAny<string>()))
  51. .Returns(Task.FromResult(fakeOrder));
  52. //Act
  53. var orderController = new OrderController(_orderServiceMock.Object, _basketServiceMock.Object, _identityParserMock.Object);
  54. orderController.ControllerContext.HttpContext = _contextMock.Object;
  55. var actionResult = await orderController.Detail(fakeOrderId);
  56. //Assert
  57. var viewResult = Assert.IsType<ViewResult>(actionResult);
  58. Assert.IsAssignableFrom<Order>(viewResult.ViewData.Model);
  59. }
  60. private Order GetFakeOrder()
  61. {
  62. return new Order()
  63. {
  64. OrderNumber = "1",
  65. CardNumber = "12",
  66. CardSecurityNumber = "1212",
  67. Status = "Pending",
  68. RequestId = Guid.NewGuid(),
  69. CardExpiration = DateTime.Now.AddYears(1),
  70. };
  71. }
  72. }
  73. }