JsonViewTest.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. /**
  3. * JsonViewTest file
  4. *
  5. * PHP 5
  6. *
  7. * CakePHP(tm) Tests <http://book.cakephp.org/2.0/en/development/testing.html>
  8. * Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
  9. *
  10. * Licensed under The MIT License
  11. * Redistributions of files must retain the above copyright notice
  12. *
  13. * @copyright Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
  14. * @link http://book.cakephp.org/2.0/en/development/testing.html CakePHP(tm) Tests
  15. * @package Cake.Test.Case.View
  16. * @since CakePHP(tm) v 2.1.0
  17. * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
  18. */
  19. App::uses('Controller', 'Controller');
  20. App::uses('CakeRequest', 'Network');
  21. App::uses('CakeResponse', 'Network');
  22. App::uses('JsonView', 'View');
  23. /**
  24. * JsonViewTest
  25. *
  26. * @package Cake.Test.Case.View
  27. */
  28. class JsonViewTest extends CakeTestCase {
  29. /**
  30. * testRenderWithoutView method
  31. *
  32. * @return void
  33. */
  34. public function testRenderWithoutView() {
  35. $Request = new CakeRequest();
  36. $Response = new CakeResponse();
  37. $Controller = new Controller($Request, $Response);
  38. $data = array('user' => 'fake', 'list' => array('item1', 'item2'));
  39. $Controller->set(array('data' => $data, '_serialize' => 'data'));
  40. $View = new JsonView($Controller);
  41. $output = $View->render(false);
  42. $this->assertSame(json_encode($data), $output);
  43. $this->assertSame('application/json', $Response->type());
  44. }
  45. /**
  46. * Test render with an array in _serialize
  47. *
  48. * @return void
  49. */
  50. public function testRenderWithoutViewMultiple() {
  51. $Request = new CakeRequest();
  52. $Response = new CakeResponse();
  53. $Controller = new Controller($Request, $Response);
  54. $data = array('no' => 'nope', 'user' => 'fake', 'list' => array('item1', 'item2'));
  55. $Controller->set($data);
  56. $Controller->set('_serialize', array('no', 'user'));
  57. $View = new JsonView($Controller);
  58. $output = $View->render(false);
  59. $this->assertSame(json_encode(array('no' => $data['no'], 'user' => $data['user'])), $output);
  60. $this->assertSame('application/json', $Response->type());
  61. }
  62. /**
  63. * testRenderWithView method
  64. *
  65. * @return void
  66. */
  67. public function testRenderWithView() {
  68. App::build(array(
  69. 'View' => array(CAKE . 'Test' . DS . 'test_app' . DS . 'View' . DS)
  70. ));
  71. $Request = new CakeRequest();
  72. $Request->params['named'] = array('page' => 2);
  73. $Response = new CakeResponse();
  74. $Controller = new Controller($Request, $Response);
  75. $Controller->name = $Controller->viewPath = 'Posts';
  76. $data = array(
  77. 'User' => array(
  78. 'username' => 'fake'
  79. ),
  80. 'Item' => array(
  81. array('name' => 'item1'),
  82. array('name' => 'item2')
  83. )
  84. );
  85. $Controller->set('user', $data);
  86. $View = new JsonView($Controller);
  87. $View->helpers = array('Paginator');
  88. $output = $View->render('index');
  89. $expected = json_encode(array('user' => 'fake', 'list' => array('item1', 'item2'), 'paging' => array('page' => 2)));
  90. $this->assertSame($expected, $output);
  91. $this->assertSame('application/json', $Response->type());
  92. }
  93. }