public void Calling_Build_on_an_empty_StateManagerBuilder_should_throw() { var chain = new StateManagerBuilder(); chain.Invoking(c => c.Build()) .ShouldThrow<Exception>(); }
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(); }
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); }
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); }
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()); }
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(); }
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(); }
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(); }