atk4\data\tests\LimitOrderTest::testLimit PHP Method

testLimit() public method

public testLimit ( )
    public function testLimit()
    {
        $a = ['invoice' => [['total_net' => 10], ['total_net' => 20], ['total_net' => 15]]];
        $this->setDB($a);
        $db = new Persistence_SQL($this->db->connection);
        $i = (new Model($db, 'invoice'))->addFields(['total_net', 'total_vat']);
        $i->addExpression('total_gross', '[total_net]+[total_vat]');
        $i->getElement('id')->system = false;
        $i->setOrder('total_net');
        $i->onlyFields(['total_net']);
        $this->assertEquals([['total_net' => 10], ['total_net' => 15], ['total_net' => 20]], $i->export());
        $ii = $i;
        $i = clone $ii;
        $i->setLimit(2);
        $this->assertEquals([['total_net' => 10], ['total_net' => 15]], $i->export());
        $i = clone $ii;
        $i->setLimit(2, 1);
        $this->assertEquals([['total_net' => 15], ['total_net' => 20]], $i->export());
        $i = clone $ii;
        $i->setLimit(null, 1);
        /*
        This test is incorrect because last number in rendered query is dependant on server.
        For example, on Imants Win10 64-bit this renders as:
        select `total_net` from `invoice` order by `total_net` limit 1, 2147483647
        On Travis server it renders as:
        select `total_net` from `invoice` order by `total_net` limit 1, 9223372036854775807
        which still is not equal to max number which SQL server allows - 18446744073709551615
        $this->assertEquals(
            'select `total_net` from `invoice` order by `total_net` limit 1, 9223372036854775807',
            $i->action('select')->render()
        );
        */
        $this->assertEquals([['total_net' => 15], ['total_net' => 20]], $i->export());
    }