コード例 #1
0
        public async Task IntiFlowTransition_WithCorrectModel_MustInitialize()
        {
            //Arrange
            var stateManager  = new MockState().MockStateManager();
            var flowManager   = new ManagerFactory().GetFlowManager(stateManager);
            var flowType      = MockData.GetFlowTypes()[0];
            var approve1State = MockData.GetFlowStates()
                                .ToList().FirstOrDefault(x => x.Name == "Approve1");
            var activeState = MockData.GetFlowStates()
                              .ToList().FirstOrDefault(x => x.Name == "Active");

            var initModel = new InitFlowTransitionModel()
            {
                Name           = "FinalApprove",
                Title          = "FinalApprove",
                SourceId       = approve1State.Id,
                DestinationId  = activeState.Id,
                TransitionType = FlowTransitionTypes.Reject,
                TypeId         = flowType.Id
            };
            //Act
            var act = await flowManager.InitFlowTransitionAsync(initModel);

            //Assert
            LogTestInfo(initModel, act);
            Assert.True(act.Succeeded);
            Assert.NotNull(act.Result);
        }
コード例 #2
0
        public async Task MoveStep_WithCorrectModel_MustHaveMoveAStep()
        {
            //Arrange
            var stateManager      = new MockState().MockStateManager();
            var instance          = MockData.GetFlowInstances().FirstOrDefault();
            var flowManager       = new ManagerFactory().GetFlowManager(stateManager);
            var flowReportManager = new ManagerFactory().GetFlowReportManager(stateManager);
            var existTransitions  = await flowReportManager.GetInstanceTransitionsAsync(instance.Id);

            var targetTransition = existTransitions.Result.FirstOrDefault();

            var moveModel = new MoveModel()
            {
                IdentityId   = "1",
                InstanceId   = instance.Id,
                Payload      = string.Empty,
                TransitionId = targetTransition.Id,
                Comment      = "Sure, It's ok.",
            };
            //Act
            var act = await flowManager.MoveAsync(moveModel);

            var steps = await flowReportManager.GetInstanceStepsAsync(instance.Id);

            var currentStep = steps.Result.FirstOrDefault(x => x.IsCurrent);

            //Assert
            LogTestInfo(moveModel, act);
            Assert.True(act.Succeeded);
            Assert.NotNull(act.Result);
            Assert.Equal(moveModel.TransitionId, currentStep.TransitionId);
        }
コード例 #3
0
        public async Task FlowInstance_CorrectCreation_MustHaveInitializingStep()
        {
            //Arrange
            var stateManager = new MockState().MockStateManager();
            var flowManager  = new ManagerFactory().GetFlowManager(stateManager);
            var initModel    = new InitFlowModel()
            {
                TypeId        = MockData.GetFlowTypes()[0].Id,
                AccessPhrase  = "secure",
                InitializerId = "1",
                Payload       = "null",
                Title         = "Hire devlnull"
            };
            //Act
            var act = await flowManager.InitFlowAsync(initModel);

            var flowReportManager = new ManagerFactory().GetFlowReportManager(stateManager);
            var steps             = await flowReportManager.GetInstanceStepsAsync(act.Result.Id);

            //Assert
            LogTestInfo(initModel, act);
            Assert.True(act.Succeeded);
            Assert.NotNull(act.Result);
            Assert.NotEmpty(steps.Result);
        }
コード例 #4
0
        public async Task ActionExemple()
        {
            IStore store = new Store();

            var state = new MockState();

            var getters = new MockGetters();

            var mutation = new MockMutation();

            var actions = new MockActions();

            store.Register(state)
            .Register(getters)
            .Register(mutation)
            .Register(actions);

            store.Commit("Increment", 50);

            var ret1 = await store.Dispatch <int, int>("Increment", 15);

            //await store.Dispatch("Teste", "IncrementTeste");

            //var ret2 = await store.Dispatch<int>("Teste", "Increment");

            var ret = store.Getters <int>("GetValue");

            Assert.Equal(100, ret);
        }
