Example #1
0
        public void Debug_GivenDataObject_ShouldSetInnerBugOuputs_IncrementsDebugInputs()
        {
            //---------------Set up test pack-------------------
            //string displayName, IDebugDispatcher debugDispatcher, bool isAsync = false
            var switchActivity = new DsfFlowSwitchActivity("MyName", new Mock <IDebugDispatcher>().Object, It.IsAny <bool>())
            {
                UniqueID       = Guid.NewGuid().ToString(),
                ExpressionText = ""
            };

            var activity = new DsfSwitch(switchActivity)
            {
                Result = "[[MyResult]]"
            };
            var dataObject = new Mock <IDSFDataObject>();

            dataObject.Setup(o => o.IsDebugMode()).Returns(true);
            var obj = new Warewolf.Testing.PrivateObject(activity);
            //---------------Assert Precondition----------------
            var getDebugInputs = activity.GetDebugInputs(new Mock <IExecutionEnvironment>().Object, 1);

            Assert.AreEqual(0, getDebugInputs.Count);
            //---------------Execute Test ----------------------
            var result   = "[[variable]]";
            var mySwitch = new Dev2Switch();

            obj.Invoke("Debug", dataObject.Object, result, mySwitch);
            //---------------Test Result -----------------------
            getDebugInputs = activity.GetDebugInputs(new Mock <IExecutionEnvironment>().Object, 1);
            Assert.AreEqual(1, getDebugInputs.Count);
        }
Example #2
0
        public void ExecuteTool_GivenIsNotDebugMode_NotAddDebugOutputs()
        {
            //---------------Set up test pack-------------------
            //string displayName, IDebugDispatcher debugDispatcher, bool isAsync = false
            var switchActivity = new DsfFlowSwitchActivity("MyName", new Mock <IDebugDispatcher>().Object, It.IsAny <bool>())
            {
                UniqueID       = Guid.NewGuid().ToString(),
                ExpressionText = ""
            };
            var nextActivity = new Mock <IDev2Activity>();
            var activity     = new DsfSwitchMock(switchActivity)
            {
                Result   = "[[MyResult]]",
                Switch   = "[[Switch]]",
                Switches = new Dictionary <string, IDev2Activity>()
            };

            activity.Switches.Add("1", nextActivity.Object);
            var dataObject = new Mock <IDSFDataObject>();

            dataObject.Setup(o => o.IsDebugMode()).Returns(false);
            var executionEnvironment = new ExecutionEnvironment();

            executionEnvironment.Assign("[[Switch]]", "1", 1);
            dataObject.Setup(o => o.Environment).Returns(executionEnvironment);
            //---------------Assert Precondition----------------
            var getDebugInputs = activity.GetDebugInputs(new Mock <IExecutionEnvironment>().Object, 1);

            Assert.AreEqual(0, getDebugInputs.Count);
            //---------------Execute Test ----------------------
            activity.ExecuteMock(dataObject.Object, 0);
            //---------------Test Result -----------------------
            getDebugInputs = activity.GetDebugInputs(new Mock <IExecutionEnvironment>().Object, 1);
            Assert.AreEqual(0, getDebugInputs.Count);
        }
