Exemplo n.º 1
0
        /// <inheritdoc />
        public IActivity GetActivity(ActivitySelectionType selectionType, Func <IActivity, bool> predicate)
        {
            _activitiesLock.EnterReadLock();

            IActivity result = null;

            var tmpList = predicate != null?_activities.Where(predicate) : _activities;

            switch (selectionType)
            {
            case ActivitySelectionType.First:
                result = tmpList.First();
                break;

            case ActivitySelectionType.FirstOrDefault:
                result = tmpList.FirstOrDefault();
                break;

            case ActivitySelectionType.Last:
                result = tmpList.Last();
                break;

            case ActivitySelectionType.LastOrDefault:
                result = tmpList.LastOrDefault();
                break;
            }

            _activitiesLock.ExitReadLock();

            return(result);
        }
Exemplo n.º 2
0
        /// <inheritdoc />
        public IActivity GetActivity(ActivitySelectionType selectionType)
        {
            _activitiesLock.EnterReadLock();

            var result = GetActivity(selectionType, null);

            _activitiesLock.ExitReadLock();

            return(result);
        }
        void NotifySelectionChanged()
        {
            if (IsSelected)
            {
                var content = Content;

                if (Parent != null)
                {
                    // Only show selection at the root level!
                    var parent = Parent;
                    do
                    {
                        content = parent.As <DebugStateTreeViewItemViewModel>()?.Content;
                        parent  = parent.Parent;
                    }while (parent != null);
                }
                if (!IsTestView)
                {
                    EventPublishers.Studio.Publish(new DebugSelectionChangedEventArgs
                    {
                        DebugState    = content,
                        SelectionType = SelectionType
                    });
                }
            }
            else
            {
                if (!IsTestView)
                {
                    EventPublishers.Studio.Publish(new DebugSelectionChangedEventArgs
                    {
                        DebugState    = Content,
                        SelectionType = ActivitySelectionType.Remove
                    });
                }
            }

            SelectionType = ActivitySelectionType.Single;
        }
        protected override void Initialize(IDebugState debugState)
        {
            if (debugState == null)
            {
                return;
            }
            SelectionType = ActivitySelectionType.Add;
            IsSelected    = debugState.ActivityType != ActivityType.Workflow;

            SetServerName(debugState);
            BuildBindableListFromDebugItems(debugState.Inputs, _inputs, true);
            BuildBindableListFromDebugItems(debugState.Outputs, _outputs);
            BuildBindableListFromDebugItems(debugState.AssertResultList, _assertResultList);

            if (debugState.HasError)
            {
                HasError = true;
            }
            if (debugState.AssertResultList != null)
            {
                SetTestDescription(debugState);
            }
            SelectionType = ActivitySelectionType.Single;
        }
