Skip to content

Commit

Permalink
added test to ensure that open handlers are resolved when the handler…
Browse files Browse the repository at this point in the history
… for the request does not have a defined closed implementation / registration.
  • Loading branch information
zachpainter77 committed Jul 8, 2024
1 parent d40d0f4 commit f645b68
Showing 1 changed file with 26 additions and 4 deletions.
30 changes: 26 additions & 4 deletions test/MediatR.Tests/SendTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -105,14 +105,18 @@ public Task Handle(VoidGenericPing<T> request, CancellationToken cancellationTok
}
}

public class PongExtension : Pong
{

}

public class TestClass1PingRequestHandler : IRequestHandler<VoidGenericPing<Pong>>
public class TestClass1PingRequestHandler : IRequestHandler<VoidGenericPing<PongExtension>>
{
private readonly Dependency _dependency;

public TestClass1PingRequestHandler(Dependency dependency) => _dependency = dependency;

public Task Handle(VoidGenericPing<Pong> request, CancellationToken cancellationToken)
public Task Handle(VoidGenericPing<PongExtension> request, CancellationToken cancellationToken)
{
_dependency.CalledSpecific = true;
return Task.CompletedTask;
Expand Down Expand Up @@ -246,14 +250,32 @@ public async Task Should_resolve_closed_handler_if_defined()
var services = new ServiceCollection();
services.AddSingleton(dependency);
services.AddMediatR(cfg => cfg.RegisterServicesFromAssemblies(Assembly.GetExecutingAssembly()));
services.AddTransient<IRequestHandler<VoidGenericPing<Pong>>,TestClass1PingRequestHandler>();
services.AddTransient<IRequestHandler<VoidGenericPing<PongExtension>>,TestClass1PingRequestHandler>();
var serviceProvider = services.BuildServiceProvider();
var mediator = serviceProvider.GetService<IMediator>()!;

var request = new VoidGenericPing<Pong>();
var request = new VoidGenericPing<PongExtension>();
await mediator.Send(request);

dependency.Called.ShouldBeFalse();
dependency.CalledSpecific.ShouldBeTrue();
}

[Fact]
public async Task Should_resolve_open_handler_if_not_defined()
{
var dependency = new Dependency();
var services = new ServiceCollection();
services.AddSingleton(dependency);
services.AddMediatR(cfg => cfg.RegisterServicesFromAssemblies(Assembly.GetExecutingAssembly()));
services.AddTransient<IRequestHandler<VoidGenericPing<PongExtension>>, TestClass1PingRequestHandler>();
var serviceProvider = services.BuildServiceProvider();
var mediator = serviceProvider.GetService<IMediator>()!;

var request = new VoidGenericPing<Pong>();
await mediator.Send(request);

dependency.Called.ShouldBeTrue();
dependency.CalledSpecific.ShouldBeFalse();
}
}

0 comments on commit f645b68

Please sign in to comment.