forked from EcovadisCode/Ev.ServiceBus
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathServiceBusClientMock.cs
More file actions
90 lines (81 loc) · 3.97 KB
/
ServiceBusClientMock.cs
File metadata and controls
90 lines (81 loc) · 3.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
using System.Collections.Generic;
using System.Linq;
using Azure.Messaging.ServiceBus;
using Ev.ServiceBus.Abstractions.Configuration;
using Moq;
namespace Ev.ServiceBus.TestHelpers;
public class ServiceBusClientMock
{
private readonly List<SenderMock> _registeredSenders;
private readonly List<ProcessorMock> _registeredReceivers;
private readonly List<SessionProcessorMock> _registeredSessionReceivers;
public ServiceBusClientMock(ConnectionSettings connectionSettings)
{
ConnectionSettings = connectionSettings;
_registeredSenders = new List<SenderMock>();
_registeredReceivers = new List<ProcessorMock>();
_registeredSessionReceivers = new List<SessionProcessorMock>();
Mock = new Mock<ServiceBusClient>();
EndPoint = connectionSettings.Endpoint;
Mock.Setup(o => o.CreateSender(It.IsAny<string>())).Returns<string>((queueOrTopicName) =>
{
var senderMock = new SenderMock(queueOrTopicName);
_registeredSenders.Add(senderMock);
return senderMock.Mock.Object;
});
Mock.Setup(o => o.CreateProcessor(It.IsAny<string>(), It.IsAny<ServiceBusProcessorOptions>()))
.Returns<string, ServiceBusProcessorOptions>((queueName, options) =>
{
var mock = new ProcessorMock(queueName, options);
_registeredReceivers.Add(mock);
return mock;
});
Mock.Setup(o => o.CreateProcessor(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<ServiceBusProcessorOptions>()))
.Returns<string, string, ServiceBusProcessorOptions>((topicName, subscriptionName, options) =>
{
var mock = new ProcessorMock(topicName, subscriptionName, options);
_registeredReceivers.Add(mock);
return mock;
});
Mock.Setup(o => o.CreateSessionProcessor(It.IsAny<string>(), It.IsAny<ServiceBusSessionProcessorOptions>()))
.Returns<string, ServiceBusSessionProcessorOptions>((queueName, options) =>
{
var mock = new SessionProcessorMock(queueName, options);
_registeredSessionReceivers.Add(mock);
return mock;
});
Mock.Setup(o => o.CreateSessionProcessor(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<ServiceBusSessionProcessorOptions>()))
.Returns<string, string, ServiceBusSessionProcessorOptions>((topicName, subscriptionName, options) =>
{
var mock = new SessionProcessorMock(topicName, subscriptionName, options);
_registeredSessionReceivers.Add(mock);
return mock;
});
}
public string EndPoint { get; }
public Mock<ServiceBusClient> Mock { get; }
public ConnectionSettings ConnectionSettings { get; }
public IReadOnlyList<SenderMock> Senders => _registeredSenders;
public IReadOnlyList<ProcessorMock> Processors => _registeredReceivers;
public IReadOnlyList<SessionProcessorMock> SessionProcessors => _registeredSessionReceivers;
public SenderMock GetSenderMock(string resourceId)
{
return _registeredSenders.FirstOrDefault(o => o.QueueOrTopicName == resourceId);
}
public ProcessorMock GetProcessorMock(string queueName)
{
return _registeredReceivers.FirstOrDefault(o => o.ResourceId == queueName);
}
public ProcessorMock GetProcessorMock(string topicName, string subscriptionName)
{
return _registeredReceivers.FirstOrDefault(o => o.ResourceId == $"{topicName}/Subscriptions/{subscriptionName}");
}
public SessionProcessorMock GetSessionProcessorMock(string queueName)
{
return _registeredSessionReceivers.FirstOrDefault(o => o.ResourceId == queueName);
}
public SessionProcessorMock GetSessionProcessorMock(string topicName, string subscriptionName)
{
return _registeredSessionReceivers.FirstOrDefault(o => o.ResourceId == $"{topicName}/Subscriptions/{subscriptionName}");
}
}