public void It_should_enforce_uniqueness() { var saga1 = new SagaWithUniquePropertyData { Id = Guid.NewGuid(), UniqueString = "whatever"}; var saga2 = new SagaWithUniquePropertyData { Id = Guid.NewGuid(), UniqueString = "whatever"}; persister.Save(saga1); Assert.Throws<InvalidOperationException>(() => persister.Save(saga2)); }
async Task SaveSaga(SagaWithUniquePropertyData saga) { using (var session = new InMemorySynchronizedStorageSession()) { var ctx = new ContextBag(); await persister.Save(saga, SagaMetadataHelper.GetMetadata<SagaWithUniqueProperty>(saga), session, ctx); await session.CompleteAsync(); } }
public void Should_delete_the_saga() { var saga = new SagaWithUniquePropertyData { Id = Guid.NewGuid(), UniqueString = "whatever" }; persister.Save(saga); Assert.NotNull(persister.Get<SagaWithUniquePropertyData>(saga.Id)); persister.Complete(saga); Assert.Null(persister.Get<SagaWithUniquePropertyData>(saga.Id)); }
public void It_should_persist_successfully() { var saga1 = new SagaWithUniquePropertyData { Id = Guid.NewGuid(), UniqueString = "whatever" }; persister.Save(saga1); saga1 = persister.Get<SagaWithUniquePropertyData>(saga1.Id); persister.Update(saga1); }
public void It_should_persist_successfully() { var saga1 = new SagaWithTwoUniquePropertiesData { Id = Guid.NewGuid(), UniqueString = "whatever", UniqueInt = 5 }; var saga2 = new AnotherSagaWithTwoUniquePropertiesData { Id = Guid.NewGuid(), UniqueString = "whatever", UniqueInt = 5 }; var saga3 = new SagaWithUniquePropertyData {Id = Guid.NewGuid(), UniqueString = "whatever"}; persister.Save(saga1); persister.Save(saga2); persister.Save(saga3); }
public void It_should_persist_successfully() { var saga1 = new SagaWithUniquePropertyData { Id = Guid.NewGuid(), UniqueString = "whatever" }; var saga2 = new SagaWithUniquePropertyData { Id = Guid.NewGuid(), UniqueString = "whatever" }; persister.Save(saga1); persister.Complete(saga1); persister.Save(saga2); persister.Complete(saga2); persister.Save(saga1); persister.Complete(saga1); }
public void It_should_persist_successfully() { var saga1 = new SagaWithUniquePropertyData {Id = Guid.NewGuid(), UniqueString = "whatever1"}; var saga2 = new SagaWithUniquePropertyData {Id = Guid.NewGuid(), UniqueString = "whatever"}; persister.Save(saga1); persister.Save(saga2); Assert.Throws<InvalidOperationException>(() => { var saga = persister.Get<SagaWithUniquePropertyData>(saga2.Id); saga.UniqueString = "whatever1"; persister.Update(saga); }); }
public async Task It_should_persist_successfully() { var saga1 = new SagaWithUniquePropertyData { Id = Guid.NewGuid(), UniqueString = "whatever" }; var saga2 = new AnotherSagaWithUniquePropertyData { Id = Guid.NewGuid(), UniqueString = "whatever" }; var persister = new InMemorySagaPersister(); var transaction = new InMemorySynchronizedStorageSession(); await persister.Save(saga1, SagaMetadataHelper.GetMetadata<SagaWithUniqueProperty>(saga1), transaction, new ContextBag()); await persister.Save(saga2, SagaMetadataHelper.GetMetadata<AnotherSagaTwoUniqueProperty>(saga2), transaction, new ContextBag()); await transaction.CompleteAsync(); }
public async Task It_should_persist_successfully() { var saga1 = new SagaWithUniquePropertyData { Id = Guid.NewGuid(), UniqueString = "whatever" }; var persister = new InMemorySagaPersister(); var insertSession = new InMemorySynchronizedStorageSession(); await persister.Save(saga1, SagaMetadataHelper.GetMetadata<SagaWithUniqueProperty>(saga1), insertSession, new ContextBag()); await insertSession.CompleteAsync(); var updatingContext = new ContextBag(); saga1 = await persister.Get<SagaWithUniquePropertyData>(saga1.Id, new InMemorySynchronizedStorageSession(), updatingContext); var updateSession = new InMemorySynchronizedStorageSession(); await persister.Update(saga1, updateSession, updatingContext); await updateSession.CompleteAsync(); }
public async Task Should_delete_the_saga() { var saga = new SagaWithUniquePropertyData { Id = Guid.NewGuid(), UniqueString = "whatever" }; var persister = new InMemorySagaPersister(); var insertSession = new InMemorySynchronizedStorageSession(); await persister.Save(saga,SagaMetadataHelper.GetMetadata<SagaWithUniqueProperty>(saga), insertSession, new ContextBag()); await insertSession.CompleteAsync(); var intentionallySharedContext = new ContextBag(); var sagaData = await persister.Get<SagaWithUniquePropertyData>(saga.Id, new InMemorySynchronizedStorageSession(), intentionallySharedContext ); var completeSession = new InMemorySynchronizedStorageSession(); await persister.Complete(saga, completeSession, intentionallySharedContext ); await completeSession.CompleteAsync(); var completedSagaData = await persister.Get<SagaWithUniquePropertyData>(saga.Id, new InMemorySynchronizedStorageSession(), new ContextBag()); Assert.NotNull(sagaData); Assert.Null(completedSagaData); }
public async Task It_should_persist_successfully() { var saga1 = new SagaWithUniquePropertyData { Id = Guid.NewGuid(), UniqueString = "whatever" }; var saga2 = new SagaWithUniquePropertyData { Id = Guid.NewGuid(), UniqueString = "whatever" }; await SaveSaga(saga1); await CompleteSaga(saga1.Id); await SaveSaga(saga2); await CompleteSaga(saga2.Id); await SaveSaga(saga1); await CompleteSaga(saga1.Id); }
public async Task It_should_enforce_uniqueness() { var saga1 = new SagaWithUniquePropertyData { Id = Guid.NewGuid(), UniqueString = "whatever" }; var saga2 = new SagaWithUniquePropertyData { Id = Guid.NewGuid(), UniqueString = "whatever" }; var persister = new InMemorySagaPersister(); var winningSession = new InMemorySynchronizedStorageSession(); var losingSession = new InMemorySynchronizedStorageSession(); await persister.Save(saga1, SagaMetadataHelper.GetMetadata<SagaWithUniqueProperty>(saga1), winningSession, new ContextBag()); await persister.Save(saga2, SagaMetadataHelper.GetMetadata<SagaWithUniqueProperty>(saga1), losingSession, new ContextBag()); await winningSession.CompleteAsync(); Assert.That(async () => await losingSession.CompleteAsync(), Throws.InstanceOf<InvalidOperationException>()); }