Example #1
0
        protected override void BuildDataList()
        {
            BuildShapeAndTestData();
            var decisionActivity = new DsfFlowDecisionActivity();

            scenarioContext.TryGetValue("mode", out Dev2DecisionMode mode);

            var decisionModels =
                scenarioContext.Get <List <Tuple <string, enDecisionType, string, string> > >("decisionModels");
            var dds = new Dev2DecisionStack {
                TheStack = new List <Dev2Decision>(), Mode = mode, TrueArmText = "YES", FalseArmText = "NO"
            };

            foreach (var dm in decisionModels)
            {
                var dev2Decision = new Dev2Decision
                {
                    Col1         = dm.Item1 ?? string.Empty,
                    EvaluationFn = dm.Item2,
                    Col2         = dm.Item3 ?? string.Empty,
                    Col3         = dm.Item4 ?? string.Empty
                };

                dds.AddModelItem(dev2Decision);
            }

            var modelData = dds.ToVBPersistableModel();

            scenarioContext.Add("modelData", modelData);

            decisionActivity.ExpressionText = string.Join("", GlobalConstants.InjectedDecisionHandler, "(\"", modelData,
                                                          "\",", GlobalConstants.InjectedDecisionDataListVariable, ")");

            scenarioContext.TryGetValue("variableList", out List <Tuple <string, string> > variableList);

            if (variableList == null)
            {
                variableList = new List <Tuple <string, string> >();
                scenarioContext.Add("variableList", variableList);
            }


            var multiAssign = new DsfMultiAssignActivity();
            var row         = 1;

            foreach (var variable in variableList)
            {
                multiAssign.FieldsCollection.Add(new ActivityDTO(variable.Item1, variable.Item2, row, true));
                row++;
            }
            var x = new FlowDecision();

            x.Condition   = decisionActivity;
            TestStartNode = new FlowStep
            {
                Action = multiAssign,
                Next   = x
            };
            scenarioContext.Add("activity", decisionActivity);
        }
        public void SequenceActivityFindMissingStrategy_GetActivityFields_WithAssignAndDecision_ReturnsAllVariables()
        {
            //------------Setup for test--------------------------
            var multiAssignActivity = new DsfMultiAssignActivity {
                FieldsCollection = new List <ActivityDTO> {
                    new ActivityDTO("[[AssignRight1]]", "[[AssignLeft1]]", 1), new ActivityDTO("[[AssignRight2]]", "[[AssignLeft2]]", 2)
                }
            };

            var decisionActivity = new DsfFlowDecisionActivity {
                OnErrorVariable = "[[error]]"
            };

            var activity = new DsfSequenceActivity();

            activity.Activities.Add(multiAssignActivity);
            activity.Activities.Add(decisionActivity);

            var fac      = new Dev2FindMissingStrategyFactory();
            var strategy = fac.CreateFindMissingStrategy(enFindMissingType.Sequence);
            //------------Execute Test---------------------------
            var actual = strategy.GetActivityFields(activity);
            //------------Assert Results-------------------------
            var expected = new List <string> {
                "[[AssignRight1]]", "[[AssignLeft1]]", "[[AssignRight2]]", "[[AssignLeft2]]", "[[error]]"
            };

            CollectionAssert.AreEqual(expected, actual);
        }
        protected override void BuildDataList()
        {
            BuildShapeAndTestData();
            var decisionActivity = new DsfFlowDecisionActivity();
            Dev2DecisionMode mode;
            ScenarioContext.Current.TryGetValue("mode", out mode);

            var decisionModels =
                ScenarioContext.Current.Get<List<Tuple<string, enDecisionType, string, string>>>("decisionModels");
            var dds = new Dev2DecisionStack { TheStack = new List<Dev2Decision>(), Mode = mode, TrueArmText = "YES", FalseArmText = "NO" };

            foreach(var dm in decisionModels)
            {
                var dev2Decision = new Dev2Decision
                    {
                        Col1 = dm.Item1 ?? string.Empty,
                        EvaluationFn = dm.Item2,
                        Col2 = dm.Item3 ?? string.Empty,
                        Col3 = dm.Item4 ?? string.Empty
                    };

                dds.AddModelItem(dev2Decision);
            }

            string modelData = dds.ToVBPersistableModel();
            ScenarioContext.Current.Add("modelData", modelData);

            decisionActivity.ExpressionText = string.Join("", GlobalConstants.InjectedDecisionHandler, "(\"", modelData,
                                                          "\",", GlobalConstants.InjectedDecisionDataListVariable, ")");

            List<Tuple<string, string>> variableList;
            ScenarioContext.Current.TryGetValue("variableList", out variableList);

            if(variableList == null)
            {
                variableList = new List<Tuple<string, string>>();
                ScenarioContext.Current.Add("variableList", variableList);
            }


            var multiAssign = new DsfMultiAssignActivity();
            int row = 1;
            foreach(var variable in variableList)
            {
                multiAssign.FieldsCollection.Add(new ActivityDTO(variable.Item1, variable.Item2, row, true));
                row++;
            }
            FlowDecision x = new FlowDecision();
            x.Condition=decisionActivity;
            TestStartNode = new FlowStep
                {
                    Action = multiAssign,
                    Next = x
                };
            ScenarioContext.Current.Add("activity", decisionActivity);
        }