コード例 #5
0
        public async Task GetPagedFlowTypesByEntityType_WithMockEntityType_MustReturnBindType()
        {
            //Arrange
            var stateManager  = new MockState().MockStateManager();
            var reportManager = new ManagerFactory().GetFlowReportManager(stateManager);
            var targetTypes   = MockData.GetFlowTypes()
                                .Where(x => x.EntityType.Equals(typeof(MockState).FullName))
                                .ToArray();
            //Act

            var act = await reportManager.GetPagedTypesByEntityAsync(
                typeof(MockState),
                new PageOptions()
            {
                Limit  = 10,
                Offset = 0
            });

            //Assert
            LogTestInfo(result: act);
            Assert.True(act.Succeeded);
            Assert.NotNull(act.Result);
            Assert.Contains(act.Result.Items, x => x.States.Any());
            Assert.Equal(targetTypes.Length, act.Result.Count);
        }
コード例 #6
0
        public async Task IntiFlowTransition_WithExistingTransition_MustInitializeAndWarn()
        {
            //Arrange
            var stateManager = new MockState().MockStateManager();
            var flowManager  = new ManagerFactory().GetFlowManager(stateManager);
            var flowType     = MockData.GetFlowTypes()[0];
            var reviewState  = MockData.GetFlowStates()
                               .ToList().FirstOrDefault(x => x.Name == "Review");
            var closeState = MockData.GetFlowStates()
                             .ToList().FirstOrDefault(x => x.Name == "Close");

            var initModel = new InitFlowTransitionModel()
            {
                Name           = "RejectTest",
                Title          = "RejectTest",
                SourceId       = reviewState.Id,
                DestinationId  = closeState.Id,
                TransitionType = FlowTransitionTypes.Reject,
                TypeId         = flowType.Id
            };
            //Act
            var act = await flowManager.InitFlowTransitionAsync(initModel);

            //Assert
            LogTestInfo(initModel, act);
            Assert.True(act.Succeeded);
            Assert.NotEmpty(act.Warns);
        }
コード例 #7
0
        public async Task MoveStep_WithIncorrectTarget_MustNotMove()
        {
            //Arrange
            var stateManager      = new MockState().MockStateManager();
            var instance          = MockData.GetFlowInstances().FirstOrDefault();
            var flowManager       = new ManagerFactory().GetFlowManager(stateManager);
            var flowReportManager = new ManagerFactory().GetFlowReportManager(stateManager);
            var existTransitions  = await flowReportManager.GetInstanceTransitionsAsync(instance.Id);

            var transitions      = existTransitions.Result.Select(x => x.Id).ToList();
            var targetTransition = MockData.GetFlowTransitions()
                                   .FirstOrDefault(x => transitions.Contains(x.Id) == false);

            var moveModel = new MoveModel()
            {
                IdentityId   = "1",
                InstanceId   = instance.Id,
                Payload      = string.Empty,
                TransitionId = targetTransition.Id,
                Comment      = "Sure, It's ok.",
            };
            //Act
            var act = await flowManager.MoveAsync(moveModel);

            //Assert
            LogTestInfo(moveModel, act);
            Assert.False(act.Succeeded);
            Assert.NotEmpty(act.Errors);
        }
コード例 #8
0
ファイル: Dispose.cs プロジェクト: vipwan/Fluxor
 public Dispose()
 {
     MockState1 = new MockState <int>();
     MockState2 = new MockState <int>();
     Subject    = new FluxorLayoutWithStateProperties {
         State1 = MockState1,
         State2 = MockState2
     };
 }
コード例 #9
0
ファイル: OnInitialized.cs プロジェクト: vipwan/Fluxor
 public OnInitialized()
 {
     MockState1 = new MockState <int>();
     MockState2 = new MockState <int>();
     Subject    = new FluxorLayoutWithStateProperties {
         State1 = MockState1,
         State2 = MockState2
     };
 }
