public void Repo_Should_Restitute_Aggregate_At_the_Last_Save_State() { // Arrange var mre = new ManualResetEvent(false); ParamScenarioTest _param = GetArg(); void Simulate_Something_ElseWhere() { var aggregate = Start_Process(_param, () => _repo.GetNewAggregate()); _repo.Save(aggregate); mre.Set(); } new Thread(Simulate_Something_ElseWhere).Start(); mre.WaitOne(); // Act var restoreAggregate = _repo.GetById(1); // Assert bool CriteriaOnRunningservice(IEntity <int, int> ent) => ent is FirstSubProcess && ((FirstSubProcess)ent).RunningService == _param.ExpectedRunningService; ((IEventSourced <int>)restoreAggregate).UncommittedEvents.Count().Should().Be(0); var entity = restoreAggregate.FindEntityByCriteria(CriteriaOnRunningservice); }
public static void ShouldBeAsExpected(this IProcessElement processElement, ParamScenarioTest param) { processElement.Should().NotBeNull(); processElement.RunningService.Should().Be(param.ExpectedRunningService); processElement.Start.Should().Be(param.ExpectedDateStarted); processElement.Stop.Should().Be(param.ExpectedDateStoped); processElement.State.Should().Be(param.ExpectedState); }
public static Action Should_Throw_Due_To_Bad_StreamId(ParamScenarioTest paramScenarioTest, Func <InputAggregate> aggregateFactory) { var aggregate = aggregateFactory(); var processElemCreation = new FirstSubProcess(paramScenarioTest.ProcessName, paramScenarioTest.ExpectedProcessId, paramScenarioTest.ExpectedDateCreated); aggregate.RaiseEvent(new InputAggregateCreated(paramScenarioTest.ExpectedStreamId + 1)); Action shouldThrow = () => aggregate.RaiseEvent(new ProcessElementEntityCreated(paramScenarioTest.ExpectedStreamId, processElemCreation)); return(shouldThrow); }
public static InputAggregate Start_Process(ParamScenarioTest paramScenarioTest, Func <InputAggregate> aggregateFactory) { var aggregate = aggregateFactory(); var processElemCreation = new FirstSubProcess(paramScenarioTest.ProcessName, paramScenarioTest.ExpectedProcessId, paramScenarioTest.ExpectedDateCreated); aggregate.RaiseEvent(new InputAggregateCreated(paramScenarioTest.ExpectedStreamId)); aggregate.RaiseEvent(new ProcessElementEntityCreated(paramScenarioTest.ExpectedStreamId, processElemCreation)); aggregate.RaiseEvent(new ProcessElemStarted(paramScenarioTest.ExpectedStreamId, paramScenarioTest.ExpectedProcessId, paramScenarioTest.ExpectedRunningService, paramScenarioTest.ExpectedDateStarted)); return(aggregate); }