Example #4
0
        public void Workflow_WorkflowNodesForHtml_FlowDecision_HandlingNestedObjects_With_NoFalseArm_ShouldSuccess()
        {
            var dev2DecisionStack = new Dev2DecisionStack
            {
                TheStack = new List <Dev2Decision>
                {
                    new Dev2Decision
                    {
                        Cols1 = new List <DataStorage.WarewolfAtom>
                        {
                            DataStorage.WarewolfAtom.NewDataString("a")
                        }
                    },
                    new Dev2Decision
                    {
                        Cols1 = new List <DataStorage.WarewolfAtom>
                        {
                            DataStorage.WarewolfAtom.NewDataString("a")
                        }
                    }
                },
                DisplayText  = "a",
                FalseArmText = "ErrorArm",
                TrueArmText  = "true Arm",
                Version      = "2",
                Mode         = Dev2DecisionMode.AND
            };

            var jsonSerializer       = new Dev2JsonSerializer();
            var flowDecisionActivity = new DsfFlowDecisionActivity
            {
                ExpressionText = jsonSerializer.Serialize(dev2DecisionStack)
            };

            var flowNodes = new Collection <FlowNode>
            {
                new FlowDecision(flowDecisionActivity)
                {
                    DisplayName = "Decision (sdf)",
                    True        = new FlowStep {
                        Action = new DsfMultiAssignActivity {
                            DisplayName = "Assign (success)"
                        }
                    },
                }
            };

            var sut   = new Workflow(flowNodes);
            var nodes = sut.WorkflowNodesForHtml;

            Assert.AreEqual(1, nodes.Count);
            Assert.AreEqual(1, nodes[0].NextNodes.Count);

            Assert.AreEqual(2, sut.WorkflowNodes.Count);
        }
        public void DsfFlowDecisionActivity_GetState_ReturnsStateVariable()
        {
            //---------------Set up test pack-------------------
            //------------Setup for test--------------------------
            var act = new DsfFlowDecisionActivity();
            //------------Execute Test---------------------------
            var stateItems = act.GetState();

            //------------Assert Results-------------------------
            Assert.AreEqual(0, stateItems.Count());
        }
        public void UniqueIDSame_EmptyAssigns_IsEqual()
        {
            //---------------Set up test pack-------------------
            var decisionActivity = new DsfFlowDecisionActivity();
            var decision         = new Dev2.Activities.DsfDecision(decisionActivity);
            var decision1        = new Dev2.Activities.DsfDecision(decisionActivity);

            //---------------Assert Precondition----------------
            Assert.IsNotNull(decision);
            //---------------Execute Test ----------------------
            var equals = decision.Equals(decision1);

            //---------------Test Result -----------------------
            Assert.IsTrue(equals);//This Id is meaningless
        }
