public async Task RunAsync_should_throw_if_saga_cannot_handle_message() { var message = UnhandledMessage.New(); var messageContext = NSubstitute.Substitute.For <IMessageContext <UnhandledMessage> >(); messageContext.Message.Returns(message); var sagaStateService = NSubstitute.Substitute.For <ISagaStateService <DummySaga, DummySagaState> >(); var state = new DummySagaState(message.CorrelationId); sagaStateService.GetAsync(messageContext, Arg.Any <CancellationToken>()) .Returns((state, Guid.NewGuid())); var saga = NSubstitute.Substitute.ForPartsOf <DummySaga>(state); var sagaFactory = NSubstitute.Substitute.For <ISagaFactory <DummySaga, DummySagaState> >(); sagaFactory.Create(state) .Returns(saga); var logger = NSubstitute.Substitute.For <ILogger <SagaRunner <DummySaga, DummySagaState> > >(); var transactionManager = NSubstitute.Substitute.For <ITransactionManager>(); var policyFactory = NSubstitute.Substitute.For <ISagaPolicyFactory <DummySaga> >(); var sut = new SagaRunner <DummySaga, DummySagaState>(sagaFactory, sagaStateService, transactionManager, policyFactory, logger); await Assert.ThrowsAsync <ConsumerNotFoundException>(() => sut.RunAsync(messageContext, CancellationToken.None)); }
public void Create_should_return_null_when_message_has_wrong_type() { var state = new DummySagaState(Guid.NewGuid()); var message = UnhandledMessage.New(); Func <StartDummySaga, DummySagaState> factory = (msg) => state; var sut = new LambdaSagaStateFactory <StartDummySaga, DummySagaState>(factory); var result = sut.Create(message); result.Should().BeNull(); }