Backend/e-suite.MessageProcessor/e-suite.MessageProcessor.UnitTests/SigmaImportQueueHandlerUnitTests.cs

89 lines
3.2 KiB
C#

using System.Text;
using System.Text.Json;
using e_suite.API.Common;
using e_suite.MessageProcessor.Handlers;
using e_suite.Messaging.Common;
using e_suite.Messaging.Common.models;
using e_suite.Service.Sentinel;
using e_suite.UnitTestCore;
using Microsoft.Extensions.Logging;
using Moq;
using NUnit.Framework;
using RabbitMQ.Client.Events;
namespace e_suite.MessageProcessor.UnitTests;
[TestFixture]
public class SigmaImportQueueHandlerUnitTests : TestBase
{
protected Mock<ISentinelMaintenance> SentinelMaintenanceMock { get; set; } = null!;
protected Mock<IPerformanceMaintenance> PerformanceMaintenanceMock { get; set; } = null!;
protected Mock<IUserManagerMaintenance> UserManagerMaintenanceMock { get; set; } = null!;
protected Mock<ISigmaImporter> SigmaImporterMock { get; set; } = null!;
protected Mock<IEFlowSyncMessageSender> EFlowSyncMessageSenderMock { get; set; } = null!;
protected Mock<ILogger> LoggerMock { get; set; } = null!;
protected SigmaImportQueueHandler QueueHandler { get; set; } = null!;
[SetUp]
public override Task Setup()
{
SentinelMaintenanceMock = new Mock<ISentinelMaintenance>();
PerformanceMaintenanceMock = new Mock<IPerformanceMaintenance>();
UserManagerMaintenanceMock = new Mock<IUserManagerMaintenance>();
SigmaImporterMock = new Mock<ISigmaImporter>();
LoggerMock = new Mock<ILogger>();
EFlowSyncMessageSenderMock = new Mock<IEFlowSyncMessageSender>();
_fakeClock = new FakeClock();
QueueHandler = new SigmaImportQueueHandler(_fakeClock, LoggerMock.Object, SigmaImporterMock.Object, EFlowSyncMessageSenderMock.Object);
return base.Setup();
}
private static byte[] ObjectToStream<T>(T item)
{
var json = JsonSerializer.Serialize(item);
return Encoding.UTF8.GetBytes(json);
}
[Test]
public async Task OnReceived_ImportGMGProfiles_CallsImportGMGProfiles()
{
//Arrange
var message = new SigmaImportMessage
{
MessageType = SigmaImportMessageTypes.ImportGMGProfiles
};
var body = ObjectToStream(message);
var eventArgs = new BasicDeliverEventArgs(string.Empty, 0, false, string.Empty, string.Empty, null!, body);
//Act
await QueueHandler.OnReceived(MessageQueueNames.SigmaImport, eventArgs);
//Assert
SigmaImporterMock.Verify(x => x.ImportGMGProfiles(), Times.Once);
}
[Test]
public async Task OnReceived_ImportPrintSpecifications_CallsImportPrintSpecifications()
{
//Arrange
var message = new SigmaImportMessage
{
MessageType = SigmaImportMessageTypes.ImportPrintSpecifications
};
var body = ObjectToStream(message);
var eventArgs = new BasicDeliverEventArgs(string.Empty, 0, false, string.Empty, string.Empty, null!, body);
//Act
await QueueHandler.OnReceived(MessageQueueNames.SigmaImport, eventArgs);
//Assert
SigmaImporterMock.Verify(x => x.ImportPrintSpecifications(), Times.Once);
EFlowSyncMessageSenderMock.Verify( x => x.SyncEFlowPrinterCategories(), Times.Once);
}
}