91 lines
3.1 KiB
C#
91 lines
3.1 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.eShopOnContainers.WebMVC.Controllers;
|
|
using Microsoft.eShopOnContainers.WebMVC.Services;
|
|
using Microsoft.eShopOnContainers.WebMVC.ViewModels;
|
|
using Microsoft.eShopOnContainers.WebMVC.ViewModels.CatalogViewModels;
|
|
using Moq;
|
|
using System.Collections.Generic;
|
|
using System.Threading.Tasks;
|
|
using Xunit;
|
|
using CatalogModel = Microsoft.eShopOnContainers.WebMVC.ViewModels.Catalog;
|
|
|
|
namespace UnitTest.Catalog.Application
|
|
{
|
|
public class CatalogControllerTest
|
|
{
|
|
private readonly Mock<ICatalogService> _catalogServiceMock;
|
|
|
|
public CatalogControllerTest()
|
|
{
|
|
_catalogServiceMock = new Mock<ICatalogService>();
|
|
}
|
|
|
|
[Fact]
|
|
public async Task Get_catalog_items_success()
|
|
{
|
|
//Arrange
|
|
var fakeBrandFilterApplied = 1;
|
|
var fakeTypesFilterApplied = 2;
|
|
var fakePage = 2;
|
|
var fakeCatalog = GetFakeCatalog();
|
|
|
|
var expectedNumberOfPages = 5;
|
|
var expectedTotalPages = 50;
|
|
var expectedCurrentPage = 2;
|
|
|
|
_catalogServiceMock.Setup(x => x.GetCatalogItems
|
|
(
|
|
It.Is<int>(y => y == fakePage),
|
|
It.IsAny<int>(),
|
|
It.Is<int?>(y => y == fakeBrandFilterApplied),
|
|
It.Is<int?>(y => y == fakeTypesFilterApplied)
|
|
))
|
|
.Returns(Task.FromResult(fakeCatalog));
|
|
|
|
//Act
|
|
var orderController = new CatalogController(_catalogServiceMock.Object);
|
|
var actionResult = await orderController.Index(fakeBrandFilterApplied, fakeTypesFilterApplied, fakePage, null);
|
|
|
|
//Assert
|
|
var viewResult = Assert.IsType<ViewResult>(actionResult);
|
|
var model = Assert.IsAssignableFrom<IndexViewModel>(viewResult.ViewData.Model);
|
|
Assert.Equal(model.PaginationInfo.TotalPages, expectedNumberOfPages);
|
|
Assert.Equal(model.PaginationInfo.TotalItems, expectedTotalPages);
|
|
Assert.Equal(model.PaginationInfo.ActualPage, expectedCurrentPage);
|
|
Assert.Empty(model.PaginationInfo.Next);
|
|
Assert.Empty(model.PaginationInfo.Previous);
|
|
}
|
|
|
|
private CatalogModel GetFakeCatalog()
|
|
{
|
|
return new CatalogModel()
|
|
{
|
|
PageSize = 10,
|
|
Count = 50,
|
|
PageIndex = 2,
|
|
Data = new List<CatalogItem>()
|
|
{
|
|
new CatalogItem()
|
|
{
|
|
Id = 1,
|
|
Name = "fakeItemA",
|
|
CatalogTypeId = 1
|
|
},
|
|
new CatalogItem()
|
|
{
|
|
Id = 2,
|
|
Name = "fakeItemB",
|
|
CatalogTypeId = 1
|
|
},
|
|
new CatalogItem()
|
|
{
|
|
Id = 3,
|
|
Name = "fakeItemC",
|
|
CatalogTypeId = 1
|
|
}
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|