コード例 #10
0
ファイル: PgServerMock.cs プロジェクト: Octonica/npgsql
        internal async Task Startup(MockState state)
        {
            // Read and skip the startup message
            await SkipMessage();

            WriteAuthenticateOk();
            WriteParameterStatuses(new Dictionary <string, string>
            {
                { "server_version", "13" },
                { "server_encoding", "UTF8" },
                { "client_encoding", "UTF8" },
                { "application_name", "Mock" },
                { "is_superuser", "on" },
                { "session_authorization", "foo" },
                { "DateStyle", "ISO, MDY" },
                { "IntervalStyle", "postgres" },
                { "TimeZone", "UTC" },
                { "integer_datetimes", "on" },
                { "standard_conforming_strings", "on" }
            });
            WriteBackendKeyData(ProcessId, BackendSecret);
            WriteReadyForQuery();
            await FlushAsync();

            if (state != MockState.MultipleHostsDisabled)
            {
                var isStandby           = state == MockState.Standby;
                var transactionReadOnly = state == MockState.Standby || state == MockState.PrimaryReadOnly
                    ? "on"
                    : "off";

                // Write the response on the mock is primary/standby/read-write/read-only
                await ExpectMessages(
                    FrontendMessageCode.Parse,
                    FrontendMessageCode.Bind,
                    FrontendMessageCode.Describe,
                    FrontendMessageCode.Execute,
                    FrontendMessageCode.Parse,
                    FrontendMessageCode.Bind,
                    FrontendMessageCode.Describe,
                    FrontendMessageCode.Execute,
                    FrontendMessageCode.Sync);

                await WriteParseComplete()
                .WriteBindComplete()
                .WriteRowDescription(new FieldDescription(PostgresTypeOIDs.Bool))
                .WriteDataRow(BitConverter.GetBytes(isStandby))
                .WriteCommandComplete()
                .WriteParseComplete()
                .WriteBindComplete()
                .WriteRowDescription(new FieldDescription(PostgresTypeOIDs.Text))
                .WriteDataRow(Encoding.ASCII.GetBytes(transactionReadOnly))
                .WriteCommandComplete()
                .WriteReadyForQuery()
                .FlushAsync();
            }
        }
コード例 #11
0
 public DisposeTests()
 {
     MockState1 = new MockState <int>();
     MockState2 = new MockState <int>();
     Subject    = new FluxorComponentWithStateProperties
     {
         State1 = MockState1,
         State2 = MockState2
     };
 }
コード例 #12
0
 public OnInitializedTests()
 {
     MockState1 = new MockState <int>();
     MockState2 = new MockState <int>();
     Subject    = new FluxorComponentWithStateProperties
     {
         State1 = MockState1,
         State2 = MockState2
     };
 }
コード例 #13
0
        public async Task InMemoryStateManager_Initializer_CanGetFlowSet()
        {
            //Arrange
            var stateManager = new MockState().MockStateManager();
            //Act
            var flowSet = stateManager.GetFlowSet <FlowInstance>();
            //Assert
            var result = await flowSet.GetAllAsync();

            Assert.NotNull(result);
        }
コード例 #14
0
        public async Task GetFlowStateById_WithWrongId_MustNotReturnState()
        {
            //Arrange
            var stateManager  = new MockState().MockStateManager();
            var reportManager = new ManagerFactory().GetFlowReportManager(stateManager);
            var id            = Guid.NewGuid();
            //Act
            var act = await reportManager.GetStateByIdAsync(id);

            //Assert
            Assert.False(act.Succeeded);
            Assert.Null(act.Result);
            LogTestInfo(new { Request = id }, act);
        }
コード例 #15
0
        public async Task GetFlowInstance_WithWrongExp_MustNotReturnInstance()
        {
            //Arrange
            var stateManager  = new MockState().MockStateManager();
            var reportManager = new ManagerFactory().GetFlowReportManager(stateManager);
            var id            = Guid.NewGuid();
            //Act
            var act = await reportManager.GetInstanceAsync(x => x.Id == id);

            //Assert
            LogTestInfo(new { Request = id }, act);
            Assert.False(act.Succeeded);
            Assert.Null(act.Result);
        }
コード例 #16
0
        public async Task GetFlowStateById_WithCorrectId_MustReturnState()
        {
            //Arrange
            var stateManager  = new MockState().MockStateManager();
            var reportManager = new ManagerFactory().GetFlowReportManager(stateManager);
            var targetState   = MockData.GetFlowStates()[0];
            //Act

            var act = await reportManager.GetStateByIdAsync(targetState.Id);

            //Assert
            Assert.True(act.Succeeded);
            Assert.NotNull(act.Result);
            LogTestInfo(new { Request = targetState.Id }, act);
        }
コード例 #17
0
        public async Task GetFlowState_WithWrongExp_MustNotReturnState()
        {
            //Arrange
            var stateManager  = new MockState().MockStateManager();
            var reportManager = new ManagerFactory().GetFlowReportManager(stateManager);
            var targetState   = MockData.GetFlowStates()[0];
            //Act
            var act = await reportManager
                      .GetStateAsync(x => x.Name == Guid.NewGuid().ToString());

            //Assert
            Assert.False(act.Succeeded);
            Assert.Null(act.Result);
            LogTestInfo(new { Request = targetState.Id }, act);
        }