Example #7
0
        public void ConflictModelFactory_GivenDsfDecisionConflictNode_ShouldReturnMergeToolModel()
        {
            //------------Setup for test--------------------------
            var adapter = new Mock <IApplicationAdaptor>();

            adapter.Setup(p => p.TryFindResource(It.IsAny <object>())).Returns(new object());
            CustomContainer.Register(adapter.Object);
            var node = new Mock <IConflictTreeNode>();
            var contextualResource = new Mock <IContextualResourceModel>();
            var dev2DecisionStack  = new Dev2DecisionStack
            {
                TheStack     = new List <Dev2Decision>(),
                TrueArmText  = "a",
                FalseArmText = "a",
                DisplayText  = "a",
                Mode         = Dev2DecisionMode.AND
            };
            var serializer = new Dev2JsonSerializer();
            var serialize  = serializer.Serialize(dev2DecisionStack);
            var condition  = new DsfFlowDecisionActivity
            {
                ExpressionText = serialize
            };
            var value = new DsfDecision(condition)
            {
                Conditions = dev2DecisionStack
            };
            var assignStep = new FlowStep
            {
                Action = value
            };

            node.Setup(p => p.Activity).Returns(value);
            var toolConflictItem = new ToolConflictItem(new ViewModels.Merge.Utils.ConflictRowList(new Mock <IConflictModelFactory>().Object, new Mock <IConflictModelFactory>().Object, new List <ConflictTreeNode>(), new List <ConflictTreeNode>()), ViewModels.Merge.Utils.ConflictRowList.Column.Current);
            //------------Execute Test---------------------------
            var completeConflict = new ConflictModelFactory(toolConflictItem, contextualResource.Object, node.Object);

            //------------Assert Results-------------------------
            Assert.IsNotNull(completeConflict);
            adapter.Verify(p => p.TryFindResource(It.IsAny <object>()));
            var mergeToolModel = completeConflict.CreateModelItem(toolConflictItem, node.Object);

            Assert.AreEqual("a", mergeToolModel.MergeDescription);
            Assert.AreEqual(typeof(DecisionDesignerViewModel).FullName, ((ToolConflictItem)mergeToolModel).ActivityDesignerViewModel.GetType().FullName);
        }
        public void WorkflowHelperCompileExpressionsWithActivityExpectedCompilesExpressionsAddsToCacheThenInvalidate()
        {
            const string ExpressionParams = "(\"\",AmbientDataList)";

            var fsa = new DsfFlowSwitchActivity
            {
                ExpressionText = GlobalConstants.InjectedSwitchDataFetchOld + ExpressionParams
            };
            var fda = new DsfFlowDecisionActivity
            {
                ExpressionText = GlobalConstants.InjectedDecisionHandlerOld + ExpressionParams
            };

            var startNode = new FlowStep {
                Action = new CommentActivityForTest()
            };
            var chart = new Flowchart {
                StartNode = startNode
            };

            chart.Nodes.Add(startNode);
            chart.Nodes.Add(new FlowDecision(fda));
            chart.Nodes.Add(new FlowSwitch <string> {
                Expression = fsa
            });


            var workflow = new DynamicActivity
            {
                Implementation = () => chart
            };
            var guid = Guid.NewGuid();

            new WorkflowHelper().CompileExpressions(workflow, guid);

            // No exception thrown means compilation worked

            var compiledExpressionRoot = CompiledExpressionInvoker.GetCompiledExpressionRootForImplementation(workflow) as ICompiledExpressionRoot;

            Assert.AreEqual(GlobalConstants.Resultscache.Count, 1);
            GlobalConstants.InvalidateCache(guid);
            Assert.AreEqual(GlobalConstants.Resultscache.Count, 0);
            Assert.IsNotNull(compiledExpressionRoot);
        }
        public void SequenceActivityFindMissingStrategy_GetActivityFields_WithAssignAndDecision_ReturnsAllVariables()
        {
            //------------Setup for test--------------------------
            DsfMultiAssignActivity multiAssignActivity = new DsfMultiAssignActivity { FieldsCollection = new List<ActivityDTO> { new ActivityDTO("[[AssignRight1]]", "[[AssignLeft1]]", 1), new ActivityDTO("[[AssignRight2]]", "[[AssignLeft2]]", 2) } };

            DsfFlowDecisionActivity decisionActivity = new DsfFlowDecisionActivity { OnErrorVariable = "[[error]]" };

            DsfSequenceActivity activity = new DsfSequenceActivity();
            activity.Activities.Add(multiAssignActivity);
            activity.Activities.Add(decisionActivity);

            Dev2FindMissingStrategyFactory fac = new Dev2FindMissingStrategyFactory();
            IFindMissingStrategy strategy = fac.CreateFindMissingStrategy(enFindMissingType.Sequence);
            //------------Execute Test---------------------------
            List<string> actual = strategy.GetActivityFields(activity);
            //------------Assert Results-------------------------
            List<string> expected = new List<string> { "[[AssignRight1]]", "[[AssignLeft1]]", "[[AssignRight2]]", "[[AssignLeft2]]", "[[error]]" };
            CollectionAssert.AreEqual(expected, actual);
        }
