121 lines
4.1 KiB
C#
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);
|
|
}
|
|
}
|
|
} |