Skip to content

Commit

Permalink
Better test
Browse files Browse the repository at this point in the history
  • Loading branch information
mikeminutillo committed Oct 23, 2024
1 parent f908fc8 commit 633381b
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 55 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
namespace NServiceBus.AcceptanceTests.Core.Conventions;

using System;
using System.Threading.Tasks;
using AcceptanceTesting;
using EndpointTemplates;
using NServiceBus.AcceptanceTesting.Customization;
using NUnit.Framework;

public class When_scanning_an_assembly_containing_a_ref_struct_and_sagas_enabled : NServiceBusAcceptanceTest
{
[Test]
public void It_should_not_throw_an_exception()
=> Assert.DoesNotThrowAsync(
() => Scenario.Define<ScenarioContext>()
.WithEndpoint<EndpointWithASaga>()
.Run()
);

public class SomeMessage : IMessage
{
public Guid BusinessId { get; set; }
}

// HINT: This will get picked up by the AssemblyRouteSource created by the routing call below
// Even though it is not a message type, it is still checked by passing it to conventions.
// The conventions added by Sagas were throwing an exception when passed a ref struct.
// See https://github.com/Particular/NServiceBus/issues/7179 for details.
ref struct RefStruct { }

class EndpointWithASaga : EndpointConfigurationBuilder
{
public EndpointWithASaga() => EndpointSetup<DefaultServer>(cfg => cfg
.ConfigureRouting()
.RouteToEndpoint(
typeof(RefStruct).Assembly,
Conventions.EndpointNamingConvention(typeof(EndpointWithASaga))
)
);


class RealSagaToSetUpConventions : Saga<RealSagaToSetUpConventions.RealSagaToSetUpConventionsSagaData>, IAmStartedByMessages<SomeMessage>
{
public Task Handle(SomeMessage message, IMessageHandlerContext context) => Task.CompletedTask;
protected override void ConfigureHowToFindSaga(SagaPropertyMapper<RealSagaToSetUpConventionsSagaData> mapper)
=> mapper.MapSaga(saga => saga.BusinessId).ToMessage<SomeMessage>(msg => msg.BusinessId);

public class RealSagaToSetUpConventionsSagaData : ContainSagaData
{
public virtual Guid BusinessId { get; set; }
}
}
}
}

0 comments on commit 633381b

Please sign in to comment.