Example #3
0
        public void DebugOutput_GivenDataObject_ShouldSetInnerBugOuputsIncrementsDebugOutputs()
        {
            //---------------Set up test pack-------------------
            //string displayName, IDebugDispatcher debugDispatcher, bool isAsync = false
            var switchActivity = new DsfFlowSwitchActivity("MyName", new Mock <IDebugDispatcher>().Object, It.IsAny <bool>())
            {
                UniqueID = Guid.NewGuid().ToString()
            };
            var activity = new DsfSwitch(switchActivity)
            {
                Result = "[[MyResult]]"
            };
            var dataObject = new Mock <IDSFDataObject>();

            dataObject.Setup(o => o.IsDebugMode()).Returns(true);
            var obj = new PrivateObject(activity);
            //---------------Assert Precondition----------------
            var activityDebugOutputs = activity.GetDebugOutputs(new Mock <IExecutionEnvironment>().Object, 1);

            Assert.AreEqual(0, activityDebugOutputs.Count);
            //---------------Execute Test ----------------------
            obj.Invoke("DebugOutput", dataObject.Object);
            //---------------Test Result -----------------------
            activityDebugOutputs = activity.GetDebugOutputs(new Mock <IExecutionEnvironment>().Object, 1);
            Assert.AreEqual(1, activityDebugOutputs.Count);
        }
        protected override void BuildDataList()
        {
            var variableList = scenarioContext.Get <List <Tuple <string, string> > >("variableList");

            variableList.Add(new Tuple <string, string>(ResultVariable, ""));

            BuildShapeAndTestData();
            var flowSwitch = new DsfFlowSwitchActivity
            {
                ExpressionText =
                    string.Format(
                        "Dev2.Data.Decision.Dev2DataListDecisionHandler.Instance.FetchSwitchData(\"{0}\",AmbientDataList)",
                        variableList.First().Item1),
            };
            var sw = new FlowSwitch <string>();

            sw.Expression = flowSwitch;
            var multiAssign = new DsfMultiAssignActivity();
            int row         = 1;

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

            TestStartNode = new FlowStep
            {
                Action = multiAssign,
                Next   = sw
            };

            scenarioContext.Add("activity", flowSwitch);
        }
        public void Equals_Given_DifferentInner_SwitchActivity_IsEqual()
        {
            //---------------Set up test pack-------------------
            var uniqId = Guid.NewGuid().ToString();
            var inner  = new DsfFlowSwitchActivity
            {
                UniqueID       = Guid.NewGuid().ToString(),
                ExpressionText = "A",
                DisplayName    = "A"
            };
            var inner2 = new DsfFlowSwitchActivity
            {
                UniqueID       = Guid.NewGuid().ToString(),
                ExpressionText = "B",
                DisplayName    = "B"
            };

            var activity = new DsfSwitch {
                UniqueID = uniqId, Inner = inner
            };
            var activity1 = new DsfSwitch {
                UniqueID = uniqId, Inner = inner2
            };

            //---------------Assert Precondition----------------
            Assert.IsNotNull(activity);
            //---------------Execute Test ----------------------
            var @equals = activity.Equals(activity1);

            //---------------Test Result -----------------------
            Assert.IsTrue(@equals);
        }
        protected override void BuildDataList()
        {
            var variableList = ScenarioContext.Current.Get<List<Tuple<string, string>>>("variableList");
            variableList.Add(new Tuple<string, string>(ResultVariable, ""));

            BuildShapeAndTestData();
            var flowSwitch = new DsfFlowSwitchActivity
                {
                    ExpressionText =
                        string.Format(
                            "Dev2.Data.Decision.Dev2DataListDecisionHandler.Instance.FetchSwitchData(\"{0}\",AmbientDataList)",
                            variableList.First().Item1),
                      
                            
                };
            var sw = new FlowSwitch<string>();
            sw.Expression = flowSwitch;
            var multiAssign = new DsfMultiAssignActivity();
            int row = 1;
            foreach(var variable in variableList)
            {
                multiAssign.FieldsCollection.Add(new ActivityDTO(variable.Item1, variable.Item2, row, true));
                row++;
            }

            TestStartNode = new FlowStep
                {
                    Action = multiAssign,
                    Next = sw
                };

            ScenarioContext.Current.Add("activity", flowSwitch);
        }
