diff --git a/src/View/Cell.php b/src/View/Cell.php index 6d83c39eaa3..6279099845d 100644 --- a/src/View/Cell.php +++ b/src/View/Cell.php @@ -194,7 +194,7 @@ public function render($template = null) $template = Inflector::underscore($template); } if ($template === null) { - $template = $this->template; + $template = $this->viewBuilder()->template() ?: $this->template; } $builder = $this->viewBuilder(); diff --git a/tests/TestCase/View/CellTest.php b/tests/TestCase/View/CellTest.php index 2f773016227..6efd21f554c 100644 --- a/tests/TestCase/View/CellTest.php +++ b/tests/TestCase/View/CellTest.php @@ -133,7 +133,7 @@ public function testDefaultCellAction() } /** - * Tests that cell action setting the template renders the correct template + * Tests that cell action setting the template using the property renders the correct template * * @return void */ @@ -143,11 +143,31 @@ public function testSettingCellTemplateFromAction() $this->assertContains('This is the alternate template', "{$appCell}"); $this->assertEquals('alternate_teaser_list', $appCell->template); + $this->assertEquals('alternate_teaser_list', $appCell->viewBuilder()->template()); $appCell = $this->View->cell('Articles::customTemplate'); $this->assertContains('This is the alternate template', $appCell->render()); $this->assertEquals('alternate_teaser_list', $appCell->template); + $this->assertEquals('alternate_teaser_list', $appCell->viewBuilder()->template()); + } + + /** + * Tests that cell action setting the template using the ViewBuilder renders the correct template + * + * @return void + */ + public function testSettingCellTemplateFromActionViewBuilder() + { + $appCell = $this->View->cell('Articles::customTemplateViewBuilder'); + + $this->assertContains('This is the alternate template', "{$appCell}"); + $this->assertEquals('alternate_teaser_list', $appCell->viewBuilder()->template()); + + $appCell = $this->View->cell('Articles::customTemplateViewBuilder'); + + $this->assertContains('This is the alternate template', $appCell->render()); + $this->assertEquals('alternate_teaser_list', $appCell->viewBuilder()->template()); } /** @@ -403,4 +423,28 @@ public function testCachedRenderSimpleCustomTemplate() Cache::drop('default'); } + + /** + * Test cached render. + * + * @return void + */ + public function testCachedRenderSimpleCustomTemplateViewBuilder() + { + $mock = $this->getMock('Cake\Cache\CacheEngine'); + $mock->method('init') + ->will($this->returnValue(true)); + $mock->method('read') + ->will($this->returnValue(false)); + $mock->expects($this->once()) + ->method('write') + ->with('cell_test_app_view_cell_articles_cell_customTemplateViewBuilder', "