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.Modules.UserManager; 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 SentinelMaintenanceMock { get; set; } = null!; protected Mock PerformanceMaintenanceMock { get; set; } = null!; protected Mock UserManagerMaintenanceMock { get; set; } = null!; protected Mock SigmaImporterMock { get; set; } = null!; protected Mock EFlowSyncMessageSenderMock { get; set; } = null!; protected Mock LoggerMock { get; set; } = null!; protected SigmaImportQueueHandler QueueHandler { get; set; } = null!; [SetUp] public override Task Setup() { SentinelMaintenanceMock = new Mock(); PerformanceMaintenanceMock = new Mock(); UserManagerMaintenanceMock = new Mock(); SigmaImporterMock = new Mock(); LoggerMock = new Mock(); EFlowSyncMessageSenderMock = new Mock(); _fakeClock = new FakeClock(); QueueHandler = new SigmaImportQueueHandler(_fakeClock, LoggerMock.Object, SigmaImporterMock.Object, EFlowSyncMessageSenderMock.Object); return base.Setup(); } private static byte[] ObjectToStream(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); } }