Skip to content
This repository was archived by the owner on Apr 29, 2022. It is now read-only.

Commit b7f3cbd

Browse files
author
Anton Vorontsov
committed
Finished making integration test.
1 parent 1074c02 commit b7f3cbd

File tree

5 files changed

+72
-39
lines changed

5 files changed

+72
-39
lines changed

tests/RabbitMQ.Client.Core.DependencyInjection.Tests/IntegrationTests/QueueServiceTests.cs

Lines changed: 43 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -15,33 +15,14 @@ namespace RabbitMQ.Client.Core.DependencyInjection.Tests.IntegrationTests
1515
public class QueueServiceTests
1616
{
1717
readonly TimeSpan _globalTestsTimeout = TimeSpan.FromSeconds(60);
18+
19+
const string DefaultExchangeName = "exchange.name";
20+
const string FirstRoutingKey = "first.routing.key";
21+
const string SecondRoutingKey = "second.routing.key";
1822

1923
[Fact]
2024
public async Task ShouldProperlyPublishAndConsumeMessages()
2125
{
22-
var clientOptions = new RabbitMqClientOptions
23-
{
24-
HostName = "rabbitmq",
25-
Port = 5672,
26-
UserName = "guest",
27-
Password = "guest",
28-
VirtualHost = "/"
29-
};
30-
31-
var exchangeOptions = new RabbitMqExchangeOptions
32-
{
33-
Type = "direct",
34-
DeadLetterExchange = "exchange.dlx",
35-
Queues = new List<RabbitMqQueueOptions>
36-
{
37-
new RabbitMqQueueOptions
38-
{
39-
Name = "test.queue",
40-
RoutingKeys = new HashSet<string> { "routing.key" }
41-
}
42-
}
43-
};
44-
4526
var connectionFactoryMock = new Mock<RabbitMqConnectionFactory> { CallBase = true }
4627
.As<IRabbitMqConnectionFactory>();
4728

@@ -59,23 +40,56 @@ public async Task ShouldProperlyPublishAndConsumeMessages()
5940
serviceCollection
6041
.AddSingleton(connectionFactoryMock.Object)
6142
.AddSingleton(callerMock.Object)
62-
.AddRabbitMqClient(clientOptions)
63-
.AddConsumptionExchange("exchange.name", exchangeOptions)
64-
.AddMessageHandlerTransient<StubMessageHandler>("routing.key");
43+
.AddRabbitMqClient(GetClientOptions())
44+
.AddConsumptionExchange(DefaultExchangeName, GetExchangeOptions())
45+
.AddMessageHandlerTransient<StubMessageHandler>(FirstRoutingKey)
46+
.AddNonCyclicMessageHandlerTransient<StubNonCyclicMessageHandler>(FirstRoutingKey)
47+
.AddAsyncMessageHandlerTransient<StubAsyncMessageHandler>(SecondRoutingKey)
48+
.AddAsyncNonCyclicMessageHandlerTransient<StubAsyncNonCyclicMessageHandler>(SecondRoutingKey);
6549

6650
var serviceProvider = serviceCollection.BuildServiceProvider();
6751
var queueService = serviceProvider.GetRequiredService<IQueueService>();
6852
queueService.StartConsuming();
6953

7054
var resetEvent = new AutoResetEvent(false);
71-
consumer.Received += async (sender, @event) =>
55+
consumer.Received += (sender, @event) =>
7256
{
7357
resetEvent.Set();
58+
return Task.CompletedTask;
7459
};
7560

76-
await queueService.SendAsync("message", "exchange.name", "routing.key");
61+
await queueService.SendAsync(new { Message = "message" }, DefaultExchangeName, FirstRoutingKey);
7762
resetEvent.WaitOne(_globalTestsTimeout);
78-
callerMock.Verify(x => x.Call(It.IsAny<string>()), Times.Once);
63+
callerMock.Verify(x => x.Call(It.IsAny<string>()), Times.Exactly(2));
64+
65+
await queueService.SendAsync(new { Message = "message" }, DefaultExchangeName, SecondRoutingKey);
66+
resetEvent.WaitOne(_globalTestsTimeout);
67+
callerMock.Verify(x => x.CallAsync(It.IsAny<string>()), Times.Exactly(2));
7968
}
69+
70+
RabbitMqClientOptions GetClientOptions() =>
71+
new RabbitMqClientOptions
72+
{
73+
HostName = "rabbitmq",
74+
Port = 5672,
75+
UserName = "guest",
76+
Password = "guest",
77+
VirtualHost = "/"
78+
};
79+
80+
RabbitMqExchangeOptions GetExchangeOptions() =>
81+
new RabbitMqExchangeOptions
82+
{
83+
Type = "direct",
84+
DeadLetterExchange = "exchange.dlx",
85+
Queues = new List<RabbitMqQueueOptions>
86+
{
87+
new RabbitMqQueueOptions
88+
{
89+
Name = "test.queue",
90+
RoutingKeys = new HashSet<string> { FirstRoutingKey, SecondRoutingKey }
91+
}
92+
}
93+
};
8094
}
8195
}

