public void Save_Updates_ExistingSagaData() { //Arrange var correlationId = Guid.NewGuid(); var expectedGuid = Guid.NewGuid(); var saga = new MySaga { CorrelationId = correlationId, SagaData = { SomeGuid = Guid.NewGuid(), }, }; SetStoredModel(correlationId, new AzureTablesSagaRepository.StorageModel() { BlobData = JsonConvert.SerializeObject(saga.SagaData), }); saga.SagaData.SomeGuid = expectedGuid; // Act sut.Save(saga); // Assert var updatedData = GetStoredModel(correlationId); updatedData.Should().NotBeNull(); updatedData.BlobData.Should().ContainEquivalentOf(expectedGuid.ToString()); }
public void Save_Updates_ExistingHeaders() { //Arrange var correlationId = Guid.NewGuid(); var expectedValue = Guid.NewGuid().ToString(); var saga = new MySaga { CorrelationId = correlationId, Headers = new Dictionary <string, string>() { { "SomeKey", Guid.NewGuid().ToString() } }, }; database.Insert(new SagaData() { CorrelationId = correlationId, BlobData = JsonConvert.SerializeObject(saga.SagaData) }); database.Insert(new SagaHeaders() { CorrelationId = correlationId, Key = saga.Headers.First().Key, Value = saga.Headers.First().Value }); saga.Headers["SomeKey"] = expectedValue; // Act sut.Save(saga); // Assert var updatedHeaders = DatabaseHelpers.GetSagaHeaders(database, correlationId); updatedHeaders.Should().HaveCount(1); updatedHeaders.First().Value.Should().Be(expectedValue); }
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()); }
public void Save_Updates_ExistingHeaders() { //Arrange var correlationId = Guid.NewGuid(); var expectedValue = Guid.NewGuid().ToString(); var saga = new MySaga { CorrelationId = correlationId, Headers = new Dictionary <string, string>() { { "SomeKey", Guid.NewGuid().ToString() } }, }; SetStoredModel(correlationId, new AzureTablesSagaRepository.StorageModel() { BlobData = JsonConvert.SerializeObject(saga.SagaData), Headers = JsonConvert.SerializeObject(saga.Headers), }); saga.Headers["SomeKey"] = expectedValue; // Act sut.Save(saga); // Assert var storedHeaders = GetStoredModel(correlationId).Headers; var updatedHeaders = JsonConvert.DeserializeObject <Dictionary <String, String> >(storedHeaders); updatedHeaders.Should().HaveCount(1); updatedHeaders.First().Value.Should().Be(expectedValue); }
public void Complete_Removes_Headers() { //Arrange var correlationId = Guid.NewGuid(); var saga = new MySaga { CorrelationId = correlationId, Headers = new Dictionary <string, string>() { { "SomeKey", Guid.NewGuid().ToString() } }, }; database.Insert(new SagaData() { CorrelationId = correlationId, BlobData = JsonConvert.SerializeObject(saga.SagaData) }); database.Insert(new SagaHeaders() { CorrelationId = correlationId, Key = saga.Headers.First().Key, Value = saga.Headers.First().Value }); // Act sut.Complete(saga); // Assert var updatedHeaders = DatabaseHelpers.GetSagaHeaders(database, correlationId); updatedHeaders.Should().HaveCount(0); }
public void Save_Updates_ExistingSagaData() { //Arrange var correlationId = Guid.NewGuid(); var expectedGuid = Guid.NewGuid(); var saga = new MySaga { CorrelationId = correlationId, SagaData = { SomeGuid = Guid.NewGuid(), }, }; database.Insert(new SagaData() { CorrelationId = correlationId, BlobData = JsonConvert.SerializeObject(saga.SagaData) }); saga.SagaData.SomeGuid = expectedGuid; // Act sut.Save(saga); // Assert var updatedData = DatabaseHelpers.GetSagaData(database, correlationId); updatedData.Should().NotBeNull(); updatedData.BlobData.Should().ContainEquivalentOf(expectedGuid.ToString()); }
public void NewDispatchesAreExposedThroughGetDispatches() { Action<E> onApplied = e => { }; var saga = new MySaga(onApplied); saga.Method(); saga.GetDispatches().Count().Should().Be.EqualTo(1); }
public void NewEventsAreExposedThroughGetUncommittedChanged() { E newEvent = null; Action<E> onApplied = e => newEvent = e; var saga = new MySaga(onApplied); saga.Method(); saga.GetUncommittedChanges().Should().Have.SameSequenceAs(new[] {newEvent}); }
public void HistoricalEventsAreNotExposedThroughGetUncommitedChanged() { E historicalEvent = null; Action<E> onApplied = e => { }; var saga = new MySaga(onApplied); saga.LoadsFromHistory(new[] { historicalEvent }); saga.GetUncommittedChanges().Should().Be.Empty(); }
public void UncommittedEventsAreClearedWhenMarkedAsCommitted() { Action<E> onApplied = e => { }; var saga = new MySaga(onApplied); saga.Method(); saga.MarkChangesAsCommitted(); saga.GetUncommittedChanges().Should().Be.Empty(); }
public void NewEventsAreAppliedToTheSaga() { E appliedEvent = null; Action<E> onApplied = e => appliedEvent = e; var saga = new MySaga(onApplied); saga.Method(); appliedEvent.Should().Not.Be.Null(); }
public void HistoricalEventsAreAppliedToTheSaga() { E historicalEvent = null; E appliedEvent = null; Action<E> onApplied = e => appliedEvent = e; var saga = new MySaga(onApplied); saga.LoadsFromHistory(new[] {historicalEvent}); appliedEvent.Should().Be.EqualTo(historicalEvent); }
public void Save_Persists_Headers() { //Arrange var correlationId = Guid.NewGuid(); var saga = new MySaga { CorrelationId = correlationId }; // Act sut.Save(saga); // Assert InMemorySagaRepository.HeadersDictionary.Should().NotBeNull() .And.ContainKey(correlationId); }
public void Save_Returns_SavedData() { //Arrange var correlationId = Guid.NewGuid(); var saga = new MySaga { CorrelationId = correlationId }; // Act sut.Save(saga); // Assert InMemorySagaRepository.DataDictionary.Should().NotBeNull() .And.ContainKey(correlationId); }
public void Complete_Removes_HeadersFromStorage() { //Arrange var correlationId = Guid.NewGuid(); var saga = new MySaga(); saga.CorrelationId = correlationId; sut.Save(saga); // Act sut.Complete(saga); // Assert sut.HeadersDictionary.Should().NotContainKey(correlationId); }
public async Task HandleAsync_StartSaga_should_publish_ProcessMySaga_message() { var state = new MySagaState(Guid.NewGuid()); var logger = NSubstitute.Substitute.For <ILogger <MySaga> >(); var sut = new MySaga(logger, state); var message = new StartSaga(Guid.NewGuid(), Guid.NewGuid()); var ctx = new FakeMessageContext <StartSaga>(message); await sut.HandleAsync(ctx); state.Outbox.Count.Should().Be(1); var outgoingMessage = state.Outbox.First(); outgoingMessage.Should().BeOfType <ProcessMySaga>(); outgoingMessage.CorrelationId.Should().Be(message.CorrelationId); }
public async Task Saga() { var saga = new MySaga { Data = new MySagaData() }; var context = new TestableMessageHandlerContext(); await saga.Handle(new MySagaMessage(), context); await Verify(new { context, saga.Data }); }
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()); }
public void ClearData_Removes_Data() { //Arrange var correlationId = Guid.NewGuid(); var expected = Guid.NewGuid(); var saga = new MySaga { CorrelationId = correlationId }; sut.Save(saga); // Act InMemorySagaRepository.ResetStorage(); // Assert var deletedSaga = sut.Find <MySaga>(correlationId); deletedSaga.Should().BeNull(); }
public void Save_Persists_SagaData() { //Arrange var correlationId = Guid.NewGuid(); var saga = new MySaga { CorrelationId = correlationId }; var expectedGuid = Guid.NewGuid(); saga.SagaData.SomeGuid = expectedGuid; // Act sut.Save(saga); // Assert var restoredSaga = GetStoredModel(correlationId); restoredSaga.Should().NotBeNull(); restoredSaga.BlobData.Should().ContainEquivalentOf(expectedGuid.ToString()); }
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); }
public void Complete_Removes_Data() { //Arrange var correlationId = Guid.NewGuid(); var saga = new MySaga { CorrelationId = correlationId, }; database.Insert(new SagaData() { CorrelationId = correlationId, BlobData = JsonConvert.SerializeObject(saga.SagaData) }); // Act sut.Complete(saga); // Assert var updatedData = DatabaseHelpers.GetSagaData(database, correlationId); updatedData.Should().BeNull(); }
public void Save_Persists_Headers() { //Arrange var correlationId = Guid.NewGuid(); var saga = new MySaga { CorrelationId = correlationId }; var expectedValue = Guid.NewGuid().ToString(); saga.Headers = new Dictionary <string, string>() { { "key", expectedValue } }; // Act sut.Save(saga); // Assert var restoredHeaders = DatabaseHelpers.GetSagaHeaders(database, correlationId); restoredHeaders.Should().HaveCount(1); restoredHeaders.First().Value.Should().Be(expectedValue); }
public void Complete_Removes_Data() { //Arrange var correlationId = Guid.NewGuid(); var saga = new MySaga { CorrelationId = correlationId, }; SetStoredModel(correlationId, new AzureTablesSagaRepository.StorageModel() { BlobData = JsonConvert.SerializeObject(saga.SagaData), Headers = JsonConvert.SerializeObject(saga.Headers), }); // Act sut.Complete(saga); // Assert var updatedData = GetStoredModel(correlationId); updatedData.Should().BeNull(); }
public void Save_Persists_Headers() { //Arrange var correlationId = Guid.NewGuid(); var saga = new MySaga { CorrelationId = correlationId }; var expectedValue = Guid.NewGuid().ToString(); saga.Headers = new Dictionary <string, string>() { { "key", expectedValue } }; // Act sut.Save(saga); // Assert var restoredSaga = GetStoredModel(correlationId); var restoredHeaders = JsonConvert.DeserializeObject <Dictionary <String, String> >(restoredSaga.Headers); restoredHeaders.Should().HaveCount(1); restoredHeaders.First().Value.Should().Be(expectedValue); }
public void UncommittedEventsAreInOrder() { var events = new List<E>(); Action<E> onApply = e => events.Add(e); var saga = new MySaga(onApply); saga.Method(); saga.Method(); saga.GetUncommittedChanges().Should().Have.SameSequenceAs(events); }