コード例 #1
0
        public void Find_NoSaga_ReturnsNull()
        {
            // Act
            var result = sut.Find <MySaga>(Guid.NewGuid());

            // Assert
            result.Should().BeNull();
        }
コード例 #2
0
        public void Consume_MessageConsumed_SagaPersisted()
        {
            //Arrange
            var correlationId = Guid.NewGuid();

            sut.Consume(new MySagaInitiatingMessage(correlationId));
            var message = new MySagaConsumingMessage(correlationId);

            // Act
            sut.Consume(message);

            // Assert
            var saga = repository.Find <MySaga>(correlationId);

            saga.SagaData.IsConsumingMessageReceived.Should().BeTrue();
        }
コード例 #3
0
        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());
        }
コード例 #4
0
        public void Initiate_Saves_IntoRepository()
        {
            //Arrange
            var correlationId     = Guid.NewGuid();
            var initiatingMessage = new MySagaInitiatingMessage(correlationId);

            // Act
            sut.Consume(initiatingMessage);

            // Assert
            var data = InMemorySagaRepository.DataDictionary;

            data.Should().HaveCount(1);
            var saga = repository.Find <MySaga>(correlationId);

            saga.CorrelationId.Should().Be(correlationId);
        }
コード例 #5
0
        public void MultipleRepo_Instances_ShareDataStorage()
        {
            //Arrange
            var correlationId = Guid.NewGuid();
            var expected      = Guid.NewGuid();
            var saga          = new MySaga {
                CorrelationId = correlationId, SagaData = new MySagaData()
                {
                    SomeGuid = expected
                }
            };

            sut.Save(saga);

            // Act
            var anotherInstance = new InMemorySagaRepository(new JsonNetSerialiser(), new DumbSagaFactory());
            var restoredSaga    = anotherInstance.Find <MySaga>(correlationId);

            // Assert
            restoredSaga.SagaData.SomeGuid.Should().Be(expected);
        }