Skip to content

Commit 394c5ed

Browse files
committed
Test new way of capturing the service provider
1 parent 084f8ff commit 394c5ed

File tree

6 files changed

+45
-23
lines changed

6 files changed

+45
-23
lines changed

src/NServiceBus.Storage.MongoDB.TransactionalSession.AcceptanceTests/Infrastructure/CaptureServiceProviderStartupTask.cs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,11 @@
33
using System;
44
using System.Threading;
55
using System.Threading.Tasks;
6-
using NServiceBus.AcceptanceTesting;
7-
using NServiceBus.Features;
6+
using Features;
87

98
public class CaptureServiceProviderStartupTask : FeatureStartupTask
109
{
11-
public CaptureServiceProviderStartupTask(IServiceProvider serviceProvider, ScenarioContext context)
12-
{
13-
if (context is IInjectServiceProvider c)
14-
{
15-
c.ServiceProvider = serviceProvider;
16-
}
17-
}
10+
public CaptureServiceProviderStartupTask(IServiceProvider serviceProvider, TransactionalSessionTestContext context) => context.RegisterServiceProvider(serviceProvider);
1811

1912
protected override Task OnStart(IMessageSession session, CancellationToken cancellationToken = default) => Task.CompletedTask;
2013

src/NServiceBus.Storage.MongoDB.TransactionalSession.AcceptanceTests/Infrastructure/DefaultServer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ public virtual async Task<EndpointConfiguration> GetConfiguration(RunDescriptor
3535

3636
endpointConfiguration.GetSettings().Set(persistence);
3737

38-
if (!typeof(IDoNotCaptureServiceProvider).IsAssignableFrom(endpointCustomizations.BuilderType))
38+
if (runDescriptor.ScenarioContext is TransactionalSessionTestContext testContext)
3939
{
40-
endpointConfiguration.RegisterStartupTask(sp => new CaptureServiceProviderStartupTask(sp, runDescriptor.ScenarioContext));
40+
endpointConfiguration.RegisterStartupTask(sp => new CaptureServiceProviderStartupTask(sp, testContext));
4141
}
4242

4343
await configurationBuilderCustomization(endpointConfiguration).ConfigureAwait(false);

src/NServiceBus.Storage.MongoDB.TransactionalSession.AcceptanceTests/Infrastructure/IDoNotCaptureServiceProvider.cs

Lines changed: 0 additions & 5 deletions
This file was deleted.
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
namespace NServiceBus.TransactionalSession.AcceptanceTests;
2+
3+
using System;
4+
using System.Collections.Concurrent;
5+
using AcceptanceTesting;
6+
7+
public class TransactionalSessionTestContext : ScenarioContext
8+
{
9+
public IServiceProvider ServiceProvider
10+
{
11+
get
12+
{
13+
var endpointName = GetCurrentEndpoint();
14+
15+
if (!serviceProviders.TryGetValue(endpointName, out var serviceProvider))
16+
{
17+
throw new InvalidOperationException("Could not find service provider for endpoint " + endpointName);
18+
}
19+
20+
return serviceProvider;
21+
}
22+
}
23+
24+
public void RegisterServiceProvider(IServiceProvider serviceProvider)
25+
{
26+
var endpointName = GetCurrentEndpoint();
27+
28+
serviceProviders[endpointName] = serviceProvider;
29+
}
30+
31+
string GetCurrentEndpoint()
32+
{
33+
var endpointName = GetType().GetProperty("CurrentEndpoint")!.GetValue(this, null) as string;
34+
35+
return endpointName;
36+
}
37+
38+
readonly ConcurrentDictionary<string, IServiceProvider> serviceProviders = new();
39+
}

src/NServiceBus.Storage.MongoDB.TransactionalSession.AcceptanceTests/When_using_outbox_send_only.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,9 @@ public async Task Should_send_messages_on_transactional_session_commit()
3737
Assert.That(context.MessageReceived, Is.True);
3838
}
3939

40-
class Context : ScenarioContext, IInjectServiceProvider
40+
class Context : TransactionalSessionTestContext
4141
{
4242
public bool MessageReceived { get; set; }
43-
44-
public IServiceProvider ServiceProvider { get; set; }
4543
}
4644

4745
class SendOnlyEndpoint : EndpointConfigurationBuilder

src/NServiceBus.Storage.MongoDB.TransactionalSession.AcceptanceTests/When_using_transactional_session.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
namespace NServiceBus.TransactionalSession.AcceptanceTests
22
{
3-
using System;
4-
using System.Threading;
53
using System.Threading.Tasks;
64
using AcceptanceTesting;
75
using Microsoft.Extensions.DependencyInjection;
@@ -166,12 +164,11 @@ await mongoSession.Client.GetDatabase(SetupFixture.DatabaseName)
166164
Assert.That(documents.ToList().Count, Is.EqualTo(1));
167165
}
168166

169-
class Context : ScenarioContext, IInjectServiceProvider
167+
class Context : TransactionalSessionTestContext
170168
{
171169
public bool MessageReceived { get; set; }
172170
public bool CompleteMessageReceived { get; set; }
173171
public string SessionId { get; set; }
174-
public IServiceProvider ServiceProvider { get; set; }
175172
}
176173

177174
class AnEndpoint : EndpointConfigurationBuilder

0 commit comments

Comments
 (0)