public void WorksWithUserProvidedConnectionWithoutStartedTransaction() { var sagaId = Guid.NewGuid(); var sagaData = new SomeSagaData { JustSomething = "hey!", Id = sagaId }; persister.Insert(sagaData, new string[0]); }
public void GetsNullIfSagaCannotBeFound() { var sagaData = new SomeSagaData {AggregatedObject = new SomeAggregatedObject {SomeRandomValue = "whooHAAA!"}}; persister.Save(sagaData, new[] {""}); persister.Find(Reflect.Path<SomeSagaData>(d => d.AggregatedObject.SomeRandomValue), "NO MATCH", SagaDataTypeDoesntMatter) .ShouldBe(null); persister.Find("Invalid.Path.To.Nothing", "whooHAAA!", SagaDataTypeDoesntMatter).ShouldBe(null); }
public void CanSaveAndFindSagasById() { persister.UseIndex(new[] {"Id"}); var someId = Guid.NewGuid(); var mySagaData = new SomeSagaData{Id=someId}; persister.Save(mySagaData, new[]{""}); SagaDataTypeDoesntMatter = null; var storedSagaData = persister.Find("Id", someId.ToString(), SagaDataTypeDoesntMatter); storedSagaData.ShouldBeSameAs(mySagaData); }
public void CanSaveAndFindSagasByDeepPath() { persister.UseIndex(new[] {Reflect.Path<SomeSagaData>(d => d.AggregatedObject.SomeRandomValue)}); var mySagaData = new SomeSagaData{AggregatedObject = new SomeAggregatedObject{SomeRandomValue = "whooHAAA!"}}; persister.Save(mySagaData, new[] { "" }); var storedSagaData = persister.Find(Reflect.Path<SomeSagaData>(d => d.AggregatedObject.SomeRandomValue), "whooHAAA!", SagaDataTypeDoesntMatter); storedSagaData.ShouldBeSameAs(mySagaData); }
public void AddShouldAddToAvailableSagaData() { var someSagaData = new SomeSagaData { JustSomeText = Guid.NewGuid().ToString() }; var fixture = new SagaFixture <SomeSagaData>(new SomeSaga()) { someSagaData }; fixture.OfType <SomeSagaData>().First().JustSomeText.ShouldBe(someSagaData.JustSomeText); }
public void WorksWithUserProvidedConnectionWithStartedTransaction() { // arrange var sagaId = Guid.NewGuid(); var sagaData = new SomeSagaData { JustSomething = "hey!", Id = sagaId }; // act BeginTransaction(); // assert persister.Insert(sagaData, new string[0]); CommitTransaction(); }
public void CanUseSagaDataProvidedInVariousWays(string howToProvideSagaData) { // arrange const string recognizableText = "this, I can recognize!"; var someSagaData = new SomeSagaData { SagaDataId = 10, JustSomeText = recognizableText }; SagaFixture <SomeSagaData> fixture; switch (howToProvideSagaData) { //case "in the list": // fixture = new SagaFixture<SomeSagaData>(new SomeSaga(), new List<SomeSagaData> { someSagaData }); // break; case "after the fact": fixture = new SagaFixture <SomeSagaData>(new SomeSaga()); fixture.AddSagaData(someSagaData); break; default: throw new ArgumentException(string.Format("Don't know how to provide saga data like this: {0}", howToProvideSagaData), "howToProvideSagaData"); } // act fixture.Handle(new SomeMessage { SagaDataId = 10 }); // assert var availableSagaData = fixture.AvailableSagaData; availableSagaData.Count().ShouldBe(1); var sagaDataClone = availableSagaData.Single(d => d.SagaDataId == 10); sagaDataClone.JustSomeText.ShouldBe(recognizableText); }