Files
monorepo/LCU.API.Collections.CollectionsApi/LCU.API.Collections.CollectionsApiTests/ServiceTests/CaseServiceTest.cs
T
2026-03-17 11:20:00 -05:00

133 lines
4.3 KiB
C#

using System;
using System.Collections.Generic;
using Moq;
using Xunit;
using LCU.API.Collections.CollectionsApi.Services;
using LCU.API.Collections.CollectionsApi.Exceptions;
using System.Threading.Tasks;
using LCU.API.Collections.CollectionsApi.Dao;
using LCU.API.Collections.CollectionsApiLib.Models;
namespace LCU.API.Collections.CollectionsApiTests.ServiceTests
{
public class CaseServiceTest
{
private Mock<ITemenosCaseDao> _mockTemenosCaseDao;
private CaseService _caseService;
public CaseServiceTest()
{
_mockTemenosCaseDao = new Mock<ITemenosCaseDao>();
_caseService = new CaseService( _mockTemenosCaseDao.Object);
}
[Fact]
public async void GetCaseByID_OK()
{
//setup
_mockTemenosCaseDao.Setup(dao => dao.FindByIdAsync(It.IsAny<int>())).ReturnsAsync(
new CollectionsApiLib.Models.TemenosCase()
{
CaseId = 1234,
CaseTitle = "Case"
}
);
var result = await _caseService.GetCaseByIdAsync(1234);
Assert.NotNull(result);
Assert.Equal(1234, result.CaseId);
}
[Fact]
public async void GetCaseByID_Server_Exception()
{
//setup
_mockTemenosCaseDao.Setup(dao => dao.FindByIdAsync(It.IsAny<int>())).ThrowsAsync(new Exception("Oops"));
var result = await Assert.ThrowsAsync<ServerErrorException>(() => _caseService.GetCaseByIdAsync(1234));
Assert.NotNull(result);
}
[Fact]
public async void GetCaseByID_NotFound()
{
//setup
_mockTemenosCaseDao.Setup(dao => dao.FindByIdAsync(It.IsAny<int>())).Returns(Task.FromResult<CollectionsApiLib.Models.TemenosCase>(null));
var result = await Assert.ThrowsAsync<NotFoundException>(() => _caseService.GetCaseByIdAsync(123));
Assert.NotNull(result);
Assert.Equal("Case with id 123 not found.", result.Message);
}
[Fact]
public async void GetCaseByNO_OK()
{
//setup
_mockTemenosCaseDao.Setup(dao => dao.FindByCaseNoAsync(It.IsAny<string>())).ReturnsAsync(
new CollectionsApiLib.Models.TemenosCase()
{
CaseId = 1234,
CaseNumber = "12345",
CaseTitle = "Case"
}
);
var result = await _caseService.GetCaseByCaseNoAsync("1234");
Assert.NotNull(result);
Assert.Equal(1234, result.CaseId);
}
[Fact]
public async void GetCaseByNo_Server_Exception()
{
//setup
_mockTemenosCaseDao.Setup(dao => dao.FindByCaseNoAsync(It.IsAny<string>())).ThrowsAsync(new Exception("Oops"));
var result = await Assert.ThrowsAsync<ServerErrorException>(() => _caseService.GetCaseByCaseNoAsync("12345"));
Assert.NotNull(result);
}
[Fact]
public async void GetCaseByNO_NotFound()
{
//setup
_mockTemenosCaseDao.Setup(dao => dao.FindByCaseNoAsync(It.IsAny<string>())).Returns(Task.FromResult<CollectionsApiLib.Models.TemenosCase>(null));
var result = await Assert.ThrowsAsync<NotFoundException>(() => _caseService.GetCaseByCaseNoAsync("1234"));
Assert.NotNull(result);
Assert.Equal("Case with case no 1234 not found.", result.Message);
}
[Fact]
public async void GetHistory_OK()
{
const int caseId = 111;
//setup
_mockTemenosCaseDao.Setup(dao => dao.FindCommentsAsync(caseId)).ReturnsAsync(
new List<TemenosHistory>()
{
new TemenosHistory()
{
Created = DateTime.Now,
Message = "Comment",
Type = HistoryType.Comment,
UserId = 10
}
}
);
var result = await _caseService.GetHistoryByAccountIdAsync(caseId);
Assert.NotNull(result);
Assert.Equal(1, result.Count);
}
}
}