FlashComponentTest.php 3.3 KB

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