Skip to content

Commit 01c9d9f

Browse files
Replace MediatR with Mediator (#55)
1 parent ae791ba commit 01c9d9f

File tree

14 files changed

+53
-43
lines changed

14 files changed

+53
-43
lines changed

src-Arius5/Arius.Cli.Tests/ArchiveCliCommandTests.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using Arius.Core.Commands;
22
using Arius.Core.Models;
3-
using MediatR;
3+
using Mediator;
44
using NSubstitute;
55
using Shouldly;
66

@@ -17,14 +17,14 @@ public ArchiveCliCommandTests(CliCommandTestsFixture fixture)
1717
}
1818

1919
[Fact]
20-
public async Task ExecuteAsync_WithAllOptions_SendsCorrectMediatRCommand()
20+
public async Task ExecuteAsync_WithAllOptions_SendsCorrectMediatorCommand()
2121
{
2222
// Arrange: Capture the command sent to IMediator
2323
ArchiveCommand? capturedCommand = null;
2424
var mediatorMock = Substitute.For<IMediator>();
2525
mediatorMock
2626
.Send(Arg.Any<ArchiveCommand>(), Arg.Any<CancellationToken>())
27-
.Returns(Task.FromResult(Unit.Value))
27+
.Returns(new ValueTask<Unit>(Unit.Value))
2828
.AndDoes(callInfo => capturedCommand = callInfo.Arg<ArchiveCommand>());
2929

3030
// Arrange: Set up the CLI arguments
@@ -70,7 +70,7 @@ public async Task ExecuteAsync_NoPath_InContainer_UsesArchiveRoot()
7070
var mediatorMock = Substitute.For<IMediator>();
7171
mediatorMock
7272
.Send(Arg.Any<ArchiveCommand>(), Arg.Any<CancellationToken>())
73-
.Returns(Task.FromResult(Unit.Value))
73+
.Returns(new ValueTask<Unit>(Unit.Value))
7474
.AndDoes(callInfo => capturedCommand = callInfo.Arg<ArchiveCommand>());
7575

7676
Environment.SetEnvironmentVariable("DOTNET_RUNNING_IN_CONTAINER", "true");
@@ -106,7 +106,7 @@ public async Task ExecuteAsync_AccountKeyFromCli_NoEnvironmentVariable_UsesCliAc
106106
var mediatorMock = Substitute.For<IMediator>();
107107
mediatorMock
108108
.Send(Arg.Any<ArchiveCommand>(), Arg.Any<CancellationToken>())
109-
.Returns(Task.FromResult(Unit.Value))
109+
.Returns(new ValueTask<Unit>(Unit.Value))
110110
.AndDoes(callInfo => capturedCommand = callInfo.Arg<ArchiveCommand>());
111111

112112
Environment.SetEnvironmentVariable("ARIUS_ACCOUNT_KEY", null);
@@ -160,7 +160,7 @@ public async Task ExecuteAsync_NoAccountKey_AccountKeyFromEnvironmentVariable_Us
160160
var mediatorMock = Substitute.For<IMediator>();
161161
mediatorMock
162162
.Send(Arg.Any<ArchiveCommand>(), Arg.Any<CancellationToken>())
163-
.Returns(Task.FromResult(Unit.Value))
163+
.Returns(new ValueTask<Unit>(Unit.Value))
164164
.AndDoes(callInfo => capturedCommand = callInfo.Arg<ArchiveCommand>());
165165

166166
Environment.SetEnvironmentVariable("ARIUS_ACCOUNT_KEY", "testkeyenv");
@@ -191,7 +191,7 @@ public async Task ExecuteAsync_AccountKeyFromCli_AccountKeyFromEnvironmentVariab
191191
var mediatorMock = Substitute.For<IMediator>();
192192
mediatorMock
193193
.Send(Arg.Any<ArchiveCommand>(), Arg.Any<CancellationToken>())
194-
.Returns(Task.FromResult(Unit.Value))
194+
.Returns(new ValueTask<Unit>(Unit.Value))
195195
.AndDoes(callInfo => capturedCommand = callInfo.Arg<ArchiveCommand>());
196196

197197
Environment.SetEnvironmentVariable("ARIUS_ACCOUNT_KEY", "testkeyenv");

src-Arius5/Arius.Cli.Tests/CliCommandTestsFixture.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using CliFx.Infrastructure;
2-
using MediatR;
2+
using Mediator;
33
using Microsoft.Extensions.DependencyInjection;
44
using Microsoft.Extensions.DependencyInjection.Extensions;
55

src-Arius5/Arius.Cli.Tests/RestoreCliCommandTests.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using Arius.Core.Commands;
2-
using MediatR;
2+
using Mediator;
33
using NSubstitute;
44
using Shouldly;
55

@@ -16,14 +16,14 @@ public RestoreCliCommandTests(CliCommandTestsFixture fixture)
1616
}
1717

