atk4\data\tests\ReferenceSQLTest::testAddOneField PHP Method

testAddOneField() public method

Tests Join::addField's ability to create expressions from foreign fields.
public testAddOneField ( )
    public function testAddOneField()
    {
        $a = ['user' => [1 => ['id' => 1, 'name' => 'John', 'date' => '2001-01-02'], 2 => ['id' => 2, 'name' => 'Peter', 'date' => '2004-08-20'], 3 => ['id' => 3, 'name' => 'Joe', 'date' => '2005-08-20']], 'order' => [['amount' => '20', 'user_id' => 1], ['amount' => '15', 'user_id' => 2], ['amount' => '5', 'user_id' => 1], ['amount' => '3', 'user_id' => 1], ['amount' => '8', 'user_id' => 3]]];
        $this->setDB($a);
        $db = new Persistence_SQL($this->db->connection);
        $u = (new Model($db, 'user'))->addFields(['name', ['date', 'type' => 'date']]);
        $o = (new Model($db, 'order'))->addFields(['amount']);
        $o->hasOne('user_id', $u)->addFields(['username' => 'name', ['date', 'type' => 'date']]);
        $this->assertEquals('John', $o->load(1)['username']);
        $this->assertEquals(new \DateTime('2001-01-02'), $o->load(1)['date']);
        $this->assertEquals('Peter', $o->load(2)['username']);
        $this->assertEquals('John', $o->load(3)['username']);
        $this->assertEquals('Joe', $o->load(5)['username']);
        // few more tests
        $o = (new Model($db, 'order'))->addFields(['amount']);
        $o->hasOne('user_id', $u)->addFields(['username' => 'name', 'thedate' => ['date', 'type' => 'date']]);
        $this->assertEquals('John', $o->load(1)['username']);
        $this->assertEquals(new \DateTime('2001-01-02'), $o->load(1)['thedate']);
        $o = (new Model($db, 'order'))->addFields(['amount']);
        $o->hasOne('user_id', $u)->addFields(['date'], ['type' => 'date']);
        $this->assertEquals(new \DateTime('2001-01-02'), $o->load(1)['date']);
    }