public Given_AutomatonymousSaga(Func <SoftwareProgrammingSaga, State> initialState) { var sagaData = new SoftwareProgrammingSagaData(initialState(SagaMachine).Name); SagaDataAggregate = new SagaDataAggregate <SoftwareProgrammingSagaData>(Guid.NewGuid(), sagaData); SagaInstance = new SagaInstance <SoftwareProgrammingSaga, SoftwareProgrammingSagaData>(SagaMachine, SagaDataAggregate); }
public void Test() { var saga = new SoftwareProgrammingSaga(); var state = new SoftwareProgrammingSagaData("123", Guid.NewGuid(), Guid.NewGuid()); _sagaState = new SagaDataAggregate <SoftwareProgrammingSagaData>(Guid.NewGuid(), state); _sagaState.RememberEvent(saga.CoffeReady, state, new object()); _sagaState.ClearEvents(); var json = JsonConvert.SerializeObject(_sagaState); _restoredState = JsonConvert.DeserializeObject <SagaDataAggregate <SoftwareProgrammingSagaData> >(json); }
public void Test() { var saga = new SoftwareProgrammingSaga(); var state = new SoftwareProgrammingSagaData(saga.Coding.Name, Guid.NewGuid(), Guid.NewGuid()); _sagaState = new SagaDataAggregate <SoftwareProgrammingSagaData>(Guid.NewGuid(), state); _sagaState.RememberEvent(saga.CoffeReady, state, new object()); _sagaState.ClearEvents(); var repo = new AggregateSnapshotRepository(AkkaConf.Persistence.JournalConnectionString, GridNode.AggregateFromSnapshotsFactory); repo.Add(_sagaState); _restoredState = LoadInstanceSagaState <SoftwareProgrammingSaga, SoftwareProgrammingSagaData>(_sagaState.Id); }
public void Test() { var saga = new SoftwareProgrammingSaga(); var state = new SoftwareProgrammingSagaData("123", Guid.NewGuid(), Guid.NewGuid()); _sagaState = new SagaDataAggregate <SoftwareProgrammingSagaData>(Guid.NewGuid(), state); _sagaState.RememberEvent(saga.CoffeReady, state, new object()); _sagaState.ClearEvents(); var fixture = new Fixture(); var gotTired = fixture.Create <GotTiredEvent>(); var factory = new SoftwareProgrammingSagaFactory(); var instance = factory.Create(gotTired); var json = JsonConvert.SerializeObject(_sagaState); _restoredState = JsonConvert.DeserializeObject <SagaDataAggregate <SoftwareProgrammingSagaData> >(json); }
public void Given_instance_saga_When_recovering_from_creation() { var aggregateFactory = new AggregateFactory(); var sagaId = Guid.NewGuid(); _data = aggregateFactory.Build <SagaDataAggregate <SoftwareProgrammingSagaData> >(sagaId); var saga = new SoftwareProgrammingSaga(); var initialState = new SoftwareProgrammingSagaData(saga.MakingCoffee.Name); var eventsToReplay = new DomainEvent[] { new SagaCreatedEvent <SoftwareProgrammingSagaData>(initialState, sagaId) }; _data.ApplyEvents(eventsToReplay); _sagaInstance = SagaInstance.New(saga, _data); //Try to transit saga by message, available only in desired state _coffeMakeFailedEvent = new CoffeMakeFailedEvent(Guid.NewGuid(), Guid.NewGuid()); _sagaInstance.Transit(_coffeMakeFailedEvent); _dispatchedCommands = _sagaInstance.CommandsToDispatch; }