Пример #1
0
        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();
        }