Example #7
0
        public void ActivityHelper_Dev2Switch_ExtractData_Null()
        {
            var inner2 = new DsfFlowSwitchActivity
            {
                ExpressionText = GlobalConstants.InjectedSwitchDataFetch
            };
            var val = ActivityHelper.ExtractData(inner2.ExpressionText);

            Assert.AreEqual("Dev2.Data.Decision.Dev2DataListDecisionHandler.Instance.FetchSwitchData", val);
        }
        public void DsfFlowSwitchActivity_GetState_ReturnsStateVariable()
        {
            //---------------Set up test pack-------------------
            //------------Setup for test--------------------------
            var act = new DsfFlowSwitchActivity();
            //------------Execute Test---------------------------
            var stateItems = act.GetState();

            //------------Assert Results-------------------------
            Assert.AreEqual(0, stateItems.Count());
        }
Example #9
0
        public void ConflictModelFactory_GivenDsfSwitchConflictNode_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 DsfFlowSwitchActivity
            {
                ExpressionText = serialize
            };
            var value = new DsfSwitch(condition)
            {
                Switch   = "bbb",
                Switches = new Dictionary <string, IDev2Activity>
                {
                    { "a", new DsfCalculateActivity() },
                    { "b", new DsfCalculateActivity() }
                }
            };
            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);
            var mergeToolModel = completeConflict.CreateModelItem(toolConflictItem, node.Object);

            Assert.AreEqual("bbb", mergeToolModel.MergeDescription);
            Assert.AreEqual(typeof(SwitchDesignerViewModel).FullName, ((ToolConflictItem)mergeToolModel).ActivityDesignerViewModel.GetType().FullName);
        }
Example #10
0
        public void GetDebugOutputs_GivenIsNewReturnsZero()
        {
            //---------------Set up test pack-------------------
            //string displayName, IDebugDispatcher debugDispatcher, bool isAsync = false
            var switchActivity = new DsfFlowSwitchActivity("MyName", new Mock <IDebugDispatcher>().Object, It.IsAny <bool>())
            {
                UniqueID = Guid.NewGuid().ToString()
            };
            var activity = new DsfSwitch(switchActivity);
            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            var customAttributes = activity.GetDebugOutputs(new Mock <IExecutionEnvironment>().Object, 1);

            //---------------Test Result -----------------------
            Assert.AreEqual(0, customAttributes.Count);
        }
Example #11
0
        static ModelItem CreateSwitchModelItem(FlowStep flowStep)
        {
            var dsfSwitch = new FlowSwitch <string>();
            var uniqueId  = Guid.NewGuid();
            var activity  = new DsfFlowSwitchActivity {
                UniqueID = uniqueId.ToString()
            };

            dsfSwitch.Expression = activity;
            dsfSwitch.Cases.Add("Case1", flowStep);
            dsfSwitch.Cases.Add("Case2", new FlowStep());
            dsfSwitch.Default = new FlowStep();

            var modelItem = ModelItemUtils.CreateModelItem(dsfSwitch);

            return(modelItem);
        }
        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);
        }
Example #13
0
        public void ExecuteTool_GivenSwicthNotMacthing_ShouldUseDefault()
        {
            //---------------Set up test pack-------------------
            //string displayName, IDebugDispatcher debugDispatcher, bool isAsync = false
            var switchActivity = new DsfFlowSwitchActivity("MyName", new Mock <IDebugDispatcher>().Object, It.IsAny <bool>())
            {
                UniqueID       = Guid.NewGuid().ToString(),
                ExpressionText = ""
            };
            var nextActivity = new Mock <IDev2Activity>();
            var activity     = new DsfSwitchMock(switchActivity)
            {
                Result   = "[[MyResult]]",
                Switch   = "[[Switch]]",
                Switches = new Dictionary <string, IDev2Activity>(),
                Default  = new List <IDev2Activity> {
                    nextActivity.Object
                }
            };
            var dataObject = new Mock <IDSFDataObject>();

            dataObject.Setup(o => o.IsDebugMode()).Returns(false);
            var executionEnvironment = new ExecutionEnvironment();

            executionEnvironment.Assign("[[Switch]]", "NoMatch", 1);
            dataObject.Setup(o => o.Environment).Returns(executionEnvironment);
            //---------------Assert Precondition----------------
            var getDebugInputs = activity.GetDebugInputs(new Mock <IExecutionEnvironment>().Object, 1);

            Assert.AreEqual(0, getDebugInputs.Count);
            Assert.IsNull(activity.NextNodes);
            //---------------Execute Test ----------------------
            activity.ExecuteMock(dataObject.Object, 0);
            //---------------Test Result -----------------------
            getDebugInputs = activity.GetDebugInputs(new Mock <IExecutionEnvironment>().Object, 1);
            Assert.AreEqual(0, getDebugInputs.Count);
            Assert.IsNotNull(activity.NextNodes);
            Assert.AreEqual(1, activity.NextNodes.Count());
            var contains = activity.NextNodes.Single();

            Assert.AreEqual(nextActivity.Object, contains);
            Assert.AreEqual("Default", activity.Result);
        }