Exemplo n.º 5
0
        static void Verify_DebugSelectionChanged(ActivitySelectionType selectionType, Type selectedActivityType, bool selectsModelItem = true)
        {
            //----------------------- Setup -----------------------//
            var ID = Guid.NewGuid();
            var states = new List<IDebugState> { new DebugState { DisplayName = "SelectionChangedTest1", ID = ID, WorkSurfaceMappingId = ID } };
            ID = Guid.NewGuid();
            if (selectionType == ActivitySelectionType.Add || selectionType == ActivitySelectionType.Remove)
            {

                states.Add(new DebugState { DisplayName = "SelectionChangedTest2", ID = ID, WorkSurfaceMappingId = ID });
            }

            #region Setup workflow

            FlowNode prevNode = null;

            var nodes = new List<FlowNode>();
            foreach (var node in states.Select(state => CreateFlowNode(state.ID, state.DisplayName, selectsModelItem, selectedActivityType)))
            {
                if (prevNode != null)
                {
                    var flowStep = prevNode as FlowStep;
                    if (flowStep != null)
                    {
                        flowStep.Next = node;
                    }
                }
                nodes.Add(node);
                prevNode = node;
            }

            var workflow = new ActivityBuilder
            {
                Implementation = new Flowchart
                {
                    StartNode = nodes[0]
                }
            };

            #endregion

            #region Setup viewModel

            var resourceRep = new Mock<IResourceRepository>();
            resourceRep.Setup(r => r.All()).Returns(new List<IResourceModel>());
            resourceRep.Setup(r => r.FetchResourceDefinition(It.IsAny<IEnvironmentModel>(), It.IsAny<Guid>(), It.IsAny<Guid>(), It.IsAny<bool>())).Returns(new ExecuteMessage());

            var resourceModel = new Mock<IContextualResourceModel>();
            resourceModel.Setup(m => m.Environment.ResourceRepository).Returns(resourceRep.Object);
            resourceModel.Setup(m => m.ResourceName).Returns("Some resource name 5");
            var workflowHelper = new Mock<IWorkflowHelper>();
            workflowHelper.Setup(h => h.CreateWorkflow(It.IsAny<string>())).Returns(workflow);

            var viewModel = new WorkflowDesignerViewModelMock(resourceModel.Object, workflowHelper.Object);
            viewModel.InitializeDesigner(new Dictionary<Type, Type>());

            #endregion

            //----------------------- Execute -----------------------//
            var i = 0;
            foreach (var debugState in states)
            {
                if (selectionType == ActivitySelectionType.None || selectionType == ActivitySelectionType.Remove)
                {
                    // Ensure we have something to clear/remove
                    EventPublishers.Studio.Publish(new DebugSelectionChangedEventArgs { DebugState = debugState, SelectionType = ActivitySelectionType.Add });

                    // Only issue change event after all have been added
                    if (++i == states.Count)
                    {
                        var selectionBefore = viewModel.Designer.Context.Items.GetValue<Selection>();
                        Assert.AreEqual(states.Count, selectionBefore.SelectionCount);

                        EventPublishers.Studio.Publish(new DebugSelectionChangedEventArgs { DebugState = debugState, SelectionType = selectionType });
                    }
                }
                else
                {
                    EventPublishers.Studio.Publish(new DebugSelectionChangedEventArgs { DebugState = debugState, SelectionType = selectionType });
                }
            }

            //----------------------- Assert -----------------------//

            var selection = viewModel.Designer.Context.Items.GetValue<Selection>();

            switch (selectionType)
            {
                case ActivitySelectionType.None:
                    Assert.AreEqual(0, selection.SelectionCount);
                    Assert.AreEqual(1, viewModel.BringIntoViewHitCount); // 1 because we had to add something first!
                    Assert.AreEqual(0, viewModel.SelectedDebugModelItems.Count);
                    break;

                case ActivitySelectionType.Single:
                    Assert.AreEqual(1, selection.SelectionCount);
                    Assert.AreEqual(1, viewModel.BringIntoViewHitCount);
                    Assert.AreEqual(1, viewModel.SelectedDebugModelItems.Count);
                    break;

                case ActivitySelectionType.Add:
                    Assert.AreEqual(2, selection.SelectionCount);
                    Assert.AreEqual(2, viewModel.BringIntoViewHitCount);
                    Assert.AreEqual(2, viewModel.SelectedDebugModelItems.Count);
                    break;

                case ActivitySelectionType.Remove:
                    Assert.AreEqual(2, selection.SelectionCount);
                    Assert.AreEqual(2, viewModel.BringIntoViewHitCount); // 2 because we had to add something first!
                    Assert.AreEqual(1, viewModel.SelectedDebugModelItems.Count);
                    break;
            }

            foreach (var modelItem in selection.SelectedObjects)
            {
                Assert.AreEqual(selectedActivityType, modelItem.ItemType);
                if (selectsModelItem)
                {
                    var actualID = selectedActivityType == typeof(FlowDecision)
                        ? Guid.Parse(((TestDecisionActivity)modelItem.GetProperty("Condition")).UniqueID)
                        : ModelItemUtils.GetUniqueID(modelItem);

                    var actualState = states.FirstOrDefault(s => s.ID == actualID);
                    Assert.IsNotNull(actualState);
                }
            }

            viewModel.Dispose();
        }
        static void Verify_IsSelected_PublishesDebugSelectionChangedEventArgs(ActivityType activityType, ActivitySelectionType expectedSelectionType, int expectedCount, bool setIsSelected = false)
        {
            var expected = new DebugState {
                DisplayName = "IsSelectedTest", ID = Guid.NewGuid(), ActivityType = activityType
            };

            var events = new List <DebugSelectionChangedEventArgs>();

            var selectionChangedEvents = EventPublishers.Studio.GetEvent <DebugSelectionChangedEventArgs>();

            selectionChangedEvents.Subscribe(events.Add);

            var envRep = CreateEnvironmentRepository();

            var vm = new DebugStateTreeViewItemViewModelMock(envRep.Object)
            {
                Content = expected
            };

            if (setIsSelected)
            {
                // clear constructor events
                events.Clear();

                // events are only triggered when property changes to true
                vm.IsSelected = false;

                vm.SelectionType = expectedSelectionType;
                vm.IsSelected    = true;
            }
            else
            {
                vm.IsSelected    = false;
                vm.SelectionType = expectedSelectionType;
            }

            EventPublishers.Studio.RemoveEvent <DebugSelectionChangedEventArgs>();

            Assert.AreEqual(expectedCount, events.Count);
            if (events.Count > 0)
            {
                var foundEvent = events.Find(args => args.SelectionType == expectedSelectionType);
                Assert.IsNotNull(foundEvent);
                Assert.AreSame(expected, foundEvent.DebugState);
            }
        }
        static void Verify_IsSelected_PublishesDebugSelectionChangedEventArgs(ActivityType activityType, ActivitySelectionType expectedSelectionType, int expectedCount, bool setIsSelected = false)
        {
            var expected = new DebugState { DisplayName = "IsSelectedTest", ID = Guid.NewGuid(), ActivityType = activityType };

            var events = new List<DebugSelectionChangedEventArgs>();

            var selectionChangedEvents = EventPublishers.Studio.GetEvent<DebugSelectionChangedEventArgs>();
            selectionChangedEvents.Subscribe(events.Add);

            var envRep = CreateEnvironmentRepository();

            var vm = new DebugStateTreeViewItemViewModelMock(envRep.Object) { Content = expected };

            if(setIsSelected)
            {
                // clear constructor events
                events.Clear();

                // events are only triggered when property changes to true
                vm.IsSelected = false;

                vm.SelectionType = expectedSelectionType;
                vm.IsSelected = true;
            }
            else
            {
                vm.IsSelected = false;
                vm.SelectionType = expectedSelectionType;
            }

            EventPublishers.Studio.RemoveEvent<DebugSelectionChangedEventArgs>();

            Assert.AreEqual(expectedCount, events.Count);
            if(events.Count > 0)
            {
                var foundEvent = events.Find(args => args.SelectionType == expectedSelectionType);
                Assert.IsNotNull(foundEvent);
                Assert.AreSame(expected, foundEvent.DebugState);
            }
        }