1818
[Fact]
19-
public async Task ExecuteAsync_WithAllOptions_SendsCorrectMediatRCommand()
19+
public async Task ExecuteAsync_WithAllOptions_SendsCorrectMediatorCommand()
2020
{
2121
// Arrange
2222
RestoreCommand? capturedCommand = null;
2323
var mediatorMock = Substitute.For<IMediator>();
2424
mediatorMock
2525
.Send(Arg.Any<RestoreCommand>(), Arg.Any<CancellationToken>())
26-
.Returns(Task.FromResult(Unit.Value))
26+
.Returns(new ValueTask<Unit>(Unit.Value))
2727
.AndDoes(callInfo => capturedCommand = callInfo.Arg<RestoreCommand>());
2828

2929
var tempPath = Path.GetTempPath();
@@ -69,7 +69,7 @@ public async Task ExecuteAsync_NoPath_InContainer_UsesArchiveRoot()
6969
var mediatorMock = Substitute.For<IMediator>();
7070
mediatorMock
7171
.Send(Arg.Any<RestoreCommand>(), Arg.Any<CancellationToken>())
72-
.Returns(Task.FromResult(Unit.Value))
72+
.Returns(new ValueTask<Unit>(Unit.Value))
7373
.AndDoes(callInfo => capturedCommand = callInfo.Arg<RestoreCommand>());
7474

7575
Environment.SetEnvironmentVariable("DOTNET_RUNNING_IN_CONTAINER", "true");
@@ -105,7 +105,7 @@ public async Task ExecuteAsync_AccountKeyFromCli_NoEnvironmentVariable_UsesCliAc
105105
var mediatorMock = Substitute.For<IMediator>();
106106
mediatorMock
107107
.Send(Arg.Any<RestoreCommand>(), Arg.Any<CancellationToken>())
108-
.Returns(Task.FromResult(Unit.Value))
108+
.Returns(new ValueTask<Unit>(Unit.Value))
109109
.AndDoes(callInfo => capturedCommand = callInfo.Arg<RestoreCommand>());
110110

111111
Environment.SetEnvironmentVariable("ARIUS_ACCOUNT_KEY", null);
@@ -159,7 +159,7 @@ public async Task ExecuteAsync_NoAccountKey_AccountKeyFromEnvironmentVariable_Us
159159
var mediatorMock = Substitute.For<IMediator>();
160160
mediatorMock
161161
.Send(Arg.Any<RestoreCommand>(), Arg.Any<CancellationToken>())
162-
.Returns(Task.FromResult(Unit.Value))
162+
.Returns(new ValueTask<Unit>(Unit.Value))
163163
.AndDoes(callInfo => capturedCommand = callInfo.Arg<RestoreCommand>());
164164

165165
Environment.SetEnvironmentVariable("ARIUS_ACCOUNT_KEY", "testkeyenv");
@@ -190,7 +190,7 @@ public async Task ExecuteAsync_AccountKeyFromCli_AccountKeyFromEnvironmentVariab
190190
var mediatorMock = Substitute.For<IMediator>();
191191
mediatorMock
192192
.Send(Arg.Any<RestoreCommand>(), Arg.Any<CancellationToken>())
193-
.Returns(Task.FromResult(Unit.Value))
193+
.Returns(new ValueTask<Unit>(Unit.Value))
194194
.AndDoes(callInfo => capturedCommand = callInfo.Arg<RestoreCommand>());
195195

196196
Environment.SetEnvironmentVariable("ARIUS_ACCOUNT_KEY", "testkeyenv");

src-Arius5/Arius.Cli/Arius.Cli.csproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@
1616
<PackageReference Include="Serilog.Sinks.File" Version="7.0.0" />
1717
<PackageReference Include="Shouldly" Version="4.3.0" />
1818
<PackageReference Include="Spectre.Console" Version="0.50.0" />
19+
<PackageReference Include="Mediator.Abstractions" Version="3.0.1" />
20+
<PackageReference Include="Mediator.SourceGenerator" Version="3.0.1">
21+
<PrivateAssets>all</PrivateAssets>
22+
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
23+
</PackageReference>
1924
</ItemGroup>
2025

2126
<ItemGroup>

src-Arius5/Arius.Cli/CliCommands/ArchiveCliCommand.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
using CliFx;
44
using CliFx.Attributes;
55
using CliFx.Infrastructure;
6-
using MediatR;
6+
using Mediator;
77
using Spectre.Console;
88
using System.Collections.Concurrent;
99

1010
namespace Arius.Cli.CliCommands;
1111

12-
public abstract class ArchiveCliCommandBase : ICommand
12+
public abstract class ArchiveCliCommandBase : CliFx.ICommand
1313
{
1414
private readonly IMediator _mediator;
1515

@@ -62,7 +62,7 @@ await AnsiConsole.Progress()
6262
var queue = new ConcurrentQueue<ProgressUpdate>();
6363
var pu = new Progress<ProgressUpdate>(u => queue.Enqueue(u));
6464

65-
// Create the MediatR command from the CLI arguments
65+
// Create the Mediator command from the CLI arguments
6666
var command = new ArchiveCommand
6767
{
6868
AccountName = AccountName,
@@ -77,7 +77,7 @@ await AnsiConsole.Progress()
7777

7878
// Send the command and start the progress display loop
7979
var cancellationToken = console.RegisterCancellationHandler();
80-
var commandTask = _mediator.Send(command, cancellationToken);
80+
var commandTask = _mediator.Send(command, cancellationToken).AsTask();
8181

8282
var taskDictionary = new ConcurrentDictionary<string, ProgressTask>();
8383

src-Arius5/Arius.Cli/CliCommands/RestoreCliCommand.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
using CliFx;
33
using CliFx.Attributes;
44
using CliFx.Infrastructure;
5-
using MediatR;
5+
using Mediator;
66
using Spectre.Console;
77

88
namespace Arius.Cli.CliCommands;
99

10-
public abstract class RestoreCliCommandBase : ICommand
10+
public abstract class RestoreCliCommandBase : CliFx.ICommand
1111
{
1212
private readonly IMediator mediator;
1313

src-Arius5/Arius.Core.Tests/Commands/ArchiveCommandHandlerErrorTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public async Task Handle_WithInvalidAzureCredentials_ShouldFail()
4747
};
4848

4949
// Act
50-
var act = () => handler.Handle(command, CancellationToken.None);
50+
var act = () => handler.Handle(command, CancellationToken.None).AsTask();
5151

5252
// Assert
5353
var e = await Should.ThrowAsync<FormatException>(act);

src-Arius5/Arius.Core/Arius.Core.csproj

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,12 @@
88

99
<ItemGroup>
1010
<PackageReference Include="Azure.Storage.Blobs" Version="12.25.0" />
11-
<PackageReference Include="Humanizer.Core" Version="2.14.1" />
12-
<PackageReference Include="MediatR" Version="12.5.0" />
11+
<PackageReference Include="Humanizer.Core" Version="2.14.1" />
12+
<PackageReference Include="Mediator.Abstractions" Version="3.0.1" />
13+
<PackageReference Include="Mediator.SourceGenerator" Version="3.0.1">
14+
<PrivateAssets>all</PrivateAssets>
15+
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
16+
</PackageReference>
1317
<PackageReference Include="Microsoft.Extensions.Options.DataAnnotations" Version="9.0.8" />
1418
<PackageReference Include="System.Linq.Async" Version="6.0.3" />
1519
<PackageReference Include="Zio" Version="0.21.0" />

src-Arius5/Arius.Core/Bootstrapper.cs

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Microsoft.Extensions.DependencyInjection;
22
using System.ComponentModel.DataAnnotations;
3+
using Mediator;
34

45
namespace Arius.Core;
56

@@ -26,15 +27,8 @@ public static IServiceCollection AddArius(this IServiceCollection services, Acti
2627
// Add FluentValidation validators
2728
//services.AddValidatorsFromAssembly(Assembly.GetExecutingAssembly()); // zie https://www.milanjovanovic.tech/blog/cqrs-validation-with-mediatr-pipeline-and-fluentvalidation#running-validation-from-the-use-case
2829

29-
// Add MediatR
30-
services.AddMediatR(config =>
31-
{
32-
// Add Handlers
33-
config.RegisterServicesFromAssemblies(AppDomain.CurrentDomain.GetAssemblies());
34-
35-
// Add pipeline validation behavior
36-
//config.AddOpenBehavior(typeof(ValidationBehavior<,>));
37-
});
30+
// Add Mediator
31+
services.AddMediator();
3832

3933
//services.AddSingleton<IStorageAccountFactory, AzureStorageAccountFactory>();
4034
//services.AddSingleton<AzureContainerFactory>();

src-Arius5/Arius.Core/Commands/ArchiveCommand.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
using Arius.Core.Models;
2-
using MediatR;
2+
using Mediator;
33

44
namespace Arius.Core.Commands;
55

6-
public record ArchiveCommand : IRequest
6+
public record ArchiveCommand : ICommand
77
{
88
public required string AccountName { get; init; }
99
public required string AccountKey { get; init; }

0 commit comments

Comments
 (0)