/**
     * @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);
    }