Exemplo n.º 8
0
        // ReSharper disable once CyclomaticComplexity
        protected override void Initialize(IDebugState content)
        {
            //            _inputs.Clear();
            //            _outputs.Clear();
            //            _assertResultList.Clear();

            if (content == null)
            {
                return;
            }

            // Multiple when creating - so that we show the path of the execution when debugging
            SelectionType = ActivitySelectionType.Add;
            IsSelected    = content.ActivityType != ActivityType.Workflow;

            Guid serverId;
            var  isRemote = Guid.TryParse(content.Server, out serverId);

            if (isRemote || string.IsNullOrEmpty(content.Server))
            {
                var envId = content.EnvironmentID;

                var env = _serverRepository.All().FirstOrDefault(e => e.EnvironmentID == envId);
                if (env == null)
                {
                    var environmentModels = _serverRepository.LookupEnvironments(_serverRepository.ActiveServer);
                    if (environmentModels != null)
                    {
                        env = environmentModels.FirstOrDefault(e => e.EnvironmentID == envId) ?? _serverRepository.ActiveServer;
                    }
                    else
                    {
                        env = _serverRepository.Source;
                    }
                }
                if (Equals(env, _serverRepository.Source))
                {
                    // We have an unknown remote server ;)
                    content.Server = "Unknown Remote Server";
                }
                else
                {
                    if (env != null)
                    {
                        content.Server = env.Name;
                    }
                }
            }
            BuildBindableListFromDebugItems(content.Inputs, _inputs);
            BuildBindableListFromDebugItems(content.Outputs, _outputs);
            BuildBindableListFromDebugItems(content.AssertResultList, _assertResultList);

            if (content.HasError)
            {
                HasError = true;
            }
            if (content.AssertResultList != null)
            {
                var setAllError = false;
                // ReSharper disable once UnusedVariable
                foreach (var debugItem in content.AssertResultList.Where(debugItem => debugItem.ResultsList.Any(debugItemResult => debugItemResult.HasError)))
                {
                    setAllError = true;
                }

                foreach (var debugItemResult in content.AssertResultList.SelectMany(debugItem => debugItem.ResultsList))
                {
                    if (setAllError)
                    {
                        HasError   = true;
                        HasNoError = false;
                    }
                    else
                    {
                        HasError   = debugItemResult.HasError;
                        HasNoError = !debugItemResult.HasError;
                    }
                    MockSelected    = debugItemResult.MockSelected;
                    TestDescription = debugItemResult.MockSelected ? "Mock :" : "Assert :";
                }
            }
            SelectionType = ActivitySelectionType.Single;
        }
