public void WorkflowInputDataViewModel_ExecuteWorkflow_InvokesSendExecuteRequest()
        {
            //------------Setup for test--------------------------
            var rm = new Mock <IContextualResourceModel>();

            rm.Setup(r => r.ServerID).Returns(_serverID);
            rm.Setup(r => r.ResourceName).Returns(ResourceName);
            rm.Setup(r => r.WorkflowXaml).Returns(new StringBuilder(StringResourcesTest.DebugInputWindow_WorkflowXaml));
            rm.Setup(r => r.ID).Returns(_resourceID);
            rm.Setup(r => r.DataList).Returns(StringResourcesTest.DebugInputWindow_DataList);
            var mockEnvironmentModel = new Mock <IEnvironmentModel>();

            mockEnvironmentModel.Setup(model => model.ID).Returns(Guid.Empty);
            var mockEnvironmentConnection = new Mock <IEnvironmentConnection>();

            mockEnvironmentModel.Setup(model => model.Connection).Returns(mockEnvironmentConnection.Object);
            rm.Setup(model => model.Environment).Returns(mockEnvironmentModel.Object);

            var serviceDebugInfoModel = new ServiceDebugInfoModel
            {
                DebugModeSetting = DebugMode.DebugInteractive,
                RememberInputs   = true,
                ResourceModel    = rm.Object,
                ServiceInputData = "<DataList></DataList>"
            };

            var debugOutputViewModel       = CreateDebugOutputViewModel();
            var workflowInputDataViewModel = new WorkflowInputDataViewModelMock(serviceDebugInfoModel, debugOutputViewModel);

            workflowInputDataViewModel.DebugExecutionStart += () => debugOutputViewModel.DebugStatus = DebugStatus.Executing;
            //------------Execute Test---------------------------
            workflowInputDataViewModel.ExecuteWorkflow();

            //------------Assert Results-------------------------
            Assert.AreEqual(DebugStatus.Executing, debugOutputViewModel.DebugStatus);

            Assert.AreEqual(1, workflowInputDataViewModel.SendExecuteRequestHitCount);
            Assert.IsNotNull(workflowInputDataViewModel.SendExecuteRequestPayload);

            var payload = XElement.Parse(workflowInputDataViewModel.DebugTo.XmlData);

            payload.Add(new XElement("BDSDebugMode", workflowInputDataViewModel.DebugTo.IsDebugMode));
            payload.Add(new XElement("DebugSessionID", workflowInputDataViewModel.DebugTo.SessionID));
            payload.Add(new XElement("EnvironmentID", Guid.Empty));

            var expectedPayload = payload.ToString(SaveOptions.None);
            var actualPayload   = workflowInputDataViewModel.SendExecuteRequestPayload.ToString(SaveOptions.None);

            Assert.AreEqual(expectedPayload, actualPayload);
        }
        public void WorkflowInputDataViewModel_ExecuteWorkflow_InvokesSendExecuteRequest()
        {
            //------------Setup for test--------------------------
            var rm = new Mock<IContextualResourceModel>();
            rm.Setup(r => r.ServerID).Returns(_serverID);
            rm.Setup(r => r.ResourceName).Returns(ResourceName);
            rm.Setup(r => r.WorkflowXaml).Returns(new StringBuilder(StringResourcesTest.DebugInputWindow_WorkflowXaml));
            rm.Setup(r => r.ID).Returns(_resourceID);
            rm.Setup(r => r.DataList).Returns(StringResourcesTest.DebugInputWindow_DataList);
            var mockEnvironmentModel = new Mock<IEnvironmentModel>();
            mockEnvironmentModel.Setup(model => model.ID).Returns(Guid.Empty);
            var mockEnvironmentConnection = new Mock<IEnvironmentConnection>();
            mockEnvironmentModel.Setup(model => model.Connection).Returns(mockEnvironmentConnection.Object);
            rm.Setup(model => model.Environment).Returns(mockEnvironmentModel.Object);

            var serviceDebugInfoModel = new ServiceDebugInfoModel
            {
                DebugModeSetting = DebugMode.DebugInteractive,
                RememberInputs = true,
                ResourceModel = rm.Object,
                ServiceInputData = "<DataList></DataList>"
            };

            var debugOutputViewModel = CreateDebugOutputViewModel();
            var workflowInputDataViewModel = new WorkflowInputDataViewModelMock(serviceDebugInfoModel, debugOutputViewModel);
            workflowInputDataViewModel.DebugExecutionStart += () => debugOutputViewModel.DebugStatus = DebugStatus.Executing;
            //------------Execute Test---------------------------
            workflowInputDataViewModel.ExecuteWorkflow();

            //------------Assert Results-------------------------
            Assert.AreEqual(DebugStatus.Executing, debugOutputViewModel.DebugStatus);

            Assert.AreEqual(1, workflowInputDataViewModel.SendExecuteRequestHitCount);
            Assert.IsNotNull(workflowInputDataViewModel.SendExecuteRequestPayload);

            var payload = XElement.Parse(workflowInputDataViewModel.DebugTo.XmlData);
            payload.Add(new XElement("BDSDebugMode", workflowInputDataViewModel.DebugTo.IsDebugMode));
            payload.Add(new XElement("DebugSessionID", workflowInputDataViewModel.DebugTo.SessionID));
            payload.Add(new XElement("EnvironmentID", Guid.Empty));

            var expectedPayload = payload.ToString(SaveOptions.None);
            var actualPayload = workflowInputDataViewModel.SendExecuteRequestPayload.ToString(SaveOptions.None);
            Assert.AreEqual(expectedPayload, actualPayload);
        }