Пример #1
0
        public async Task It_should_persist_successfully()
        {
            var correlationPropertyData = Guid.NewGuid().ToString();
            var saga1 = new SagaWithCorrelationPropertyData
            {
                CorrelatedProperty = correlationPropertyData,
                SomeProperty       = "foo"
            };

            await SaveSaga(saga1);

            var updatedValue           = "bar";
            var context                = configuration.GetContextBagForSagaStorage();
            var correlatedPropertyName = nameof(SagaWithCorrelationPropertyData.CorrelatedProperty);
            var persister              = configuration.SagaStorage;

            using (var completeSession = await configuration.SynchronizedStorage.OpenSession(context, default))
            {
                var sagaData = await persister.Get <SagaWithCorrelationPropertyData>(correlatedPropertyName, correlationPropertyData, completeSession, context, default);

                sagaData.SomeProperty = updatedValue;

                await persister.Update(sagaData, completeSession, context, default);

                await completeSession.CompleteAsync(default);
        public async Task Should_delete_the_saga()
        {
            var correlationPropertyData = Guid.NewGuid().ToString();
            var saga = new SagaWithCorrelationPropertyData {
                CorrelatedProperty = correlationPropertyData, DateTimeProperty = DateTime.UtcNow
            };

            await SaveSaga(saga);

            const string correlatedPropertyName = nameof(SagaWithCorrelationPropertyData.CorrelatedProperty);
            var          context = configuration.GetContextBagForSagaStorage();

            using (var completeSession = await configuration.SynchronizedStorage.OpenSession(context))
            {
                var sagaData = await configuration.SagaStorage.Get <SagaWithCorrelationPropertyData>(correlatedPropertyName, correlationPropertyData, completeSession, context);

                await configuration.SagaStorage.Complete(sagaData, completeSession, context);

                await completeSession.CompleteAsync();
            }

            var completedSaga = await GetByCorrelationProperty <SagaWithCorrelationPropertyData>(correlatedPropertyName, correlationPropertyData);

            Assert.Null(completedSaga);
        }
Пример #3
0
        public async Task It_should_persist_successfully()
        {
            var correlationPropertyData = Guid.NewGuid().ToString();
            var saga1 = new SagaWithCorrelationPropertyData
            {
                CorrelatedProperty = correlationPropertyData,
                SomeProperty       = "foo"
            };

            await SaveSaga(saga1);

            var updatedValue = "bar";
            var context      = configuration.GetContextBagForSagaStorage();
            var persister    = configuration.SagaStorage;

            using (var completeSession = await configuration.SynchronizedStorage.OpenSession(context))
            {
                var sagaData = await persister.Get <SagaWithCorrelationPropertyData>(saga1.Id, completeSession, context);

                sagaData.SomeProperty = updatedValue;

                await persister.Update(sagaData, completeSession, context);

                await completeSession.CompleteAsync();
            }

            var updatedSagaData = await GetById <SagaWithCorrelationPropertyData>(saga1.Id);

            Assert.That(updatedSagaData, Is.Not.Null);
            Assert.That(updatedSagaData.SomeProperty, Is.EqualTo(updatedValue));
        }
Пример #4
0
        public async Task It_should_persist_successfully()
        {
            var correlationPropertyData = Guid.NewGuid().ToString();
            var saga1 = new SagaWithCorrelationPropertyData {
                CorrelatedProperty = correlationPropertyData, DataProperty = "saga1"
            };
            var saga2 = new SagaWithCorrelationPropertyData {
                CorrelatedProperty = correlationPropertyData, DataProperty = "saga2"
            };

            var persister = configuration.SagaStorage;

            await SaveSaga(saga1);

            var context1 = configuration.GetContextBagForSagaStorage();

            using (var completeSession = await configuration.SynchronizedStorage.OpenSession(context1, default))
            {
                var sagaData = await persister.Get <SagaWithCorrelationPropertyData>(nameof(saga1.CorrelatedProperty), correlationPropertyData, completeSession, context1, default);

                Assert.AreEqual(saga1.DataProperty, sagaData.DataProperty);

                await persister.Complete(sagaData, completeSession, context1, default);

                await completeSession.CompleteAsync(default);
        public async Task It_should_enforce_uniqueness()
        {
            var correlationPropertyData = Guid.NewGuid().ToString();
            var saga1 = new SagaWithCorrelationPropertyData
            {
                CorrelatedProperty = correlationPropertyData,
                DateTimeProperty   = DateTime.UtcNow
            };
            var saga2 = new SagaWithCorrelationPropertyData
            {
                CorrelatedProperty = correlationPropertyData,
                DateTimeProperty   = DateTime.UtcNow
            };

            var winningContextBag = configuration.GetContextBagForSagaStorage();

            using (var winningSession = await configuration.SynchronizedStorage.OpenSession(winningContextBag))
            {
                await SaveSagaWithSession(saga1, winningSession, winningContextBag);

                await winningSession.CompleteAsync();
            }

            var losingContextBag = configuration.GetContextBagForSagaStorage();

            using (var losingSession = await configuration.SynchronizedStorage.OpenSession(losingContextBag))
            {
                Assert.That(async() =>
                {
                    await SaveSagaWithSession(saga2, losingSession, losingContextBag);
                    await losingSession.CompleteAsync();
                }, Throws.InstanceOf <Exception>());
            }
        }
Пример #6
0
        public async Task It_should_enforce_uniqueness()
        {
            var correlationPropertyData = Guid.NewGuid().ToString();
            var saga1 = new SagaWithCorrelationPropertyData
            {
                CorrelatedProperty = correlationPropertyData,
                DateTimeProperty   = DateTime.UtcNow
            };
            var saga2 = new SagaWithCorrelationPropertyData
            {
                CorrelatedProperty = correlationPropertyData,
                DateTimeProperty   = DateTime.UtcNow
            };

            var winningContextBag = configuration.GetContextBagForSagaStorage();

            using (var winningSession = await configuration.SynchronizedStorage.OpenSession(winningContextBag, default))
            {
                await SaveSagaWithSession(saga1, winningSession, winningContextBag);

                await winningSession.CompleteAsync(default);
Пример #7
0
        public async Task It_should_persist_successfully()
        {
            var correlationPropertyData = Guid.NewGuid().ToString();
            var saga1 = new SagaWithCorrelationPropertyData
            {
                CorrelatedProperty = correlationPropertyData,
                DateTimeProperty   = DateTime.UtcNow
            };
            var saga2 = new AnotherSagaWithCorrelatedPropertyData
            {
                CorrelatedProperty = correlationPropertyData
            };

            var persister        = configuration.SagaStorage;
            var savingContextBag = configuration.GetContextBagForSagaStorage();

            using (var session = await configuration.SynchronizedStorage.OpenSession(savingContextBag, default))
            {
                await SaveSagaWithSession(saga1, session, savingContextBag);
                await SaveSagaWithSession(saga2, session, savingContextBag);

                await session.CompleteAsync(default);
Пример #8
0
        public async Task It_should_persist_successfully()
        {
            var correlationPropertyData = Guid.NewGuid().ToString();
            var saga1 = new SagaWithCorrelationPropertyData
            {
                CorrelatedProperty = correlationPropertyData,
                DateTimeProperty   = DateTime.UtcNow
            };
            var saga2 = new AnotherSagaWithCorrelatedPropertyData
            {
                CorrelatedProperty = correlationPropertyData
            };

            var persister        = configuration.SagaStorage;
            var savingContextBag = configuration.GetContextBagForSagaStorage();

            using (var session = await configuration.SynchronizedStorage.OpenSession(savingContextBag))
            {
                await SaveSagaWithSession(saga1, session, savingContextBag);
                await SaveSagaWithSession(saga2, session, savingContextBag);

                await session.CompleteAsync();
            }

            var readContextBag = configuration.GetContextBagForSagaStorage();

            using (var readSession = await configuration.SynchronizedStorage.OpenSession(readContextBag))
            {
                var saga1Result = await persister.Get <SagaWithCorrelationPropertyData>(nameof(SagaWithCorrelationPropertyData.CorrelatedProperty), saga1.CorrelatedProperty, readSession, readContextBag);

                var saga2Result = await persister.Get <AnotherSagaWithCorrelatedPropertyData>(nameof(AnotherSagaWithCorrelatedPropertyData.CorrelatedProperty), saga2.CorrelatedProperty, readSession, readContextBag);

                Assert.AreEqual(saga1.CorrelatedProperty, saga1Result.CorrelatedProperty);
                Assert.AreEqual(saga2.CorrelatedProperty, saga2Result.CorrelatedProperty);
            }
        }