FlashComponentTest.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <?php
  2. namespace Tools\Test\TestCase\Controller\Component;
  3. use Cake\Controller\ComponentRegistry;
  4. use Cake\Controller\Controller;
  5. use Cake\Core\Configure;
  6. use Cake\Event\Event;
  7. use Cake\Network\Request;
  8. use Cake\Network\Session;
  9. use Cake\Routing\DispatcherFactory;
  10. use Shim\Controller\Component\Component;
  11. use Tools\TestSuite\TestCase;
  12. /**
  13. */
  14. class FlashComponentTest extends TestCase {
  15. //public $fixtures = array('core.sessions', 'plugin.tools.tools_users', 'plugin.tools.roles');
  16. public function setUp() {
  17. parent::setUp();
  18. Configure::write('App.namespace', 'TestApp');
  19. $this->Controller = new FlashComponentTestController();
  20. $this->Controller->startupProcess();
  21. $this->Controller->request->session()->delete('FlashMessage');
  22. }
  23. public function tearDown() {
  24. parent::tearDown();
  25. unset($this->Controller->Flash);
  26. unset($this->Controller);
  27. }
  28. /**
  29. * FlashComponentTest::testTransientMessage()
  30. *
  31. * @return void
  32. */
  33. public function testTransientMessage() {
  34. $is = $this->Controller->Flash->transientMessage('xyz', 'success');
  35. $res = Configure::read('FlashMessage');
  36. $this->assertTrue(!empty($res));
  37. $this->assertTrue(isset($res['success'][0]) && $res['success'][0] === 'xyz');
  38. }
  39. /**
  40. * FlashComponentTest::testMessage()
  41. *
  42. * @return void
  43. */
  44. public function testMessage() {
  45. $is = $this->Controller->Flash->message('efg');
  46. $res = $this->Controller->request->session()->read('FlashMessage');
  47. $this->assertTrue(!empty($res));
  48. $this->assertTrue(isset($res['info'][0]));
  49. $this->assertSame('efg', $res['info'][0]);
  50. }
  51. /**
  52. * FlashComponentTest::testMagic()
  53. *
  54. * @return void
  55. */
  56. public function testMagic() {
  57. $is = $this->Controller->Flash->error('Some Error Message');
  58. $res = $this->Controller->request->session()->read('FlashMessage');
  59. $this->assertTrue(!empty($res));
  60. $this->assertTrue(isset($res['error'][0]));
  61. $this->assertSame('Some Error Message', $res['error'][0]);
  62. }
  63. /**
  64. * FlashComponentTest::testCoreHook()
  65. *
  66. * @return void
  67. */
  68. public function testCoreHook() {
  69. $is = $this->Controller->Flash->set('Some Message');
  70. $res = $this->Controller->request->session()->read('FlashMessage');
  71. $this->assertTrue(!empty($res));
  72. $this->assertTrue(isset($res['info'][0]));
  73. $this->assertSame('Some Message', $res['info'][0]);
  74. }
  75. /**
  76. * FlashComponentTest::testAjax()
  77. *
  78. * @return void
  79. */
  80. public function testAjax() {
  81. $this->Controller->request = $this->getMock('Cake\Network\Request', ['is']);
  82. $this->Controller->Flash->success('yeah');
  83. $this->Controller->Flash->transientMessage('xyz', 'warning');
  84. $this->Controller->request->expects($this->once())
  85. ->method('is')
  86. ->with('ajax')
  87. ->will($this->returnValue(true));
  88. $event = new Event('Controller.startup', $this->Controller);
  89. $this->Controller->Flash->beforeRender($event);
  90. $result = $this->Controller->response->header();
  91. $expected = ['X-Flash' => '{"success":["yeah"],"warning":["xyz"]}'];
  92. $this->assertSame($expected, $result);
  93. }
  94. }
  95. /**
  96. * Use Controller instead of AppController to avoid conflicts
  97. */
  98. class FlashComponentTestController extends Controller {
  99. /**
  100. * @var array
  101. */
  102. public $components = ['Tools.Flash'];
  103. /**
  104. * @var bool
  105. */
  106. public $failed = false;
  107. /**
  108. * @var array
  109. */
  110. public $testHeaders = [];
  111. public function fail() {
  112. $this->failed = true;
  113. }
  114. public function redirect($url, $status = null, $exit = true) {
  115. return $status;
  116. }
  117. public function header($status) {
  118. $this->testHeaders[] = $status;
  119. }
  120. }