Example #14
0
        public void GetForEachInputs_ReturnsNull()
        {
            //---------------Set up test pack-------------------
            //string displayName, IDebugDispatcher debugDispatcher, bool isAsync = false
            var switchActivity = new DsfFlowSwitchActivity("MyName", new Mock <IDebugDispatcher>().Object, It.IsAny <bool>())
            {
                UniqueID = Guid.NewGuid().ToString()
            };
            var activity = new DsfSwitch(switchActivity);
            //---------------Assert Precondition----------------
            var outputs = activity.GetOutputs();

            Assert.AreEqual(0, outputs.Count);
            //---------------Execute Test ----------------------
            var dsfForEachItems = activity.GetForEachInputs();

            //---------------Test Result -----------------------
            Assert.IsNull(dsfForEachItems);
        }
Example #15
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);
        }
Example #16
0
        protected override void BuildDataList()
        {
            var variableList = ScenarioContext.Current.Get <List <Tuple <string, string> > >("variableList");

            variableList.Add(new Tuple <string, string>(ResultVariable, ""));

            BuildShapeAndTestData();
            var flowSwitch = new DsfFlowSwitchActivity
            {
                ExpressionText =
                    string.Format(
                        "Dev2.Data.Decision.Dev2DataListDecisionHandler.Instance.FetchSwitchData(\"{0}\",AmbientDataList)",
                        (variableList).First().Item1)
            };

            TestStartNode = new FlowStep
            {
                Action = flowSwitch
            };
            ScenarioContext.Current.Add("activity", flowSwitch);
        }
Example #17
0
        public void ExecuteTool_GivenDefaultIsNull_ShouldShowError()
        {
            //---------------Set up test pack-------------------
            //string displayName, IDebugDispatcher debugDispatcher, bool isAsync = false
            var switchActivity = new DsfFlowSwitchActivity("MyName", new Mock <IDebugDispatcher>().Object, It.IsAny <bool>())
            {
                UniqueID       = Guid.NewGuid().ToString(),
                ExpressionText = ""
            };
            var nextActivity = new Mock <IDev2Activity>();
            var activity     = new DsfSwitchMock(switchActivity)
            {
                Result   = "[[MyResult]]",
                Switch   = "[[Switch]]",
                Switches = new Dictionary <string, IDev2Activity>(),
                Default  = null
            };
            var dataObject = new Mock <IDSFDataObject>();

            dataObject.Setup(o => o.IsDebugMode()).Returns(true);
            var executionEnvironment = new ExecutionEnvironment();

            executionEnvironment.Assign("[[Switch]]", "NoMatch", 1);
            dataObject.Setup(o => o.Environment).Returns(executionEnvironment);
            //---------------Assert Precondition----------------
            var getDebugInputs = activity.GetDebugInputs(new Mock <IExecutionEnvironment>().Object, 1);

            Assert.AreEqual(0, getDebugInputs.Count);
            Assert.IsNull(activity.NextNodes);
            //---------------Execute Test ----------------------
            activity.ExecuteMock(dataObject.Object, 0);
            //---------------Test Result -----------------------
            getDebugInputs = activity.GetDebugInputs(new Mock <IExecutionEnvironment>().Object, 1);
            Assert.AreEqual(1, getDebugInputs.Count);
            Assert.IsNotNull(activity.NextNodes);
            Assert.AreEqual(0, activity.NextNodes.Count());
            Assert.AreEqual(1, executionEnvironment.AllErrors.Count);
            Assert.AreEqual("Failed: Switch must have a Default arm connected.", executionEnvironment.AllErrors.First());
        }
