FlashComponentTest.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. App::uses('FlashComponent', 'Tools.Controller/Component');
  3. App::uses('Component', 'Controller');
  4. App::uses('CakeSession', 'Model/Datasource');
  5. App::uses('Controller', 'Controller');
  6. App::uses('AppModel', 'Model');
  7. /**
  8. */
  9. class FlashComponentTest extends CakeTestCase {
  10. public $fixtures = array('core.cake_session');
  11. public function setUp() {
  12. parent::setUp();
  13. // BUGFIX for CakePHP2.5 - One has to write to the session before deleting actually works
  14. CakeSession::write('Auth', '');
  15. CakeSession::delete('Auth');
  16. $this->Controller = new FlashComponentTestController(new CakeRequest, new CakeResponse);
  17. $this->Controller->constructClasses();
  18. $this->Controller->startupProcess();
  19. $this->Controller->Session->delete('messages');
  20. }
  21. public function tearDown() {
  22. parent::tearDown();
  23. unset($this->Controller);
  24. }
  25. /**
  26. * FlashComponentTest::testTransientFlashMessage()
  27. *
  28. * @return void
  29. */
  30. public function testTransientMessage() {
  31. $this->Controller->Flash->transientMessage('xyz', 'success');
  32. $res = Configure::read('messages');
  33. //debug($res);
  34. $this->assertTrue(!empty($res));
  35. $this->assertTrue(isset($res['success'][0]) && $res['success'][0] === 'xyz');
  36. }
  37. /**
  38. * FlashComponentTest::testFlashMessage()
  39. *
  40. * @return void
  41. */
  42. public function testFlashMessage() {
  43. $this->Controller->Flash->message('efg');
  44. $res = $this->Controller->Session->read('messages');
  45. $this->assertTrue(!empty($res));
  46. $this->assertTrue(isset($res['info'][0]) && $res['info'][0] === 'efg');
  47. }
  48. public function testMagicMessage() {
  49. $this->Controller->Flash->success('s');
  50. $this->Controller->Flash->error('e');
  51. $this->Controller->Flash->warning('w');
  52. $res = $this->Controller->Session->read('messages');
  53. $expected = array(
  54. 'success' => array('s'),
  55. 'error' => array('e'),
  56. 'warning' => array('w'));
  57. $this->assertSame($expected, $res);
  58. }
  59. }
  60. // Use Controller instead of AppController to avoid conflicts
  61. class FlashComponentTestController extends Controller {
  62. public $components = array('Session', 'Tools.Flash');
  63. public $failed = false;
  64. public $testHeaders = array();
  65. public function fail() {
  66. $this->failed = true;
  67. }
  68. public function redirect($url, $status = null, $exit = true) {
  69. return $status;
  70. }
  71. public function header($status) {
  72. $this->testHeaders[] = $status;
  73. }
  74. }