atk4\data\tests\ExpressionSQLTest::testBasic PHP Method

testBasic() public method

public testBasic ( )
    public function testBasic()
    {
        $a = ['invoice' => [['total_net' => 10, 'total_vat' => 1.23], ['total_net' => 20, 'total_vat' => 2.46]]];
        $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]');
        $this->assertEquals('select `id`,`total_net`,`total_vat`,(`total_net`+`total_vat`) `total_gross` from `invoice`', $i->action('select')->render());
        $i->tryLoad(1);
        $this->assertEquals(10, $i['total_net']);
        $this->assertEquals($i['total_net'] + $i['total_vat'], $i['total_gross']);
        $i->tryLoad(2);
        $this->assertEquals(20, $i['total_net']);
        $this->assertEquals($i['total_net'] + $i['total_vat'], $i['total_gross']);
        $i->addExpression('double_total_gross', '[total_gross]*2');
        $this->assertEquals('select `id`,`total_net`,`total_vat`,(`total_net`+`total_vat`) `total_gross`,((`total_net`+`total_vat`)*2) `double_total_gross` from `invoice`', $i->action('select')->render());
        $i->tryLoad(1);
        $this->assertEquals(($i['total_net'] + $i['total_vat']) * 2, $i['double_total_gross']);
    }