Skip to content

Commit

Permalink
Revert the removal of a BC relevant part.
Browse files Browse the repository at this point in the history
  • Loading branch information
euromark committed Apr 10, 2014
1 parent fd2b0ab commit 8e0f15b
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 12 deletions.
20 changes: 16 additions & 4 deletions lib/Cake/Model/Datasource/DboSource.php
Expand Up @@ -1638,7 +1638,7 @@ public function buildAssociationQuery(Model $Model, $queryData) {
* Builds a string containing an SQL statement template.
*
* @param Model $Model Primary Model object.
* @param Model $LinkModel Linked model object.
* @param Model|null $LinkModel Linked model object.
* @param string $type Association type, one of the model association types ie. hasMany.
* @param string $association Association name.
* @param array $assocData Association data.
Expand All @@ -1650,9 +1650,23 @@ public function buildAssociationQuery(Model $Model, $queryData) {
*/
public function generateAssociationQuery(Model $Model, $LinkModel, $type, $association, $assocData, &$queryData, $external) {
$assocData = $this->_scrubQueryData($assocData);
$queryData = $this->_scrubQueryData($queryData);

if ($LinkModel === null) {
return '';
return $this->buildStatement(
array(
'fields' => array_unique($queryData['fields']),
'table' => $this->fullTableName($Model),
'alias' => $Model->alias,
'limit' => $queryData['limit'],
'offset' => $queryData['offset'],
'joins' => $queryData['joins'],
'conditions' => $queryData['conditions'],
'order' => $queryData['order'],
'group' => $queryData['group']
),
$Model
);
}

if ($external && !empty($assocData['finderQuery'])) {
Expand Down Expand Up @@ -1699,8 +1713,6 @@ public function generateAssociationQuery(Model $Model, $LinkModel, $type, $assoc
'conditions' => trim($this->conditions($conditions, true, false, $Model))
);

$queryData = $this->_scrubQueryData($queryData);

$fields = array();
if ($assocData['fields'] !== false) {
$fields = $this->fields($LinkModel, $association, $assocData['fields']);
Expand Down
49 changes: 41 additions & 8 deletions lib/Cake/Test/Case/Model/Datasource/DboSourceTest.php
Expand Up @@ -137,7 +137,6 @@ class DboSourceTest extends CakeTestCase {
*/
public function setUp() {
parent::setUp();
$this->__config = $this->db->config;

$this->testDb = new DboTestSource();
$this->testDb->cacheSources = false;
Expand Down Expand Up @@ -869,7 +868,7 @@ public function testReadOnlyCallingQueryAssociationWhenDefined() {
*/
public function testQueryAssociationUnneededQueries() {
$this->loadFixtures('Article', 'User', 'Comment', 'Attachment', 'Tag', 'ArticlesTag');
$Comment = new Comment;
$Comment = ClassRegistry::init('Comment');

$fullDebug = $this->db->fullDebug;
$this->db->fullDebug = true;
Expand Down Expand Up @@ -917,6 +916,40 @@ public function testQueryAssociationUnneededQueries() {
$this->db->fullDebug = $fullDebug;
}

/**
* Tests that generation association queries without LinkModel still works.
* Mainly BC.
*
* @return void
*/
public function testGenerateAssociationQuery() {
$this->loadFixtures('Article');
$Article = ClassRegistry::init('Article');

$queryData = array(
'conditions' => array(
'Article.id' => 1
),
'fields' => array(
'Article.id',
'Article.title',
),
'joins' => array(),
'limit' => 2,
'offset' => 2,
'order' => array('title'),
'page' => 2,
'group' => null,
'callbacks' => 1
);

$result = $this->db->generateAssociationQuery($Article, null, null, null, null, $queryData, false);
$this->assertContains('SELECT', $result);
$this->assertContains('FROM', $result);
$this->assertContains('WHERE', $result);
$this->assertContains('ORDER', $result);
}

/**
* test that fields() is using methodCache()
*
Expand Down Expand Up @@ -1019,7 +1052,7 @@ public function testLastError() {
*/
public function testTransactionLogging() {
$conn = $this->getMock('MockPDO');
$db = new DboTestSource;
$db = new DboTestSource();
$db->setConnection($conn);
$conn->expects($this->exactly(2))->method('beginTransaction')
->will($this->returnValue(true));
Expand Down Expand Up @@ -1132,7 +1165,7 @@ public function testBuildStatementDefaults() {
$conn->expects($this->at(0))
->method('quote')
->will($this->returnValue('foo bar'));
$db = new DboTestSource;
$db = new DboTestSource();
$db->setConnection($conn);
$subQuery = $db->buildStatement(
array(
Expand Down Expand Up @@ -1223,7 +1256,7 @@ public static function joinStatementsWithPrefix($schema) {
* @return void
*/
public function testBuildJoinStatementWithTablePrefix($join, $expected) {
$db = new DboTestSource;
$db = new DboTestSource();
$db->config['prefix'] = 'pre_';
$result = $db->buildJoinStatement($join);
$this->assertEquals($expected, $result);
Expand All @@ -1237,7 +1270,7 @@ public function testBuildJoinStatementWithTablePrefix($join, $expected) {
public function testConditionKeysToString() {
$Article = ClassRegistry::init('Article');
$conn = $this->getMock('MockPDO', array('quote'));
$db = new DboTestSource;
$db = new DboTestSource();
$db->setConnection($conn);

$conn->expects($this->at(0))
Expand Down Expand Up @@ -1273,7 +1306,7 @@ public function testConditionKeysToStringVirtualField() {
'extra' => 'something virtual'
);
$conn = $this->getMock('MockPDO', array('quote'));
$db = new DboTestSource;
$db = new DboTestSource();
$db->setConnection($conn);

$conn->expects($this->at(0))
Expand Down Expand Up @@ -1304,7 +1337,7 @@ public function testConditionKeysToStringVirtualField() {
* @return void
*/
public function testLimit() {
$db = new DboTestSource;
$db = new DboTestSource();

$result = $db->limit('0');
$this->assertNull($result);
Expand Down

0 comments on commit 8e0f15b

Please sign in to comment.