Exemplo n.º 9
0
        protected override void Initialize(IDebugState value)
        {
            if (value == null)
            {
                return;
            }
            SelectionType = ActivitySelectionType.Add;
            IsSelected    = value.ActivityType != ActivityType.Workflow;

            var isRemote = Guid.TryParse(value.Server, out Guid serverId);

            if (isRemote || string.IsNullOrEmpty(value.Server))
            {
                var envId = value.EnvironmentID;

                var env = _serverRepository.All().FirstOrDefault(e => e.EnvironmentID == envId);
                if (env == null)
                {
                    var environmentModels = _serverRepository.LookupEnvironments(_serverRepository.ActiveServer);
                    env = environmentModels != null?environmentModels.FirstOrDefault(e => e.EnvironmentID == envId) ?? _serverRepository.ActiveServer : _serverRepository.Source;
                }
                if (Equals(env, _serverRepository.Source))
                {
                    value.Server = "Unknown Remote Server";
                }
                else
                {
                    if (env != null)
                    {
                        value.Server = env.Name;
                    }
                }
            }
            BuildBindableListFromDebugItems(value.Inputs, _inputs);
            BuildBindableListFromDebugItems(value.Outputs, _outputs);
            BuildBindableListFromDebugItems(value.AssertResultList, _assertResultList);

            if (value.HasError)
            {
                HasError = true;
            }
            if (value.AssertResultList != null)
            {
                var setAllError = false;

                foreach (var debugItem in value.AssertResultList.Where(debugItem => debugItem.ResultsList.Any(debugItemResult => debugItemResult.HasError)))
                {
                    setAllError = true;
                }

                foreach (var debugItemResult in value.AssertResultList.SelectMany(debugItem => debugItem.ResultsList))
                {
                    if (setAllError)
                    {
                        HasError   = true;
                        HasNoError = false;
                    }
                    else
                    {
                        HasError   = debugItemResult.HasError;
                        HasNoError = !debugItemResult.HasError;
                    }
                    MockSelected    = debugItemResult.MockSelected;
                    TestDescription = debugItemResult.MockSelected ? "Mock :" : "Assert :";
                }
            }
            SelectionType = ActivitySelectionType.Single;
        }