Example #10
0
        public void WorkflowHelperCompileExpressionsWithActivityExpectedFixesExpressions()
        {
            const string ExpressionParams = "(\"\",AmbientDataList)";

            var fsa = new DsfFlowSwitchActivity
            {
                ExpressionText = GlobalConstants.InjectedSwitchDataFetchOld + ExpressionParams
            };
            var fda = new DsfFlowDecisionActivity
            {
                ExpressionText = GlobalConstants.InjectedDecisionHandlerOld + ExpressionParams
            };
            var fdv = new VisualBasicValue <Boolean>(GlobalConstants.InjectedDecisionHandlerOld + ExpressionParams);
            var fsv = new VisualBasicValue <string>(GlobalConstants.InjectedSwitchDataFetchOld + ExpressionParams);


            var startNode = new FlowStep {
                Action = new CommentActivityForTest()
            };
            var chart = new Flowchart {
                StartNode = startNode
            };

            chart.Nodes.Add(startNode);
            chart.Nodes.Add(new FlowDecision(fda));
            chart.Nodes.Add(new FlowSwitch <string> {
                Expression = fsa
            });
            chart.Nodes.Add(new FlowDecision(fdv));
            chart.Nodes.Add(new FlowSwitch <string> {
                Expression = fsv
            });

            var workflow = new DynamicActivity
            {
                Implementation = () => chart
            };

            new WorkflowHelper().CompileExpressions(workflow);

            Assert.AreEqual(GlobalConstants.InjectedSwitchDataFetch + ExpressionParams, fsa.ExpressionText);
            Assert.AreEqual(GlobalConstants.InjectedDecisionHandler + ExpressionParams, fda.ExpressionText);
        }
        // ReSharper disable InconsistentNaming
        public void FlowController_HandleConfigureDecisionExpressionMessageAndIsNewFalse_WizardShown()
        // ReSharper restore InconsistentNaming
        {
            #region setup first Mock ModelItem

            var env = EnviromentRepositoryTest.CreateMockEnvironment();

            var properties         = new Dictionary <string, Mock <ModelProperty> >();
            var propertyCollection = new Mock <ModelPropertyCollection>();
            var testAct            = new DsfFlowDecisionActivity {
                ExpressionText = "Not Null Test Value"
            };

            var prop = new Mock <ModelProperty>();
            prop.Setup(p => p.ComputedValue).Returns(testAct);
            properties.Add("Condition", prop);

            propertyCollection.Protected().Setup <ModelProperty>("Find", "Condition", true).Returns(prop.Object);

            var source = new Mock <ModelItem>();
            source.Setup(s => s.Properties).Returns(propertyCollection.Object);

            #endregion

            #region setup decision Mock ModelItem

            var crmDecision = new Mock <IContextualResourceModel>();
            crmDecision.Setup(r => r.Environment).Returns(env.Object);
            crmDecision.Setup(r => r.ResourceName).Returns("Test");
            crmDecision.Setup(res => res.WorkflowXaml).Returns(new StringBuilder(StringResourcesTest.xmlServiceDefinition));

            var decisionProperties         = new Dictionary <string, Mock <ModelProperty> >();
            var decisionPropertyCollection = new Mock <ModelPropertyCollection>();

            var decisionProp = new Mock <ModelProperty>();
            decisionProp.Setup(p => p.ComputedValue).Returns(string.Empty);
            decisionProperties.Add("Condition", decisionProp);

            decisionPropertyCollection.Protected().Setup <ModelProperty>("Find", "Condition", true).Returns(decisionProp.Object);

            var decisionModelItem = new Mock <ModelItem>();
            decisionModelItem.Setup(s => s.Properties).Returns(decisionPropertyCollection.Object);
            decisionModelItem.Setup(s => s.ItemType).Returns(typeof(FlowDecision));

            prop.Setup(p => p.Value).Returns(decisionModelItem.Object);

            #endregion

            #region setup Environment Model

            env.Setup(c => c.Connection).Returns(new Mock <IEnvironmentConnection>().Object);

            #endregion

            #region setup Start Decision Wizard

            var flowController = new Mock <FlowController>(new Mock <IPopupController>().Object);
            flowController.Protected().Setup("StartDecisionWizard", ItExpr.IsAny <IEnvironmentModel>(), ItExpr.IsAny <string>()).Verifiable();

            #endregion

            flowController.Object.Handle(new ConfigureDecisionExpressionMessage {
                ModelItem = source.Object, EnvironmentModel = env.Object, IsNew = false
            });

            flowController.Protected().Verify("StartDecisionWizard", Times.Once(), ItExpr.IsAny <IEnvironmentModel>(), ItExpr.IsAny <string>());
        }
