public void BasicDataExtDefModRequestTest()
        {
            var request = new QbXmlRequest();
            var innerRequest = new DataExtDefModRqType();
            innerRequest.DataExtDefMod = new DataExtDefMod
            {
                OwnerID = Guid.NewGuid(),
                DataExtName = "name",
                DataExtNewName = "newname",
                AssignToObject = new AssignToObject[]
                {
                    AssignToObject.Account,
                    AssignToObject.Charge
                },
                RemoveFromObject = new RemoveFromObject[]
                {
                    RemoveFromObject.Bill,
                    RemoveFromObject.Check
                }
            };

            innerRequest.IncludeRetElement = new string[]
            {
                "ABC",
                "DEF"
            };
            request.AddToSingle(innerRequest);
            var xml = request.GetRequest();

            XmlDocument requestXmlDoc = new XmlDocument();
            requestXmlDoc.LoadXml(xml);

            Assert.AreEqual(1, requestXmlDoc.GetElementsByTagName("DataExtDefModRq").Count);

            var node = requestXmlDoc.SelectSingleNode("//DataExtDefModRq/DataExtDefMod");
            Assert.AreEqual(innerRequest.DataExtDefMod.OwnerID.ToString(), node.ReadNode("OwnerID"));
            Assert.AreEqual(innerRequest.DataExtDefMod.DataExtName, node.ReadNode("DataExtName"));
            Assert.AreEqual(innerRequest.DataExtDefMod.DataExtNewName, node.ReadNode("DataExtNewName"));

            var node2 = node.SelectNodes("AssignToObject");
            Assert.AreEqual(2, node2.Count);
            Assert.AreEqual("Account", node2.Item(0).InnerText);
            Assert.AreEqual("Charge", node2.Item(1).InnerText);

            var node3 = node.SelectNodes("RemoveFromObject");
            Assert.AreEqual(2, node3.Count);
            Assert.AreEqual("Bill", node3.Item(0).InnerText);
            Assert.AreEqual("Check", node3.Item(1).InnerText);

            var node4 = requestXmlDoc.SelectNodes("//IncludeRetElement");
            Assert.AreEqual(2, node4.Count);
            Assert.AreEqual("ABC", node4.Item(0).InnerText);
            Assert.AreEqual("DEF", node4.Item(1).InnerText);
            Assert.AreNotEqual("DataExtDefMod", node4.Item(0).ParentNode.Name);
            Assert.IsEmpty(QuickBooksTestHelper.GetXmlValidation(xml));
        }
        public void BasicDataExtDefModRequestTest()
        {
            var request      = new QbXmlRequest();
            var innerRequest = new DataExtDefModRqType();

            innerRequest.DataExtDefMod = new DataExtDefMod
            {
                OwnerID        = Guid.NewGuid(),
                DataExtName    = "name",
                DataExtNewName = "newname",
                AssignToObject = new AssignToObject[]
                {
                    AssignToObject.Account,
                    AssignToObject.Charge
                },
                RemoveFromObject = new RemoveFromObject[]
                {
                    RemoveFromObject.Bill,
                    RemoveFromObject.Check
                }
            };

            innerRequest.IncludeRetElement = new string[]
            {
                "ABC",
                "DEF"
            };
            request.AddToSingle(innerRequest);
            var xml = request.GetRequest();

            XmlDocument requestXmlDoc = new XmlDocument();

            requestXmlDoc.LoadXml(xml);

            Assert.AreEqual(1, requestXmlDoc.GetElementsByTagName("DataExtDefModRq").Count);

            var node = requestXmlDoc.SelectSingleNode("//DataExtDefModRq/DataExtDefMod");

            Assert.AreEqual(innerRequest.DataExtDefMod.OwnerID.ToString(), node.ReadNode("OwnerID"));
            Assert.AreEqual(innerRequest.DataExtDefMod.DataExtName, node.ReadNode("DataExtName"));
            Assert.AreEqual(innerRequest.DataExtDefMod.DataExtNewName, node.ReadNode("DataExtNewName"));

            var node2 = node.SelectNodes("AssignToObject");

            Assert.AreEqual(2, node2.Count);
            Assert.AreEqual("Account", node2.Item(0).InnerText);
            Assert.AreEqual("Charge", node2.Item(1).InnerText);

            var node3 = node.SelectNodes("RemoveFromObject");

            Assert.AreEqual(2, node3.Count);
            Assert.AreEqual("Bill", node3.Item(0).InnerText);
            Assert.AreEqual("Check", node3.Item(1).InnerText);

            var node4 = requestXmlDoc.SelectNodes("//IncludeRetElement");

            Assert.AreEqual(2, node4.Count);
            Assert.AreEqual("ABC", node4.Item(0).InnerText);
            Assert.AreEqual("DEF", node4.Item(1).InnerText);
            Assert.AreNotEqual("DataExtDefMod", node4.Item(0).ParentNode.Name);
            Assert.IsEmpty(QuickBooksTestHelper.GetXmlValidation(xml));
        }