EventTest.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <?php
  2. /**
  3. * EventTest file
  4. *
  5. * Test Case for Event class
  6. *
  7. * CakePHP : Rapid Development Framework (http://cakephp.org)
  8. * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
  9. *
  10. * Licensed under The MIT License
  11. * For full copyright and license information, please see the LICENSE.txt
  12. * Redistributions of files must retain the above copyright notice.
  13. *
  14. * @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
  15. * @link http://cakephp.org CakePHP Project
  16. * @since 2.1.0
  17. * @license http://www.opensource.org/licenses/mit-license.php MIT License
  18. */
  19. namespace Cake\Test\TestCase\Event;
  20. use ArrayObject;
  21. use Cake\Event\Event;
  22. use Cake\TestSuite\TestCase;
  23. /**
  24. * Tests the Cake\Event\Event class functionality
  25. */
  26. class EventTest extends TestCase
  27. {
  28. /**
  29. * Tests the name() method
  30. *
  31. * @return void
  32. * @triggers fake.event
  33. */
  34. public function testName()
  35. {
  36. $event = new Event('fake.event');
  37. $this->assertEquals('fake.event', $event->name());
  38. $this->assertEquals('fake.event', $event->getName());
  39. }
  40. /**
  41. * Tests the subject() method
  42. *
  43. * @return void
  44. * @triggers fake.event $this
  45. * @triggers fake.event
  46. */
  47. public function testSubject()
  48. {
  49. $event = new Event('fake.event', $this);
  50. $this->assertSame($this, $event->subject());
  51. $this->assertSame($this, $event->getSubject());
  52. $event = new Event('fake.event');
  53. $this->assertNull($event->subject());
  54. }
  55. /**
  56. * Tests the event propagation stopping property
  57. *
  58. * @return void
  59. * @triggers fake.event
  60. */
  61. public function testPropagation()
  62. {
  63. $event = new Event('fake.event');
  64. $this->assertFalse($event->isStopped());
  65. $event->stopPropagation();
  66. $this->assertTrue($event->isStopped());
  67. }
  68. /**
  69. * Tests that it is possible to get/set custom data in a event
  70. *
  71. * @return void
  72. * @triggers fake.event $this, array('some' => 'data')
  73. */
  74. public function testEventData()
  75. {
  76. $event = new Event('fake.event', $this, ['some' => 'data']);
  77. $this->assertEquals(['some' => 'data'], $event->data());
  78. $this->assertEquals(['some' => 'data'], $event->getData());
  79. $this->assertEquals('data', $event->getData('some'));
  80. $this->assertNull($event->getData('undef'));
  81. }
  82. /**
  83. * Tests that it is possible to get/set custom data in a event
  84. *
  85. * @return void
  86. * @triggers fake.event $this, array('some' => 'data')
  87. */
  88. public function testEventDataObject()
  89. {
  90. $data = new ArrayObject(['some' => 'data']);
  91. $event = new Event('fake.event', $this, $data);
  92. $this->assertEquals(['some' => 'data'], $event->data());
  93. $this->assertEquals(['some' => 'data'], $event->getData());
  94. $this->assertEquals('data', $event->getData('some'));
  95. $this->assertNull($event->getData('undef'));
  96. }
  97. /**
  98. * Tests that it is possible to get the name and subject directly
  99. *
  100. * @return void
  101. * @triggers fake.event $this
  102. */
  103. public function testEventDirectPropertyAccess()
  104. {
  105. $event = new Event('fake.event', $this);
  106. $this->assertEquals($this, $event->subject());
  107. $this->assertEquals('fake.event', $event->name());
  108. }
  109. }