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);
        }
Example #2
0
 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);
 }
Example #3
0
        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);
        }
Example #4
0
        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);
        }