/** * @covers Intacct\Functions\Common\ReadByQuery::__construct * @covers Intacct\Functions\Common\ReadByQuery::writeXml */ public function testParamOverrides() { $expected = <<<EOF <?xml version="1.0" encoding="UTF-8"?> <function controlid="unittest"> <readByQuery> <object>CLASS</object> <query/> <fields>RECORDNO</fields> <pagesize>100</pagesize> <returnFormat>xml</returnFormat> <docparid>255252235</docparid> </readByQuery> </function> EOF; $xml = new XMLWriter(); $xml->openMemory(); $xml->setIndent(true); $xml->setIndentString(' '); $xml->startDocument(); $readByQuery = new ReadByQuery('unittest'); $readByQuery->setObjectName('CLASS'); $readByQuery->setPageSize(100); $readByQuery->setReturnFormat('xml'); $readByQuery->setFields(['RECORDNO']); $readByQuery->setDocParId('255252235'); $readByQuery->writeXml($xml); $this->assertXmlStringEqualsXmlString($expected, $xml->flush()); }
/** * @covers Intacct\QueryClient::executeQuery * @expectedException \Intacct\Exception\ResultException * @expectedExceptionMessage An error occurred trying to query subsequent records */ public function testUnsuccessfulReadMore() { $xml = <<<EOF <?xml version="1.0" encoding="UTF-8"?> <response> <control> <status>success</status> <senderid>testsenderid</senderid> <controlid>sessionProvider</controlid> <uniqueid>false</uniqueid> <dtdversion>3.0</dtdversion> </control> <operation> <authentication> <status>success</status> <userid>testuser</userid> <companyid>testcompany</companyid> <sessiontimestamp>2015-12-06T15:57:08-08:00</sessiontimestamp> </authentication> <result> <status>success</status> <function>readByQuery</function> <controlid>testFunctionId</controlid> <data listtype="customer" count="1" totalcount="2" numremaining="1" resultId="6465763031V2wi28CoHYQAAF0HcP8AAAAc5"> <customer> <RECORDNO>1</RECORDNO> <!-- Removed remaining elements --> </customer> </data> </result> </operation> </response> EOF; $xml2 = <<<EOF <?xml version="1.0" encoding="UTF-8"?> <response> <control> <status>success</status> <senderid>testsenderid</senderid> <controlid>sessionProvider</controlid> <uniqueid>false</uniqueid> <dtdversion>3.0</dtdversion> </control> <operation> <authentication> <status>success</status> <userid>testuser</userid> <companyid>testcompany</companyid> <sessiontimestamp>2015-12-06T15:57:08-08:00</sessiontimestamp> </authentication> <result> <status>failure</status> <function>readMore</function> <controlid>testFunctionId</controlid> <errormessage> <error> <errorno>readMore failed</errorno> <description></description> <description2>Attempt to readMore with an invalid or expired resultId: 6465763031V2wi28CoHYQAAF0HcP8AAAAc5</description2> <correction></correction> </error> </errormessage> </result> </operation> </response> EOF; $headers = ['Content-Type' => 'text/xml; encoding="UTF-8"']; $mockResponse = new Response(200, $headers, $xml); $mockResponse2 = new Response(200, $headers, $xml2); $mock = new MockHandler([$mockResponse, $mockResponse2]); $params = ['mock_handler' => $mock]; $query = new ReadByQuery(); $query->setObjectName('CUSTOMER'); $query->setFields(['RECORDNO']); $query->setPageSize(1); $records = $this->client->executeQuery($query, 100000, $params); }