Browse Source

Fix issue with getting Table instances.

If a table instance is configured an exception will be thrown if you try
to reconfigure it. Use exists() to work around that issue.
mark_story 12 years ago
parent
commit
cd2d0a603c

+ 2 - 1
src/Console/Command/Task/TestTask.php

@@ -423,7 +423,8 @@ class TestTask extends BakeTask {
 		$pre = $construct = $post = '';
 		if ($type === 'table') {
 			$className = str_replace('Table', '', $className);
-			$construct = "TableRegistry::get('{$className}', ['className' => '{$fullClassName}']);\n";
+			$pre = "\$config = TableRegistry::exists('{$className}') ? [] : ['className' => '{$fullClassName}'];\n";
+			$construct = "TableRegistry::get('{$className}', \$config);\n";
 		}
 		if ($type === 'behavior' || $type === 'entity') {
 			$construct = "new {$className}();\n";

+ 11 - 6
tests/TestCase/Console/Command/Task/TestTaskTest.php

@@ -338,7 +338,8 @@ class TestTaskTest extends TestCase {
 		$this->assertContains('class ArticlesTableTest extends TestCase', $result);
 
 		$this->assertContains('function setUp()', $result);
-		$this->assertContains("\$this->Articles = TableRegistry::get('Articles', [", $result);
+		$this->assertContains("\$config = TableRegistry::exists('Articles') ?", $result);
+		$this->assertContains("\$this->Articles = TableRegistry::get('Articles', \$config", $result);
 
 		$this->assertContains('function tearDown()', $result);
 		$this->assertContains('unset($this->Articles)', $result);
@@ -478,19 +479,23 @@ class TestTaskTest extends TestCase {
  */
 	public function testGenerateConstructor() {
 		$result = $this->Task->generateConstructor('controller', 'PostsController');
-		$expected = array('', '', '');
+		$expected = ['', '', ''];
 		$this->assertEquals($expected, $result);
 
 		$result = $this->Task->generateConstructor('table', 'App\Model\\Table\PostsTable');
-		$expected = array('', "TableRegistry::get('Posts', ['className' => 'App\Model\\Table\PostsTable']);\n", '');
+		$expected = [
+			"\$config = TableRegistry::exists('Posts') ? [] : ['className' => 'App\Model\\Table\PostsTable'];\n",
+			"TableRegistry::get('Posts', \$config);\n",
+			''
+		];
 		$this->assertEquals($expected, $result);
 
 		$result = $this->Task->generateConstructor('helper', 'FormHelper');
-		$expected = array("\$view = new View();\n", "new FormHelper(\$view);\n", '');
+		$expected = ["\$view = new View();\n", "new FormHelper(\$view);\n", ''];
 		$this->assertEquals($expected, $result);
 
-		$result = $this->Task->generateConstructor('entity', 'TestPlugin\Model\Entity\Article', null);
-		$expected = array("", "new Article();\n", '');
+		$result = $this->Task->generateConstructor('entity', 'TestPlugin\Model\Entity\Article');
+		$expected = ["", "new Article();\n", ''];
 		$this->assertEquals($expected, $result);
 	}