XmlViewTest.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <?php
  2. /**
  3. * XmlViewTest 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('XmlView', 'View');
  23. /**
  24. * XmlViewTest
  25. *
  26. * @package Cake.Test.Case.View
  27. */
  28. class XmlViewTest 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('users' => array('user' => array('user1', 'user2')));
  39. $Controller->set(array('users' => $data, '_serialize' => 'users'));
  40. $View = new XmlView($Controller);
  41. $output = $View->render(false);
  42. $this->assertSame(Xml::build($data)->asXML(), $output);
  43. $this->assertSame('application/xml', $Response->type());
  44. $data = array(
  45. array(
  46. 'User' => array(
  47. 'username' => 'user1'
  48. )
  49. ),
  50. array(
  51. 'User' => array(
  52. 'username' => 'user2'
  53. )
  54. )
  55. );
  56. $Controller->set(array('users' => $data, '_serialize' => 'users'));
  57. $View = new XmlView($Controller);
  58. $output = $View->render(false);
  59. $expected = Xml::build(array('response' => array('users' => $data)))->asXML();
  60. $this->assertSame($expected, $output);
  61. $Controller->set('_rootNode', 'custom_name');
  62. $View = new XmlView($Controller);
  63. $output = $View->render(false);
  64. $expected = Xml::build(array('custom_name' => array('users' => $data)))->asXML();
  65. $this->assertSame($expected, $output);
  66. }
  67. /**
  68. * Test render with an array in _serialize
  69. *
  70. * @return void
  71. */
  72. public function testRenderWithoutViewMultiple() {
  73. $Request = new CakeRequest();
  74. $Response = new CakeResponse();
  75. $Controller = new Controller($Request, $Response);
  76. $data = array('no' => 'nope', 'user' => 'fake', 'list' => array('item1', 'item2'));
  77. $Controller->set($data);
  78. $Controller->set('_serialize', array('no', 'user'));
  79. $View = new XmlView($Controller);
  80. $this->assertSame('application/xml', $Response->type());
  81. $output = $View->render(false);
  82. $expected = array(
  83. 'response' => array('no' => $data['no'], 'user' => $data['user'])
  84. );
  85. $this->assertSame(Xml::build($expected)->asXML(), $output);
  86. $Controller->set('_rootNode', 'custom_name');
  87. $View = new XmlView($Controller);
  88. $output = $View->render(false);
  89. $expected = array(
  90. 'custom_name' => array('no' => $data['no'], 'user' => $data['user'])
  91. );
  92. $this->assertSame(Xml::build($expected)->asXML(), $output);
  93. }
  94. /**
  95. * testRenderWithView method
  96. *
  97. * @return void
  98. */
  99. public function testRenderWithView() {
  100. App::build(array('View' => array(
  101. CAKE . 'Test' . DS . 'test_app' . DS . 'View' . DS
  102. )));
  103. $Request = new CakeRequest();
  104. $Response = new CakeResponse();
  105. $Controller = new Controller($Request, $Response);
  106. $Controller->name = $Controller->viewPath = 'Posts';
  107. $data = array(
  108. array(
  109. 'User' => array(
  110. 'username' => 'user1'
  111. )
  112. ),
  113. array(
  114. 'User' => array(
  115. 'username' => 'user2'
  116. )
  117. )
  118. );
  119. $Controller->set('users', $data);
  120. $View = new XmlView($Controller);
  121. $output = $View->render('index');
  122. $expected = array(
  123. 'users' => array('user' => array('user1', 'user2'))
  124. );
  125. $expected = Xml::build($expected)->asXML();
  126. $this->assertSame($expected, $output);
  127. $this->assertSame('application/xml', $Response->type());
  128. $this->assertInstanceOf('HelperCollection', $View->Helpers);
  129. }
  130. }