public MetadataPipelineIntegrationTests()
        {
            initialisationTime   = new DateTime(1905, 9, 13);
            TimeProvider.Current = new StubTimeProvider(initialisationTime);

            var container = new TinyIoCContainer();

            container.RegisterSagas(typeof(MetadataPipelineIntegrationTests).Assembly);
            var serviceLocator = new TinyIocSagaFactory(container);


            var jsonNetSerialiser = new JsonNetSerialiser();
            var sagaRepository    = new InMemorySagaRepository(jsonNetSerialiser, serviceLocator);
            var hooks             = new IPipelineHook[] { new MetadataPipelineHook(jsonNetSerialiser) };

            var sagaMediator = new SagaMediator(sagaRepository, serviceLocator, hooks);

            correlationId = Guid.NewGuid();
            var initiatingMessage = new MySagaInitiatingMessage(correlationId);

            sagaMediator.Consume(initiatingMessage);
            var saga = sagaRepository.Find <MySaga>(correlationId);

            sagaMetadata = saga.GetSagaMetadata(new JsonNetSerialiser());
        }
        public MetadataPipelineHookConsumingTests()
        {
            initialisationTime   = new DateTime(1905, 9, 13);
            TimeProvider.Current = new StubTimeProvider(initialisationTime);

            sut           = new MetadataPipelineHook(new JsonNetSerialiser());
            correlationId = Guid.NewGuid();
            var initiatingMessage = new MySagaInitiatingMessage(correlationId)
            {
                SomeRandomValue = Guid.NewGuid(),
            };

            saga = new MySaga();
            var context = new PipelineContext(initiatingMessage, saga);

            sut.AfterInitialisation(context);

            // change time so we can compare dates
            consumingTime        = new DateTime(1955, 7, 13);
            TimeProvider.Current = new StubTimeProvider(consumingTime);

            // and throw in another message
            consumingMessage = new MySagaConsumingMessage(correlationId)
            {
                SomeRandomValue = Guid.NewGuid().ToString()
            };
            sut.AfterConsuming(new PipelineContext(consumingMessage, saga));

            sagaMetadata = saga.GetSagaMetadata(new JsonNetSerialiser());
        }
예제 #3
0
        public void Initiation_PipelineHooks_ExecutedInOrder()
        {
            //Arrange
            var initiatingMessage = new MySagaInitiatingMessage(Guid.NewGuid());

            // Act
            sut.Consume(initiatingMessage);

            // Assert
            Received.InOrder(() =>
            {
                pipelineHook.BeforeInitialisation(Arg.Any <PipelineContext>());
                pipelineHook.AfterInitialisation(Arg.Any <PipelineContext>());
                pipelineHook.AfterSave(Arg.Any <PipelineContext>());
            });
        }
        public MetadataPipelineHookInitialisationTests()
        {
            currentTime          = new DateTime(1905, 9, 13);
            TimeProvider.Current = new StubTimeProvider(currentTime);

            sut           = new MetadataPipelineHook(new JsonNetSerialiser());
            correlationId = Guid.NewGuid();
            message       = new MySagaInitiatingMessage(correlationId)
            {
                SomeRandomValue = Guid.NewGuid(),
            };

            saga = new MySaga();
            var context = new PipelineContext(message, saga);

            sut.AfterInitialisation(context);

            sagaMetadata = saga.GetSagaMetadata(new JsonNetSerialiser());
        }