diff --git a/lib/Cake/Test/Case/TestSuite/CakeTestCaseTest.php b/lib/Cake/Test/Case/TestSuite/CakeTestCaseTest.php index da97150c3..d7b62e190 100644 --- a/lib/Cake/Test/Case/TestSuite/CakeTestCaseTest.php +++ b/lib/Cake/Test/Case/TestSuite/CakeTestCaseTest.php @@ -39,6 +39,22 @@ class SecondaryPost extends Model { } +/** + * ConstructorPost test stub. + */ +class ConstructorPost extends Model { + +/** + * @var string + */ + public $useTable = 'posts'; + + public function __construct($id = false, $table = null, $ds = null) { + parent::__construct($id, $table, $ds); + $this->getDataSource()->cacheMethods = false; + } +} + /** * CakeTestCaseTest * @@ -435,6 +451,16 @@ class CakeTestCaseTest extends CakeTestCase { ConnectionManager::drop('test_secondary'); } +/** + * Test getMockForModel when the model accesses the datasource in the constructor. + * + * @return void + */ + public function testGetMockForModelConstructorDatasource() { + $post = $this->getMockForModel('ConstructorPost', array('save'), array('ds' => 'test')); + $this->assertEquals('test', $post->useDbConfig); + } + /** * test getMockForModel() with plugin models * diff --git a/lib/Cake/TestSuite/CakeTestCase.php b/lib/Cake/TestSuite/CakeTestCase.php index c375717fe..ab04db6a7 100644 --- a/lib/Cake/TestSuite/CakeTestCase.php +++ b/lib/Cake/TestSuite/CakeTestCase.php @@ -718,13 +718,13 @@ abstract class CakeTestCase extends PHPUnit_Framework_TestCase { * @return Model */ public function getMockForModel($model, $methods = array(), $config = array()) { - $config += ClassRegistry::config('Model'); + $defaults = ClassRegistry::config('Model'); + unset($defaults['ds']); list($plugin, $name) = pluginSplit($model, true); App::uses($name, $plugin . 'Model'); - $config = array_merge((array)$config, array('name' => $name)); - unset($config['ds']); + $config = array_merge($defaults, (array)$config, array('name' => $name)); if (!class_exists($name)) { throw new MissingModelException(array($model));