Skip to content

Commit

Permalink
test(LT-5705): cover DealLetterExchangeArgumentsBuilder with tests
Browse files Browse the repository at this point in the history
  • Loading branch information
atarutin committed Sep 24, 2024
1 parent 3bf86f6 commit e4c5e79
Show file tree
Hide file tree
Showing 3 changed files with 173 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
using Lykke.RabbitMqBroker.Subscriber;
using Lykke.RabbitMqBroker.Subscriber.MessageReadStrategies;

using NUnit.Framework;

namespace Lykke.RabbitMqBroker.Tests;

[TestFixture]
internal sealed class DealLetterExchangeArgumentsBuilderTests
{
[Test]
public void WithAtLeastOnceStrategy_AddsAtLeastOnceStrategyArguments()
{
var argsBuilder = new QueueDeclarationArgumentsBuilder()
.AddDeadLetterExchange(DeadLetterExchangeName.Create("exchange"))
.WithAtLeastOnceStrategy();

var args = argsBuilder.Build();

Assert.That(args, Does.ContainKey("x-dead-letter-strategy"));
Assert.That(args["x-dead-letter-strategy"], Is.EqualTo("at-least-once"));

Assert.That(args, Does.ContainKey("overflow"));
Assert.That(args["overflow"], Is.EqualTo("reject-publish"));
}

[Test]
public void WithAtMostOnceStrategy_RemovesAtLeastOnceStrategyArguments()
{
var argsBuilder = new QueueDeclarationArgumentsBuilder()
.AddDeadLetterExchange(DeadLetterExchangeName.Create("exchange"))
.WithAtMostOnceStrategy();

var args = argsBuilder.Build();

Assert.That(args, Does.Not.ContainKey("x-dead-letter-strategy")); // using default
Assert.That(args, Does.Not.ContainKey("overflow")); // using default
}
}
83 changes: 83 additions & 0 deletions tests/Lykke.RabbitMqBroker.Tests/QueueConfigurationOptionsTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
using JetBrains.Annotations;

using Lykke.RabbitMqBroker.Subscriber;
using Lykke.RabbitMqBroker.Subscriber.MessageReadStrategies;

using NUnit.Framework;

namespace Lykke.RabbitMqBroker.Tests;

[TestFixture]
internal sealed class QueueConfigurationOptionsTests
{
[Test]
public void BuildArguments_WhenQueueTypeIsQuorum_AddsQuorumQueueArgument()
{
var options = new QueueConfigurationOptions(
QueueName.Create("queue"),
ExchangeName.Create("exchange"),
QueueType: QueueType.Quorum
);

var args = options.BuildArguments();

Assert.That(args, Does.ContainKey("x-queue-type"));
Assert.That(args["x-queue-type"], Is.EqualTo("quorum"));
}

[Test]
public void BuildArguments_WhenDeadLetterExchangeNameIsNotNull_AddsDeadLetterExchangeArgument()
{
var deadLetterExchangeName = DeadLetterExchangeName.Create("dlx");
var options = new QueueConfigurationOptions(
QueueName.Create("queue"),
ExchangeName.Create("exchange"),
deadLetterExchangeName
);

var args = options.BuildArguments();

Assert.That(args, Does.ContainKey("x-dead-letter-exchange"));
Assert.That(args["x-dead-letter-exchange"], Is.EqualTo(deadLetterExchangeName.ToString()));
}

[Test]
public void BuildArguments_WhenDeadLetterExchangeNameIsNotNull_And_QuorumQueue_AddsAtLeastOnceStrategy()
{
var options = new QueueConfigurationOptions(
QueueName.Create("queue"),
ExchangeName.Create("exchange"),
DeadLetterExchangeName.Create("dlx"),
QueueType: QueueType.Quorum
);

var args = options.BuildArguments();

Assert.That(args, Does.ContainKey("x-dead-letter-strategy"));
Assert.That(args["x-dead-letter-strategy"], Is.EqualTo("at-least-once"));
Assert.That(args, Does.ContainKey("overflow"));
Assert.That(args["overflow"], Is.EqualTo("reject-publish"));
}

[Test]
public void BuildArguments_WhenDeadLetterExchangeNameIsNotNull_And_ClassicQueue_AddsAtMostOnceStrategy()
{
// at-most-once is the default one
// so we either expect the key to be removed or the value to be "at-most-once"

var options = new QueueConfigurationOptions(
QueueName.Create("queue"),
ExchangeName.Create("exchange"),
DeadLetterExchangeName.Create("dlx"),
QueueType: QueueType.Classic
);

var args = options.BuildArguments();

args.TryGetValue("x-dead-letter-strategy", out var strategy);
Assert.That(strategy, Is.AnyOf(null, "at-most-once"));

args.TryGetValue("overflow", out var overflow);
Assert.That(overflow, Is.AnyOf(null, "drop-head"));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
using Lykke.RabbitMqBroker.Subscriber;
using Lykke.RabbitMqBroker.Subscriber.MessageReadStrategies;

using NUnit.Framework;

namespace Lykke.RabbitMqBroker.Tests;

[TestFixture]
internal sealed class QueueDeclarationArgumentsBuilderTests
{
[Test]
public void UseQuorumQueue_AddsQuorumQueueArgument()
{
var argsBuilder = new QueueDeclarationArgumentsBuilder();

argsBuilder.UseQuorumQueue();

var args = argsBuilder.Build();

Assert.That(args, Does.ContainKey("x-queue-type"));
Assert.That(args["x-queue-type"], Is.EqualTo("quorum"));
}

[Test]
public void UseClassicQueue_RemovesQuorumQueueArgument()
{
var argsBuilder = new QueueDeclarationArgumentsBuilder();

argsBuilder
.UseQuorumQueue()
.UseClassicQueue();

var args = argsBuilder.Build();

Assert.That(args, Is.Null);
}

[Test]
public void AddDeadLetterExchange_AddsDeadLetterExchangeArgument()
{
var argsBuilder = new QueueDeclarationArgumentsBuilder();

var dlxExchangeName = DeadLetterExchangeName.Create("exchange");
argsBuilder.AddDeadLetterExchange(dlxExchangeName);

var args = argsBuilder.Build();

Assert.That(args, Does.ContainKey("x-dead-letter-exchange"));
Assert.That(args["x-dead-letter-exchange"], Is.EqualTo(dlxExchangeName.ToString()));
}
}

0 comments on commit e4c5e79

Please sign in to comment.