Fluent Provider #11

Merged
alexenko merged 5 commits from Fluents into main 2023-11-30 17:04:50 +01:00
7 changed files with 27 additions and 14 deletions
Showing only changes of commit 271ad08ca0 - Show all commits

View file

@ -0,0 +1,20 @@
using System.Collections.Immutable;
namespace ProSol.Messaging;
public sealed class DataSubscriber<TMessage> : ISubscriber<TMessage>
{
private readonly List<TMessage> messages = [];
public ImmutableArray<TMessage> Messages => [..messages];
public void OnCompleted()
{
messages.Clear();
}
public void OnNext(TMessage message)
{
messages.Add(message);
}
}

View file

@ -14,7 +14,7 @@ public abstract class TranslatorBase<TSource, TDest>
var dest = ConvertMessage(message);
if (dest != null && destSubscriber != null)
{
PublishHelper.Publish(message, destSubscriber);
PublishHelper.Publish(dest, destSubscriber);
}
else
{

View file

@ -1,2 +1 @@
global using NUnit.Framework;
global using FakeItEasy;
global using NUnit.Framework;

View file

@ -10,7 +10,6 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="FakeItEasy" Version="8.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.0" />
<PackageReference Include="NUnit" Version="3.13.3" />
<PackageReference Include="NUnit3TestAdapter" Version="4.2.1" />
@ -18,8 +17,8 @@
<PackageReference Include="coverlet.collector" Version="6.0.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Subscriptions\Subscriptions.csproj" />
<ItemGroup>
<ProjectReference Include="..\..\src\Subscriptions\Subscriptions.csproj" />
</ItemGroup>
</Project>

View file

@ -1,4 +1,3 @@
using FakeItEasy;
using ProSol.Messaging;
using ProSol.Messaging.Translating;
@ -12,18 +11,15 @@ public class MessageTranslatorTests
// Arrange configs.
string[] input = ["Hello", "World!"];
bool[] expected = [false, true];
List<bool> messages = [];
// Arrange operations.
var fakeListener = A.Fake<ISubscriber<bool>>();
A.CallTo(() => fakeListener.OnNext(A<bool>._))
.Invokes((bool i) => messages.Add(i));
var dataSubscriber = new DataSubscriber<bool>();
var publisher = new TestPublisher<string>();
using var unsub = publisher
.Translate<string, int>(x => x.Length)
.Translate<int, bool>(x => x > 5)
.Subscribe(fakeListener);
.Subscribe(dataSubscriber);
alexenko marked this conversation as resolved
Review

cool

cool
// Act.
foreach(var item in input)
@ -32,7 +28,7 @@ public class MessageTranslatorTests
}
// Assert.
Assert.That(messages, Is.EquivalentTo(expected));
Assert.That(dataSubscriber.Messages, Is.EquivalentTo(expected));
}
public class TestPublisher<TData> : IPublisher<TData>

View file

@ -10,7 +10,6 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="FakeItEasy" Version="8.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.0" />
<PackageReference Include="NUnit" Version="3.13.3" />
<PackageReference Include="NUnit3TestAdapter" Version="4.2.1" />