elsa-core/test/integration/Elsa.ServiceBusIntegrationTests/Helpers/ServiceBusProcessorManager.cs
jdevillard fb68814974
Service Bus Activities enhancements - Workflow Inbox and Test (#4512)
* Add Service Bus Message Test Scenario

* change filename

* add workflow test

* save new unit test project (don't know why Guid have changed

* use WorkfloInbox Message for ReceiveActivity and Worker

* add test

* add correlationId

* add test with correlationId

* saving sln

* Fix project references

* remove Moq librairies for UnitTests Projects

* remove Moq and use NSubstitute

---------

Co-authored-by: Jérémie DEVILLARD <jdevillard@users.noreply.github.com>
Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
2023-10-19 20:00:43 +02:00

50 lines
2.1 KiB
C#

using Azure.Messaging.ServiceBus;
using Elsa.ServiceBusIntegrationTests.Contracts;
using NSubstitute;
using Xunit.Abstractions;
namespace Elsa.ServiceBusIntegrationTests.Helpers
{
public class ServiceBusProcessorManager : IServiceBusProcessorManager
{
private readonly ServiceBusClient _serviceBusClient;
private readonly ITestOutputHelper _testOutputHelper;
private readonly IDictionary<(string topicName, string subscriptionName), ServiceBusProcessorTest> _serviceBusProcessors
= new Dictionary<(string topicName, string subscriptionName), ServiceBusProcessorTest>();
public ServiceBusProcessorManager(ServiceBusClient serviceBusClient, ITestOutputHelper testOutputHelper)
{
_serviceBusClient = serviceBusClient;
_testOutputHelper = testOutputHelper;
}
public ServiceBusProcessorTest Init(string topic ,string subscription)
{
_serviceBusProcessors.TryGetValue((topic, subscription), out var processor);
if (processor != null)
throw new ArgumentException($"ServiceBusProcessor with topic:{topic}, subscription:{subscription} already initialized");
processor = new ServiceBusProcessorTest(_testOutputHelper);
_serviceBusClient
.CreateProcessor(Arg.Is<string>(s => s == topic),
Arg.Any<string>(),
Arg.Any<ServiceBusProcessorOptions>()
)
.Returns((c)=> {
_testOutputHelper.WriteLine("ServiceBusClient");
return processor;
});
_serviceBusProcessors.Add((topic,subscription), processor);
return processor;
}
public ServiceBusProcessorTest Get(string topic, string subscription)
{
_serviceBusProcessors.TryGetValue((topic, subscription), out var processor);
if (processor == null)
throw new ArgumentException($"ServiceBusProcessor with topic:{topic}, subscription:{subscription} not exist");
return processor;
}
}
}