public async Task GetInitialState_CurrentFlowIsSecondFlow_ThrowsException()
        {
            //Arrange
            var initialStateContext = new InitialStateContext(
                Substitute.For <IMediator>(),
                Substitute.For <IProvisioningStateFactory>());

            var nextStateContext = new NextStateContext(
                Substitute.For <IMediator>(),
                Substitute.For <IProvisioningStateFactory>(),
                Substitute.For <IProvisioningState>());

            var fakeProvisioningStateFlow1 = Substitute.For <IProvisioningStateFlow>();

            fakeProvisioningStateFlow1
            .GetNextStateAsync(nextStateContext)
            .Returns((IProvisioningState)null);

            var fakeProvisioningStateFlow2 = Substitute.For <IProvisioningStateFlow>();

            var flow = new AggregateProvisioningStateFlow(
                fakeProvisioningStateFlow1,
                fakeProvisioningStateFlow2);

            await flow.GetNextStateAsync(nextStateContext);

            //Act
            var exception = await Assert.ThrowsExceptionAsync <InvalidOperationException>(async() =>
                                                                                          await flow.GetInitialStateAsync(initialStateContext));

            //Assert
            Assert.IsNotNull(exception);
        }
        public async Task GetNextState_CurrentFlowIsFirstFlowAndFinished_ReturnsInitialStateOfSecondFlow()
        {
            //Arrange
            var nextStateContext = new NextStateContext(
                Substitute.For <IMediator>(),
                Substitute.For <IProvisioningStateFactory>(),
                Substitute.For <IProvisioningState>());

            var fakeProvisioningStateFlow1 = Substitute.For <IProvisioningStateFlow>();

            fakeProvisioningStateFlow1
            .GetNextStateAsync(nextStateContext)
            .Returns((IProvisioningState)null);

            var fakeProvisioningStateFlow2 = Substitute.For <IProvisioningStateFlow>();

            var fakeInitialSecondFlowState = Substitute.For <IProvisioningState>();

            fakeProvisioningStateFlow2
            .GetInitialStateAsync(Arg.Any <InitialStateContext>())
            .Returns(fakeInitialSecondFlowState);

            var flow = new AggregateProvisioningStateFlow(
                fakeProvisioningStateFlow1,
                fakeProvisioningStateFlow2);

            //Act
            var nextState = await flow.GetNextStateAsync(nextStateContext);

            //Assert
            Assert.AreSame(fakeInitialSecondFlowState, nextState);
        }
        public async Task GetInitialState_CurrentFlowIsFirstFlow_ReturnsInitialStateOfFirstFlow()
        {
            //Arrange
            var context = new InitialStateContext(
                Substitute.For <IMediator>(),
                Substitute.For <IProvisioningStateFactory>());

            var fakeProvisioningStateFlow = Substitute.For <IProvisioningStateFlow>();

            var fakeInitialState = await fakeProvisioningStateFlow.GetInitialStateAsync(context);

            var flow = new AggregateProvisioningStateFlow(fakeProvisioningStateFlow);

            //Act
            var initialState = await flow.GetInitialStateAsync(context);

            //Assert
            Assert.AreSame(fakeInitialState, initialState);
        }
        public async Task GetNextState_CurrentFlowIsFirstFlowAndNotFinished_ReturnsNextStateOfFirstFlow()
        {
            //Arrange
            var nextStateContext = new NextStateContext(
                Substitute.For <IMediator>(),
                Substitute.For <IProvisioningStateFactory>(),
                Substitute.For <IProvisioningState>());

            var fakeProvisioningStateFlow1 = Substitute.For <IProvisioningStateFlow>();
            var fakeProvisioningStateFlow2 = Substitute.For <IProvisioningStateFlow>();

            var fakeNextState = await fakeProvisioningStateFlow1.GetNextStateAsync(nextStateContext);

            var flow = new AggregateProvisioningStateFlow(
                fakeProvisioningStateFlow1,
                fakeProvisioningStateFlow2);

            //Act
            var nextState = await flow.GetNextStateAsync(nextStateContext);

            //Assert
            Assert.AreSame(fakeNextState, nextState);
        }
        public async Task GetNextState_CurrentFlowIsFinalFlowAndFinished_ReturnsNull()
        {
            //Arrange
            var nextStateContext = new NextStateContext(
                Substitute.For <IMediator>(),
                Substitute.For <IProvisioningStateFactory>(),
                Substitute.For <IProvisioningState>());

            var fakeProvisioningStateFlow1 = Substitute.For <IProvisioningStateFlow>();

            fakeProvisioningStateFlow1
            .GetNextStateAsync(nextStateContext)
            .Returns((IProvisioningState)null);

            var flow = new AggregateProvisioningStateFlow(
                fakeProvisioningStateFlow1);

            //Act
            var nextState = await flow.GetNextStateAsync(nextStateContext);

            //Assert
            Assert.IsNull(nextState);
        }
Example #6
0
 private static ProvisionInstanceStateFlow GetProvisionInstanceStateFlow(
     AggregateProvisioningStateFlow flow)
 {
     return((ProvisionInstanceStateFlow)flow.Flows[0]);
 }