FlashComponentTest.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <?php
  2. namespace Tools\Test\TestCase\Controller\Component;
  3. use Cake\Core\Configure;
  4. use Cake\Event\Event;
  5. use Cake\Network\Request;
  6. use TestApp\Controller\FlashComponentTestController;
  7. use Tools\TestSuite\TestCase;
  8. /**
  9. */
  10. class FlashComponentTest extends TestCase {
  11. /**
  12. * @var \TestApp\Controller\FlashComponentTestController
  13. */
  14. public $Controller;
  15. /**
  16. * @return void
  17. */
  18. public function setUp() {
  19. parent::setUp();
  20. Configure::write('App.namespace', 'TestApp');
  21. $this->Controller = new FlashComponentTestController();
  22. $this->Controller->startupProcess();
  23. $this->Controller->request->session()->delete('FlashMessage');
  24. }
  25. /**
  26. * @return void
  27. */
  28. public function tearDown() {
  29. parent::tearDown();
  30. unset($this->Controller->Flash);
  31. unset($this->Controller);
  32. }
  33. /**
  34. * @return void
  35. */
  36. public function testTransientMessage() {
  37. $this->Controller->Flash->transientMessage('xyz', 'success');
  38. $res = Configure::read('FlashMessage');
  39. $this->assertTrue(!empty($res));
  40. $this->assertTrue(isset($res['success'][0]) && $res['success'][0] === 'xyz');
  41. }
  42. /**
  43. * @return void
  44. */
  45. public function testMessage() {
  46. $this->Controller->Flash->message('efg');
  47. $res = $this->Controller->request->session()->read('FlashMessage');
  48. $this->assertTrue(!empty($res));
  49. $this->assertTrue(isset($res['info'][0]));
  50. $this->assertSame('efg', $res['info'][0]);
  51. }
  52. /**
  53. * @return void
  54. */
  55. public function testMagic() {
  56. $this->Controller->Flash->error('Some Error Message');
  57. $res = $this->Controller->request->session()->read('FlashMessage');
  58. $this->assertTrue(!empty($res));
  59. $this->assertTrue(isset($res['error'][0]));
  60. $this->assertSame('Some Error Message', $res['error'][0]);
  61. }
  62. /**
  63. * @return void
  64. */
  65. public function testCoreHook() {
  66. $this->Controller->Flash->set('Some Message');
  67. $res = $this->Controller->request->session()->read('FlashMessage');
  68. $this->assertTrue(!empty($res));
  69. $this->assertTrue(isset($res['info'][0]));
  70. $this->assertSame('Some Message', $res['info'][0]);
  71. }
  72. /**
  73. * @return void
  74. */
  75. public function testAjax() {
  76. $this->Controller->request = $this->getMockBuilder(Request::class)->setMethods(['is'])->getMock();
  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. }