Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

adding test for viewClass mapping

  • Loading branch information...
commit 7ea1a590354617d13f31d644e09fbddf7e667271 1 parent 21431cb
@ceeram ceeram authored
View
41 lib/Cake/Test/Case/Controller/Component/RequestHandlerComponentTest.php
@@ -21,6 +21,7 @@
App::uses('CakeRequest', 'Network');
App::uses('CakeResponse', 'Network');
App::uses('Router', 'Routing');
+App::uses('JsonView', 'View');
/**
* RequestHandlerTestController class
@@ -70,6 +71,15 @@ public function ajax2_layout() {
}
+class CustomJsonView extends JsonView {
+
+/**
+ * Test method for viewClassMap and overriding _serialize()
+ */
+ protected function _serialize($serialize) {
+ return json_encode(array('return' => 'ok'));
+ }
+}
/**
* RequestHandlerComponentTest class
@@ -137,12 +147,14 @@ public function tearDown() {
*/
public function testConstructorSettings() {
$settings = array(
- 'ajaxLayout' => 'test_ajax'
+ 'ajaxLayout' => 'test_ajax',
+ 'viewClassMap' => array('json' => 'MyPlugin.MyJson')
);
$Collection = new ComponentCollection();
$Collection->init($this->Controller);
$RequestHandler = new RequestHandlerComponent($Collection, $settings);
$this->assertEquals('test_ajax', $RequestHandler->ajaxLayout);
+ $this->assertEquals(array('json' => 'MyPlugin.MyJson'), $RequestHandler->settings['viewClassMap']);
}
/**
@@ -265,6 +277,33 @@ public function testInitializeContentTypeAndExtensionMismatch() {
}
/**
+ * testViewClassMap method
+ *
+ * @return void
+ */
+ public function testViewClassMap() {
+ $settings = array('viewClassMap' => array('json' => 'CustomJson'));
+ $this->RequestHandler->initialize($this->Controller, $settings);
+ $result = $this->RequestHandler->viewClassMap();
+ $expected = array(
+ 'json' => 'CustomJson',
+ 'xml' => 'Xml'
+ );
+ $this->assertEquals($expected, $result);
+
+ $result = $this->RequestHandler->viewClassMap('xls', 'Excel.Excel');
+ $expected = array(
+ 'json' => 'CustomJson',
+ 'xml' => 'Xml',
+ 'xls' => 'Excel.Excel'
+ );
+ $this->assertEquals($expected, $result);
+
+ $this->RequestHandler->renderAs($this->Controller, 'json');
+ $this->assertEquals('CustomJson', $this->Controller->viewClass);
+ }
+
+/**
* testDisabling method
*
* @return void
Please sign in to comment.
Something went wrong with that request. Please try again.