11using System . Collections . Generic ;
2- using System . Diagnostics . CodeAnalysis ;
3- using System . Text ;
4- using RabbitMQ . Client ;
5- using Xunit ;
6-
7- namespace AddUp . RabbitMQ . Fakes . UseCases
8- {
9- [ ExcludeFromCodeCoverage ]
10- public class SendMessages
11- {
12- [ Fact ]
13- public void SendToExchangeOnly ( )
14- {
15- var rabbitServer = new RabbitServer ( ) ;
16- var connectionFactory = new FakeConnectionFactory ( rabbitServer ) ;
17-
18- using ( var connection = connectionFactory . CreateConnection ( ) )
19- using ( var channel = connection . CreateModel ( ) )
20- {
21- const string message = "hello world!" ;
22- var messageBody = Encoding . ASCII . GetBytes ( message ) ;
23- channel . BasicPublish ( exchange : "my_exchange" , routingKey : null , mandatory : false , basicProperties : null , body : messageBody ) ;
24- }
25-
26- Assert . Single ( rabbitServer . Exchanges [ "my_exchange" ] . Messages ) ;
27- }
28-
29- [ Fact ]
30- public void SendToExchangeWithBoundQueue ( )
31- {
32- var rabbitServer = new RabbitServer ( ) ;
33- var connectionFactory = new FakeConnectionFactory ( rabbitServer ) ;
34-
35- ConfigureQueueBinding ( rabbitServer , "my_exchange" , "some_queue" ) ;
36-
37- using ( var connection = connectionFactory . CreateConnection ( ) )
38- using ( var channel = connection . CreateModel ( ) )
39- {
40- const string message = "hello world!" ;
41- var messageBody = Encoding . ASCII . GetBytes ( message ) ;
42- channel . BasicPublish ( exchange : "my_exchange" , routingKey : null , mandatory : false , basicProperties : null , body : messageBody ) ;
43- }
44-
45- Assert . Single ( rabbitServer . Queues [ "some_queue" ] . Messages ) ;
46- }
47-
48- [ Fact ]
49- public void SendToExchangeWithMultipleBoundQueues ( )
50- {
51- var rabbitServer = new RabbitServer ( ) ;
52- var connectionFactory = new FakeConnectionFactory ( rabbitServer ) ;
53-
54- ConfigureQueueBinding ( rabbitServer , "my_exchange" , "some_queue" ) ;
55- ConfigureQueueBinding ( rabbitServer , "my_exchange" , "some_other_queue" ) ;
56-
57- using ( var connection = connectionFactory . CreateConnection ( ) )
58- using ( var channel = connection . CreateModel ( ) )
59- {
60- const string message = "hello world!" ;
61- var messageBody = Encoding . ASCII . GetBytes ( message ) ;
62- channel . BasicPublish ( exchange : "my_exchange" , routingKey : null , mandatory : false , basicProperties : null , body : messageBody ) ;
63- }
64-
65- Assert . Single ( rabbitServer . Queues [ "some_queue" ] . Messages ) ;
66- Assert . Single ( rabbitServer . Queues [ "some_other_queue" ] . Messages ) ;
2+ using System . Diagnostics . CodeAnalysis ;
3+ using System . Text ;
4+ using RabbitMQ . Client ;
5+ using Xunit ;
6+
7+ namespace AddUp . RabbitMQ . Fakes . UseCases
8+ {
9+ [ ExcludeFromCodeCoverage ]
10+ public class SendMessages
11+ {
12+ [ Fact ]
13+ public void SendToExchangeOnly ( )
14+ {
15+ var rabbitServer = new RabbitServer ( ) ;
16+ var connectionFactory = new FakeConnectionFactory ( rabbitServer ) ;
17+
18+ using ( var connection = connectionFactory . CreateConnection ( ) )
19+ using ( var channel = connection . CreateModel ( ) )
20+ {
21+ const string message = "hello world!" ;
22+ var messageBody = Encoding . ASCII . GetBytes ( message ) ;
23+ channel . BasicPublish ( exchange : "my_exchange" , routingKey : null , mandatory : false , basicProperties : null , body : messageBody ) ;
24+ }
25+
26+ Assert . Single ( rabbitServer . Exchanges [ "my_exchange" ] . Messages ) ;
27+ }
28+
29+ [ Fact ]
30+ public void SendToExchangeWithBoundQueue ( )
31+ {
32+ var rabbitServer = new RabbitServer ( ) ;
33+ var connectionFactory = new FakeConnectionFactory ( rabbitServer ) ;
34+
35+ ConfigureQueueBinding ( rabbitServer , "my_exchange" , "some_queue" ) ;
36+
37+ using ( var connection = connectionFactory . CreateConnection ( ) )
38+ using ( var channel = connection . CreateModel ( ) )
39+ {
40+ const string message = "hello world!" ;
41+ var messageBody = Encoding . ASCII . GetBytes ( message ) ;
42+ channel . BasicPublish ( exchange : "my_exchange" , routingKey : null , mandatory : false , basicProperties : null , body : messageBody ) ;
43+ }
44+
45+ Assert . Single ( rabbitServer . Queues [ "some_queue" ] . Messages ) ;
46+ }
47+
48+ [ Fact ]
49+ public void SendToExchangeWithMultipleBoundQueues ( )
50+ {
51+ var rabbitServer = new RabbitServer ( ) ;
52+ var connectionFactory = new FakeConnectionFactory ( rabbitServer ) ;
53+
54+ ConfigureQueueBinding ( rabbitServer , "my_exchange" , "some_queue" ) ;
55+ ConfigureQueueBinding ( rabbitServer , "my_exchange" , "some_other_queue" ) ;
56+
57+ using ( var connection = connectionFactory . CreateConnection ( ) )
58+ using ( var channel = connection . CreateModel ( ) )
59+ {
60+ const string message = "hello world!" ;
61+ var messageBody = Encoding . ASCII . GetBytes ( message ) ;
62+ channel . BasicPublish ( exchange : "my_exchange" , routingKey : null , mandatory : false , basicProperties : null , body : messageBody ) ;
63+ }
64+
65+ Assert . Single ( rabbitServer . Queues [ "some_queue" ] . Messages ) ;
66+ Assert . Single ( rabbitServer . Queues [ "some_other_queue" ] . Messages ) ;
6767 }
6868
69- [ Fact ]
70- public void SendToExchangeWithAlternate ( )
71- {
72- var rabbitServer = new RabbitServer ( ) ;
69+ [ Fact ]
70+ public void SendToExchangeWithAlternate ( )
71+ {
72+ var rabbitServer = new RabbitServer ( ) ;
7373 var connectionFactory = new FakeConnectionFactory ( rabbitServer ) ;
7474
75- using ( var connection = connectionFactory . CreateConnection ( ) )
76- using ( var channel = connection . CreateModel ( ) )
77- {
78- channel . ExchangeDeclare ( exchange : "my_exchange" , type : ExchangeType . Topic , arguments : new Dictionary < string , object > { [ "alternate-exchange" ] = "my_alternate_exchange" } ) ;
79- channel . ExchangeDeclare ( exchange : "my_alternate_exchange" , type : ExchangeType . Fanout ) ;
80- channel . QueueDeclare ( queue : "main_queue" , durable : false , exclusive : false , autoDelete : false , arguments : null ) ;
81- channel . QueueDeclare ( queue : "fallback_queue" , durable : false , exclusive : false , autoDelete : false , arguments : null ) ;
82-
83- channel . QueueBind ( "fallback_queue" , "my_alternate_exchange" , null ) ;
84- channel . QueueBind ( "main_queue" , "my_exchange" , "topic" ) ;
85- }
86-
87- using ( var connection = connectionFactory . CreateConnection ( ) )
88- using ( var channel = connection . CreateModel ( ) )
89- {
90- const string message = "hello world!" ;
91- var messageBody = Encoding . ASCII . GetBytes ( message ) ;
75+ using ( var connection = connectionFactory . CreateConnection ( ) )
76+ using ( var channel = connection . CreateModel ( ) )
77+ {
78+ channel . ExchangeDeclare ( exchange : "my_exchange" , type : ExchangeType . Topic , arguments : new Dictionary < string , object > { [ "alternate-exchange" ] = "my_alternate_exchange" } ) ;
79+ channel . ExchangeDeclare ( exchange : "my_alternate_exchange" , type : ExchangeType . Fanout ) ;
80+ channel . QueueDeclare ( queue : "main_queue" , durable : false , exclusive : false , autoDelete : false , arguments : null ) ;
81+ channel . QueueDeclare ( queue : "fallback_queue" , durable : false , exclusive : false , autoDelete : false , arguments : null ) ;
82+
83+ channel . QueueBind ( "fallback_queue" , "my_alternate_exchange" , null ) ;
84+ channel . QueueBind ( "main_queue" , "my_exchange" , "topic" ) ;
85+ }
86+
87+ using ( var connection = connectionFactory . CreateConnection ( ) )
88+ using ( var channel = connection . CreateModel ( ) )
89+ {
90+ const string message = "hello world!" ;
91+ var messageBody = Encoding . ASCII . GetBytes ( message ) ;
9292 channel . BasicPublish ( exchange : "my_exchange" , routingKey : "other_topic" , mandatory : false , basicProperties : null , body : messageBody ) ;
9393
94- messageBody = Encoding . ASCII . GetBytes ( message ) ;
95- channel . BasicPublish ( exchange : "my_exchange" , routingKey : "topic" , mandatory : false , basicProperties : null , body : messageBody ) ;
96- }
97-
98- Assert . Equal ( 2 , rabbitServer . Exchanges [ "my_exchange" ] . Messages . Count ) ;
99- Assert . Single ( rabbitServer . Exchanges [ "my_alternate_exchange" ] . Messages ) ;
100- Assert . Single ( rabbitServer . Queues [ "fallback_queue" ] . Messages ) ;
101- Assert . Single ( rabbitServer . Queues [ "main_queue" ] . Messages ) ;
102- }
103-
104- private void ConfigureQueueBinding ( RabbitServer rabbitServer , string exchangeName , string queueName )
105- {
106- var connectionFactory = new FakeConnectionFactory ( rabbitServer ) ;
107- using ( var connection = connectionFactory . CreateConnection ( ) )
108- using ( var channel = connection . CreateModel ( ) )
109- {
110- channel . QueueDeclare ( queue : queueName , durable : false , exclusive : false , autoDelete : false , arguments : null ) ;
111- channel . ExchangeDeclare ( exchange : exchangeName , type : ExchangeType . Direct ) ;
112-
113- channel . QueueBind ( queueName , exchangeName , null ) ;
114- }
115- }
116- }
94+ messageBody = Encoding . ASCII . GetBytes ( message ) ;
95+ channel . BasicPublish ( exchange : "my_exchange" , routingKey : "topic" , mandatory : false , basicProperties : null , body : messageBody ) ;
96+ }
97+
98+ Assert . Equal ( 2 , rabbitServer . Exchanges [ "my_exchange" ] . Messages . Count ) ;
99+ Assert . Single ( rabbitServer . Exchanges [ "my_alternate_exchange" ] . Messages ) ;
100+ Assert . Single ( rabbitServer . Queues [ "fallback_queue" ] . Messages ) ;
101+ Assert . Single ( rabbitServer . Queues [ "main_queue" ] . Messages ) ;
102+ }
103+
104+ private static void ConfigureQueueBinding ( RabbitServer rabbitServer , string exchangeName , string queueName )
105+ {
106+ var connectionFactory = new FakeConnectionFactory ( rabbitServer ) ;
107+ using ( var connection = connectionFactory . CreateConnection ( ) )
108+ using ( var channel = connection . CreateModel ( ) )
109+ {
110+ channel . QueueDeclare ( queue : queueName , durable : false , exclusive : false , autoDelete : false , arguments : null ) ;
111+ channel . ExchangeDeclare ( exchange : exchangeName , type : ExchangeType . Direct ) ;
112+
113+ channel . QueueBind ( queueName , exchangeName , null ) ;
114+ }
115+ }
116+ }
117117}
0 commit comments