コード例 #18
0
        public async Task GetFlowInstance_WithCorrectExp_MustReturnInstance()
        {
            //Arrange
            var stateManager   = new MockState().MockStateManager();
            var reportManager  = new ManagerFactory().GetFlowReportManager(stateManager);
            var targetInstance = MockData.GetFlowInstances()[0];
            //Act

            var act = await reportManager.GetInstanceAsync(x => x.Id.Equals(targetInstance.Id));

            //Assert
            LogTestInfo(new { Request = targetInstance.Id }, act);
            Assert.True(act.Succeeded);
            Assert.NotNull(act.Result);
        }
コード例 #19
0
        public void MutationExemple()
        {
            var store = new Store();

            var state = new MockState();

            var mutation = new MockMutation();

            store.Register(state).
            Register(mutation);

            store.Commit("Increment", 50);


            Assert.Equal(50, state.Value);
        }
コード例 #20
0
        public async Task GetFlowTypes_WithNoArgs_MustReturnAllTypes()
        {
            //Arrange
            var stateManager  = new MockState().MockStateManager();
            var reportManager = new ManagerFactory().GetFlowReportManager(stateManager);
            var targetTypes   = MockData.GetFlowTypes();
            //Act

            var act = await reportManager.GetTypesAsync();

            //Assert
            LogTestInfo(result: act);
            Assert.True(act.Succeeded);
            Assert.NotNull(act.Result);
            Assert.Contains(act.Result, x => x.States.Any());
            Assert.Equal(targetTypes.Length, act.Result.Count());
        }
コード例 #21
0
        public async Task IntiFlowType_WithFillName_InitializeNewType()
        {
            //Arrange
            var stateManager = new MockState().MockStateManager();
            var flowManager  = new ManagerFactory().GetFlowManager(stateManager);
            var initModel    = new InitFlowTypeModel()
            {
                Name = "Test",
                EntityPayloadType = typeof(FlowTypeInitializersTests),
                EntityType        = typeof(FlowTypeInitializersTests),
            };
            //Act

            var act = await flowManager.InitFlowTypeAsync(initModel);

            //Assert
            LogTestInfo(initModel, act);
            Assert.True(act.Succeeded);
        }
コード例 #22
0
        public async Task IntiFlowType_EmptyModel_MustError()
        {
            //Arrange
            var stateManager = new MockState().MockStateManager();
            var flowManager  = new ManagerFactory().GetFlowManager(stateManager);
            var initModel    = new InitFlowTypeModel()
            {
                Name = null,
                EntityPayloadType = null,
                EntityType        = null,
            };
            //Act

            var act = await flowManager.InitFlowTypeAsync(initModel);

            //Assert
            LogTestInfo(initModel, act);
            Assert.False(act.Succeeded);
        }
コード例 #23
0
        internal Task SendMockState(MockState state)
        {
            var isStandby           = state == MockState.Standby;
            var transactionReadOnly = state == MockState.Standby || state == MockState.PrimaryReadOnly
                ? "on"
                : "off";

            return(WriteParseComplete()
                   .WriteBindComplete()
                   .WriteRowDescription(new FieldDescription(PostgresTypeOIDs.Bool))
                   .WriteDataRow(BitConverter.GetBytes(isStandby))
                   .WriteCommandComplete()
                   .WriteParseComplete()
                   .WriteBindComplete()
                   .WriteRowDescription(new FieldDescription(PostgresTypeOIDs.Text))
                   .WriteDataRow(Encoding.ASCII.GetBytes(transactionReadOnly))
                   .WriteCommandComplete()
                   .WriteReadyForQuery()
                   .FlushAsync());
        }
コード例 #24
0
        public async Task IntiFlowType_DuplicateName_MustError()
        {
            //Arrange
            var stateManager = new MockState().MockStateManager();
            var flowManager  = new ManagerFactory().GetFlowManager(stateManager);
            var existType    = MockData.GetFlowTypes()[0];
            var initModel    = new InitFlowTypeModel()
            {
                Name = existType.Name,
                EntityPayloadType = typeof(FlowTypeInitializersTests),
                EntityType        = typeof(FlowTypeInitializersTests),
            };
            //Act

            var act = await flowManager.InitFlowTypeAsync(initModel);

            //Assert
            LogTestInfo(initModel, act);
            Assert.False(act.Succeeded);
        }