Example #18
0
        public void Constructor_GivenIsNew_ShouldHaveCorrectValues()
        {
            //---------------Set up test pack-------------------
            //string displayName, IDebugDispatcher debugDispatcher, bool isAsync = false
            var switchActivity = new DsfFlowSwitchActivity("MyName", new Mock <IDebugDispatcher>().Object, It.IsAny <bool>())
            {
                UniqueID = Guid.NewGuid().ToString()
            };
            var activity = new DsfSwitch(switchActivity);

            //---------------Assert Precondition----------------
            Assert.IsNotNull(activity);
            //---------------Execute Test ----------------------
            //---------------Test Result -----------------------
            Assert.AreEqual("Switch", activity.DisplayName);
            Assert.AreSame(switchActivity, activity.Inner);
            Assert.AreSame(switchActivity.UniqueID, activity.UniqueID);
            Assert.IsNull(activity.Switches);
            Assert.IsNull(activity.Default);
            Assert.IsNull(activity.Switch);
            Assert.IsNull(activity.Result);
        }
        public void SwitchDesignerViewModel_Switch_Dev2Switch()
        {
            //------------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 DsfFlowSwitchActivity {
                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, "TrueArm");
            //------------Execute Test---------------------------
            var dev2Switch = switchDesigner.Switch;
            //------------Assert Results-------------------------
            Assert.AreEqual("TrueArm", dev2Switch.DisplayText);
            Assert.AreEqual("", dev2Switch.SwitchVariable);
            Assert.IsNull(dev2Switch.SwitchExpression);
        }
        // ReSharper disable InconsistentNaming
        public void FlowController_HandleConfigureSwitchExpressionMessageAndIsNewTrue()
        // ReSharper restore InconsistentNaming
        {
            #region setup first Mock ModelItem

            var env = EnviromentRepositoryTest.CreateMockEnvironment();

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

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

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

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

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

            var returnModelItem = new Mock<ModelItem>();
            returnModelItem.Setup(item => item.GetCurrentValue()).Returns("[[Var1]]");
            returnModelItem.Setup(item => item.ToString()).Returns("[[Var1]]");
            #endregion

            #region setup switch Mock ModelItem

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

            var decisionProp = new Mock<ModelProperty>();
            decisionProp.Setup(p => p.ComputedValue).Returns("[[Var]]");
            decisionProp.Setup(p => p.Value).Returns(returnModelItem.Object);
            decisionProperties.Add("ExpressionText", decisionProp);

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

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

            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("StartSwitchDropWizard", ItExpr.IsAny<IEnvironmentModel>(), ItExpr.IsAny<string>()).Verifiable();

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

            flowController.Protected().Verify("StartSwitchDropWizard", 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);
        }
Example #22
0
#pragma warning restore S2357   // Fields should be private
#pragma warning restore IDE1006 // Naming Styles

        public DsfSwitch(DsfFlowSwitchActivity inner)
            : base("Switch")
        {
            Inner    = inner;
            UniqueID = inner.UniqueID;
        }
