private CustomerRet CreateAndParseCustomerQueryXml(string timeCreated, string timeModified) { var ret = $"<CustomerRet><ListID>80000001-1422671082</ListID><TimeCreated>{timeCreated}</TimeCreated><TimeModified>{timeModified}</TimeModified><EditSequence>1422671082</EditSequence><Name>Chris Curtis</Name><FullName>Christopher Curtis</FullName><IsActive>true</IsActive></CustomerRet>"; var response = new QbXmlResponse(); var rs = response.GetSingleItemFromResponse <CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs")); return(rs.CustomerRet[0]); }
public void BasicDataExtDefDelResponseTest() { var ret = "<DataExtDefDelRet><OwnerID>{7d543f23-f3b1-4dea-8ff4-37bd26d15e6c}</OwnerID><DataExtName>name</DataExtName></DataExtDefDelRet>"; var response = new QbXmlResponse(); var rs = response.GetSingleItemFromResponse <DataExtDefDelRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "DataExtDefDelRs")); var dataExtDef = rs.DataExtDefDelRet; Assert.AreEqual("name", dataExtDef.DataExtName); }
public void BasicDataExtDefDelResponseTest() { var ret = "<DataExtDefDelRet><OwnerID>{7d543f23-f3b1-4dea-8ff4-37bd26d15e6c}</OwnerID><DataExtName>name</DataExtName></DataExtDefDelRet>"; var response = new QbXmlResponse(); var rs = response.GetSingleItemFromResponse<DataExtDefDelRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "DataExtDefDelRs")); var dataExtDef = rs.DataExtDefDelRet; Assert.AreEqual("name", dataExtDef.DataExtName); }
public void BasicInvoiceModResponseTest() { var invoiceRet = "<InvoiceRet><TxnID>80000001-1422671082</TxnID><TimeCreated>2015-01-30T18:24:42-08:00</TimeCreated><TimeModified>2015-01-30T18:24:42-08:00</TimeModified><EditSequence>1422671082</EditSequence><CustomerRef><ListID>123456</ListID></CustomerRef><TxnDate>2015-02-19</TxnDate></InvoiceRet>"; var response = new QbXmlResponse(); var rs = response.GetSingleItemFromResponse <InvoiceModRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(invoiceRet, "InvoiceModRs")); var invoice = rs.InvoiceRet; Assert.AreEqual("80000001-1422671082", invoice.TxnID); Assert.AreEqual("123456", invoice.CustomerRef.ListID); }
public void BasicInvoiceAddResponseTest() { var invoiceRet = "<InvoiceRet><TxnID>80000001-1422671082</TxnID><TimeCreated>2015-01-30T18:24:42-08:00</TimeCreated><TimeModified>2015-01-30T18:24:42-08:00</TimeModified><EditSequence>1422671082</EditSequence><CustomerRef><ListID>123456</ListID></CustomerRef><TxnDate>2015-02-19</TxnDate></InvoiceRet>"; var response = new QbXmlResponse(); var rs = response.GetSingleItemFromResponse<InvoiceAddRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(invoiceRet, "InvoiceAddRs")); var invoice = rs.InvoiceRet; Assert.AreEqual("80000001-1422671082", invoice.TxnID); Assert.AreEqual("123456", invoice.CustomerRef.ListID); }
public void PreferredDeliveryMethod_Mail_ShouldBeValid() { var ret = "<CustomerRet><ListID>80000001-1422671082</ListID><TimeCreated>2015-04-03T10:06:17-08:00</TimeCreated><TimeModified>2015-04-03T10:06:17-08:00</TimeModified><EditSequence>1422671082</EditSequence><Name>Jean-Sébastien Goupil</Name><FullName>Jean-Sébastien Goupil</FullName><IsActive>true</IsActive><PreferredDeliveryMethod>Mail</PreferredDeliveryMethod></CustomerRet>"; var response = new QbXmlResponse(); var rs = response.GetSingleItemFromResponse<CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs")); var customers = rs.CustomerRet; var customer = customers[0]; Assert.AreEqual(1, customers.Length); Assert.AreEqual(PreferredDeliveryMethod.Mail, customer.PreferredDeliveryMethod); }
public void BasicCustomerResponseTest_WithEnum() { var ret = "<CustomerRet><JobStatus>InProgress</JobStatus></CustomerRet>"; var response = new QbXmlResponse(); var rs = response.GetSingleItemFromResponse<CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs")); var customers = rs.CustomerRet; var customer = customers[0]; Assert.AreEqual(1, customers.Length); Assert.AreEqual(JobStatus.InProgress, customer.JobStatus); }
public void BasicEntityQueryResponseTest() { var ret = "<EmployeeRet><Name>SomeName</Name></EmployeeRet><EmployeeRet><Name>Other</Name></EmployeeRet>"; var response = new QbXmlResponse(); var rs = response.GetSingleItemFromResponse<EntityQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "EntityQueryRs")); var employees = rs.EmployeeRet; Assert.AreEqual(2, employees.Count()); Assert.AreEqual("SomeName", employees.First().Name); Assert.AreEqual("Other", employees.Last().Name); }
public void BasicCustomerResponseTest_WithEnum() { var ret = "<CustomerRet><JobStatus>InProgress</JobStatus></CustomerRet>"; var response = new QbXmlResponse(); var rs = response.GetSingleItemFromResponse <CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs")); var customers = rs.CustomerRet; var customer = customers[0]; Assert.AreEqual(1, customers.Length); Assert.AreEqual(JobStatus.InProgress, customer.JobStatus); }
public void ErrorRecoveryBasicWithDataExtDel() { var ret = "<ErrorRecovery><ListID>123456</ListID><TxnNumber>67890</TxnNumber></ErrorRecovery>"; var response = new QbXmlResponse(); var rs = response.GetSingleItemFromResponse <DataExtDelRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "DataExtDelRs")); var dataExt = rs.DataExtDelRet; Assert.IsNull(dataExt); Assert.AreEqual("123456", rs.ErrorRecovery.ListID); Assert.AreEqual("67890", rs.ErrorRecovery.TxnNumber); }
public void PreferredDeliveryMethod_Mail_ShouldBeValid() { var ret = "<CustomerRet><ListID>80000001-1422671082</ListID><TimeCreated>2015-04-03T10:06:17-08:00</TimeCreated><TimeModified>2015-04-03T10:06:17-08:00</TimeModified><EditSequence>1422671082</EditSequence><Name>Jean-Sébastien Goupil</Name><FullName>Jean-Sébastien Goupil</FullName><IsActive>true</IsActive><PreferredDeliveryMethod>Mail</PreferredDeliveryMethod></CustomerRet>"; var response = new QbXmlResponse(); var rs = response.GetSingleItemFromResponse <CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs")); var customers = rs.CustomerRet; var customer = customers[0]; Assert.AreEqual(1, customers.Length); Assert.AreEqual(PreferredDeliveryMethod.Mail, customer.PreferredDeliveryMethod); }
public void BasicEntityQueryResponseTest() { var ret = "<EmployeeRet><Name>SomeName</Name></EmployeeRet><EmployeeRet><Name>Other</Name></EmployeeRet>"; var response = new QbXmlResponse(); var rs = response.GetSingleItemFromResponse <EntityQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "EntityQueryRs")); var employees = rs.EmployeeRet; Assert.AreEqual(2, employees.Count()); Assert.AreEqual("SomeName", employees.First().Name); Assert.AreEqual("Other", employees.Last().Name); }
public void BasicCustomerResponseTest() { var ret = "<CustomerRet><ListID>80000001-1422671082</ListID><TimeCreated>2015-01-30T18:24:42-08:00</TimeCreated><TimeModified>2015-01-30T18:24:42-08:00</TimeModified><EditSequence>1422671082</EditSequence><Name>Jean-Sébastien Goupil</Name><FullName>Jean-Sébastien Goupil</FullName><IsActive>true</IsActive></CustomerRet>"; var response = new QbXmlResponse(); var rs = response.GetSingleItemFromResponse <CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs")); var customers = rs.CustomerRet; var customer = customers[0]; Assert.AreEqual(1, customers.Length); Assert.AreEqual("80000001-1422671082", customer.ListID); Assert.AreEqual("Jean-Sébastien Goupil", customer.Name); }
public void GuidToStringWillBeHexadecimalInQbXmlResponseWhenParsedFromHexadecimalEmptyGuid() { //Deserializing from XML will instantiate the GUIDTYPE with its parameterless constructor, Then use ReadXML to set the value //Retain hex formatting when input is also in hex format var ret = "<DataExtRet><OwnerID>{00000000-0000-0000-0000-000000000000}</OwnerID><DataExtName>name</DataExtName><DataExtType>STR255TYPE</DataExtType><DataExtValue>value</DataExtValue></DataExtRet>"; var response = new QbXmlResponse(); var rs = response.GetSingleItemFromResponse <DataExtAddRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "DataExtAddRs")); var dataExt = rs.DataExtRet; Assert.AreEqual("{00000000-0000-0000-0000-000000000000}", dataExt.OwnerID.ToString()); }
public void BasicDataDelExtResponseTest() { var ret = "<DataExtDelRet><OwnerID>{7d543f23-f3b1-4dea-8ff4-37bd26d15e6c}</OwnerID><DataExtName>name</DataExtName><TxnDataExtType>CreditCardCredit</TxnDataExtType><TxnID>1234</TxnID><TimeDeleted>2015-02-10T00:00:00</TimeDeleted></DataExtDelRet>"; var response = new QbXmlResponse(); var rs = response.GetSingleItemFromResponse<DataExtDelRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "DataExtDelRs")); var dataExt = rs.DataExtDelRet; Assert.AreEqual("name", dataExt.DataExtName); Assert.AreEqual(TxnDataExtType.CreditCardCredit, dataExt.TxnDataExtType.Value); Assert.AreEqual("1234", dataExt.TxnID); Assert.AreEqual(new DATETIMETYPE(DateTime.Parse("2015-02-10")), dataExt.TimeDeleted); }
public void BasicCustomerResponseTest() { var ret = "<CustomerRet><ListID>80000001-1422671082</ListID><TimeCreated>2015-01-30T18:24:42-08:00</TimeCreated><TimeModified>2015-01-30T18:24:42-08:00</TimeModified><EditSequence>1422671082</EditSequence><Name>Jean-Sébastien Goupil</Name><FullName>Jean-Sébastien Goupil</FullName><IsActive>true</IsActive></CustomerRet>"; var response = new QbXmlResponse(); var rs = response.GetSingleItemFromResponse<CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs")); var customers = rs.CustomerRet; var customer = customers[0]; Assert.AreEqual(1, customers.Length); Assert.AreEqual("80000001-1422671082", customer.ListID); Assert.AreEqual("Jean-Sébastien Goupil", customer.Name); }
public void BasicDataDelExtResponseTest() { var ret = "<DataExtDelRet><OwnerID>{7d543f23-f3b1-4dea-8ff4-37bd26d15e6c}</OwnerID><DataExtName>name</DataExtName><TxnDataExtType>CreditCardCredit</TxnDataExtType><TxnID>1234</TxnID><TimeDeleted>2015-02-10T00:00:00</TimeDeleted></DataExtDelRet>"; var response = new QbXmlResponse(); var rs = response.GetSingleItemFromResponse <DataExtDelRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "DataExtDelRs")); var dataExt = rs.DataExtDelRet; Assert.AreEqual("name", dataExt.DataExtName); Assert.AreEqual(TxnDataExtType.CreditCardCredit, dataExt.TxnDataExtType.Value); Assert.AreEqual("1234", dataExt.TxnID); Assert.AreEqual(new DATETIMETYPE(DateTime.Parse("2015-02-10")), dataExt.TimeDeleted); }
public void GuidToStringWillBeZeroInQbXmlResponseWhenParsedFromZero() { //Deserializing from XML will instantiate the GUIDTYPE with its parameterless constructor, Then use ReadXML to set the value //Ensure that reading from XML will also handle the Zero (0) format var ret = "<DataExtRet><OwnerID>0</OwnerID><DataExtName>name</DataExtName><DataExtType>STR255TYPE</DataExtType><DataExtValue>value</DataExtValue></DataExtRet>"; var response = new QbXmlResponse(); var rs = response.GetSingleItemFromResponse <DataExtAddRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "DataExtAddRs")); var dataExt = rs.DataExtRet; Assert.AreEqual("0", dataExt.OwnerID.ToString()); }
/// <summary> /// Called when the Web Connector returns some data. /// </summary> /// <param name="authenticatedTicket">The authenticated ticket.</param> /// <param name="response">QbXml.</param> /// <param name="hresult">HResult.</param> /// <param name="message">Message.</param> /// <returns>Message to be returned to the Web Connector.</returns> public virtual async Task <int> ReceiveXMLAsync(IAuthenticatedTicket authenticatedTicket, string response, string hresult, string message) { var responseObject = new QbXmlResponse(); if (!string.IsNullOrEmpty(response)) { var msgResponseObject = responseObject.GetSingleItemFromResponse(response, typeof(QbResponse)) as QbResponse; await ExecuteResponseAsync(authenticatedTicket, msgResponseObject); return(0); } return(-1); }
public void BasicDataExtDefAddResponseTest() { var ret = "<DataExtDefRet><OwnerID>{7d543f23-f3b1-4dea-8ff4-37bd26d15e6c}</OwnerID><DataExtID>123</DataExtID><DataExtName>name</DataExtName><DataExtType>STR255TYPE</DataExtType><AssignToObject>Account</AssignToObject><AssignToObject>Charge</AssignToObject></DataExtDefRet>"; var response = new QbXmlResponse(); var rs = response.GetSingleItemFromResponse <DataExtDefAddRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "DataExtDefAddRs")); var dataExtDef = rs.DataExtDefRet; Assert.AreEqual("name", dataExtDef.DataExtName); Assert.AreEqual(DataExtType.STR255TYPE, dataExtDef.DataExtType); Assert.AreEqual(2, dataExtDef.AssignToObject.Length); Assert.AreEqual(AssignToObject.Account, dataExtDef.AssignToObject.First()); Assert.AreEqual(AssignToObject.Charge, dataExtDef.AssignToObject.Last()); }
public void BasicDataExtDefModResponseTest() { var ret = "<DataExtDefRet><OwnerID>{7d543f23-f3b1-4dea-8ff4-37bd26d15e6c}</OwnerID><DataExtID>123</DataExtID><DataExtName>name</DataExtName><DataExtType>STR255TYPE</DataExtType><AssignToObject>Account</AssignToObject><AssignToObject>Charge</AssignToObject></DataExtDefRet>"; var response = new QbXmlResponse(); var rs = response.GetSingleItemFromResponse<DataExtDefModRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "DataExtDefModRs")); var dataExtDef = rs.DataExtDefRet; Assert.AreEqual("name", dataExtDef.DataExtName); Assert.AreEqual(DataExtType.STR255TYPE, dataExtDef.DataExtType); Assert.AreEqual(2, dataExtDef.AssignToObject.Count()); Assert.AreEqual(AssignToObject.Account, dataExtDef.AssignToObject.First()); Assert.AreEqual(AssignToObject.Charge, dataExtDef.AssignToObject.Last()); }
public virtual int ReceiveXML(AuthenticatedTicket authenticatedTicket, string response, string hresult, string message) { var responseObject = new QbXmlResponse(qbXmlResponseOptions); if (!string.IsNullOrEmpty(response)) { var msgResponseObject = responseObject.GetSingleItemFromResponse(response, typeof(Y)) as Y; ExecuteResponse(authenticatedTicket, msgResponseObject); return(0); } return(-1); }
public void BasicCustomerResponseTest_WithObject() { var ret = "<CustomerRet><ShipAddress><City>Seattle</City><State>WA</State></ShipAddress></CustomerRet>"; var response = new QbXmlResponse(); var rs = response.GetSingleItemFromResponse <CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs")); var customers = rs.CustomerRet; var customer = customers[0]; Assert.AreEqual(1, customers.Length); Assert.IsNotNull(customer.ShipAddress); Assert.AreEqual("Seattle", customer.ShipAddress.City); Assert.AreEqual("WA", customer.ShipAddress.State); }
public void TimeZoneBugFixTests() { var ret = "<CustomerRet><ListID>80000001-1422671082</ListID><TimeCreated>2015-04-03T10:06:17-08:00</TimeCreated><TimeModified>2015-04-03T10:06:17-08:00</TimeModified><EditSequence>1422671082</EditSequence><Name>Jean-Sébastien Goupil</Name><FullName>Jean-Sébastien Goupil</FullName><IsActive>true</IsActive></CustomerRet>"; var response = new QbXmlResponse(new QbXmlResponseOptions { TimeZoneBugFix = QuickBooksTestHelper.GetPacificStandardTimeZoneInfo() }); var rs = response.GetSingleItemFromResponse <CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs")); var customers = rs.CustomerRet; var customer = customers[0]; Assert.AreEqual(17, customer.TimeModified.ToDateTime().ToUniversalTime().Hour); }
public void BasicCustomerResponseTest_WithObject() { var ret = "<CustomerRet><ShipAddress><City>Seattle</City><State>WA</State></ShipAddress></CustomerRet>"; var response = new QbXmlResponse(); var rs = response.GetSingleItemFromResponse<CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs")); var customers = rs.CustomerRet; var customer = customers[0]; Assert.AreEqual(1, customers.Length); Assert.IsNotNull(customer.ShipAddress); Assert.AreEqual("Seattle", customer.ShipAddress.City); Assert.AreEqual("WA", customer.ShipAddress.State); }
/// <summary> /// Called when the Web Connector returns some data. /// </summary> /// <param name="authenticatedTicket">The authenticated ticket.</param> /// <param name="response">QbXml.</param> /// <param name="hresult">HResult.</param> /// <param name="message">Message.</param> /// <returns>Message to be returned to the Web Connector.</returns> public virtual async Task <int> ReceiveXMLAsync(IAuthenticatedTicket authenticatedTicket, string response, string hresult, string message) { var responseObject = new QbXmlResponse(); if (!string.IsNullOrEmpty(response)) { var objects = responseObject.GetItemsFromResponse(response, typeof(IQbResponse)); var msgResponseObject = ((IEnumerable)objects).Cast <IQbResponse>(); await ExecuteResponseAsync(authenticatedTicket, msgResponseObject); return(0); } return(-1); }
public void BasicCustomerResponseTest_WithIEnumerable() { var ret = "<CustomerRet><AdditionalContactRef><ContactName>Name1</ContactName><ContactValue>Value1</ContactValue></AdditionalContactRef><AdditionalContactRef><ContactName>Name2</ContactName><ContactValue>Value2</ContactValue></AdditionalContactRef></CustomerRet>"; var response = new QbXmlResponse(); var rs = response.GetSingleItemFromResponse<CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs")); var customers = rs.CustomerRet; var customer = customers[0]; Assert.AreEqual(1, customers.Length); Assert.AreEqual(2, customer.AdditionalContactRef.Count()); Assert.AreEqual("Name1", customer.AdditionalContactRef.First().ContactName); Assert.AreEqual("Value1", customer.AdditionalContactRef.First().ContactValue); Assert.AreEqual("Name2", customer.AdditionalContactRef.Last().ContactName); Assert.AreEqual("Value2", customer.AdditionalContactRef.Last().ContactValue); }
public void BasicCustomerResponseTest_WithIEnumerable() { var ret = "<CustomerRet><AdditionalContactRef><ContactName>Name1</ContactName><ContactValue>Value1</ContactValue></AdditionalContactRef><AdditionalContactRef><ContactName>Name2</ContactName><ContactValue>Value2</ContactValue></AdditionalContactRef></CustomerRet>"; var response = new QbXmlResponse(); var rs = response.GetSingleItemFromResponse <CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs")); var customers = rs.CustomerRet; var customer = customers[0]; Assert.AreEqual(1, customers.Length); Assert.AreEqual(2, customer.AdditionalContactRef.Count()); Assert.AreEqual("Name1", customer.AdditionalContactRef.First().ContactName); Assert.AreEqual("Value1", customer.AdditionalContactRef.First().ContactValue); Assert.AreEqual("Name2", customer.AdditionalContactRef.Last().ContactName); Assert.AreEqual("Value2", customer.AdditionalContactRef.Last().ContactValue); }
public void TimeZoneBugFixTests() { var ret = "<CustomerRet><ListID>80000001-1422671082</ListID><TimeCreated>2015-04-03T10:06:17-08:00</TimeCreated><TimeModified>2015-04-03T10:06:17-08:00</TimeModified><EditSequence>1422671082</EditSequence><Name>Jean-Sébastien Goupil</Name><FullName>Jean-Sébastien Goupil</FullName><IsActive>true</IsActive></CustomerRet>"; var response = new QbXmlResponse(new QbXmlResponseOptions { TimeZoneBugFix = QuickBooksTestHelper.GetPacificStandardTimeZoneInfo() }); var rs = response.GetSingleItemFromResponse<CustomerQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(ret, "CustomerQueryRs")); var customers = rs.CustomerRet; var customer = customers[0]; Assert.AreEqual(17, customer.TimeModified.ToDateTime().ToUniversalTime().Hour); }
public void EmployeeResponseWithUnknownTagsTest() { var employeeRet = @" <EmployeeRet> <ListID>1111111-111111111</ListID> <EditSequence>1234567890</EditSequence> <Name>Daric Teske</Name> <IsActive>true</IsActive> <FirstName>Daric</FirstName> <LastName>Teske</LastName> <Phone>5555555555</Phone> <Email>[email protected]</Email> <EmployeePayrollInfo> <IsCoveredByQualifiedPensionPlan>false</IsCoveredByQualifiedPensionPlan> <PayPeriod>Weekly</PayPeriod> <PayScheduleRef> <ListID>80000001-1286898172</ListID> <FullName>Weekly</FullName> </PayScheduleRef> <Earnings> <PayrollItemWageRef> <ListID>80000000-0000000001</ListID> <FullName>Field</FullName> </PayrollItemWageRef> <Rate>15.00</Rate> </Earnings> <Earnings> <PayrollItemWageRef> <ListID>80000000-0000000002</ListID> <FullName>Field Overtime</FullName> </PayrollItemWageRef> <Rate>25.00</Rate> </Earnings> <Earnings> <PayrollItemWageRef> <ListID>80000000-0000000003</ListID> <FullName>Field Double Time</FullName> </PayrollItemWageRef> <Rate>50.00</Rate> </Earnings> <Earnings> <PayrollItemWageRef> <ListID>80000000-0000000004</ListID> <FullName>Field Holiday</FullName> </PayrollItemWageRef> <Rate>30.00</Rate> </Earnings> <UseTimeDataToCreatePaychecks>UseTimeData</UseTimeDataToCreatePaychecks> <SickHours> <HoursAvailable>PT0H15M0S</HoursAvailable> <AccrualPeriod>EveryPaycheck</AccrualPeriod> <HoursAccrued>PT0H55M0S</HoursAccrued> <MaximumHours>PT48H0M0S</MaximumHours> <IsResettingHoursEachNewYear>false</IsResettingHoursEachNewYear> <HoursUsed>PT0H0M0S</HoursUsed> <YearBeginsDate>2020-01-01</YearBeginsDate> <AccrualStartDate>2000-01-01</AccrualStartDate> </SickHours> <VacationHours> <HoursAvailable>PT0H0M0S</HoursAvailable> <AccrualPeriod>EveryPaycheck</AccrualPeriod> <HoursAccrued>PT0H0M0S</HoursAccrued> <MaximumHours>PT0H0M0S</MaximumHours> <IsResettingHoursEachNewYear>false</IsResettingHoursEachNewYear> <HoursUsed>PT0H0M0S</HoursUsed> <YearBeginsDate>2020-01-01</YearBeginsDate> <AccrualStartDate>2000-01-01</AccrualStartDate> </VacationHours> <EmployeeTaxInfo> <StateLived>NE</StateLived> <StateWorked>NE</StateWorked> <IsStandardTaxationRequired>true</IsStandardTaxationRequired> <EmployeeTax> <IsSubjectToTax>true</IsSubjectToTax> <PayrollItemTaxRef> <ListID>D0000-863012697</ListID> <FullName>Federal Withholding</FullName> </PayrollItemTaxRef> <TaxInfo> <TaxInfoCategory>ALLOWANCES</TaxInfoCategory> <TaxInfoValue>1</TaxInfoValue> </TaxInfo> <TaxInfo> <TaxInfoCategory>EXTRA_WITHHOLDING</TaxInfoCategory> <TaxInfoValue>0.00</TaxInfoValue> </TaxInfo> <TaxInfo> <TaxInfoCategory>FILING_STATUS</TaxInfoCategory> <TaxInfoValue>256</TaxInfoValue> </TaxInfo> </EmployeeTax> </EmployeeTaxInfo> <EmployeeDirectDepositAccount> <BankName>Fake Bank</BankName> <RoutingNumber>111111111</RoutingNumber> <AccountNumber>111111111111</AccountNumber> <BankAccountType>Checking</BankAccountType> </EmployeeDirectDepositAccount> </EmployeePayrollInfo> </EmployeeRet>"; var response = new QbXmlResponse(); var onUnknownElementCalled = 0; XmlDeserializationEvents events = new XmlDeserializationEvents(); events.OnUnknownElement += (object sender, XmlElementEventArgs e) => { onUnknownElementCalled++; if (e.Element.Name == nameof(EmployeePayrollInfo.UseTimeDataToCreatePaychecks) && Enum.TryParse(typeof(UseTimeDataToCreatePaychecks), e.Element.InnerText, out object useTimeData)) { var employeePayrollInfo = (EmployeePayrollInfo)e.ObjectBeingDeserialized; employeePayrollInfo.UseTimeDataToCreatePaychecksSpecified = true; employeePayrollInfo.UseTimeDataToCreatePaychecks = (UseTimeDataToCreatePaychecks)useTimeData; } }; var rs = response.GetSingleItemFromResponse <EmployeeQueryRsType>(QuickBooksTestHelper.CreateQbXmlWithEnvelope(employeeRet, "EmployeeQueryRs"), events); var employees = rs.EmployeeRet; var employee = employees[0]; Assert.AreEqual(1, employees.Length); Assert.AreEqual("1111111-111111111", employee.ListID); // Custom event handler was called at least once Assert.GreaterOrEqual(onUnknownElementCalled, 1); // Custom event handler updated a known property captured by the OnUnknownElement event Assert.IsTrue(employee.EmployeePayrollInfo.UseTimeDataToCreatePaychecksSpecified); Assert.AreEqual(UseTimeDataToCreatePaychecks.UseTimeData, employee.EmployeePayrollInfo.UseTimeDataToCreatePaychecks); }