CollectionTest.php 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Message\Test\Unit;
  7. use Magento\Framework\Message\MessageInterface;
  8. /**
  9. * \Magento\Framework\Message\Collection test case
  10. */
  11. class CollectionTest extends \PHPUnit\Framework\TestCase
  12. {
  13. /**
  14. * @var \Magento\Framework\Message\Collection
  15. */
  16. protected $model;
  17. /**
  18. * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
  19. */
  20. protected $objectManager;
  21. protected function setUp()
  22. {
  23. $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  24. $this->model = $this->objectManager->getObject(\Magento\Framework\Message\Collection::class);
  25. }
  26. /**
  27. * @covers \Magento\Framework\Message\Collection::addMessage
  28. * @covers \Magento\Framework\Message\Collection::getItemsByType
  29. */
  30. public function testAddMessage()
  31. {
  32. $messages = [
  33. $this->objectManager->getObject(\Magento\Framework\Message\Error::class),
  34. $this->objectManager->getObject(\Magento\Framework\Message\Error::class),
  35. $this->objectManager->getObject(\Magento\Framework\Message\Error::class),
  36. ];
  37. foreach ($messages as $message) {
  38. $this->model->addMessage($message);
  39. }
  40. $this->assertEquals($messages, $this->model->getItemsByType(MessageInterface::TYPE_ERROR));
  41. $this->assertEmpty($this->model->getItemsByType(MessageInterface::TYPE_SUCCESS));
  42. $this->assertEmpty($this->model->getItemsByType(MessageInterface::TYPE_NOTICE));
  43. $this->assertEmpty($this->model->getItemsByType(MessageInterface::TYPE_WARNING));
  44. }
  45. /**
  46. * @covers \Magento\Framework\Message\Collection::addMessage
  47. * @covers \Magento\Framework\Message\Collection::getItems
  48. * @covers \Magento\Framework\Message\Collection::getLastAddedMessage
  49. */
  50. public function testGetItems()
  51. {
  52. $messages = [
  53. $this->objectManager->getObject(\Magento\Framework\Message\Error::class),
  54. $this->objectManager->getObject(\Magento\Framework\Message\Notice::class),
  55. $this->objectManager->getObject(\Magento\Framework\Message\Notice::class),
  56. $this->objectManager->getObject(\Magento\Framework\Message\Warning::class),
  57. $this->objectManager->getObject(\Magento\Framework\Message\Warning::class),
  58. $this->objectManager->getObject(\Magento\Framework\Message\Success::class),
  59. ];
  60. foreach ($messages as $message) {
  61. $this->model->addMessage($message);
  62. }
  63. $this->assertEquals($messages, $this->model->getItems());
  64. $this->assertEquals(end($messages), $this->model->getLastAddedMessage());
  65. }
  66. /**
  67. * @covers \Magento\Framework\Message\Collection::addMessage
  68. * @covers \Magento\Framework\Message\Collection::getItemsByType
  69. * @covers \Magento\Framework\Message\Collection::getCount
  70. * @covers \Magento\Framework\Message\Collection::getCountByType
  71. */
  72. public function testGetItemsByType()
  73. {
  74. $messages = [
  75. $this->objectManager->getObject(\Magento\Framework\Message\Error::class),
  76. $this->objectManager->getObject(\Magento\Framework\Message\Notice::class),
  77. $this->objectManager->getObject(\Magento\Framework\Message\Success::class),
  78. $this->objectManager->getObject(\Magento\Framework\Message\Notice::class),
  79. $this->objectManager->getObject(\Magento\Framework\Message\Success::class),
  80. $this->objectManager->getObject(\Magento\Framework\Message\Warning::class),
  81. $this->objectManager->getObject(\Magento\Framework\Message\Error::class),
  82. ];
  83. $messageTypes = [
  84. MessageInterface::TYPE_SUCCESS => 2,
  85. MessageInterface::TYPE_NOTICE => 2,
  86. MessageInterface::TYPE_WARNING => 1,
  87. MessageInterface::TYPE_ERROR => 2,
  88. ];
  89. foreach ($messages as $message) {
  90. $this->model->addMessage($message);
  91. }
  92. $this->assertEquals(count($messages), $this->model->getCount());
  93. foreach ($messageTypes as $type => $count) {
  94. $messagesByType = $this->model->getItemsByType($type);
  95. $this->assertEquals($count, $this->model->getCountByType($type));
  96. $this->assertEquals($count, count($messagesByType));
  97. /** @var MessageInterface $message */
  98. foreach ($messagesByType as $message) {
  99. $this->assertEquals($type, $message->getType());
  100. }
  101. }
  102. }
  103. /**
  104. * @covers \Magento\Framework\Message\Collection::addMessage
  105. * @covers \Magento\Framework\Message\Collection::getErrors
  106. */
  107. public function testGetErrors()
  108. {
  109. $messages = [
  110. $this->objectManager->getObject(\Magento\Framework\Message\Error::class),
  111. $this->objectManager->getObject(\Magento\Framework\Message\Notice::class),
  112. $this->objectManager->getObject(\Magento\Framework\Message\Error::class),
  113. $this->objectManager->getObject(\Magento\Framework\Message\Error::class),
  114. $this->objectManager->getObject(\Magento\Framework\Message\Warning::class),
  115. $this->objectManager->getObject(\Magento\Framework\Message\Error::class),
  116. ];
  117. foreach ($messages as $message) {
  118. $this->model->addMessage($message);
  119. }
  120. $this->assertEquals($this->model->getItemsByType(MessageInterface::TYPE_ERROR), $this->model->getErrors());
  121. $this->assertEquals(4, count($this->model->getErrors()));
  122. }
  123. /**
  124. * @covers \Magento\Framework\Message\Collection::getMessageByIdentifier
  125. * @covers \Magento\Framework\Message\Collection::deleteMessageByIdentifier
  126. */
  127. public function testGetMessageByIdentifier()
  128. {
  129. $messages = [
  130. $this->objectManager->getObject(\Magento\Framework\Message\Error::class)->setIdentifier('error_id'),
  131. $this->objectManager->getObject(\Magento\Framework\Message\Notice::class)->setIdentifier('notice_id'),
  132. $this->objectManager->getObject(\Magento\Framework\Message\Warning::class)->setIdentifier('warning_id'),
  133. ];
  134. foreach ($messages as $message) {
  135. $this->model->addMessage($message);
  136. }
  137. $message = $this->model->getMessageByIdentifier('notice_id');
  138. $this->assertEquals(MessageInterface::TYPE_NOTICE, $message->getType());
  139. $this->assertEquals('notice_id', $message->getIdentifier());
  140. $this->assertEquals(count($messages), $this->model->getCount());
  141. $this->model->deleteMessageByIdentifier('notice_id');
  142. $this->assertEquals(count($messages) - 1, $this->model->getCount());
  143. $this->assertEmpty($this->model->getMessageByIdentifier('notice_id'));
  144. }
  145. /**
  146. * @covers \Magento\Framework\Message\Collection::clear
  147. */
  148. public function testClear()
  149. {
  150. $messages = [
  151. $this->objectManager->getObject(\Magento\Framework\Message\Error::class),
  152. $this->objectManager->getObject(\Magento\Framework\Message\Warning::class),
  153. $this->objectManager->getObject(\Magento\Framework\Message\Notice::class),
  154. $this->objectManager->getObject(\Magento\Framework\Message\Success::class),
  155. ];
  156. foreach ($messages as $message) {
  157. $this->model->addMessage($message);
  158. }
  159. $this->assertEquals(count($messages), $this->model->getCount());
  160. $this->model->clear();
  161. $this->assertEmpty($this->model->getCount());
  162. }
  163. /**
  164. * @covers \Magento\Framework\Message\Collection::clear
  165. */
  166. public function testClearWithSticky()
  167. {
  168. $messages = [
  169. $this->objectManager->getObject(\Magento\Framework\Message\Error::class),
  170. $this->objectManager->getObject(\Magento\Framework\Message\Warning::class),
  171. $this->objectManager->getObject(\Magento\Framework\Message\Notice::class)->setIsSticky(true),
  172. $this->objectManager->getObject(\Magento\Framework\Message\Success::class),
  173. ];
  174. foreach ($messages as $message) {
  175. $this->model->addMessage($message);
  176. }
  177. $this->assertEquals(count($messages), $this->model->getCount());
  178. $this->model->clear();
  179. $this->assertEquals(1, $this->model->getCount());
  180. }
  181. }