Example #12
0
        public void Workflow_Given_WorkflowNodesForHtml_Executed_WorkflowNodes_FlowDecision_HandlingNestedObjects_ShouldReturnAllNodes()
        {
            var dev2DecisionStack = new Dev2DecisionStack
            {
                TheStack = new List <Dev2Decision>
                {
                    new Dev2Decision
                    {
                        Cols1 = new List <DataStorage.WarewolfAtom>
                        {
                            DataStorage.WarewolfAtom.NewDataString("a")
                        }
                    },
                    new Dev2Decision
                    {
                        Cols1 = new List <DataStorage.WarewolfAtom>
                        {
                            DataStorage.WarewolfAtom.NewDataString("a")
                        }
                    }
                },
                DisplayText  = "a",
                FalseArmText = "ErrorArm",
                TrueArmText  = "true Arm",
                Version      = "2",
                Mode         = Dev2DecisionMode.AND
            };

            var jsonSerializer       = new Dev2JsonSerializer();
            var flowDecisionActivity = new DsfFlowDecisionActivity
            {
                ExpressionText = jsonSerializer.Serialize(dev2DecisionStack)
            };

            var flowNodes = new Collection <FlowNode>
            {
                new FlowDecision(flowDecisionActivity)
                {
                    DisplayName = "Decision (sdf)",
                    True        = new FlowStep {
                        Action = new DsfMultiAssignActivity {
                            DisplayName = "Assign (success)"
                        }
                    },
                    False = new FlowStep {
                        Action = new DsfMultiAssignActivity
                        {
                            DisplayName = "Assign (fail)",
                            NextNodes   = new List <IDev2Activity>
                            {
                                new DsfCommentActivity {
                                    DisplayName = "Comment (this activity should not be part of the coverage)"
                                },
                                new DsfMultiAssignActivity {
                                    DisplayName = "Assign (child node)"
                                }
                            }
                        }
                    }
                }
            };

            var sut   = new Workflow(flowNodes);
            var nodes = sut.WorkflowNodesForHtml;

            Assert.AreEqual(1, nodes.Count);
            Assert.AreEqual(2, nodes[0].NextNodes.Count);

            Assert.AreEqual(3, sut.WorkflowNodes.Count);
        }
        // ReSharper disable InconsistentNaming
        public void FlowController_HandleConfigureDecisionExpressionMessageAndIsNewFalse_WizardShown()
        // ReSharper restore InconsistentNaming
        {
            #region setup first Mock ModelItem

            var env = EnviromentRepositoryTest.CreateMockEnvironment();

            var properties = new Dictionary<string, Mock<ModelProperty>>();
            var propertyCollection = new Mock<ModelPropertyCollection>();
            var testAct = new DsfFlowDecisionActivity { ExpressionText = "Not Null Test Value" };

            var prop = new Mock<ModelProperty>();
            prop.Setup(p => p.ComputedValue).Returns(testAct);
            properties.Add("Condition", prop);

            propertyCollection.Protected().Setup<ModelProperty>("Find", "Condition", true).Returns(prop.Object);

            var source = new Mock<ModelItem>();
            source.Setup(s => s.Properties).Returns(propertyCollection.Object);

            #endregion

            #region setup decision Mock ModelItem

            var crmDecision = new Mock<IContextualResourceModel>();
            crmDecision.Setup(r => r.Environment).Returns(env.Object);
            crmDecision.Setup(r => r.ResourceName).Returns("Test");
            crmDecision.Setup(res => res.WorkflowXaml).Returns(new StringBuilder(StringResourcesTest.xmlServiceDefinition));

            var decisionProperties = new Dictionary<string, Mock<ModelProperty>>();
            var decisionPropertyCollection = new Mock<ModelPropertyCollection>();

            var decisionProp = new Mock<ModelProperty>();
            decisionProp.Setup(p => p.ComputedValue).Returns(string.Empty);
            decisionProperties.Add("Condition", decisionProp);

            decisionPropertyCollection.Protected().Setup<ModelProperty>("Find", "Condition", true).Returns(decisionProp.Object);

            var decisionModelItem = new Mock<ModelItem>();
            decisionModelItem.Setup(s => s.Properties).Returns(decisionPropertyCollection.Object);
            decisionModelItem.Setup(s => s.ItemType).Returns(typeof(FlowDecision));

            prop.Setup(p => p.Value).Returns(decisionModelItem.Object);

            #endregion

            #region setup Environment Model

            env.Setup(c => c.Connection).Returns(new Mock<IEnvironmentConnection>().Object);

            #endregion

            #region setup Start Decision Wizard

            var flowController = new Mock<FlowController>(new Mock<IPopupController>().Object);
            flowController.Protected().Setup("StartDecisionWizard", ItExpr.IsAny<IEnvironmentModel>(), ItExpr.IsAny<string>()).Verifiable();

            #endregion

            flowController.Object.Handle(new ConfigureDecisionExpressionMessage { ModelItem = source.Object, EnvironmentModel = env.Object, IsNew = false });

            flowController.Protected().Verify("StartDecisionWizard", Times.Once(), ItExpr.IsAny<IEnvironmentModel>(), ItExpr.IsAny<string>());
        }
        public void WorkflowHelperCompileExpressionsWithActivityExpectedCompilesExpressionsAddsToCacheThenInvalidate()
        {
            const string ExpressionParams = "(\"\",AmbientDataList)";

            var fsa = new DsfFlowSwitchActivity
            {
                ExpressionText = GlobalConstants.InjectedSwitchDataFetchOld + ExpressionParams
            };
            var fda = new DsfFlowDecisionActivity
            {
                ExpressionText = GlobalConstants.InjectedDecisionHandlerOld + ExpressionParams
            };

            var startNode = new FlowStep { Action = new CommentActivityForTest() };
            var chart = new Flowchart { StartNode = startNode };
            chart.Nodes.Add(startNode);
            chart.Nodes.Add(new FlowDecision(fda));
            chart.Nodes.Add(new FlowSwitch<string> { Expression = fsa });


            var workflow = new DynamicActivity
            {
                Implementation = () => chart
            };
            var guid = Guid.NewGuid();
            new WorkflowHelper().CompileExpressions(workflow, guid);

            // No exception thrown means compilation worked

            var compiledExpressionRoot = CompiledExpressionInvoker.GetCompiledExpressionRootForImplementation(workflow) as ICompiledExpressionRoot;
            Assert.AreEqual(GlobalConstants.Resultscache.Count, 1);
            GlobalConstants.InvalidateCache(guid);
            Assert.AreEqual(GlobalConstants.Resultscache.Count, 0);
            Assert.IsNotNull(compiledExpressionRoot);
        }
        public void FlowDecision_GetDifferences_WhenMainDecisionModified_DecisionToolHasConflict()
        {
            var activityParser = new ActivityParser();
            var shellView      = new Mock <IShellViewModel>();
            var serverMock     = new Mock <IServer>();

            shellView.Setup(model => model.ActiveServer).Returns(serverMock.Object);
            CustomContainer.Register(shellView.Object);
            CustomContainer.Register <IActivityParser>(activityParser);
            var deicisionId = Guid.NewGuid().ToString();
            var bb          = new DsfFlowDecisionActivity {
                UniqueID = deicisionId
            };
            var jsonSerializer    = new Dev2JsonSerializer();
            var dev2DecisionStack = new Dev2DecisionStack
            {
                TheStack = new List <Dev2Decision>
                {
                    new Dev2Decision
                    {
                        Cols1 = new List <DataStorage.WarewolfAtom>
                        {
                            DataStorage.WarewolfAtom.NewDataString("a")
                        }
                    },
                    new Dev2Decision
                    {
                        Cols1 = new List <DataStorage.WarewolfAtom>
                        {
                            DataStorage.WarewolfAtom.NewDataString("a")
                        }
                    }
                },
                DisplayText  = "a",
                FalseArmText = "ErrorArm",
                TrueArmText  = "true Arm",
                Version      = "2",
                Mode         = Dev2DecisionMode.AND
            };

            bb.ExpressionText = jsonSerializer.Serialize(dev2DecisionStack);

            var bb2 = new DsfFlowDecisionActivity {
                UniqueID = deicisionId
            };
            var dev2DecisionStack2 = new Dev2DecisionStack
            {
                TheStack = new List <Dev2Decision>
                {
                    new Dev2Decision
                    {
                        Cols1 = new List <DataStorage.WarewolfAtom>
                        {
                            DataStorage.WarewolfAtom.NewDataString("a")
                        }
                    },
                    new Dev2Decision
                    {
                        Cols1 = new List <DataStorage.WarewolfAtom>
                        {
                            DataStorage.WarewolfAtom.NewDataString("a")
                        }
                    }
                },
                DisplayText  = "changed",
                FalseArmText = "false",
                TrueArmText  = "true",
                Version      = "2",
                Mode         = Dev2DecisionMode.AND
            };

            bb2.ExpressionText = jsonSerializer.Serialize(dev2DecisionStack2);

            var assignId     = Guid.NewGuid().ToString();
            var calcActivity = new DsfCalculateActivity {
                UniqueID = assignId
            };
            var chart = new Flowchart
            {
                StartNode = new FlowStep
                {
                    Action = calcActivity,
                    Next   = new FlowDecision
                    {
                        DisplayName = "DisplayName",
                        True        = new FlowStep {
                            Action = calcActivity
                        },
                        Condition = bb
                    }
                }
            };

            var otherChart = new Flowchart
            {
                StartNode = new FlowStep
                {
                    Action = calcActivity,
                    Next   = new FlowDecision
                    {
                        DisplayName = "DisplayName",
                        True        = new FlowStep {
                            Action = calcActivity
                        },
                        Condition = bb2
                    }
                }
            };

            var current = ParserTestHelper.CreateContextualResourceModel(otherChart);
            var diff    = ParserTestHelper.CreateContextualResourceModel(chart);

            var psd = new ServiceDifferenceParser();

            var(currentTree, diffTree) = psd.GetDifferences(current, diff);

            var currConflicts = currentTree;
            var diffConflicts = diffTree;

            var count = currConflicts.Count + diffConflicts.Count;

            Assert.AreEqual(4, count);
            Assert.IsFalse(diffTree.First().IsInConflict);
            Assert.IsFalse(currentTree.First().IsInConflict);
            Assert.IsFalse(diffTree.Last().IsInConflict);
            Assert.IsFalse(currentTree.Last().IsInConflict);
            Assert.AreEqual(assignId, diffTree[0].UniqueId);
            Assert.AreEqual(assignId, currentTree[0].UniqueId);

            //First Node chart
            var tupleDifference = diffTree[0];
            var tupleCurrent    = currentTree[0];

            Assert.IsNotNull(tupleDifference);
            Assert.IsNotNull(tupleCurrent);

            var devActivityDiff = tupleDifference.Activity;
            var devActivityCurr = tupleCurrent.Activity;

            Assert.IsNotNull(devActivityDiff);
            Assert.IsNotNull(devActivityCurr);
            Assert.AreEqual(assignId, devActivityCurr.UniqueID);
            Assert.AreEqual(assignId, devActivityDiff.UniqueID);

            //Decision Node chart
            var tupleDifference1 = diffTree[1];
            var tupleCurrent1    = currentTree[1];

            Assert.IsNotNull(tupleDifference1);
            Assert.IsNotNull(tupleCurrent1);

            var devActivityDiff1 = tupleDifference1.Activity;
            var devActivityCurr1 = tupleCurrent1.Activity;

            Assert.IsNotNull(devActivityDiff1);
            Assert.IsNotNull(devActivityCurr1);
            Assert.IsFalse(devActivityDiff1.Equals(devActivityCurr1));
        }
