Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
NotificationTest.php
Go to the documentation of this file.
1 <?php
11 
12 class NotificationTest extends \PHPUnit\Framework\TestCase
13 {
14  public function testRender()
15  {
16  $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
17 
18  $testCacheValue = '1433259723';
19  $testDatetime = (new \DateTime(null, new \DateTimeZone('UTC')))->setTimestamp($testCacheValue);
20 
22  $dateTimeFormatter = $objectManager->getObject(\Magento\Framework\Stdlib\DateTime\DateTimeFormatter::class);
23  $localeResolver = $objectManager->getObject(\Magento\Framework\Locale\Resolver::class);
24 
25  $reflection = new \ReflectionClass(\Magento\Framework\Stdlib\DateTime\DateTimeFormatter::class);
26  $reflectionProperty = $reflection->getProperty('localeResolver');
27  $reflectionProperty->setAccessible(true);
28  $reflectionProperty->setValue($dateTimeFormatter, $localeResolver);
29 
30  $formattedDate = $dateTimeFormatter->formatObject($testDatetime);
31 
32  $htmlId = 'test_HTML_id';
33  $label = 'test_label';
34 
35  $localeDateMock = $this->getMockBuilder(\Magento\Framework\Stdlib\DateTime\TimezoneInterface::class)
36  ->disableOriginalConstructor()
37  ->getMock();
38  $localeDateMock->expects($this->any())->method('date')->willReturn($testDatetime);
39  $localeDateMock->expects($this->any())->method('getDateTimeFormat')->willReturn(null);
40 
41  $elementMock = $this->getMockBuilder(\Magento\Framework\Data\Form\Element\AbstractElement::class)
42  ->disableOriginalConstructor()
43  ->setMethods(['getHtmlId', 'getLabel'])
44  ->getMock();
45  $elementMock->expects($this->any())->method('getHtmlId')->willReturn($htmlId);
46  $elementMock->expects($this->any())->method('getLabel')->willReturn($label);
47 
48  $dateTimeFormatter = $this->createMock(\Magento\Framework\Stdlib\DateTime\DateTimeFormatterInterface::class);
49  $dateTimeFormatter->expects($this->once())
50  ->method('formatObject')
51  ->with($testDatetime)
52  ->willReturn($formattedDate);
53 
55  $notification = $objectManager->getObject(
56  \Magento\Config\Block\System\Config\Form\Field\Notification::class,
57  [
58  'localeDate' => $localeDateMock,
59  'dateTimeFormatter' => $dateTimeFormatter,
60  ]
61  );
62 
63  $html = $notification->render($elementMock);
64 
65  $this->assertEquals(
66  '<tr id="row_' . $htmlId . '">' .
67  '<td class="label">' .
68  '<label for="' . $htmlId . '"><span>' . $label . '</span></label>' .
69  '</td>' .
70  '<td class="value">' .
71  $formattedDate .
72  '</td>' .
73  '<td class=""></td>' .
74  '</tr>',
75  $html
76  );
77  }
78 }
$objectManager
Definition: bootstrap.php:17
$label
Definition: details.phtml:21