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();
        }
        public void Create_should_execute_factory()
        {
            var expectedState   = new DummySagaState(Guid.NewGuid());
            var expectedMessage = StartDummySaga.New();

            Func <StartDummySaga, DummySagaState> factory = (msg) =>
            {
                msg.Should().Be(expectedMessage);
                return(expectedState);
            };
            var sut    = new LambdaSagaStateFactory <StartDummySaga, DummySagaState>(factory);
            var result = sut.Create(expectedMessage);

            result.Should().Be(expectedState);
        }
        public void Resolve_should_not_return_sagas()
        {
            var state = new DummySagaState(Guid.NewGuid());

            var expectedHandler = NSubstitute.Substitute.For <IHandleMessage <StartDummySaga> >();
            var messageHandlers = new[]
            {
                expectedHandler,
                NSubstitute.Substitute.ForPartsOf <DummySaga>(state),
            };

            var sp = NSubstitute.Substitute.For <IServiceProvider>();

            sp.GetService(typeof(IEnumerable <IHandleMessage <StartDummySaga> >))
            .Returns(messageHandlers);

            var sut      = new DefaultMessageHandlersResolver(sp);
            var handlers = sut.Resolve <StartDummySaga>();

            handlers.Should().NotBeNullOrEmpty()
            .And.HaveCount(1)
            .And.Contain(expectedHandler);
        }