async Task RaiseEvent <T>(Guid id, Event <T> @event, T data) { using (ISession session = _sessionFactory.OpenSession()) using (ITransaction transaction = session.BeginTransaction()) { bool save = false; var instance = session.Get <ShoppingChore>(id, LockMode.Upgrade); if (instance == null) { instance = new ShoppingChore(id); save = true; } await _machine.RaiseEvent(instance, @event, data); if (save) { session.Save(instance); } else { session.Update(instance); } transaction.Commit(); } }
public void Should_have_a_saga_in_the_proper_state() { ShoppingChore shoppingChore = _test.Saga.ContainsInState(_correlationId, _machine.Final, _machine); foreach (ShoppingChore result in _repository.Select(x => x)) { Console.WriteLine("{0} - {1} ({2})", result.CorrelationId, result.CurrentState, result.Screwed); } Assert.IsNotNull(shoppingChore); }
public async Task Should_have_the_state_machine() { Guid correlationId = Guid.NewGuid(); await RaiseEvent(correlationId, _machine.ExitFrontDoor, new GirlfriendYelling { CorrelationId = correlationId }); await RaiseEvent(correlationId, _machine.GotHitByCar, new GotHitByACar { CorrelationId = correlationId }); ShoppingChore instance = await GetStateMachine(correlationId); Assert.IsTrue(instance.Screwed); }
public void Should_have_a_saga() { ShoppingChore shoppingChore = _test.Saga.Created.Contains(_correlationId); Assert.IsNotNull(shoppingChore); }