Example #16
0
 public DsfDecision(DsfFlowDecisionActivity inner)
 {
     _inner = inner;
 }
Example #17
0
 public DsfDecision(DsfFlowDecisionActivity inner) : this()
 {
     _inner   = inner;
     UniqueID = _inner.UniqueID;
 }
        public void FlowDecision_GetDifferences_WhenArmToolsTheSame_DecisionHasNoConflict()
        {
            var activityParser = new ActivityParser();
            var shellView      = new Mock <IShellViewModel>();
            var serverMock     = new Mock <IServer>();

            shellView.Setup(model => model.ActiveServer).Returns(serverMock.Object);
            CustomContainer.Register(shellView.Object);
            CustomContainer.Register <IActivityParser>(activityParser);
            var bb                = new DsfFlowDecisionActivity();
            var jsonSerializer    = new Dev2JsonSerializer();
            var toolId1           = Guid.NewGuid().ToString();
            var toolId2           = Guid.NewGuid().ToString();
            var dev2DecisionStack = new Dev2DecisionStack
            {
                TheStack = new List <Dev2Decision>
                {
                    new Dev2Decision
                    {
                        Cols1 = new List <DataStorage.WarewolfAtom>
                        {
                            DataStorage.WarewolfAtom.NewDataString("a")
                        }
                    },
                    new Dev2Decision
                    {
                        Cols1 = new List <DataStorage.WarewolfAtom>
                        {
                            DataStorage.WarewolfAtom.NewDataString("a")
                        }
                    }
                },
                DisplayText  = "a",
                FalseArmText = "ErrorArm",
                TrueArmText  = "true Arm",
                Version      = "2",
                Mode         = Dev2DecisionMode.AND
            };

            bb.ExpressionText = jsonSerializer.Serialize(dev2DecisionStack);

            var assignId = Guid.NewGuid().ToString();
            var chart    = new Flowchart
            {
                StartNode = new FlowStep
                {
                    Action = new DsfMultiAssignActivity
                    {
                        FieldsCollection = new List <ActivityDTO>
                        {
                            new ActivityDTO("field1", "field1", 1),
                            new ActivityDTO("field2", "field2", 4),
                            new ActivityDTO("field3", "field3", 3),
                            new ActivityDTO("field3", "field3", 2),
                        },
                        UniqueID = assignId
                    },
                    Next = new FlowDecision
                    {
                        DisplayName = "DisplayName",
                        True        = new FlowStep
                        {
                            Action = ActivityBuilderFactory.BuildActivity(typeof(DsfCalculateActivity), toolId1),
                            Next   = new FlowStep
                            {
                                Action = ActivityBuilderFactory.BuildActivity(typeof(DsfBaseConvertActivity), toolId2)
                            }
                        },
                        Condition = bb
                    }
                }
            };

            var otherChart = new Flowchart
            {
                StartNode = new FlowStep
                {
                    Action = new DsfMultiAssignActivity
                    {
                        FieldsCollection = new List <ActivityDTO>
                        {
                            new ActivityDTO("field1", "field1", 1),
                            new ActivityDTO("field2", "field2", 2),
                            new ActivityDTO("field2", "fff", 4),
                            new ActivityDTO("field3", "field3", 3),
                        },
                        UniqueID = assignId
                    },
                    Next = new FlowDecision
                    {
                        DisplayName = "DisplayName",
                        True        = new FlowStep
                        {
                            Action = ActivityBuilderFactory.BuildActivity(typeof(DsfCalculateActivity), toolId1),
                            Next   = new FlowStep
                            {
                                Action = ActivityBuilderFactory.BuildActivity(typeof(DsfBaseConvertActivity), toolId2)
                            }
                        },
                        Condition = bb
                    }
                }
            };

            var current = ParserTestHelper.CreateContextualResourceModel(otherChart);
            var diff    = ParserTestHelper.CreateContextualResourceModel(chart);

            var psd = new ServiceDifferenceParser();

            var(currentTree, diffTree) = psd.GetDifferences(current, diff);

            var currConflicts = currentTree;
            var diffConflicts = diffTree;

            var count = currConflicts.Count + diffConflicts.Count;

            Assert.AreEqual(8, count);

            Assert.IsFalse(diffTree.Any(d => d.IsInConflict));
            Assert.IsFalse(currentTree.Any(d => d.IsInConflict));
            Assert.AreEqual(assignId, diffTree[0].UniqueId);
            Assert.AreEqual(assignId, currentTree[0].UniqueId);

            //First Node chart
            var tupleDifference = diffTree[0];
            var tupleCurrent    = currentTree[0];

            Assert.IsNotNull(tupleDifference);
            Assert.IsNotNull(tupleCurrent);

            var devActivityDiff = tupleDifference.Activity;
            var devActivityCurr = tupleCurrent.Activity;

            Assert.IsNotNull(devActivityDiff);
            Assert.IsNotNull(devActivityCurr);
            Assert.AreEqual(assignId, devActivityCurr.UniqueID);
            Assert.AreEqual(assignId, devActivityDiff.UniqueID);

            //Decision Node chart
            var tupleDifference1 = diffTree[1];
            var tupleCurrent1    = currentTree[1];

            Assert.IsNotNull(tupleDifference1);
            Assert.IsNotNull(tupleCurrent1);

            var devActivityDiff1 = tupleDifference1.Activity;
            var devActivityCurr1 = tupleCurrent1.Activity;

            Assert.IsNotNull(devActivityDiff1);
            Assert.IsNotNull(devActivityCurr1);
            Assert.IsTrue(devActivityDiff1.Equals(devActivityCurr1));
        }
        public void SwitchDesignerViewModel_DisplayName_Setup_HasValue()
        {
            //------------Setup for test--------------------------
            #region setup first Mock ModelItem
            var popupController = new Mock <IPopupController>();
            CustomContainer.Register(popupController.Object);

            var env = EnviromentRepositoryTest.CreateMockEnvironment();

            var properties         = new Dictionary <string, Mock <ModelProperty> >();
            var propertyCollection = new Mock <ModelPropertyCollection>();
            var testAct            = new DsfFlowDecisionActivity {
                ExpressionText = "Not Null Test Value"
            };

            var prop = new Mock <ModelProperty>();
            prop.Setup(p => p.ComputedValue).Returns(testAct);
            properties.Add("Condition", prop);

            propertyCollection.Protected().Setup <ModelProperty>("Find", "Condition", true).Returns(prop.Object);

            var mockModelItem = new Mock <ModelItem>();
            mockModelItem.Setup(s => s.Properties).Returns(propertyCollection.Object);

            #endregion

            #region setup decision Mock ModelItem

            var crmDecision = new Mock <IContextualResourceModel>();
            crmDecision.Setup(r => r.Environment).Returns(env.Object);
            crmDecision.Setup(r => r.ResourceName).Returns("Test");
            crmDecision.Setup(res => res.WorkflowXaml).Returns(new StringBuilder(StringResourcesTest.xmlServiceDefinition));

            var decisionProperties         = new Dictionary <string, Mock <ModelProperty> >();
            var decisionPropertyCollection = new Mock <ModelPropertyCollection>();

            var decisionProp = new Mock <ModelProperty>();
            decisionProp.Setup(p => p.ComputedValue).Returns(string.Empty);
            decisionProperties.Add("Condition", decisionProp);

            decisionPropertyCollection.Protected().Setup <ModelProperty>("Find", "Condition", true).Returns(decisionProp.Object);

            var decisionModelItem = new Mock <ModelItem>();
            decisionModelItem.Setup(s => s.Properties).Returns(decisionPropertyCollection.Object);
            decisionModelItem.Setup(s => s.ItemType).Returns(typeof(FlowDecision));

            prop.Setup(p => p.Value).Returns(decisionModelItem.Object);

            #endregion

            #region setup Environment Model

            env.Setup(c => c.Connection).Returns(new Mock <IEnvironmentConnection>().Object);

            #endregion

            //------------Execute Test---------------------------
            var switchDesigner = new SwitchDesignerViewModel(mockModelItem.Object, "TrueArm");

            //------------Assert Results-------------------------
            Assert.IsNotNull(switchDesigner);
            Assert.AreEqual("TrueArm", switchDesigner.DisplayText);
        }
        public void SwitchDesignerViewModel_UpdateHelp_ShouldCallToHelpViewMode()
        {
            //------------Setup for test--------------------------
            var mockMainViewModel = new Mock <IShellViewModel>();
            var mockHelpViewModel = new Mock <IHelpWindowViewModel>();

            mockHelpViewModel.Setup(model => model.UpdateHelpText(It.IsAny <string>())).Verifiable();
            mockMainViewModel.Setup(model => model.HelpViewModel).Returns(mockHelpViewModel.Object);
            CustomContainer.Register(mockMainViewModel.Object);

            #region setup first Mock ModelItem
            var popupController = new Mock <IPopupController>();
            CustomContainer.Register(popupController.Object);

            var env = EnviromentRepositoryTest.CreateMockEnvironment();

            var properties         = new Dictionary <string, Mock <ModelProperty> >();
            var propertyCollection = new Mock <ModelPropertyCollection>();
            var testAct            = new DsfFlowDecisionActivity {
                ExpressionText = "Not Null Test Value"
            };

            var prop = new Mock <ModelProperty>();
            prop.Setup(p => p.ComputedValue).Returns(testAct);
            properties.Add("Condition", prop);

            propertyCollection.Protected().Setup <ModelProperty>("Find", "Condition", true).Returns(prop.Object);

            var mockModelItem = new Mock <ModelItem>();
            mockModelItem.Setup(s => s.Properties).Returns(propertyCollection.Object);

            #endregion

            #region setup decision Mock ModelItem

            var crmDecision = new Mock <IContextualResourceModel>();
            crmDecision.Setup(r => r.Environment).Returns(env.Object);
            crmDecision.Setup(r => r.ResourceName).Returns("Test");
            crmDecision.Setup(res => res.WorkflowXaml).Returns(new StringBuilder(StringResourcesTest.xmlServiceDefinition));

            var decisionProperties         = new Dictionary <string, Mock <ModelProperty> >();
            var decisionPropertyCollection = new Mock <ModelPropertyCollection>();

            var decisionProp = new Mock <ModelProperty>();
            decisionProp.Setup(p => p.ComputedValue).Returns(string.Empty);
            decisionProperties.Add("Condition", decisionProp);

            decisionPropertyCollection.Protected().Setup <ModelProperty>("Find", "Condition", true).Returns(decisionProp.Object);

            var decisionModelItem = new Mock <ModelItem>();
            decisionModelItem.Setup(s => s.Properties).Returns(decisionPropertyCollection.Object);
            decisionModelItem.Setup(s => s.ItemType).Returns(typeof(FlowSwitch <string>));

            prop.Setup(p => p.Value).Returns(decisionModelItem.Object);

            #endregion

            #region setup Environment Model

            env.Setup(c => c.Connection).Returns(new Mock <IEnvironmentConnection>().Object);

            #endregion

            var switchDesigner = new SwitchDesignerViewModel(mockModelItem.Object, "");
            //------------Execute Test---------------------------
            switchDesigner.UpdateHelpDescriptor("help");
            //------------Assert Results-------------------------
            mockHelpViewModel.Verify(model => model.UpdateHelpText(It.IsAny <string>()), Times.Once());
        }