Example #23
0
        public void FlowController_ConfigureSwitch_Handle_Switch()
        {
            //------------Setup for test--------------------------
            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 DsfFlowSwitchActivity {
                ExpressionText = ""
            };

            var prop = new Mock <ModelProperty>();

            prop.Setup(p => p.ComputedValue).Returns(testAct);
            properties.Add("Expression", prop);

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

            var source = new Mock <ModelItem>();

            source.Setup(s => s.Properties).Returns(propertyCollection.Object);

            #region setup decision Mock ModelItem

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

            var switchProperties         = new Dictionary <string, Mock <ModelProperty> >();
            var switchPropertyCollection = new Mock <ModelPropertyCollection>();

            var switchProp = new Mock <ModelProperty>();
            switchProp.Setup(p => p.ComputedValue).Returns(string.Empty);
            switchProperties.Add("Expression", switchProp);

            switchPropertyCollection.Protected().Setup <ModelProperty>("Find", "Expression", true).Returns(switchProp.Object);

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

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

            #endregion

            #region setup Environment Model

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

            #endregion

            var flowController = new FlowController();

            var message = new ConfigureSwitchExpressionMessage
            {
                ModelItem = source.Object,
                Server    = env.Object,
                IsNew     = true
            };
            //------------Execute Test---------------------------
            flowController.Handle(message);
            //------------Assert Results-------------------------
        }
Example #24
0
        public void ActivityHelper_InjectExpression_Dev2DecisionStack()
        {
            //---------------Set up test pack-------------------
            var dev2DecisionStack = new Dev2DecisionStack()
            {
                DisplayText  = "",
                FalseArmText = "",
                TrueArmText  = "",
                Version      = "2",
                Mode         = Dev2DecisionMode.AND
            };

            dev2DecisionStack.TheStack = new List <Dev2Decision>();

            var testAct = new DsfFlowSwitchActivity {
                ExpressionText = ""
            };
            var prop = new Mock <ModelProperty>();

            prop.Setup(p => p.ComputedValue).Returns(testAct);

            ActivityHelper.InjectExpression(dev2DecisionStack, prop.Object);

            //------------Assert Results-------------------------
            var act = new DsfDecision {
                Conditions = dev2DecisionStack, And = true
            };
            var stateItems = act.GetState();

            Assert.AreEqual(5, stateItems.Count());
            var serializer      = new Dev2JsonSerializer();
            var expectedResults = new[]
            {
                new StateVariable
                {
                    Name  = "Conditions",
                    Type  = StateVariable.StateType.Input,
                    Value = serializer.Serialize(dev2DecisionStack)
                },
                new StateVariable
                {
                    Name  = "And",
                    Type  = StateVariable.StateType.Input,
                    Value = "True"
                },
                new StateVariable
                {
                    Name  = "Result",
                    Type  = StateVariable.StateType.Output,
                    Value = null
                },
                new StateVariable
                {
                    Name  = "TrueArm",
                    Type  = StateVariable.StateType.Output,
                    Value = ActivityHelper.GetSerializedStateValueFromCollection(act.TrueArm?.ToList())
                },
                new StateVariable
                {
                    Name  = "FalseArm",
                    Type  = StateVariable.StateType.Output,
                    Value = ActivityHelper.GetSerializedStateValueFromCollection(act.FalseArm?.ToList())
                }
            };

            var iter = act.GetState().Select((item, index) => new
            {
                value       = item,
                expectValue = expectedResults[index]
            });

            Assert.AreEqual(expectedResults.Length, iter.Count());
            foreach (var entry in iter)
            {
                Assert.AreEqual(entry.expectValue.Name, entry.value.Name);
                Assert.AreEqual(entry.expectValue.Type, entry.value.Type);
                Assert.AreEqual(entry.expectValue.Value, entry.value.Value);
            }
        }
Example #25
0
 public DsfSwitchMock(DsfFlowSwitchActivity activity)
     : base(activity)
 {
 }
