public void Calling_Build_on_an_empty_StateManagerBuilder_should_throw()
        {
            var chain = new StateManagerBuilder();

              chain.Invoking(c => c.Build())
               .ShouldThrow<Exception>();
        }
Example #2
0
        public CollectionModelPackage(IDocumentDatabase database, CollectionModel model, CollectionModelSettings settings)
        {
            Verify.IsNotNull(nameof(database), database);
            Verify.IsNotNull(nameof(model), model);
            Verify.IsNotNull(nameof(settings), settings);
            Verify.IsValid(nameof(model), model);

            Database = database;
            Model    = model;
            Settings = settings;

            StateManagerBuilder builder = new StateManagerBuilder();

            if (Settings.Remove || Settings.ReCreate)
            {
                builder.Add(new RemoveCollectionState(this));
            }

            if (!Settings.Remove)
            {
                builder.Add(new CreateCollectionState(this));
                builder.Add(new RemoveIndexesNotInSource(this));

                foreach (var item in Model.Indexes ?? Enumerable.Empty <CollectionIndex>())
                {
                    builder.Add(new CreateIndexState(this, item));
                }
            }

            _stateManager = builder.Build();
        }
Example #3
0
        public async Task FailureStateFlowTest()
        {
            IStateManager workPlan = new StateManagerBuilder()
                                     .Add(new StateItemFailure())
                                     .Build();

            bool result = await workPlan.Set(_workContext);

            result.Should().BeFalse();
            workPlan.StateItems.Count.Should().Be(1);
        }
Example #4
0
        public async Task SimpleNotifyTest()
        {
            IStateManager workPlan = new StateManagerBuilder()
                                     .Add(new StateItemSuccess())
                                     .Build();

            bool result = await workPlan.Set(_workContext);

            result.Should().BeTrue();
            workPlan.StateItems.Count.Should().Be(1);
        }
Example #5
0
        public async Task SuccessTestStateFlow()
        {
            IStateManager workPlan = new StateManagerBuilder()
                                     .Add(new StateItemAlreadyPresent())
                                     .Build();

            bool result = await workPlan.Test(_workContext);

            result.Should().BeTrue();
            workPlan.StateItems.Count.Should().Be(1);
        }
        public void Calling_Build_should_create_states_throw()
        {
            var firstState = new Mock<State1>();
              var secondState = new Mock<State2>();

              var chain = new StateManagerBuilder()
            .RegisterState(() => firstState.Object)
            .RegisterState(() => secondState.Object)
            .Build();

              firstState.Verify();
              secondState.Verify();
        }
        public void ChangingShouldRaiseEvent()
        {
            var firstState = new Mock<State1>();
              var secondState = new Mock<State2>();

              var stateManager = new StateManagerBuilder()
            .RegisterState(() => firstState.Object)
            .RegisterState(() => secondState.Object)
            .Build();

              stateManager.MonitorEvents();
              stateManager.ChangeState<State1>();

              stateManager.ShouldRaise("StateChanged");
        }
        public void ChangingToInitialState()
        {
            var firstState = new Mock<State1>();
              var secondState = new Mock<State2>();

              var stateManager = new StateManagerBuilder()
            .RegisterState(() => firstState.Object)
            .RegisterState(() => secondState.Object)
            .Build();

              stateManager.ChangeState<State1>();

              firstState.Verify(m => m.OnEnterState(It.IsAny<object>()), Times.Once());
              firstState.Verify(m => m.OnExitState(), Times.Never());
              secondState.Verify(m => m.OnEnterState(It.IsAny<object>()), Times.Never());
              secondState.Verify(m => m.OnExitState(), Times.Never());
        }
Example #9
0
        public async Task FailureStateFlowTest()
        {
            IStateManager workPlan = new StateManagerBuilder()
                                     .Add(new StateItemFailure())
                                     .Build();

            StateContext stateContext = await workPlan.RunAsync(_workContext);

            stateContext.Should().NotBeNull();

            const int count = 0;

            stateContext.WorkItemIndex.Should().Be(count);
            workPlan.IsRunning.Should().BeFalse();
            workPlan.StateItems.Count.Should().Be(1);
            workPlan.IsSuccessful.Should().BeFalse();
        }
Example #10
0
        public async Task SuccessTestStateFlow()
        {
            IStateManager workPlan = new StateManagerBuilder()
                                     .Add(new StateItemAlreadyPresent())
                                     .Build();

            StateContext stateContext = await workPlan.TestAsync(_workContext);

            stateContext.Should().NotBeNull();

            const int count = 1;

            stateContext.WorkItemIndex.Should().Be(count);
            workPlan.IsRunning.Should().BeFalse();
            workPlan.StateItems.Count.Should().Be(count);
            workPlan.IsSuccessful.Should().BeTrue();
        }
Example #11
0
        public async Task SimpleNotifyTest()
        {
            bool pass = false;

            IStateManager workPlan = new StateManagerBuilder()
                                     .Add(new StateItemSuccess())
                                     .Set(o => o.If(x => x.ActionType == StateNotify.ActionTypes.Set, x => pass = true, x => pass = false))
                                     .Build();

            StateContext stateContext = await workPlan.RunAsync(_workContext);

            stateContext.Should().NotBeNull();

            const int count = 1;

            stateContext.WorkItemIndex.Should().Be(count);
            pass.Should().BeTrue();
        }