public void DataObject_Ctor_WhenXmlStringContainsAllIncludingDataMergePropertiesSet_ExpectParseAndSet()
{
//------------Setup for test--------------------------
var debugID = Guid.NewGuid();
var envID = Guid.NewGuid();
var exeID = Guid.NewGuid();
var bookmarkID = Guid.NewGuid();
var parentID = Guid.NewGuid();
var instID = Guid.NewGuid();
var mergeIDOut = Guid.NewGuid();
var mergeIDIn = Guid.NewGuid();
var xmlStr = "<Payload>" +
"<IsDebug>true</IsDebug>" +
"<DebugSessionID>" + debugID + "</DebugSessionID>" +
"<EnvironmentID>" + envID + "</EnvironmentID>" +
"<IsOnDemandSimulation>true</IsOnDemandSimulation>" +
"<ParentServiceName>TestParentService</ParentServiceName>" +
"<ExecutionCallbackID>" + exeID + "</ExecutionCallbackID>" +
"<BookmarkExecutionCallbackID>" + bookmarkID + "</BookmarkExecutionCallbackID>" +
"<ParentInstanceID>" + parentID + "</ParentInstanceID>" +
"<NumberOfSteps>5</NumberOfSteps>" +
"<CurrentBookmarkName>MyBookmark</CurrentBookmarkName>" +
"<WorkflowInstanceId>" + instID + "</WorkflowInstanceId>" +
"<IsDataListScoped>true</IsDataListScoped>" +
"<Service>MyTestService</Service>" +
"<DatalistOutMergeID>" + mergeIDOut + "</DatalistOutMergeID>" +
"<DatalistOutMergeType>Union</DatalistOutMergeType>" +
"<DatalistOutMergeDepth>Data</DatalistOutMergeDepth>" +
"<DatalistOutMergeFrequency>Never</DatalistOutMergeFrequency>" +
"<DatalistInMergeID>" + mergeIDIn + "</DatalistInMergeID>" +
"<DatalistInMergeType>Union</DatalistInMergeType>" +
"<DatalistInMergeDepth>Data</DatalistInMergeDepth>" +
"</Payload>";
//------------Execute Test---------------------------
var dataObjct = new DsfDataObject(xmlStr, Guid.NewGuid(), "<x>1</x>");
//------------Assert Results-------------------------
Assert.IsTrue(dataObjct.IsDebug);
StringAssert.Contains(dataObjct.DebugSessionID.ToString(), debugID.ToString());
StringAssert.Contains(dataObjct.EnvironmentID.ToString(), envID.ToString());
Assert.IsTrue(dataObjct.IsOnDemandSimulation);
StringAssert.Contains(dataObjct.ParentServiceName, "TestParentService");
StringAssert.Contains(dataObjct.ExecutionCallbackID.ToString(), exeID.ToString());
StringAssert.Contains(dataObjct.BookmarkExecutionCallbackID.ToString(), bookmarkID.ToString());
StringAssert.Contains(dataObjct.ParentInstanceID, parentID.ToString());
Assert.AreEqual(5, dataObjct.NumberOfSteps, "Wrong number of steps");
StringAssert.Contains(dataObjct.CurrentBookmarkName, "MyBookmark");
StringAssert.Contains(dataObjct.WorkflowInstanceId.ToString(), instID.ToString());
Assert.IsTrue(dataObjct.IsDataListScoped);
StringAssert.Contains(dataObjct.ServiceName, "MyTestService");
StringAssert.Contains(dataObjct.RawPayload.ToString(), xmlStr);
// Data Merge Checks
StringAssert.Contains(dataObjct.DatalistOutMergeID.ToString(), mergeIDOut.ToString());
StringAssert.Contains(dataObjct.DatalistOutMergeType.ToString(), enDataListMergeTypes.Union.ToString());
StringAssert.Contains(dataObjct.DatalistOutMergeDepth.ToString(), enTranslationDepth.Data.ToString());
StringAssert.Contains(dataObjct.DatalistOutMergeFrequency.ToString(), DataListMergeFrequency.Never.ToString());
StringAssert.Contains(dataObjct.DatalistInMergeID.ToString(), mergeIDIn.ToString());
StringAssert.Contains(dataObjct.DatalistInMergeType.ToString(), enDataListMergeTypes.Union.ToString());
StringAssert.Contains(dataObjct.DatalistInMergeDepth.ToString(), enTranslationDepth.Data.ToString());
}