tests/RabbitMQ.Client.Core.DependencyInjection.Tests/Stubs/IStubCaller.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Threading.Tasks;
23

34
namespace RabbitMQ.Client.Core.DependencyInjection.Tests.Stubs
45
{
@@ -9,5 +10,7 @@ public interface IStubCaller
910
void Call(ReadOnlyMemory<byte> message);
1011

1112
void Call(string message);
13+
14+
Task CallAsync(string message);
1215
}
1316
}
Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
1-
using System;
21
using System.Threading.Tasks;
32
using RabbitMQ.Client.Core.DependencyInjection.MessageHandlers;
43

54
namespace RabbitMQ.Client.Core.DependencyInjection.Tests.Stubs
65
{
76
public class StubAsyncMessageHandler : IAsyncMessageHandler
87
{
9-
public Task Handle(string message, string routingKey)
8+
readonly IStubCaller _caller;
9+
10+
public StubAsyncMessageHandler(IStubCaller caller)
1011
{
11-
Console.WriteLine($"{message}:{routingKey}");
12-
return Task.CompletedTask;
12+
_caller = caller;
13+
}
14+
15+
public async Task Handle(string message, string routingKey)
16+
{
17+
await _caller.CallAsync($"{message}:{routingKey}");
1318
}
1419
}
1520
}
Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using System;
21
using System.Threading.Tasks;
32
using RabbitMQ.Client.Core.DependencyInjection.MessageHandlers;
43
using RabbitMQ.Client.Core.DependencyInjection.Services;
@@ -7,10 +6,16 @@ namespace RabbitMQ.Client.Core.DependencyInjection.Tests.Stubs
76
{
87
public class StubAsyncNonCyclicMessageHandler : IAsyncNonCyclicMessageHandler
98
{
10-
public Task Handle(string message, string routingKey, IQueueService queueService)
9+
readonly IStubCaller _caller;
10+
11+
public StubAsyncNonCyclicMessageHandler(IStubCaller caller)
1112
{
12-
Console.WriteLine($"{message}:{routingKey}:{queueService.GetType()}");
13-
return Task.CompletedTask;
13+
_caller = caller;
14+
}
15+
16+
public async Task Handle(string message, string routingKey, IQueueService queueService)
17+
{
18+
await _caller.CallAsync($"{message}:{routingKey}:{queueService.GetType()}");
1419
}
1520
}
1621
}
Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
1-
using System;
21
using RabbitMQ.Client.Core.DependencyInjection.MessageHandlers;
32
using RabbitMQ.Client.Core.DependencyInjection.Services;
43

54
namespace RabbitMQ.Client.Core.DependencyInjection.Tests.Stubs
65
{
76
public class StubNonCyclicMessageHandler : INonCyclicMessageHandler
87
{
8+
readonly IStubCaller _caller;
9+
10+
public StubNonCyclicMessageHandler(IStubCaller caller)
11+
{
12+
_caller = caller;
13+
}
14+
915
public void Handle(string message, string routingKey, IQueueService queueService)
1016
{
11-
Console.WriteLine($"{message}:{routingKey}:{queueService.GetType()}");
17+
_caller.Call($"{message}:{routingKey}:{queueService.GetType()}");
1218
}
1319
}
1420
}

0 commit comments

Comments
 (0)