Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
CollectionTest.php
Go to the documentation of this file.
1 <?php
7 
9 
13 class CollectionTest extends \PHPUnit\Framework\TestCase
14 {
18  protected $model;
19 
23  protected $objectManager;
24 
25  protected function setUp()
26  {
27  $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
28  $this->model = $this->objectManager->getObject(\Magento\Framework\Message\Collection::class);
29  }
30 
35  public function testAddMessage()
36  {
37  $messages = [
38  $this->objectManager->getObject(\Magento\Framework\Message\Error::class),
39  $this->objectManager->getObject(\Magento\Framework\Message\Error::class),
40  $this->objectManager->getObject(\Magento\Framework\Message\Error::class),
41  ];
42 
43  foreach ($messages as $message) {
44  $this->model->addMessage($message);
45  }
46 
47  $this->assertEquals($messages, $this->model->getItemsByType(MessageInterface::TYPE_ERROR));
48  $this->assertEmpty($this->model->getItemsByType(MessageInterface::TYPE_SUCCESS));
49  $this->assertEmpty($this->model->getItemsByType(MessageInterface::TYPE_NOTICE));
50  $this->assertEmpty($this->model->getItemsByType(MessageInterface::TYPE_WARNING));
51  }
52 
58  public function testGetItems()
59  {
60  $messages = [
61  $this->objectManager->getObject(\Magento\Framework\Message\Error::class),
62  $this->objectManager->getObject(\Magento\Framework\Message\Notice::class),
63  $this->objectManager->getObject(\Magento\Framework\Message\Notice::class),
64  $this->objectManager->getObject(\Magento\Framework\Message\Warning::class),
65  $this->objectManager->getObject(\Magento\Framework\Message\Warning::class),
66  $this->objectManager->getObject(\Magento\Framework\Message\Success::class),
67  ];
68 
69  foreach ($messages as $message) {
70  $this->model->addMessage($message);
71  }
72 
73  $this->assertEquals($messages, $this->model->getItems());
74  $this->assertEquals(end($messages), $this->model->getLastAddedMessage());
75  }
76 
83  public function testGetItemsByType()
84  {
85  $messages = [
86  $this->objectManager->getObject(\Magento\Framework\Message\Error::class),
87  $this->objectManager->getObject(\Magento\Framework\Message\Notice::class),
88  $this->objectManager->getObject(\Magento\Framework\Message\Success::class),
89  $this->objectManager->getObject(\Magento\Framework\Message\Notice::class),
90  $this->objectManager->getObject(\Magento\Framework\Message\Success::class),
91  $this->objectManager->getObject(\Magento\Framework\Message\Warning::class),
92  $this->objectManager->getObject(\Magento\Framework\Message\Error::class),
93  ];
94 
95  $messageTypes = [
100  ];
101 
102  foreach ($messages as $message) {
103  $this->model->addMessage($message);
104  }
105 
106  $this->assertEquals(count($messages), $this->model->getCount());
107 
108  foreach ($messageTypes as $type => $count) {
109  $messagesByType = $this->model->getItemsByType($type);
110  $this->assertEquals($count, $this->model->getCountByType($type));
111  $this->assertEquals($count, count($messagesByType));
112 
114  foreach ($messagesByType as $message) {
115  $this->assertEquals($type, $message->getType());
116  }
117  }
118  }
119 
124  public function testGetErrors()
125  {
126  $messages = [
127  $this->objectManager->getObject(\Magento\Framework\Message\Error::class),
128  $this->objectManager->getObject(\Magento\Framework\Message\Notice::class),
129  $this->objectManager->getObject(\Magento\Framework\Message\Error::class),
130  $this->objectManager->getObject(\Magento\Framework\Message\Error::class),
131  $this->objectManager->getObject(\Magento\Framework\Message\Warning::class),
132  $this->objectManager->getObject(\Magento\Framework\Message\Error::class),
133  ];
134 
135  foreach ($messages as $message) {
136  $this->model->addMessage($message);
137  }
138 
139  $this->assertEquals($this->model->getItemsByType(MessageInterface::TYPE_ERROR), $this->model->getErrors());
140  $this->assertEquals(4, count($this->model->getErrors()));
141  }
142 
147  public function testGetMessageByIdentifier()
148  {
149  $messages = [
150  $this->objectManager->getObject(\Magento\Framework\Message\Error::class)->setIdentifier('error_id'),
151  $this->objectManager->getObject(\Magento\Framework\Message\Notice::class)->setIdentifier('notice_id'),
152  $this->objectManager->getObject(\Magento\Framework\Message\Warning::class)->setIdentifier('warning_id'),
153  ];
154 
155  foreach ($messages as $message) {
156  $this->model->addMessage($message);
157  }
158 
159  $message = $this->model->getMessageByIdentifier('notice_id');
160  $this->assertEquals(MessageInterface::TYPE_NOTICE, $message->getType());
161  $this->assertEquals('notice_id', $message->getIdentifier());
162 
163  $this->assertEquals(count($messages), $this->model->getCount());
164  $this->model->deleteMessageByIdentifier('notice_id');
165  $this->assertEquals(count($messages) - 1, $this->model->getCount());
166 
167  $this->assertEmpty($this->model->getMessageByIdentifier('notice_id'));
168  }
169 
173  public function testClear()
174  {
175  $messages = [
176  $this->objectManager->getObject(\Magento\Framework\Message\Error::class),
177  $this->objectManager->getObject(\Magento\Framework\Message\Warning::class),
178  $this->objectManager->getObject(\Magento\Framework\Message\Notice::class),
179  $this->objectManager->getObject(\Magento\Framework\Message\Success::class),
180  ];
181 
182  foreach ($messages as $message) {
183  $this->model->addMessage($message);
184  }
185 
186  $this->assertEquals(count($messages), $this->model->getCount());
187  $this->model->clear();
188  $this->assertEmpty($this->model->getCount());
189  }
190 
194  public function testClearWithSticky()
195  {
196  $messages = [
197  $this->objectManager->getObject(\Magento\Framework\Message\Error::class),
198  $this->objectManager->getObject(\Magento\Framework\Message\Warning::class),
199  $this->objectManager->getObject(\Magento\Framework\Message\Notice::class)->setIsSticky(true),
200  $this->objectManager->getObject(\Magento\Framework\Message\Success::class),
201  ];
202 
203  foreach ($messages as $message) {
204  $this->model->addMessage($message);
205  }
206 
207  $this->assertEquals(count($messages), $this->model->getCount());
208  $this->model->clear();
209  $this->assertEquals(1, $this->model->getCount());
210  }
211 }
$count
Definition: recent.phtml:13
$message
$type
Definition: item.phtml:13