blob: c6abbef2a124c5b753ea5df9dd9001ae975b28fa [file] [log] [blame]
<?php
/**
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @version //autogentag//
* @filesource
* @package PersistentObject
* @subpackage Tests
*/
require_once dirname( __FILE__ ) . "/../data/relation_test_employer.php";
require_once dirname( __FILE__ ) . "/../data/relation_test_person.php";
require_once dirname( __FILE__ ) . "/../data/relation_test_address.php";
require_once dirname( __FILE__ ) . "/../data/relation_test_birthday.php";
/**
* Tests ezcPersistentManyToOneRelation class.
*
* @package PersistentObject
* @subpackage Tests
*/
class ezcPersistentSessionIdentityDecoratorRelationPrefetchTest extends ezcTestCase
{
protected $defManager;
protected $queryCreator;
protected $db;
public function setup()
{
$this->defManager = new ezcPersistentCodeManager(
dirname( __FILE__ ) . '/../data/'
);
try
{
$this->db = ezcDbInstance::get();
}
catch ( Exception $e )
{
$this->markTestSkipped( 'There was no database configured' );
}
$this->queryCreator = new ezcPersistentIdentityRelationQueryCreator(
$this->defManager,
$this->db
);
// @TODO: This is currently needed to fix the attribute set in
// ezcDbHandler. Should be removed as soon as this is fixed!
$this->db->setAttribute( PDO::ATTR_CASE, PDO::CASE_NATURAL );
}
protected function getLoadQuery( $relations )
{
return $this->queryCreator->createLoadQuery( 'RelationTestPerson', 2, $relations );
}
protected function getFindQuery( $relations )
{
return $this->queryCreator->createFindQuery( 'RelationTestPerson', $relations );
}
protected function getOneLevelOneRelationRelations()
{
return array(
'employer' => new ezcPersistentRelationFindDefinition(
'RelationTestEmployer'
),
);
}
protected function getOneLevelMultiRelationRelations()
{
return array(
'employer' => new ezcPersistentRelationFindDefinition(
'RelationTestEmployer'
),
'address' => new ezcPersistentRelationFindDefinition(
'RelationTestAddress'
),
);
}
protected function getMultiLevelSingleRelationRelations()
{
return array(
'addresses' => new ezcPersistentRelationFindDefinition(
'RelationTestAddress',
null,
array(
'habitants' => new ezcPersistentRelationFindDefinition(
'RelationTestPerson'
)
)
),
);
}
protected function getMultiLevelMultiRelationRelations()
{
return array(
'addresses' => new ezcPersistentRelationFindDefinition(
'RelationTestAddress',
null,
array(
'habitants' => new ezcPersistentRelationFindDefinition(
'RelationTestPerson',
null,
array(
'habitant_employer' => new ezcPersistentRelationFindDefinition(
'RelationTestEmployer'
),
'habitant_birthday' => new ezcPersistentRelationFindDefinition(
'RelationTestBirthday'
),
)
)
)
),
'employer' => new ezcPersistentRelationFindDefinition(
'RelationTestEmployer'
),
'birthday' => new ezcPersistentRelationFindDefinition(
'RelationTestBirthday'
),
);
}
protected function qi( $identifier )
{
return $this->db->quoteIdentifier( $identifier );
}
}
?>