diff --git a/ASureBus.Tests/ASureBus/Core/Messaging/MessagingContextInternalTests.cs b/ASureBus.Tests/ASureBus/Core/Messaging/MessagingContextInternalTests.cs new file mode 100644 index 0000000..f1c02e1 --- /dev/null +++ b/ASureBus.Tests/ASureBus/Core/Messaging/MessagingContextInternalTests.cs @@ -0,0 +1,133 @@ +using ASureBus.Abstractions; +using ASureBus.Abstractions.Options.Messaging; +using ASureBus.Core.Messaging; +using Moq; + +namespace ASureBus.Tests.ASureBus.Core.Messaging; + +public class MessagingContextInternalTests +{ + [Test] + public async Task Send_ShouldEnqueueMessage() + { + // Arrange + var message = new Mock(); + var messagingContext = new MessagingContextInternal(); + + // Act + await messagingContext.Send(message.Object); + + // Assert + Assert.That(messagingContext.Messages, Has.Count.EqualTo(1)); + } + + [Test] + public async Task Send_WithOptions_ShouldEnqueueMessage() + { + // Arrange + var message = new Mock(); + var options = new SendOptions(); + var messagingContext = new MessagingContextInternal(); + + // Act + await messagingContext.Send(message.Object, options); + + // Assert + Assert.That(messagingContext.Messages, Has.Count.EqualTo(1)); + } + + [Test] + public async Task Send_WithOptions_ShouldEnqueueScheduledMessage() + { + // Arrange + var message = new Mock(); + var options = new SendOptions + { + ScheduledTime = DateTimeOffset.UtcNow.AddSeconds(10) + }; + var messagingContext = new MessagingContextInternal(); + + // Act + await messagingContext.Send(message.Object, options); + + // Assert + Assert.That(messagingContext.Messages, Has.Count.EqualTo(1)); + } + + [Test] + public async Task SendAfter_ShouldEnqueueScheduledMessage() + { + // Arrange + var message = new Mock(); + var delay = TimeSpan.FromMinutes(10); + var messagingContext = new MessagingContextInternal(); + + // Act + await messagingContext.SendAfter(message.Object, delay); + + // Assert + Assert.That(messagingContext.Messages, Has.Count.EqualTo(1)); + } + + [Test] + public async Task Publish_ShouldEnqueueMessage() + { + // Arrange + var message = new Mock(); + var messagingContext = new MessagingContextInternal(); + + // Act + await messagingContext.Publish(message.Object); + + // Assert + Assert.That(messagingContext.Messages, Has.Count.EqualTo(1)); + } + + [Test] + public async Task Publish_WithOptions_ShouldEnqueueMessage() + { + // Arrange + var message = new Mock(); + var options = new PublishOptions(); + var messagingContext = new MessagingContextInternal(); + + // Act + await messagingContext.Publish(message.Object, options); + + // Assert + Assert.That(messagingContext.Messages, Has.Count.EqualTo(1)); + } + + [Test] + public async Task Publish_WithOptions_ShouldEnqueueScheduledMessage() + { + // Arrange + var message = new Mock(); + var options = new PublishOptions + { + ScheduledTime = DateTimeOffset.UtcNow.AddSeconds(10) + }; + var messagingContext = new MessagingContextInternal(); + + // Act + await messagingContext.Publish(message.Object, options); + + // Assert + Assert.That(messagingContext.Messages, Has.Count.EqualTo(1)); + } + + [Test] + public async Task PublishAfter_ShouldEnqueueScheduledMessage() + { + // Arrange + var message = new Mock(); + var delay = TimeSpan.FromMinutes(10); + var messagingContext = new MessagingContextInternal(); + + // Act + await messagingContext.PublishAfter(message.Object, delay); + + // Assert + Assert.That(messagingContext.Messages, Has.Count.EqualTo(1)); + } +} \ No newline at end of file diff --git a/ASureBus.Tests/ASureBus/Core/Messaging/MessagingContextTests.cs b/ASureBus.Tests/ASureBus/Core/Messaging/MessagingContextTests.cs new file mode 100644 index 0000000..0d84704 --- /dev/null +++ b/ASureBus.Tests/ASureBus/Core/Messaging/MessagingContextTests.cs @@ -0,0 +1,152 @@ +using ASureBus.Abstractions; +using ASureBus.Abstractions.Options.Messaging; +using ASureBus.Core.Messaging; +using Moq; + +namespace ASureBus.Tests.ASureBus.Core.Messaging; + +[TestFixture] +public class MessagingContextTests +{ + private Mock _mockEmitter; + private MessagingContext _messagingContext; + + [SetUp] + public void SetUp() + { + _mockEmitter = new Mock(); + _messagingContext = new MessagingContext(_mockEmitter.Object); + } + + [Test] + public async Task Send_ShouldEnqueueAndFlushMessage() + { + // Arrange + var message = new Mock(); + + // Act + await _messagingContext.Send(message.Object); + + // Assert + _mockEmitter.Verify( + e => e.FlushAll(It.IsAny(), It.IsAny()), + Times.Once); + } + + [Test] + public async Task Send_WithOptions_ShouldEnqueueAndFlushMessage() + { + // Arrange + var message = new Mock(); + var options = new SendOptions(); + + // Act + await _messagingContext.Send(message.Object, options); + + // Assert + _mockEmitter.Verify( + e => e.FlushAll(It.IsAny(), It.IsAny()), + Times.Once); + } + + [Test] + public async Task Send_WithOptions_ShouldEnqueueAndFlushScheduledMessage() + { + // Arrange + var message = new Mock(); + var options = new SendOptions + { + ScheduledTime = DateTimeOffset.UtcNow.AddSeconds(10) + }; + + // Act + await _messagingContext.Send(message.Object, options); + + // Assert + _mockEmitter.Verify( + e => e.FlushAll(It.IsAny(), It.IsAny()), + Times.Once); + } + + [Test] + public async Task SendAfter_ShouldEnqueueAndFlushScheduledMessage() + { + // Arrange + var message = new Mock(); + var delay = TimeSpan.FromMinutes(10); + + // Act + await _messagingContext.SendAfter(message.Object, delay); + + // Assert + _mockEmitter.Verify( + e => e.FlushAll(It.IsAny(), It.IsAny()), + Times.Once); + } + + [Test] + public async Task Publish_ShouldEnqueueAndFlushMessage() + { + // Arrange + var message = new Mock(); + + // Act + await _messagingContext.Publish(message.Object); + + // Assert + _mockEmitter.Verify( + e => e.FlushAll(It.IsAny(), It.IsAny()), + Times.Once); + } + + [Test] + public async Task Publish_WithOptions_ShouldEnqueueAndFlushMessage() + { + // Arrange + var message = new Mock(); + var options = new PublishOptions(); + + // Act + await _messagingContext.Publish(message.Object, options); + + // Assert + _mockEmitter.Verify( + e => e.FlushAll(It.IsAny(), It.IsAny()), + Times.Once); + } + + [Test] + public async Task Publish_WithOptions_ShouldEnqueueAndFlushScheduledMessage() + { + // Arrange + var message = new Mock(); + var options = new PublishOptions + { + ScheduledTime = DateTimeOffset.UtcNow.AddSeconds(10) + }; + + // Act + await _messagingContext.Publish(message.Object, options); + + // Assert + _mockEmitter.Verify( + e => e.FlushAll(It.IsAny(), It.IsAny()), + Times.Once); + } + + [Test] + public async Task PublishAfter_ShouldEnqueueAndFlushScheduledMessage() + { + // Arrange + var message = new Mock(); + var delay = TimeSpan.FromMinutes(10); + + // Act + await _messagingContext.PublishAfter(message.Object, delay); + + // Assert + _mockEmitter.Verify( + e => e.FlushAll(It.IsAny(), It.IsAny()), + Times.Once); + } +} \ No newline at end of file