コード例 #25
0
        internal async Task Startup(bool expectClusterStateQuery, MockState state)
        {
            // Read and skip the startup message
            await SkipMessage();

            WriteAuthenticateOk();
            WriteParameterStatuses(new Dictionary <string, string>
            {
                { "server_version", "13" },
                { "server_encoding", "UTF8" },
                { "client_encoding", "UTF8" },
                { "application_name", "Mock" },
                { "is_superuser", "on" },
                { "session_authorization", "foo" },
                { "DateStyle", "ISO, MDY" },
                { "IntervalStyle", "postgres" },
                { "TimeZone", "UTC" },
                { "integer_datetimes", "on" },
                { "standard_conforming_strings", "on" }
            });
            WriteBackendKeyData(ProcessId, BackendSecret);
            WriteReadyForQuery();
            await FlushAsync();

            if (expectClusterStateQuery)
            {
                // Write the response on the mock is primary/standby/read-write/read-only
                await ExpectMessages(
                    FrontendMessageCode.Parse,
                    FrontendMessageCode.Bind,
                    FrontendMessageCode.Describe,
                    FrontendMessageCode.Execute,
                    FrontendMessageCode.Parse,
                    FrontendMessageCode.Bind,
                    FrontendMessageCode.Describe,
                    FrontendMessageCode.Execute,
                    FrontendMessageCode.Sync);

                await SendMockState(state);
            }
        }
コード例 #26
0
        public async Task IntiFlowInstance_EmptyPayload_MustWarn()
        {
            //Arrange
            var stateManager = new MockState().MockStateManager();
            var flowManager  = new ManagerFactory().GetFlowManager(stateManager);
            var initModel    = new InitFlowModel()
            {
                TypeId        = MockData.GetFlowTypes()[0].Id,
                AccessPhrase  = "secure",
                InitializerId = "1",
                Payload       = null,
                Title         = "Hire devlnull"
            };
            //Act
            var act = await flowManager.InitFlowAsync(initModel);

            //Assert
            LogTestInfo(initModel, act);
            Assert.True(act.Warned);
            Assert.NotEmpty(act.Warns);
        }
コード例 #27
0
        public async Task IntiFlowState_WithCorrectModel_InitializeNewState()
        {
            //Arrange
            var stateManager = new MockState().MockStateManager();
            var flowManager  = new ManagerFactory().GetFlowManager(stateManager);
            var flowType     = MockData.GetFlowTypes()[0];
            var initModel    = new InitFlowStateModel()
            {
                Name      = "Test",
                Title     = "Test Title",
                Tag       = "Test",
                StateType = FlowStateTypes.Purposed,
                TypeId    = flowType.Id,
            };
            //Act

            var act = await flowManager.InitFlowStateAsync(initModel);

            //Assert
            LogTestInfo(initModel, act);
            Assert.True(act.Succeeded);
        }
コード例 #28
0
        public async Task IntiFlowState_WithEmptyName_MustError()
        {
            //Arrange
            var stateManager = new MockState().MockStateManager();
            var flowManager  = new ManagerFactory().GetFlowManager(stateManager);
            var initModel    = new InitFlowStateModel()
            {
                Name      = string.Empty,
                Title     = "Test Title",
                Tag       = "Test",
                StateType = FlowStateTypes.Purposed,
                TypeId    = Guid.NewGuid(),
            };
            //Act

            var act = await flowManager.InitFlowStateAsync(initModel);

            //Assert
            LogTestInfo(initModel, act);
            Assert.False(act.Succeeded);
            Assert.NotEmpty(act.Errors);
        }
コード例 #29
0
        public void GettersExemple()
        {
            IStore store = new Store();

            var state = new MockState();

            var getters = new MockGetters();

            var mutation = new MockMutation();

            store.Register(state)
            .Register(getters)
            .Register(mutation);


            store.WhenAny <MockState, int>(x => x.Value, HandleValueChanged);

            store.Commit("Increment", 15);

            var ret = store.Getters <int>("GetValue");

            Assert.Equal(15, ret);
        }
コード例 #30
0
 public void Increment(MockState state, int payload)
 {
     state.Value += payload;
 }