Files
2026-04-20 14:47:24 -05:00

124 lines
4.1 KiB
C#

using System;
using System.Collections.Generic;
using LCU.API.Collections.RepoApi.Models;
using LCU.API.Collections.RepoApi.Services;
using LCU.Shared.Collections.RepoApiLib.Models;
using LCU.Shared.Collections.RepoApiLib.Repositories;
using Moq;
using Xunit;
namespace LCU.API.Collections.RepoApiTests.Services
{
public class RepoCompanyServiceTest
{
[Fact]
public async void ListAll_Ok()
{
var mockCompany = getMockCompany();
var repoCompanyService = getRepoCompanyService();
var result = await repoCompanyService.ListAll();
var companyEnumerator = result.GetEnumerator();
companyEnumerator.MoveNext();
var firstCompanyFromService = companyEnumerator.Current;
Assert.Equal(mockCompany.ID, firstCompanyFromService.ID);
Assert.Equal(mockCompany.Name, firstCompanyFromService.Name);
Assert.Equal(mockCompany.Email, firstCompanyFromService.Email);
}
[Fact]
public async void GetOne_Ok()
{
var mockCompany = getMockCompany();
var repoCompanyService = getRepoCompanyService();
var result = await repoCompanyService.Get(1);
Assert.Equal(mockCompany.ID, result.ID);
Assert.Equal(mockCompany.Name, result.Name);
Assert.Equal(mockCompany.Email, result.Email);
}
[Fact]
public async void Update_Ok()
{
var mockCompany = getMockCompany();
var repoCompanyService = getRepoCompanyService();
var oldId = mockCompany.ID;
mockCompany.ID = 2;
mockCompany.Name = "New Name";
mockCompany.Email = "New Email";
var result = await repoCompanyService.Update(mockCompany, new AppUser());
Assert.Equal(mockCompany.Name, result.Name);
Assert.Equal(mockCompany.Email, result.Email);
Assert.Equal(oldId, result.ID);
}
[Fact]
public async void Update_Date_Disabled_Saves_User()
{
var mockCompany = getMockCompany();
var repoCompanyService = getRepoCompanyService();
mockCompany.ID = 2;
mockCompany.Name = "New Name";
mockCompany.Email = "New Email";
mockCompany.DisabledDate = DateTime.Now;
var result = await repoCompanyService.Update(mockCompany, new AppUser()
{
FirstName = "John",
LastName = "Doe"
});
Assert.Equal("John Doe", result.DisabledBy);
}
[Fact]
public async void Update_Date_Disabled__NUll_Clears_User()
{
var mockCompany = getMockCompany();
var repoCompanyService = getRepoCompanyService();
mockCompany.ID = 2;
mockCompany.Name = "New Name";
mockCompany.Email = "New Email";
mockCompany.DisabledBy = "Bobby Boy";
var result = await repoCompanyService.Update(mockCompany, new AppUser()
{
FirstName = "John",
LastName = "Doe"
});
Assert.Null(result.DisabledBy);
}
private RepoCompanyService getRepoCompanyService()
{
var companies = getMockCompanyList();
var mockRepository = new Mock<IRepoCompanyRepository>();
var mockUnitOfWork = new Mock<IUnitOfWork>();
mockRepository.Setup(repo => repo.ListAsync()).ReturnsAsync(companies);
mockRepository.Setup(repo => repo.FindByIdAsync(It.IsAny<int>())).ReturnsAsync(companies[0]);
mockRepository.Setup(repo => repo.Update(It.IsAny<RepoCompany>()));
return new RepoCompanyService(mockRepository.Object, mockUnitOfWork.Object);
}
private IList<RepoCompany> getMockCompanyList()
{
return new List<RepoCompany>
{
getMockCompany()
};
}
private RepoCompany getMockCompany()
{
return new RepoCompany() {ID = 1, Email = "[email protected]", Name = "A Inc."};
}
}
}