Files
2026-03-13 09:27:34 -05:00

121 lines
4.1 KiB
C#

using LCU.API.Collections.CollectionsApiLib.Models;
using LCU.API.Internal.RepoApi.Old_Repo_DataAccess;
using LCU.API.Internal.RepoApi.Old_Repo_Exceptions;
using LCU.API.Internal.RepoApi.Repos.Models;
using LCU.API.Internal.RepoApi.Repos.Repositories;
using LCU.API.Internal.RepoApi.Old_Repo_Services;
namespace LCU.API.Internal.RepoApiTests.ServiceTests
{
public class RepoLetterServiceTests
{
private readonly Mock<ILetterRepository> _mockLetterRepository;
private readonly Mock<ICollectionsDao> _mockCollectionsDao;
private readonly RepoLetterService _service;
public RepoLetterServiceTests()
{
_mockLetterRepository = new Mock<ILetterRepository>();
_mockCollectionsDao = new Mock<ICollectionsDao>();
_service = new RepoLetterService(_mockLetterRepository.Object, _mockCollectionsDao.Object);
}
[Fact]
public async Task ListByAccountIdAsync_ReturnsEmptyList_WhenNoCollectionsLetters()
{
// Arrange
int accountId = 1;
_mockCollectionsDao
.Setup(x => x.RetrieveHistoryAsync(accountId))
.ReturnsAsync(new List<TemenosHistory>());
// Act
var result = await _service.ListByAccountIdAsync(accountId);
// Assert
Assert.Empty(result);
}
[Fact]
public async Task ListByAccountIdAsync_ReturnsProcessedLetters_WhenCollectionsLettersExist()
{
// Arrange
int accountId = 1;
var collectionsHistory = new List<TemenosHistory>
{
new TemenosHistory { Type = HistoryType.Letter, Message = "Test Message", Created = DateTime.UtcNow }
};
var letters = new List<Letter>
{
new Letter { LetterDescription = "Test", DaysToWait = 5, ActionCode = "A1" }
};
_mockCollectionsDao
.Setup(x => x.RetrieveHistoryAsync(accountId))
.ReturnsAsync(collectionsHistory);
_mockLetterRepository
.Setup(x => x.ListAsync())
.ReturnsAsync(letters);
// Act
var result = await _service.ListByAccountIdAsync(accountId);
// Assert
Assert.Single(result);
Assert.Equal("Test Message", result.First().NoticeType);
}
[Fact]
public async Task ListByAccountIdAsync_ThrowsServerErrorException_OnGeneralException()
{
// Arrange
int accountId = 1;
_mockCollectionsDao
.Setup(x => x.RetrieveHistoryAsync(accountId))
.ThrowsAsync(new Exception("Test Exception"));
// Act & Assert
await Assert.ThrowsAsync<ServerErrorException>(() => _service.ListByAccountIdAsync(accountId));
}
[Fact]
public void ProcessLetters_ThrowsMissingRequirementException_WhenLetterDescriptionIsNull()
{
// Arrange
var collectionsLetters = new List<TemenosHistory>
{
new TemenosHistory { Message = "Test Message", Created = DateTime.UtcNow }
};
var letters = new List<Letter>
{
new Letter { LetterDescription = null }
};
// Act & Assert
Assert.Throws<MissingRequirementException>(() =>
RepoLetterService.ProcessLetters(collectionsLetters, letters));
}
[Fact]
public void ProcessLetters_ReturnsProcessedLetters_WhenValidDataProvided()
{
// Arrange
var collectionsLetters = new List<TemenosHistory>
{
new TemenosHistory { Message = "Test Message", Created = DateTime.UtcNow }
};
var letters = new List<Letter>
{
new Letter { LetterDescription = "Test", DaysToWait = 5, ActionCode = "A1" }
};
// Act
var result = RepoLetterService.ProcessLetters(collectionsLetters, letters);
// Assert
Assert.Single(result);
Assert.Equal("Test Message", result.First().NoticeType);
}
}
}