using e_suite.UnitTestCore; using Moq; using RabbitMQ.Client; using System.Text; namespace e_suite.Messaging.Common.UnitTests.Helpers; public class DatabaseMessageSenderTestBase : TestBase { protected Mock Channel { get; set; } = new Mock(); protected string? Body = null; protected DatabaseMessageSender DatabaseMessageSender { get; set; } = null!; public override async Task Setup() { await base.Setup(); Channel.Setup(x => x.BasicPublishAsync( string.Empty, MessageQueueNames.Database, It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny() )) .Returns(ValueTask.CompletedTask) .Callback, CancellationToken>( (exchange, routingKey, mandatory, basicProperties, body, cancellationToken) => { Body = Encoding.UTF8.GetString(body.ToArray()); }); var connection = new Mock(); connection.Setup(x => x.CreateChannelAsync(It.IsAny(), It.IsAny())) .ReturnsAsync(Channel.Object); var connectionFactoryMock = new Mock(); connectionFactoryMock.Setup(x => x.CreateConnection()).Returns(connection.Object); DatabaseMessageSender = new DatabaseMessageSender(_configuration, connectionFactoryMock.Object); } public virtual Task TearDown() { DatabaseMessageSender.Dispose(); return Task.CompletedTask; } } public class SigmaImportMessageSenderTestBase : TestBase { protected Mock Channel { get; set; } = new Mock(); protected string? Body = null; protected SigmaImportMessageSender SigmaImportMessageSender { get; set; } = null!; public override async Task Setup() { await base.Setup(); Channel.Setup(x => x.BasicPublishAsync( string.Empty, MessageQueueNames.SigmaImport, It.IsAny(), It.IsAny(), It.IsAny>(), It.IsAny())) .Returns(ValueTask.CompletedTask) .Callback, CancellationToken>(( exchange, routineKey, mandatory, basicProperties, body, cancellationToken ) => { Body = Encoding.UTF8.GetString(body.ToArray()); }); var connection = new Mock(); connection.Setup(x => x.CreateChannelAsync(It.IsAny(), It.IsAny())) .ReturnsAsync(Channel.Object); var connectionFactoryMock = new Mock(); connectionFactoryMock.Setup(x => x.CreateConnection()).Returns(connection.Object); SigmaImportMessageSender = new SigmaImportMessageSender(_configuration, connectionFactoryMock.Object); } public virtual Task TearDown() { SigmaImportMessageSender.Dispose(); return Task.CompletedTask; } }