Skip to content
Permalink
Browse files

Ensure that afterFind is called when using 'joins' with 'recursive' = -1

  • Loading branch information...
chinpei215 committed Aug 27, 2014
1 parent b74774b commit 31204832c2fbdfacf0ddaa018ac28871f788a2aa
Showing with 54 additions and 3 deletions.
  1. +3 −3 lib/Cake/Model/Datasource/DboSource.php
  2. +51 −0 lib/Cake/Test/Case/Model/Datasource/DboSourceTest.php
@@ -1143,10 +1143,10 @@ public function read(Model $Model, $queryData = array(), $recursive = null) {
}
}
}
}
if ($queryData['callbacks'] === true || $queryData['callbacks'] === 'after') {
$this->_filterResults($resultSet, $Model, $filtered);
}
if ($queryData['callbacks'] === true || $queryData['callbacks'] === 'after') {
$this->_filterResults($resultSet, $Model, $filtered);
}
if ($recursive !== null) {
@@ -1509,6 +1509,57 @@ public function testCountAfterFindCalls() {
$this->assertCount(2, $result['Article']['Comment']);
}
/**
* Test that afterFind is called correctly for 'joins'
*
* @return void
*/
public function testJoinsAfterFind() {
$this->loadFixtures('Article', 'User');
$User = new User();
$User->bindModel(array('hasOne' => array('Article')));
$Article = $this->getMock('Article', array('afterFind'), array(), '', true);
$Article->expects($this->once())
->method('afterFind')
->with(
array(
0 => array(
'Article' => array(
'id' => '1',
'user_id' => '1',
'title' => 'First Article',
'body' => 'First Article Body',
'published' => 'Y',
'created' => '2007-03-18 10:39:23',
'updated' => '2007-03-18 10:41:31'
)
)
),
$this->isFalse()
)
->will($this->returnArgument(0));
$User->Article = $Article;
$User->find('first', array(
'fields' => '*',
'conditions' => array('User.id' => 1),
'recursive' => -1,
'joins' => array(
array(
'table' => 'articles',
'alias' => 'Article',
'type' => 'LEFT',
'conditions' => array(
'Article.user_id = User.id'
),
)
),
'order' => array('Article.id')
));
}
/**
* Test that afterFind is called correctly for 'hasOne' association.
*

0 comments on commit 3120483

Please sign in to comment.
You can’t perform that action at this time.