forked from LykkeCity/Lykke.RabbitMqDotNetBroker
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
test(LT-5705): cover DealLetterExchangeArgumentsBuilder with tests
- Loading branch information
atarutin
committed
Sep 24, 2024
1 parent
3bf86f6
commit e4c5e79
Showing
3 changed files
with
173 additions
and
0 deletions.
There are no files selected for viewing
39 changes: 39 additions & 0 deletions
39
tests/Lykke.RabbitMqBroker.Tests/DealLetterExchangeArgumentsBuilderTests.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
83
tests/Lykke.RabbitMqBroker.Tests/QueueConfigurationOptionsTests.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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")); | ||
} | ||
} |
51 changes: 51 additions & 0 deletions
51
tests/Lykke.RabbitMqBroker.Tests/QueueDeclarationArgumentsBuilderTests.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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())); | ||
} | ||
} |