public virtual void SetUp()
 {
     _projectionDataService = _projectionDataService.Fake();
     _syncLockFactory       = _syncLockFactory.Fake();
     _taskScheduler         = TaskScheduler.FromCurrentSynchronizationContext();
     _sut = new UpdatingStateFactory <Department>(_projectionDataService, _syncLockFactory, _taskScheduler);
 }
 public virtual void SetUp()
 {
     _projectionSystem      = _projectionSystem.Fake();
     _projectionDataService = _projectionDataService.Fake();
     _syncLockFactory       = _syncLockFactory.Fake();
     _sut = new CreatingState <Department>(_projectionSystem, _projectionDataService, _syncLockFactory);
 }
 public virtual void SetUp()
 {
     _projectionSystem      = _projectionSystem.Fake();
     _projectionDataService = _projectionDataService.Fake();
     _syncLockFactory       = _syncLockFactory.Fake();
     _taskScheduler         = new DeterministicTaskScheduler();
     _sut = new UpdatingState <Department>(_projectionSystem, _projectionDataService, _syncLockFactory, _taskScheduler);
 }
Пример #4
0
        public ProjectionSystem(
            IStateTransitionOrchestrator <TItem> stateTransitionOrchestrator,
            IStateFactory <TItem> uninitialisedStateFactory,
            IStateFactory <TItem> creatingStateFactory,
            IStateFactory <TItem> validStateFactory,
            IStateFactory <TItem> expiredStateFactory,
            IStateFactory <TItem> updatingStateFactory,
            ISyncLockFactory getProjectionLockFactory)
        {
            if (stateTransitionOrchestrator == null)
            {
                throw new ArgumentNullException(nameof(stateTransitionOrchestrator));
            }
            if (uninitialisedStateFactory == null)
            {
                throw new ArgumentNullException(nameof(uninitialisedStateFactory));
            }
            if (creatingStateFactory == null)
            {
                throw new ArgumentNullException(nameof(creatingStateFactory));
            }
            if (validStateFactory == null)
            {
                throw new ArgumentNullException(nameof(validStateFactory));
            }
            if (expiredStateFactory == null)
            {
                throw new ArgumentNullException(nameof(expiredStateFactory));
            }
            if (updatingStateFactory == null)
            {
                throw new ArgumentNullException(nameof(updatingStateFactory));
            }
            if (getProjectionLockFactory == null)
            {
                throw new ArgumentNullException(nameof(getProjectionLockFactory));
            }
            _stateTransitionOrchestrator = stateTransitionOrchestrator;
            _creatingState            = creatingStateFactory.Create(this);
            _validState               = validStateFactory.Create(this);
            _expiredState             = expiredStateFactory.Create(this);
            _updatingState            = updatingStateFactory.Create(this);
            _getProjectionLockFactory = getProjectionLockFactory;

            var initialisationTask = _stateTransitionOrchestrator
                                     .TransitionToState(uninitialisedStateFactory.Create(this));

            if (!initialisationTask.IsCompleted)
            {
                initialisationTask.RunSynchronously();
            }
        }
 public CreatingStateFactory(IProjectionDataService <TItem> projectionDataService, ISyncLockFactory syncLockFactory)
 {
     if (projectionDataService == null)
     {
         throw new ArgumentNullException(nameof(projectionDataService));
     }
     if (syncLockFactory == null)
     {
         throw new ArgumentNullException(nameof(syncLockFactory));
     }
     _projectionDataService = projectionDataService;
     _syncLockFactory       = syncLockFactory;
 }
Пример #6
0
 public UpdatingStateFactory(IProjectionDataService <TItem> projectionDataService, ISyncLockFactory syncLockFactory, TaskScheduler taskScheduler)
 {
     if (projectionDataService == null)
     {
         throw new ArgumentNullException(nameof(projectionDataService));
     }
     if (syncLockFactory == null)
     {
         throw new ArgumentNullException(nameof(syncLockFactory));
     }
     if (taskScheduler == null)
     {
         throw new ArgumentNullException(nameof(taskScheduler));
     }
     _projectionDataService = projectionDataService;
     _syncLockFactory       = syncLockFactory;
     _taskScheduler         = taskScheduler;
 }
        public virtual void SetUp()
        {
            _stateTransitionOrchestrator = _stateTransitionOrchestrator.Fake();
            _uninitialisedStateFactory   = _uninitialisedStateFactory.Fake();
            _creatingStateFactory        = _creatingStateFactory.Fake();
            _validStateFactory           = _validStateFactory.Fake();
            _expiredStateFactory         = _expiredStateFactory.Fake();
            _updatingStateFactory        = _updatingStateFactory.Fake();
            _getProjectionLockFactory    = _getProjectionLockFactory.Fake();

            _uninitialisedState = _uninitialisedState.Fake();
            _creatingState      = _creatingState.Fake();
            _validState         = _validState.Fake();
            _expiredState       = _expiredState.Fake();
            _updatingState      = _updatingState.Fake();

            _initialiseStateCall = A.CallTo(() => _stateTransitionOrchestrator.TransitionToState(A <IState <Department> > .That.Matches(state => state.Id == StateId.Uninitialised)));
            _initialiseStateTask = new Task(() => {});
            _initialiseStateCall.Returns(_initialiseStateTask);

            ConfigureStateFactory_ToReturnState(_uninitialisedStateFactory, _uninitialisedState);
            ConfigureStateFactory_ToReturnState(_creatingStateFactory, _creatingState);
            ConfigureStateFactory_ToReturnState(_validStateFactory, _validState);
            ConfigureStateFactory_ToReturnState(_expiredStateFactory, _expiredState);
            ConfigureStateFactory_ToReturnState(_updatingStateFactory, _updatingState);

            ConfigureState_ToHaveStateId(_uninitialisedState, StateId.Uninitialised);
            ConfigureState_ToHaveStateId(_creatingState, StateId.Creating);
            ConfigureState_ToHaveStateId(_validState, StateId.Valid);
            ConfigureState_ToHaveStateId(_expiredState, StateId.Expired);
            ConfigureState_ToHaveStateId(_updatingState, StateId.Updating);

            _sut = new ProjectionSystem <Department>(
                _stateTransitionOrchestrator,
                _uninitialisedStateFactory,
                _creatingStateFactory,
                _validStateFactory,
                _expiredStateFactory,
                _updatingStateFactory,
                _getProjectionLockFactory);
        }