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

85 lines
3.3 KiB
C#

using System.Collections.Generic;
using Xunit;
using Moq;
using LCU.API.Collections.RepoApi.HostedServices;
using LCU.API.Collections.RepoApi.Services;
using LCU.API.Collections.RepoApi.Configuration;
using LCU.API.Collections.RepoApi.DataAccess;
using LCU.Shared.Collections.RepoApiLib.Models.Producer;
using LCU.API.Collections.RepoApi.Exceptions;
using LCU.Shared.Collections.RepoApiLib.Repositories;
using LCU.Shared.Realtime.QueueLib.Models;
using LCU.Shared.Realtime.QueueLib.Queue;
namespace LCU.API.Collections.RepoApiTests.HostedServices
{
public class RepoQueueProducerServiceTests
{
private RepoApiConfiguration _repoApiConfig;
private Mock<IRepoAccountService> _mockRepoAccountService;
private Mock<IQueueConnectionConfig> _mockQueueConnectionConfig;
private QueueItemProducer<ProcessingItem> _mockQueueItemProducer;
private Mock<ISettingsService> _mockSettingsService;
private Mock<IProcessingReceiptService> _mockProcessingReceiptService;
private Mock<ICollectionsDao> _mockCollectionsDao;
private RepoQueueProducerService _repoQueueProducerService;
public RepoQueueProducerServiceTests()
{
_repoApiConfig = new RepoApiConfiguration()
{
QueueConsumerConfigs = StaticTestConfigs.GetQueueConsumerConfigs()
};
_mockRepoAccountService = new Mock<IRepoAccountService>();
_mockQueueConnectionConfig = new Mock<IQueueConnectionConfig>();
_mockQueueItemProducer = new QueueItemProducer<ProcessingItem>(_mockQueueConnectionConfig.Object);
_mockProcessingReceiptService = new Mock<IProcessingReceiptService>();
_mockSettingsService = new Mock<ISettingsService>();
_mockCollectionsDao = new Mock<ICollectionsDao>();
_repoQueueProducerService = new RepoQueueProducerService(_mockQueueConnectionConfig.Object,
_mockRepoAccountService.Object, _repoApiConfig, _mockSettingsService.Object,
_mockCollectionsDao.Object, _mockProcessingReceiptService.Object);
}
[Fact]
public async void RetrieveRepoAccountsOfInterest_OK()
{
//setup
_mockRepoAccountService.Setup(serv => serv.GetItemsForProcessing()).ReturnsAsync(new List<ProcessingItem>()
{
new ProcessingItem()
{
AccountNo = "123456-789"
},
new ProcessingItem()
{
AccountNo = "223456-789"
},
new ProcessingItem()
{
AccountNo = "323456-789"
}
});
//act
var res = await _repoQueueProducerService.RetrieveRepoAccountsOfInterest();
//assert
Assert.Equal(3, res.Count);
}
[Fact]
public async void RetrieveRepoAccountsOfInterest_Exception()
{
//setup
_mockRepoAccountService.Setup(serv => serv.GetItemsForProcessing()).ThrowsAsync(new ServerErrorException());
//act
var res = await _repoQueueProducerService.RetrieveRepoAccountsOfInterest();
//assert
Assert.Equal(0, res.Count);
}
}
}