public void use_matching_storage_to_build_the_repository()
        {
            var types = new SagaTypes
            {
                MessageType = GetType(),
                StateType   = typeof(MySagaState)
            };

            var storage1 = MockRepository.GenerateMock <ISagaStorage>();
            var storage2 = MockRepository.GenerateMock <ISagaStorage>();
            var storage3 = MockRepository.GenerateMock <ISagaStorage>();

            var settings = new TransportSettings();

            settings.SagaStorageProviders.Add(storage1);
            settings.SagaStorageProviders.Add(storage2);
            settings.SagaStorageProviders.Add(storage3);

            var def = new ObjectDef();

            storage3.Stub(x => x.RepositoryFor(types))
            .Return(def);

            StatefulSagaConvention.DetermineSagaRepositoryDef(settings, types)
            .ShouldBeTheSameAs(def);
        }
 public void unable_to_determine_a_saga_repository_blows_up()
 {
     Exception <SagaRepositoryUnresolvableException> .ShouldBeThrownBy(() => {
         StatefulSagaConvention.DetermineSagaRepositoryDef(new TransportSettings(), new SagaTypes
         {
             MessageType = GetType(),
             StateType   = GetType()
         });
     });
 }
        public void no_registered_storage_and_matches_the_idiom_so_use_in_memory_cache()
        {
            var types = new SagaTypes
            {
                MessageType = typeof(SagaMessageOne),
                StateType   = typeof(MySagaState)
            };

            StatefulSagaConvention.DetermineSagaRepositoryDef(new TransportSettings(), types)
            .Type.ShouldEqual(typeof(InMemorySagaRepository <MySagaState, SagaMessageOne>));
        }