public override IBinaryDataList GetOutputs() { IBinaryDataList result; ErrorResultTO errors; IDataListCompiler compiler = DataListFactory.CreateDataListCompiler(); var outputDlString = compiler.GenerateWizardDataListFromDefs(OutputMapping, enDev2ArgumentType.Output, false, out errors, true); var outputDlShape = compiler.GenerateWizardDataListFromDefs(OutputMapping, enDev2ArgumentType.Output, false, out errors); if (!errors.HasErrors()) { Guid dlId = compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._XML_Without_SystemTags), outputDlString, outputDlShape, out errors); if (!errors.HasErrors()) { result = compiler.FetchBinaryDataList(dlId, out errors); } else { string errorString = string.Join(",", errors.FetchErrors()); throw new Exception(errorString); } } else { string errorString = string.Join(",", errors.FetchErrors()); throw new Exception(errorString); } return(result); }
public void XML_Without_SystemTags_ConvertTo_WhenSingleRecordset_ExpectNoErrors() { //------------Setup for test-------------------------- IDataListCompiler compiler = DataListFactory.CreateDataListCompiler(); ErrorResultTO errors; var data = new StringBuilder("<DataList><hero index=\"1\"><name>Chuck Norris</name><pushups>All of them</pushups></hero></DataList>"); var shape = new StringBuilder(@"<DataList> <hero Description="""" IsEditable=""True"" ColumnIODirection=""Output""> <name Description="""" IsEditable=""True"" ColumnIODirection=""Output"" /> <pushups Description="""" IsEditable=""True"" ColumnIODirection=""Output"" /> </hero> <rect Description="""" IsEditable=""True"" ColumnIODirection=""None""> <set Description="""" IsEditable=""True"" ColumnIODirection=""None"" /> </rect> </DataList>"); //------------Execute Test--------------------------- var dlID = compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._XML_Without_SystemTags), data, shape, out errors); var result = compiler.ConvertFrom(dlID, DataListFormat.CreateFormat(GlobalConstants._XML_Without_SystemTags), enTranslationDepth.Data, out errors); //------------Assert Results------------------------- const string expected = "<DataList><hero><name>Chuck Norris</name><pushups>All of them</pushups></hero></DataList>"; StringAssert.Contains(result.ToString(), expected); }
public void DecisionWithQuotesInDataExpectedNoUnhandledExceptions() { Dev2DecisionStack dds = new Dev2DecisionStack { TheStack = new List <Dev2Decision>(), Mode = Dev2DecisionMode.AND }; IDataListCompiler compiler = DataListFactory.CreateDataListCompiler(); dds.AddModelItem(new Dev2Decision { Col1 = "[[var]]", Col2 = "[[var]]", EvaluationFn = enDecisionType.IsEqual }); string modelData = dds.ToVBPersistableModel(); CurrentDl = "<ADL><var/></ADL>"; TestData = "<root><var>\"something \"data\" \"</var></root>"; ErrorResultTO errors; Guid exeID = compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._XML), new StringBuilder(TestData), new StringBuilder(CurrentDl), out errors); IList <string> getDatalistID = new List <string> { exeID.ToString() }; var res = new Dev2DataListDecisionHandler().ExecuteDecisionStack(modelData, getDatalistID); // remove test datalist ;) DataListRemoval(exeID); Assert.IsTrue(res); }
public IBinaryDataList DeSerialize(string data, string targetShape, enTranslationTypes typeOf, out string error) { error = string.Empty; IBinaryDataList result = Dev2BinaryDataListFactory.CreateDataList(); IDataListCompiler compiler = DataListFactory.CreateDataListCompiler(); if (typeOf == enTranslationTypes.XML) { ErrorResultTO errors; Guid resultId = compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._Studio_Debug_XML), data.ToStringBuilder(), new StringBuilder(targetShape), out errors); if (errors.HasErrors()) { error = errors.FetchErrors()[0]; // take the first error ;) } else { if (result != null) { compiler.ForceDeleteDataListByID(result.UID); } result = compiler.FetchBinaryDataList(resultId, out errors); if (errors.HasErrors()) { error = errors.FetchErrors()[0]; // take the first error ;) } } } return(result); }
public void CanConvertFromWithSingleScalarDataListXMLTranslatorWithOutSystemTags() { IDataListCompiler compiler = DataListFactory.CreateDataListCompiler(); ErrorResultTO errors; Guid dlID = compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._XML_Without_SystemTags), new StringBuilder("<root><scalar>s1</scalar></root>"), new StringBuilder("<root><scalar/></root>"), out errors); var data = compiler.ConvertFrom(dlID, DataListFormat.CreateFormat(GlobalConstants._XML_Without_SystemTags), enTranslationDepth.Data, out errors); const string Expected = "<DataList><scalar>s1</scalar></DataList>"; Assert.AreEqual(Expected, data.ToString(), "Expected [ " + Expected + " ] but got [ " + data + " ]"); }
public void Can_Create_BinaryDataList_With_ColumnIODirection_Input() { ErrorResultTO errors; var shape = new StringBuilder(@"<DataList><recset Description="""" IsEditable=""True"" ColumnIODirection=""Input"" ><f1 Description="""" IsEditable=""True"" ColumnIODirection=""Input"" /><f2 Description="""" IsEditable=""True"" ColumnIODirection=""Input"" /><f3 Description="""" IsEditable=""True"" ColumnIODirection=""Input"" /><f4 Description="""" IsEditable=""True"" ColumnIODirection=""Input"" /><f5 Description="""" IsEditable=""True"" ColumnIODirection=""Input"" /></recset><myScalar Description="""" IsEditable=""True"" ColumnIODirection=""Input"" /></DataList>"); Guid tmp = _compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._Studio_XML), shape, shape, out errors); IBinaryDataList bdl = _compiler.FetchBinaryDataList(tmp, out errors); _compiler.DeleteDataListByID(tmp); foreach (IBinaryDataListEntry entry in bdl.FetchAllEntries()) { if (entry.IsRecordset) { Assert.AreEqual(entry.ColumnIODirection, enDev2ColumnArgumentDirection.Input); foreach (Dev2Column c in entry.Columns) { Assert.AreEqual(enDev2ColumnArgumentDirection.Input, c.ColumnIODirection); } } else { Assert.AreEqual(enDev2ColumnArgumentDirection.Input, entry.ColumnIODirection); } } _compiler.ForceDeleteDataListByID(tmp); }
public void CanConvertFromDataListToJsonSingleScalarSingleRecordsetColumn() { IDataListCompiler compiler = DataListFactory.CreateDataListCompiler(); ErrorResultTO errors; Guid dlID = compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._XML_Without_SystemTags), new StringBuilder("<root><scalar>s1</scalar><rs><val>1</val></rs><rs><val>2</val></rs></root>"), new StringBuilder("<root><scalar/><rs><val/></rs></root>"), out errors); var data = compiler.ConvertFrom(dlID, DataListFormat.CreateFormat(GlobalConstants._JSON), enTranslationDepth.Data, out errors); var result = JsonConvert.DeserializeObject <TestClassRsWithScalar>(data.ToString()); Assert.AreEqual("s1", result.scalar); Assert.AreEqual("1", result.rs[0].val); Assert.AreEqual("2", result.rs[1].val); }
/// <summary> /// Gets the correct data list. /// </summary> /// <param name="dataObject">The data object.</param> /// <param name="workspaceId">The workspace unique identifier.</param> /// <param name="errors">The errors.</param> /// <param name="compiler">The compiler.</param> /// <returns></returns> public Guid CorrectDataList(IDSFDataObject dataObject, Guid workspaceId, out ErrorResultTO errors, IDataListCompiler compiler) { StringBuilder theShape; ErrorResultTO invokeErrors; errors = new ErrorResultTO(); // If no DLID, we need to make it based upon the request ;) if (dataObject.DataListID == GlobalConstants.NullDataListID) { theShape = FindServiceShape(workspaceId, dataObject.ResourceID); dataObject.DataListID = compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._XML_Without_SystemTags), dataObject.RawPayload, theShape, out invokeErrors); errors.MergeErrors(invokeErrors); dataObject.RawPayload = new StringBuilder(); } // force all items to exist in the DL ;) theShape = FindServiceShape(workspaceId, dataObject.ResourceID); var innerDatalistID = compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._XML_Without_SystemTags), new StringBuilder(), theShape, out invokeErrors); errors.MergeErrors(invokeErrors); // Add left to right var left = compiler.FetchBinaryDataList(dataObject.DataListID, out invokeErrors); errors.MergeErrors(invokeErrors); var right = compiler.FetchBinaryDataList(innerDatalistID, out invokeErrors); errors.MergeErrors(invokeErrors); DataListUtil.MergeDataList(left, right, out invokeErrors); errors.MergeErrors(invokeErrors); compiler.PushBinaryDataList(left.UID, left, out invokeErrors); errors.MergeErrors(invokeErrors); return(innerDatalistID); }
/// <summary> /// The ForEach Activity requires the data returned from an activity /// We will mock the DSF channel to return something that we expect is shaped. /// </summary> /// <returns></returns> public Mock <IEsbChannel> ExecuteForEachProcess(out IDSFDataObject dataObject, bool isDebug = false, int nestingLevel = 0) { var svc = new ServiceAction { Name = "ForEachTestAction", ServiceName = "UnitTestService" }; var mockChannel = new Mock <IEsbChannel>(); svc.SetActivity(FlowchartProcess); if (CurrentDl == null) { CurrentDl = TestData; } Compiler = DataListFactory.CreateDataListCompiler(); ErrorResultTO errors; Guid exId = Compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._XML), new StringBuilder(TestData), new StringBuilder(CurrentDl), out errors); if (errors.HasErrors()) { string errorString = errors.FetchErrors().Aggregate(string.Empty, (current, item) => current + item); throw new Exception(errorString); } dataObject = new DsfDataObject(CurrentDl, exId) { // NOTE: WorkflowApplicationFactory.InvokeWorkflowImpl() will use HostSecurityProvider.Instance.ServerID // if this is NOT provided which will cause the tests to fail! ServerID = Guid.NewGuid(), IsDebug = isDebug, ForEachNestingLevel = nestingLevel, ParentThreadID = 1 }; // we need to set this now ;) mockChannel.Setup(c => c.ExecuteSubRequest(It.IsAny <IDSFDataObject>(), It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>(), out errors)).Verifiable(); WfExecutionContainer wfec = new WfExecutionContainer(svc, dataObject, Dev2.Workspaces.WorkspaceRepository.Instance.ServerWorkspace, mockChannel.Object); errors.ClearErrors(); dataObject.DataListID = wfec.Execute(out errors); return(mockChannel); }
public void Replace_CaseMatch_Recorset_Expected_No_Replaces() { ErrorResultTO errors; IDataListCompiler compiler = DataListFactory.CreateDataListCompiler(); Guid exidx = compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._XML), TestStrings.ReplaceDataListWithData, TestStrings.ReplaceDataListShape.ToStringBuilder(), out errors); IDev2DataListUpsertPayloadBuilder <string> payloadBuilder = Dev2DataListBuilderFactory.CreateStringDataListUpsertBuilder(true); IBinaryDataListEntry entry; IDev2ReplaceOperation replaceOperation = Dev2OperationsFactory.CreateReplaceOperation(); const string Expression = "[[results(*).resfield]]"; int replaceCount; // ReSharper disable RedundantAssignment payloadBuilder = replaceOperation.Replace(exidx, Expression, "hello", "World", true, payloadBuilder, out errors, out replaceCount, out entry); // ReSharper restore RedundantAssignment Assert.AreEqual(0, replaceCount); }
void MergeResultIntoDataList(IDataListCompiler compiler, IOutputFormatter outputFormatter, object result, out ErrorResultTO errors) { errors = new ErrorResultTO(); // NOTE : This is only used by Plugin Services and is 1 of 4 locations that now needs to be updated should the DataList or execution model change ;) // Format the XML data if (RequiresFormatting) { if (result == null) { return; } try { errors = new ErrorResultTO(); ErrorResultTO invokeErrors; var formattedPayload = result.ToString(); if (!HandlesOutputFormatting) { formattedPayload = outputFormatter != null?outputFormatter.Format(result).ToString() : result.ToString(); } // Create a shape from the service action outputs var dlShape = compiler.ShapeDev2DefinitionsToDataList(Service.OutputSpecification, enDev2ArgumentType.Output, false, out invokeErrors); errors.MergeErrors(invokeErrors); // Push formatted data into a datalist using the shape from the service action outputs var shapeDataListID = compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._XML), formattedPayload.ToStringBuilder(), dlShape, out invokeErrors); errors.MergeErrors(invokeErrors); // This merge op is killing the alias data.... // We need to account for alias ops too ;) compiler.SetParentID(shapeDataListID, DataObj.DataListID); compiler.PopulateDataList(DataListFormat.CreateFormat(GlobalConstants._XML_Without_SystemTags), InstanceOutputDefintions, InstanceOutputDefintions, shapeDataListID, out invokeErrors); errors.MergeErrors(invokeErrors); } catch (Exception) { errors.AddError("Data Format Error : It is likely that you tested with one format yet the service is returning another. IE you tested with XML and it now returns JSON"); } } }
void ExecuteRequestAsync(IDSFDataObject dataObject, IDataListCompiler compiler, IEsbServiceInvoker invoker, bool isLocal, Guid oldID, out ErrorResultTO invokeErrors) { var clonedDataObject = dataObject.Clone(); StringBuilder dl1 = compiler.ConvertFrom(dataObject.DataListID, DataListFormat.CreateFormat(GlobalConstants._XML_Without_SystemTags), enTranslationDepth.Data, out invokeErrors); var shapeOfData = FindServiceShape(dataObject.WorkspaceID, dataObject.ResourceID); var executionContainer = invoker.GenerateInvokeContainer(clonedDataObject, clonedDataObject.ServiceName, isLocal, oldID); if (executionContainer != null) { if (!isLocal) { var remoteContainer = executionContainer as RemoteWorkflowExecutionContainer; if (remoteContainer != null) { if (!remoteContainer.ServerIsUp()) { invokeErrors.AddError("Asynchronous execution failed: Remote server unreachable"); } SetRemoteExecutionDataList(dataObject, executionContainer); shapeOfData = dataObject.RemoteInvokeResultShape; } } if (!invokeErrors.HasErrors()) { var task = Task.Factory.StartNew(() => { Dev2Logger.Log.Info("ASYNC EXECUTION USER CONTEXT IS [ " + Thread.CurrentPrincipal.Identity.Name + " ]"); ErrorResultTO error; clonedDataObject.DataListID = compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._XML_Without_SystemTags), dl1, shapeOfData, out error); executionContainer.Execute(out error); }); // ReSharper disable ImplicitlyCapturedClosure task.ContinueWith(o => // ReSharper restore ImplicitlyCapturedClosure { DataListRegistar.DisposeScope(o.Id, clonedDataObject.DataListID); o.Dispose(); }); } } else { invokeErrors.AddError("Asynchronous execution failed: Resource not found"); } }
/// <summary> /// Creates a binary data list from XML data. /// </summary> /// <param name="xmlDataList">The XML data list.</param> /// <param name="errors">The errors.</param> /// <returns></returns> private IBinaryDataList CreateBinaryDataListFromXmlData(string xmlDataList, out ErrorResultTO errors) { IBinaryDataList result = null; ErrorResultTO allErrors = new ErrorResultTO(); errors = new ErrorResultTO(); Guid dlGuid = _compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._Studio_XML), xmlDataList, xmlDataList, out errors); if (!errors.HasErrors()) { result = _compiler.FetchBinaryDataList(dlGuid, out errors); if (errors.HasErrors()) { allErrors.MergeErrors(errors); } } _compiler.ForceDeleteDataListByID(dlGuid); return(result); }
public void CanConvertDataTableToDataListWithScalar() { IDataListCompiler compiler = DataListFactory.CreateDataListCompiler(); // build up DataTable DataTable dbData = new DataTable("rs"); dbData.Columns.Add("scalar", typeof(string)); dbData.Rows.Add("aaa"); // Execute Translator ErrorResultTO errors; Guid dlID = compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._DATATABLE), dbData, new StringBuilder("<root><scalar/></root>"), out errors); var data = compiler.ConvertFrom(dlID, DataListFormat.CreateFormat(GlobalConstants._XML), enTranslationDepth.Data, out errors); Assert.AreEqual("<DataList><scalar>aaa</scalar></DataList>", data.ToString()); }
public void Dev2DataListDecisionHandler_ExecuteDecisionStack_SlashInVariable_CanDeserialize() { CurrentDl = "<ADL><down/><resul><t/></resul></ADL>"; TestData = @"<root><down>1\n2\n3\n4\n</down><resul><t>1234</t></resul><resul><t>1234</t></resul><resul><t>1/2\3/4\</t></resul><resul><t>1\n2\n3\n4\n</t></resul><resul><t>1 2 3 4 5 </t></resul></root>"; ErrorResultTO errors; IDataListCompiler compiler = DataListFactory.CreateDataListCompiler(); Guid exeID = compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._XML), new StringBuilder(TestData), new StringBuilder(CurrentDl), out errors); IList <string> getDatalistID = new List <string> { exeID.ToString() }; var dev2DataListDecisionHandler = new Dev2DataListDecisionHandler(); //------------Execute Test--------------------------- var res = dev2DataListDecisionHandler.ExecuteDecisionStack(@"{""TheStack"":[{""Col1"":""[[resul(1).t]]"",""Col2"":""1234"",""Col3"":"""",""PopulatedColumnCount"":2,""EvaluationFn"":""IsEqual""},{""Col1"":""[[resul(2).t]]"",""Col2"":""1234"",""Col3"":"""",""PopulatedColumnCount"":2,""EvaluationFn"":""IsEqual""},{""Col1"":""[[resul(3).t]]"",""Col2"":""1/2\\3/4\\"",""Col3"":"""",""PopulatedColumnCount"":2,""EvaluationFn"":""IsEqual""},{""Col1"":""[[resul(4).t]]"",""Col2"":""[[down]]"",""Col3"":"""",""PopulatedColumnCount"":2,""EvaluationFn"":""IsEqual""},{""Col1"":""[[resul(5).t]]"",""Col2"":""1 2 3 4 5 "",""Col3"":"""",""PopulatedColumnCount"":2,""EvaluationFn"":""IsEqual""}],""TotalDecisions"":5,""ModelName"":""Dev2DecisionStack"",""Mode"":""AND"",""TrueArmText"":""True"",""FalseArmText"":""False"",""DisplayText"":""Decision""}", getDatalistID); // Assert Can Deserialize Assert.IsTrue(res); }
/// <summary> /// Creates a binary data list from XML data. /// </summary> /// <param name="xmlDataList">The XML data list.</param> /// <param name="errors">The errors.</param> /// <returns></returns> private IBinaryDataList CreateBinaryDataListFromXmlData(string xmlDataList, out ErrorResultTO errors) { IDataListCompiler compiler = DataListFactory.CreateDataListCompiler(); IBinaryDataList result = null; var allErrors = new ErrorResultTO(); Guid dlGuid = compiler.ConvertTo( DataListFormat.CreateFormat(GlobalConstants._Studio_XML), xmlDataList.ToStringBuilder(), xmlDataList.ToStringBuilder(), out errors); if (!errors.HasErrors()) { result = compiler.FetchBinaryDataList(dlGuid, out errors); if (errors.HasErrors()) { allErrors.MergeErrors(errors); } } compiler.ForceDeleteDataListByID(dlGuid); return(result); }
/// <summary> /// The ForEach Activity requires the data returned from an activity /// We will mock the DSF channel to return something that we expect is shaped. /// </summary> /// <returns></returns> public void ExecuteForEachProcessForReal(out IDSFDataObject dataObject) { var svc = new ServiceAction { Name = "ForEachTestAction", ServiceName = "UnitTestService" }; IEsbChannel channel = new EsbServicesEndpoint(); svc.SetActivity(FlowchartProcess); if (CurrentDl == null) { CurrentDl = TestData; } Compiler = DataListFactory.CreateDataListCompiler(); ErrorResultTO errors; Guid exId = Compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._XML), new StringBuilder(TestData), new StringBuilder(CurrentDl), out errors); if (errors.HasErrors()) { string errorString = errors.FetchErrors().Aggregate(string.Empty, (current, item) => current + item); throw new Exception(errorString); } dataObject = new DsfDataObject(CurrentDl, exId) { // NOTE: WorkflowApplicationFactory.InvokeWorkflowImpl() will use HostSecurityProvider.Instance.ServerID // if this is NOT provided which will cause the tests to fail! ServerID = Guid.NewGuid(), ParentThreadID = 1 }; // we need to set this now ;) WfExecutionContainer wfec = new WfExecutionContainer(svc, dataObject, Dev2.Workspaces.WorkspaceRepository.Instance.ServerWorkspace, channel); errors.ClearErrors(); dataObject.DataListID = wfec.Execute(out errors); }
public void CheckOutputFormatOfDataListForViewInBrowserForOneRecordsetOutputRegion() { IDataListCompiler comp = DataListFactory.CreateDataListCompiler(); ErrorResultTO errors; Guid dlId = comp.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._XML), string.Empty.ToStringBuilder(), ServiceShape.ToStringBuilder(), out errors); var resource = ResourceCatalog.Instance.GetResource(_workspaceId, ServiceName); IDSFDataObject dataObj = new DsfDataObject(string.Empty, dlId) { WorkspaceID = _workspaceId, DataListID = dlId, ServiceName = ServiceName, ResourceID = resource.ResourceID }; EsbServicesEndpoint endPoint = new EsbServicesEndpoint(); string result = endPoint.FetchExecutionPayload(dataObj, DataListFormat.CreateFormat(GlobalConstants._XML_Without_SystemTags), out errors); DeleteDataList(dlId); Assert.IsTrue(result.IndexOf("<outputScalar", StringComparison.Ordinal) > 0, "Output format missing required tag of <outputScalar>"); Assert.IsTrue(result.IndexOf("<bothScalar", StringComparison.Ordinal) > 0, "Output format missing required tag of <bothScalar"); Assert.IsTrue(result.IndexOf("<recset", StringComparison.Ordinal) > 0, "Output format missing required tag of <recset></recset>"); Assert.IsTrue(result.IndexOf("<f2", StringComparison.Ordinal) > 0, "Output format missing required tag of <recset><f2/></recset>"); Assert.IsTrue(result.IndexOf("<f3", StringComparison.Ordinal) > 0, "Output format missing required tag of <recset><f3/></recset>"); }
public void DataTableToDataListThrowsExceptionOnMultipleRecordsets() { IDataListCompiler compiler = DataListFactory.CreateDataListCompiler(); // build up DataTable DataTable dbData = new DataTable("rs"); dbData.Columns.Add("val", typeof(string)); dbData.Columns.Add("otherVal", typeof(int)); dbData.Rows.Add("aaa", 1); dbData.Rows.Add("zzz", 2); // Execute Translator ErrorResultTO errors; compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._DATATABLE), dbData, new StringBuilder("<root><rs><val/><otherVal/></rs><rs2><val/></rs2></root>"), out errors); Assert.AreEqual(1, errors.FetchErrors().Count, "Did not return the correct number of errors"); Assert.AreEqual("DataTable translator can only map to a single recordset!", errors.FetchErrors()[0], "Did not return the correct error message"); }
public void CanConvertDataTableToDataList() { IDataListCompiler compiler = DataListFactory.CreateDataListCompiler(); // build up DataTable DataTable dbData = new DataTable("rs"); dbData.Columns.Add("val", typeof(string)); dbData.Columns.Add("otherVal", typeof(int)); dbData.Rows.Add("aaa", 1); dbData.Rows.Add("zzz", 2); // Execute Translator ErrorResultTO errors; Guid dlID = compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._DATATABLE), dbData, new StringBuilder("<root><rs><val/><otherVal/></rs></root>"), out errors); var data = compiler.ConvertFrom(dlID, DataListFormat.CreateFormat(GlobalConstants._XML), enTranslationDepth.Data, out errors); Assert.AreEqual("<DataList><rs><val>aaa</val><otherVal>1</otherVal></rs><rs><val>zzz</val><otherVal>2</otherVal></rs></DataList>", data.ToString()); }
public void Replace_NoCaseMatch_Recorset_Expected_Correct_Data_Returned_ReplaceCount_Twenty() { ErrorResultTO errors; IDataListCompiler compiler = DataListFactory.CreateDataListCompiler(); Guid exidx = compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._XML), TestStrings.ReplaceDataListWithData.ToStringBuilder(), TestStrings.ReplaceDataListShape.ToStringBuilder(), out errors); IDev2DataListUpsertPayloadBuilder <string> payloadBuilder = Dev2DataListBuilderFactory.CreateStringDataListUpsertBuilder(true); IDev2ReplaceOperation replaceOperation = Dev2OperationsFactory.CreateReplaceOperation(); IBinaryDataListEntry entry; const string Expected = "World0"; const string Expression = "[[results(*).resfield]]"; int replaceCount; payloadBuilder = replaceOperation.Replace(exidx, Expression, "hello", "World", false, payloadBuilder, out errors, out replaceCount, out entry); var frames = payloadBuilder.FetchFrames(); var frame = frames[0].FetchNextFrameItem(); Assert.AreEqual(20, replaceCount); Assert.AreEqual("[[results(1).resfield]]", frame.Expression); Assert.AreEqual(Expected, frame.Value); }
public void Populate_TwiceWithNumericIndex_PutsDataAtIndex() { //-------------------Setup ---------------------------------- const string outputDefs = "<Outputs><Output Name=\"[[rs(2).num]]\" MapsTo=\"[[rec(*).num]]\" Value=\"[[rs(2).num]]\" Recordset=\"rs\"/></Outputs>"; IDataListCompiler compiler = DataListFactory.CreateDataListCompiler(); ErrorResultTO errors; Guid dataListID = compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._XML_Without_SystemTags), new StringBuilder("<root></root>"), new StringBuilder("<root><rs><num></num></rs></root>"), out errors); // build up DataTable DataTable dbData = new DataTable("rec"); dbData.Columns.Add("num", typeof(string)); dbData.Rows.Add("One"); dbData.Rows.Add("Two"); dbData.Rows.Add("Three"); // Execute Translator Guid dlID = compiler.PopulateDataList(DataListFormat.CreateFormat(GlobalConstants._DATATABLE), dbData, outputDefs, dataListID, out errors); var data = compiler.ConvertFrom(dlID, DataListFormat.CreateFormat(GlobalConstants._XML), enTranslationDepth.Data, out errors); Assert.AreEqual("<DataList><rs><num>One</num></rs><rs><num>Two</num></rs><rs><num>Three</num></rs></DataList>", data.ToString()); }
public dynamic CheckPathOperationActivityDebugInputOutput <T>(DsfNativeActivity <T> activity, string dataListShape, string dataListWithData, out List <DebugItem> inputResults, out List <DebugItem> outputResults, IPrincipal user = null) { ErrorResultTO errors; TestStartNode = new FlowStep { Action = activity }; TestData = dataListWithData; CurrentDl = dataListShape; User = user; Compiler = DataListFactory.CreateDataListCompiler(); ExecutionId = Compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._XML), new StringBuilder(TestData), new StringBuilder(CurrentDl), out errors); IBinaryDataList dl = Compiler.FetchBinaryDataList(ExecutionId, out errors); var result = ExecuteProcess(null, true); inputResults = activity.GetDebugInputs(dl); outputResults = activity.GetDebugOutputs(dl); return(result); }
public void CheckOutputFormatOfDataListForViewInBrowserForAllInputRegions() { IDataListCompiler comp = DataListFactory.CreateDataListCompiler(); ErrorResultTO errors; Guid dlId = comp.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._XML), string.Empty, ServiceShape.ToStringBuilder(), out errors); IDSFDataObject dataObj = new DsfDataObject(string.Empty, dlId) { WorkspaceID = _workspaceId, DataListID = dlId, ServiceName = ServiceName }; EsbServicesEndpoint endPoint = new EsbServicesEndpoint(); string result = endPoint.FetchExecutionPayload(dataObj, DataListFormat.CreateFormat(GlobalConstants._XML_Without_SystemTags), out errors); DeleteDataList(dlId); Assert.IsTrue(result.IndexOf("<inputScalar", StringComparison.Ordinal) < 0, "Output format contains additional tag, <inputScalar>"); Assert.IsTrue(result.IndexOf("<noneScalar", StringComparison.Ordinal) < 0, "Output format contains additional tag, <noneScalar>"); Assert.IsTrue(result.IndexOf("<f1", StringComparison.Ordinal) < 0, "Output format contains additional tag, <recset><f1/></recset>"); Assert.IsTrue(result.IndexOf("<f4", StringComparison.Ordinal) < 0, "Output format contains additional tag, <recset><f4/></recset>"); Assert.IsTrue(result.IndexOf("<newrecset", StringComparison.Ordinal) < 0, "Output format contains additional tag, <newrecset></newrecset>"); Assert.IsTrue(result.IndexOf("<field1", StringComparison.Ordinal) < 0, "Output format contains additional tag, <newrecset><f1/></newrecset>"); Assert.IsTrue(result.IndexOf("<field2", StringComparison.Ordinal) < 0, "Output format contains additional tag, <newrecset><f1/></newrecset>"); }
public void UpsertBuilder_AssignStyleAppend_Expect_2RecordSetEntries_And_Scalar() { IDev2DataListUpsertPayloadBuilder <string> tmp = Dev2DataListBuilderFactory.CreateStringDataListUpsertBuilder(true); tmp.Add("[[scalar]]", "myScalar"); tmp.FlushIterationFrame(); tmp.Add("[[recset().f1]]", "field1_value1"); tmp.Add("[[recset().f2]]", "field2_value1"); tmp.FlushIterationFrame(); tmp.Add("[[recset().f1]]", "field1_value2"); tmp.Add("[[recset().f2]]", "field2_value2"); ErrorResultTO errors; Guid id = _compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._XML), string.Empty.ToStringBuilder(), new StringBuilder(_dlShape), out errors); _compiler.Upsert(id, tmp, out errors); IBinaryDataList bdl = _compiler.FetchBinaryDataList(id, out errors); // Else we good to go, normal asserts ;) IBinaryDataListEntry recset; string error; bdl.TryGetEntry("recset", out recset, out error); IBinaryDataListEntry scalar; bdl.TryGetEntry("scalar", out scalar, out error); var res1 = scalar.FetchScalar().TheValue; var res2 = recset.FetchLastRecordsetIndex(); // we have a single scalar Assert.AreEqual("myScalar", res1); Assert.AreEqual(2, res2); Assert.IsNull(tmp.DebugOutputs[0].TargetEntry); Assert.IsNull(tmp.DebugOutputs[0].RightEntry); Assert.IsNull(tmp.DebugOutputs[0].LeftEntry); }
public dynamic ExecuteProcess(IDSFDataObject dataObject = null, bool isDebug = false, IEsbChannel channel = null, bool isRemoteInvoke = false, bool throwException = true, bool isDebugMode = false, Guid currentEnvironmentId = default(Guid), bool overrideRemote = false) { var svc = new ServiceAction { Name = "TestAction", ServiceName = "UnitTestService" }; svc.SetActivity(FlowchartProcess); Mock <IEsbChannel> mockChannel = new Mock <IEsbChannel>(); if (CurrentDl == null) { CurrentDl = TestData; } var errors = new ErrorResultTO(); if (ExecutionId == Guid.Empty) { Compiler = DataListFactory.CreateDataListCompiler(); ExecutionId = Compiler.ConvertTo(DataListFormat.CreateFormat(GlobalConstants._XML), new StringBuilder(TestData), new StringBuilder(CurrentDl), out errors); if (dataObject != null) { dataObject.DataListID = ExecutionId; dataObject.ExecutingUser = User; dataObject.DataList = new StringBuilder(CurrentDl); } } if (errors.HasErrors()) { string errorString = errors.FetchErrors().Aggregate(string.Empty, (current, item) => current + item); if (throwException) { throw new Exception(errorString); } } if (dataObject == null) { dataObject = new DsfDataObject(CurrentDl, ExecutionId) { // NOTE: WorkflowApplicationFactory.InvokeWorkflowImpl() will use HostSecurityProvider.Instance.ServerID // if this is NOT provided which will cause the tests to fail! ServerID = Guid.NewGuid(), ExecutingUser = User, IsDebug = isDebugMode, EnvironmentID = currentEnvironmentId, IsRemoteInvokeOverridden = overrideRemote, DataList = new StringBuilder(CurrentDl) }; } dataObject.IsDebug = isDebug; // we now need to set a thread ID ;) dataObject.ParentThreadID = 1; if (isRemoteInvoke) { dataObject.RemoteInvoke = true; dataObject.RemoteInvokerID = Guid.NewGuid().ToString(); } var esbChannel = mockChannel.Object; if (channel != null) { esbChannel = channel; } WfExecutionContainer wfec = new WfExecutionContainer(svc, dataObject, Dev2.Workspaces.WorkspaceRepository.Instance.ServerWorkspace, esbChannel); errors.ClearErrors(); dataObject.DataListID = wfec.Execute(out errors); return(dataObject); }