public async Task FutureDomainEvent_envelops_has_unique_id() { _aggregateId = Guid.NewGuid(); var testCommandA = new ScheduleEventInFutureCommand(DateTime.Now.AddSeconds(1), _aggregateId, "test value A"); var testCommandB = new ScheduleEventInFutureCommand(DateTime.Now.AddSeconds(2), _aggregateId, "test value B"); _eventA = await GridNode.Execute(CommandPlan.New(testCommandA, Timeout, Expect.Message <FutureEventOccuredEvent>(e => e.SourceId, testCommandA.AggregateId))); _eventB = await GridNode.Execute(CommandPlan.New(testCommandB, Timeout, Expect.Message <FutureEventOccuredEvent>(e => e.SourceId, testCommandB.AggregateId))); }
public void When_raising_future_event() { _testCommand = new ScheduleEventInFutureCommand(DateTime.Now, Guid.NewGuid(), "test value"); _aggregate = new TestAggregate(_testCommand.AggregateId); _aggregate.ScheduleInFuture(_testCommand.RaiseTime, _testCommand.Value); _futureEventEnvelop = _aggregate.GetEvent <FutureEventScheduledEvent>(); _aggregate.RaiseScheduledEvent(_futureEventEnvelop.Id); _producedEvent = _aggregate.GetEvent <TestDomainEvent>(); _futureEventOccuredEvent = _aggregate.GetEvent <FutureEventOccuredEvent>(); }
public void Raising_several_future_events_for_different_aggregates() { _commandA = new ScheduleEventInFutureCommand(DateTime.Now.AddSeconds(0.5), Guid.NewGuid(), "test value A"); var expectedMessageA = Expect.Message <FutureEventOccuredEvent>(e => e.SourceId, _commandA.AggregateId); var planA = CommandPlan.New(_commandA, expectedMessageA); _commandB = new ScheduleEventInFutureCommand(DateTime.Now.AddSeconds(0.5), Guid.NewGuid(), "test value B"); var expectedMessageB = Expect.Message <FutureEventOccuredEvent>(e => e.SourceId, _commandB.AggregateId); var planB = CommandPlan.New(_commandB, expectedMessageB); var taskA = GridNode.Execute <FutureEventOccuredEvent>(planA).ContinueWith(r => _eventA = r.Result); var taskB = GridNode.Execute <FutureEventOccuredEvent>(planB).ContinueWith(r => _eventB = r.Result); Task.WaitAll(taskA, taskB); }
private void Apply(FutureEventOccuredEvent e) { DeleteFutureEvent(e.FutureEventId); }