lithium\tests\cases\data\collection\MultiKeyRecordSetTest::testRecordWithCombinedPkAndLazyLoading PHP Method

testRecordWithCombinedPkAndLazyLoading() public method

    public function testRecordWithCombinedPkAndLazyLoading()
    {
        $records = array(array('client_id' => 1, 'invoice_id' => 4, 'title' => 'Payment1'), array('client_id' => 2, 'invoice_id' => 5, 'title' => 'Payment2'), array('client_id' => 2, 'invoice_id' => 6, 'title' => 'Payment3'), array('client_id' => 4, 'invoice_id' => 7, 'title' => 'Payment3'));
        $result = new MockResult(array('records' => $records));
        $payments = new MockMultiKeyRecordSet(array('result' => $result, 'model' => $this->_model2));
        $this->assertCount(0, $payments->get('_data'));
        $result = $payments[array('client_id' => 1, 'invoice_id' => 4)]->to('array');
        $this->assertEqual($records[0], $result);
        $result = $payments[array('client_id' => 2, 'invoice_id' => 6)]->to('array');
        $this->assertEqual($records[2], $result);
        $this->assertCount(3, $payments->get('_data'));
        $result = $payments[array('client_id' => 2, 'invoice_id' => 5)]->to('array');
        $this->assertEqual($records[1], $result);
        $this->assertCount(3, $payments->get('_data'));
        $this->assertNull($payments[array('client_id' => 3, 'invoice_id' => 3)]);
        $this->assertNull($payments[array('client_id' => 2)]);
        $this->assertNull($payments[array('invoice_id' => 6)]);
        $this->assertCount(4, $payments->get('_data'));
        $this->assertEqual($records, $payments->to('array'));
        $expected = '[{"client_id":1,"invoice_id":4,"title":"Payment1"},';
        $expected .= '{"client_id":2,"invoice_id":5,"title":"Payment2"},';
        $expected .= '{"client_id":2,"invoice_id":6,"title":"Payment3"},';
        $expected .= '{"client_id":4,"invoice_id":7,"title":"Payment3"}]';
        Collection::formats('lithium\\net\\http\\Media');
        $this->assertEqual($expected, $payments->to('json'));
    }