Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -276,11 +276,20 @@ Will result in the following snapshot file.
},
ElementId: Guid_3
}
],
Created: [
{
Saga: {
CorrelationId: Guid_3,
StartMessageReceived: true
},
ElementId: Guid_3
}
]
}
}
```
<sup><a href='/src/Tests/SagaTests.Run.verified.txt#L1-L46' title='Snippet source file'>snippet source</a> | <a href='#snippet-SagaTests.Run.verified.txt' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Tests/SagaTests.Run.verified.txt#L1-L55' title='Snippet source file'>snippet source</a> | <a href='#snippet-SagaTests.Run.verified.txt' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->


Expand Down
4 changes: 2 additions & 2 deletions src/Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

<Project>
<PropertyGroup>
<Version>2.2.0</Version>
<Version>2.3.0</Version>
<AssemblyVersion>1.0.0</AssemblyVersion>
<LangVersion>preview</LangVersion>
<PackageTags>MassTransit, Verify</PackageTags>
Expand All @@ -13,4 +13,4 @@
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
<SuppressNETCoreSdkPreviewMessage>true</SuppressNETCoreSdkPreviewMessage>
</PropertyGroup>
</Project>
</Project>
2 changes: 1 addition & 1 deletion src/Tests/ConsumerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -89,4 +89,4 @@ public Task Consume(ConsumeContext<SubmitOrder> context) =>
OrderId = context.Message.OrderId
});
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
Consumed: [],
Sagas: [],
Created: []
}
20 changes: 20 additions & 0 deletions src/Tests/EmptySagaStateMachineTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
namespace Tests;

public class EmptySagaStateMachineTests
{
[Fact]
public async Task EmptyEventsAndStateChangesAreOmitted()
{
await using var provider = new ServiceCollection()
.AddMassTransitTestHarness(_ =>
_.AddSagaStateMachine<SagaStateMachineTests.ConsumerStateMachine, SagaStateMachineTests.ConsumerSaga>())
.BuildServiceProvider(true);
var harness = provider.GetRequiredService<ITestHarness>();
var sagaHarness = harness.GetSagaStateMachineHarness<SagaStateMachineTests.ConsumerStateMachine, SagaStateMachineTests.ConsumerSaga>();

await harness.Start();

await Verify(sagaHarness)
.IgnoreMember("StateMachine");
}
}
23 changes: 23 additions & 0 deletions src/Tests/SagaStateMachineTests.Run.verified.txt
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,29 @@
ElementId: Guid_3
}
],
Events: [
{
Event: StartEvent,
CorrelationId: Guid_3,
MessageType: SagaStateMachineTests.Start,
Message: {
CorrelationId: Guid_3
}
}
],
StateChanges: [
{
Event: StartEvent,
CorrelationId: Guid_3,
CurrentState: Initial
},
{
Event: StartEvent,
CorrelationId: Guid_3,
PreviousState: Initial,
CurrentState: Final
}
],
StateMachine: {
StartEvent: {
Name: StartEvent
Expand Down
9 changes: 9 additions & 0 deletions src/Tests/SagaTests.Run.verified.txt
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,15 @@
},
ElementId: Guid_3
}
],
Created: [
{
Saga: {
CorrelationId: Guid_3,
StartMessageReceived: true
},
ElementId: Guid_3
}
]
}
}
2 changes: 1 addition & 1 deletion src/Tests/SagaTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,4 @@ public class Start : CorrelatedBy<Guid>
public Guid CorrelationId { get; init; }
}
#endregion
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using MassTransit;

class MessageContextConverter :
class MessageContextConverter :
WriteOnlyJsonConverter<MessageContext>
{
public override void Write(VerifyJsonWriter writer, MessageContext context)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using MassTransit;

class ReceiveContextConverter :
class ReceiveContextConverter :
WriteOnlyJsonConverter<ReceiveContext>
{
public override void Write(VerifyJsonWriter writer, ReceiveContext context)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using MassTransit;

class SendContextConverter :
class SendContextConverter :
WriteOnlyJsonConverter<SendContext>
{
public override void Write(VerifyJsonWriter writer, SendContext context)
Expand Down
6 changes: 2 additions & 4 deletions src/Verify.MassTransit/ConverterHelpers.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using MassTransit;

static class ConverterHelpers
static class ConverterHelpers
{
public static void WriteHeaders(this VerifyJsonWriter writer, object context, Headers headers)
{
Expand All @@ -22,4 +20,4 @@ public static void WriteHeaders(this VerifyJsonWriter writer, object context, He
path = path.TrimStart('/');
return path;
}
}
}
2 changes: 2 additions & 0 deletions src/Verify.MassTransit/GlobalUsings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
global using MassTransit;
global using MassTransit.Testing;
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using MassTransit.Testing;

class PublishedMessageConverter :
class PublishedMessageConverter :
WriteOnlyJsonConverter<IPublishedMessage>
{
public override void Write(VerifyJsonWriter writer, IPublishedMessage message)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using MassTransit.Testing;

class PublishedMessageListConverter :
class PublishedMessageListConverter :
WriteOnlyJsonConverter<IPublishedMessageList>
{
public override void Write(VerifyJsonWriter writer, IPublishedMessageList messages)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using MassTransit.Testing;

class ReceivedMessageConverter :
class ReceivedMessageConverter :
WriteOnlyJsonConverter<IReceivedMessage>
{
public override void Write(VerifyJsonWriter writer, IReceivedMessage message)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using MassTransit.Testing;

class ReceivedMessageListConverter :
class ReceivedMessageListConverter :
WriteOnlyJsonConverter<IReceivedMessageList>
{
public override void Write(VerifyJsonWriter writer, IReceivedMessageList messages)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using MassTransit.Testing;

class SentMessageConverter :
class SentMessageConverter :
WriteOnlyJsonConverter<ISentMessage>
{
public override void Write(VerifyJsonWriter writer, ISentMessage message)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using MassTransit.Testing;

class SentMessageListConverter :
class SentMessageListConverter :
WriteOnlyJsonConverter<ISentMessageList>
{
public override void Write(VerifyJsonWriter writer, ISentMessageList messages)
Expand Down
13 changes: 13 additions & 0 deletions src/Verify.MassTransit/SagaConverters/ReceivedEventConverter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
class ReceivedEventConverter :
WriteOnlyJsonConverter<IReceivedEvent>
{
public override void Write(VerifyJsonWriter writer, IReceivedEvent received)
{
writer.WriteStartObject();
writer.WriteMember(received, received.Event.Name, "Event");
writer.WriteMember(received, received.CorrelationId, "CorrelationId");
writer.WriteMember(received, received.MessageType, "MessageType");
writer.WriteMember(received, received.MessageObject, "Message");
writer.WriteEndObject();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
class ReceivedEventListConverter :
WriteOnlyJsonConverter<IReceivedEventList>
{
public override void Write(VerifyJsonWriter writer, IReceivedEventList events)
{
writer.WriteStartArray();
foreach (var received in events.Select(_ => true))
{
writer.Serialize(received);
}

writer.WriteEndArray();
}
}
4 changes: 1 addition & 3 deletions src/Verify.MassTransit/SagaConverters/SagaListConverter.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using MassTransit;
using MassTransit.Testing;
using MassTransit.Testing.Implementations;
using MassTransit.Testing.Implementations;

class SagaListConverter :
WriteOnlyJsonConverter
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
class SagaStateMachineTestHarnessConverter :
WriteOnlyJsonConverter
{
public override void Write(VerifyJsonWriter writer, object harness)
{
var type = harness.GetType();
writer.WriteStartObject();
WriteMember(writer, harness, type, "Consumed");
WriteMember(writer, harness, type, "Sagas");
WriteMember(writer, harness, type, "Created");

var events = (IReceivedEventList) Value(harness, type, "Events")!;
if (events.Select(_ => true).Any())
{
writer.WriteMember(harness, events, "Events");
}

var stateChanges = (IStateChangeList) Value(harness, type, "StateChanges")!;
if (stateChanges.Select(_ => true).Any())
{
writer.WriteMember(harness, stateChanges, "StateChanges");
}

WriteMember(writer, harness, type, "StateMachine");
writer.WriteEndObject();
}

static void WriteMember(VerifyJsonWriter writer, object harness, Type type, string name) =>
writer.WriteMember(harness, Value(harness, type, name), name);

static object? Value(object harness, Type type, string name) =>
type.GetProperty(name)!.GetValue(harness);

public override bool CanConvert(Type type) =>
type.GetInterfaces()
.Any(_ => _.IsGenericType &&
_.GetGenericTypeDefinition() == typeof(ISagaStateMachineTestHarness<,>));
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
using MassTransit;
using MassTransit.Testing;

class SagaTestHarnessConverter :
class SagaTestHarnessConverter :
WriteOnlyJsonConverter
{
static MethodInfo innerWriteDef;
Expand All @@ -24,6 +21,7 @@ static void InnerWrite<T>(VerifyJsonWriter writer, SagaTestHarness<T> harness)
{
writer.WriteMember(harness, harness.Consumed, "Consumed");
writer.WriteMember(harness, harness.Sagas, "Sagas");
writer.WriteMember(harness, harness.Created, "Created");
}

public override bool CanConvert(Type type) =>
Expand Down
13 changes: 13 additions & 0 deletions src/Verify.MassTransit/SagaConverters/StateChangeConverter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
class StateChangeConverter :
WriteOnlyJsonConverter<IStateChange>
{
public override void Write(VerifyJsonWriter writer, IStateChange change)
{
writer.WriteStartObject();
writer.WriteMember(change, change.Event?.Name, "Event");
writer.WriteMember(change, change.CorrelationId, "CorrelationId");
writer.WriteMember(change, change.PreviousState?.Name, "PreviousState");
writer.WriteMember(change, change.CurrentState?.Name, "CurrentState");
writer.WriteEndObject();
}
}
14 changes: 14 additions & 0 deletions src/Verify.MassTransit/SagaConverters/StateChangeListConverter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
class StateChangeListConverter :
WriteOnlyJsonConverter<IStateChangeList>
{
public override void Write(VerifyJsonWriter writer, IStateChangeList changes)
{
writer.WriteStartArray();
foreach (var change in changes.Select(_ => true))
{
writer.Serialize(change);
}

writer.WriteEndArray();
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using MassTransit.Testing;

class ConsumerTestHarnessConverter :
class ConsumerTestHarnessConverter :
WriteOnlyJsonConverter
{
public override void Write(VerifyJsonWriter writer, object harness)
Expand All @@ -13,4 +11,4 @@ public override void Write(VerifyJsonWriter writer, object harness)

public override bool CanConvert(Type type) =>
type.CanConvertToGeneric(typeof(ConsumerTestHarness<>));
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using MassTransit.Testing;

class TestHarnessConverter :
class TestHarnessConverter :
WriteOnlyJsonConverter<IBaseTestHarness>
{
public override void Write(VerifyJsonWriter writer, IBaseTestHarness harness)
Expand Down
5 changes: 5 additions & 0 deletions src/Verify.MassTransit/VerifyMassTransit.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,13 @@ public static void Initialize()
converters.Add(new SentMessageListConverter());
converters.Add(new PublishedMessageConverter());
converters.Add(new PublishedMessageListConverter());
converters.Add(new SagaStateMachineTestHarnessConverter());
converters.Add(new SagaTestHarnessConverter());
converters.Add(new SagaListConverter());
converters.Add(new ReceivedEventConverter());
converters.Add(new ReceivedEventListConverter());
converters.Add(new StateChangeConverter());
converters.Add(new StateChangeListConverter());
converters.Add(new MessageContextConverter());
converters.Add(new SendContextConverter());
converters.Add(new ReceiveContextConverter());
Expand Down
Loading