using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.eShopOnContainers.WebMVC.Controllers; using Microsoft.eShopOnContainers.WebMVC.Services; using Microsoft.eShopOnContainers.WebMVC.ViewModels; using Moq; using System; using System.Collections.Generic; using System.Threading.Tasks; using Xunit; using BasketModel = Microsoft.eShopOnContainers.WebMVC.ViewModels.Basket; namespace UnitTest.Ordering.Application { public class OrderControllerTest { private readonly Mock _orderServiceMock; private readonly Mock _basketServiceMock; private readonly Mock> _identityParserMock; private readonly Mock _contextMock; public OrderControllerTest() { _orderServiceMock = new Mock(); _basketServiceMock = new Mock(); _identityParserMock = new Mock>(); _contextMock = new Mock(); } [Fact] public async Task Get_order_list_success() { //Arrange var expectedTotalResults = 1; var fakeOrder = GetFakeOrder(); _orderServiceMock.Setup(x => x.GetMyOrders(It.IsAny())) .Returns(Task.FromResult(new List() { fakeOrder })); //Act var orderController = new OrderController(_orderServiceMock.Object, _basketServiceMock.Object, _identityParserMock.Object); orderController.ControllerContext.HttpContext = _contextMock.Object; var actionResult = await orderController.Index(fakeOrder); //Assert var viewResult = Assert.IsType(actionResult); var model = Assert.IsAssignableFrom>(viewResult.ViewData.Model); Assert.Equal(model.Count, expectedTotalResults); } [Fact] public async Task Get_order_detail_success() { //Arrange var fakeOrderId = "12"; var fakeOrder = GetFakeOrder(); _orderServiceMock.Setup(x => x.GetOrder(It.IsAny(), It.IsAny())) .Returns(Task.FromResult(fakeOrder)); //Act var orderController = new OrderController(_orderServiceMock.Object, _basketServiceMock.Object, _identityParserMock.Object); orderController.ControllerContext.HttpContext = _contextMock.Object; var actionResult = await orderController.Detail(fakeOrderId); //Assert var viewResult = Assert.IsType(actionResult); Assert.IsAssignableFrom(viewResult.ViewData.Model); } private Order GetFakeOrder() { return new Order() { OrderNumber = "1", CardNumber = "12", CardSecurityNumber = "1212", Status = "Pending", RequestId = Guid.NewGuid(), CardExpiration = DateTime.Now.AddYears(1), }; } } }