using System.Collections.Generic; using LCU.API.Collections.RepoApi.Controllers; using LCU.API.Collections.RepoApi.Services; using LCU.Shared.Collections.RepoApiLib.Models; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Moq; using Xunit; namespace LCU.API.Collections.RepoApiTests.Controllers { public class RepoCompanyControllerTest { private Mock mockService; private RepoCompanyController controller; private readonly Mock mockHttpContextAccessor; public RepoCompanyControllerTest() { mockService = new Mock(); mockHttpContextAccessor = new Mock(); controller = new RepoCompanyController(mockService.Object, mockHttpContextAccessor.Object); } [Fact] public async void Get_OK() { var repoCompanyList = getMockCompanyList(); mockService.Setup(service => service.ListAll()).ReturnsAsync(repoCompanyList); var result = await controller.Get(); Assert.NotNull(result); var okResult = result as OkObjectResult; Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); var okValue = okResult.Value as IEnumerable; Assert.NotNull(okValue); var repoEnum = okValue.GetEnumerator(); repoEnum.MoveNext(); var firstValue = repoEnum.Current; Assert.Equal(repoCompanyList[0], firstValue); } [Fact] public async void Post_Ok() { var repoCompanyList = getMockCompanyList(); mockService.Setup(service => service.Save(It.IsAny())).ReturnsAsync(repoCompanyList[0]); var result = await controller.Post(repoCompanyList[0]); Assert.NotNull(result); var okResult = result as OkObjectResult; Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); var okValue = okResult.Value as RepoCompany; Assert.Equal(repoCompanyList[0], okValue); } private IList getMockCompanyList() { return new List { getMockCompany() }; } private RepoCompany getMockCompany() { return new RepoCompany() {ID = 1, Email = "test1@test1.com", Name = "A Inc."}; } } }