Example #26
0
 public DsfSwitch(DsfFlowSwitchActivity inner)
 {
     _inner = inner;
 }
        // ReSharper disable InconsistentNaming
        public void FlowController_HandleConfigureSwitchExpressionMessageAndIsNewTrue()
        // ReSharper restore InconsistentNaming
        {
            #region setup first Mock ModelItem

            var env = EnviromentRepositoryTest.CreateMockEnvironment();

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

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

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

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

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

            var returnModelItem = new Mock <ModelItem>();
            returnModelItem.Setup(item => item.GetCurrentValue()).Returns("[[Var1]]");
            returnModelItem.Setup(item => item.ToString()).Returns("[[Var1]]");
            #endregion

            #region setup switch Mock ModelItem

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

            var decisionProp = new Mock <ModelProperty>();
            decisionProp.Setup(p => p.ComputedValue).Returns("[[Var]]");
            decisionProp.Setup(p => p.Value).Returns(returnModelItem.Object);
            decisionProperties.Add("ExpressionText", decisionProp);

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

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

            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("StartSwitchDropWizard", ItExpr.IsAny <IEnvironmentModel>(), ItExpr.IsAny <string>()).Verifiable();

            #endregion

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

            flowController.Protected().Verify("StartSwitchDropWizard", Times.Once(), ItExpr.IsAny <IEnvironmentModel>(), ItExpr.IsAny <string>());
        }
        public void AddItem(IToolConflictItem model)
        {
            var service = _workflowDesignerHelper.GetService <ModelService>(_wd);
            var root    = service.Root;
            var chart   = _workflowDesignerHelper.GetService <ModelService>(_wd).Find(root, typeof(Flowchart)).FirstOrDefault();

            var nodes = chart?.Properties["Nodes"]?.Collection;

            if (nodes == null)
            {
                return;
            }

            var nodeToAdd = model.ModelItem;
            var step      = model.FlowNode;

            switch (step)
            {
            case FlowStep normalStep:
                normalStep.Next = null;
                if (!nodes.Contains(normalStep))
                {
                    nodes.Add(normalStep);
                }
                break;

            case FlowDecision normalDecision:
                normalDecision.DisplayName = model.MergeDescription;
                normalDecision.False       = null;
                normalDecision.True        = null;
                nodes.Add(normalDecision);
                break;

            case FlowSwitch <string> normalSwitch:
                var switchAct = new DsfFlowSwitchActivity
                {
                    ExpressionText = String.Join("", GlobalConstants.InjectedSwitchDataFetch,
                                                 "(\"", nodeToAdd.GetProperty <string>("Switch"), "\",",
                                                 GlobalConstants.InjectedDecisionDataListVariable,
                                                 ")"),
                    UniqueID = nodeToAdd.GetProperty <string>("UniqueID")
                };
                normalSwitch.DisplayName = model.MergeDescription;
                normalSwitch.Expression  = switchAct;
                normalSwitch.Cases.Clear();
                normalSwitch.Default = null;
                nodes.Add(normalSwitch);
                break;

            default:
                break;
            }
            var modelItem = GetItemFromNodeCollection(model.UniqueId);

            if (modelItem == null)
            {
                return;
            }
            SetShapeLocation(modelItem, model.NodeLocation);
            model.IsAddedToWorkflow = true;
        }
        public void FlowSwitch_GetDifferences_WhenCasesTheSame_SwitchHasNoConflict()
        {
            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 switchActivity = new DsfFlowSwitchActivity("MyName", new Mock <IDebugDispatcher>().Object, It.IsAny <bool>())
            {
                UniqueID = 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,
            };
            var jsonSerializer = new Dev2JsonSerializer();

            switchActivity.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 FlowSwitch <string>
                    {
                        DisplayName = "DisplayName",
                        Default     = new FlowStep
                        {
                            Action = ActivityBuilderFactory.BuildActivity(typeof(DsfCalculateActivity))
                        },
                        Expression = switchActivity
                    }
                }
            };

            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 FlowSwitch <string>
                    {
                        DisplayName = "DisplayName",
                        Default     = new FlowStep
                        {
                            Action = ActivityBuilderFactory.BuildActivity(typeof(DsfCalculateActivity))
                        },
                        Expression = switchActivity
                    }
                }
            };

            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(6, 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);
        }