Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
DateTimeFormatterTest.php
Go to the documentation of this file.
1 <?php
8 
10 
11 class DateTimeFormatterTest extends \PHPUnit\Framework\TestCase
12 {
16  protected $objectManager;
17 
22 
23  protected function setUp()
24  {
25  if (defined('HHVM_VERSION')) {
26  $this->markTestSkipped('Skip this test for hhvm due to problem with \IntlDateFormatter::formatObject');
27  }
28  $this->objectManager = new ObjectManager($this);
29  $this->localeResolverMock = $this->getMockBuilder(\Magento\Framework\Locale\ResolverInterface::class)
30  ->disableOriginalConstructor()
31  ->getMock();
32  $this->localeResolverMock->expects($this->any())
33  ->method('getLocale')
34  ->willReturn('fr-FR');
35  }
36 
44  public function testFormatObject($object, $format = null, $locale = null, $useIntlFormatObject = false)
45  {
46  $dateTimeFormatter = $this->objectManager->getObject(
47  \Magento\Framework\Stdlib\DateTime\DateTimeFormatter::class,
48  [
49  'useIntlFormatObject' => $useIntlFormatObject,
50  ]
51  );
52 
53  $reflection = new \ReflectionClass(get_class($dateTimeFormatter));
54  $reflectionProperty = $reflection->getProperty('localeResolver');
55  $reflectionProperty->setAccessible(true);
56  $reflectionProperty->setValue($dateTimeFormatter, $this->localeResolverMock);
57 
58  $this->assertEquals(
59  \IntlDateFormatter::formatObject(
60  $object,
61  $format,
62  (null === $locale) ? 'fr-FR' : $locale
63  ),
64  $dateTimeFormatter->formatObject($object, $format, $locale)
65  );
66  }
67 
71  public function dataProviderFormatObject()
72  {
73  $date = new \DateTime('2013-06-06 17:05:06 Europe/Dublin');
74  $calendar = \IntlCalendar::fromDateTime('2013-06-06 17:05:06 Europe/Dublin');
75 
76  return [
77  [$date, null, null],
78  [$date, \IntlDateFormatter::FULL, null],
79  [$date, null, 'en-US'],
80  [$date, [\IntlDateFormatter::SHORT, \IntlDateFormatter::FULL], 'en-US'],
81  [$date, 'E y-MM-d HH,mm,ss.SSS v', 'en-US'],
82  [$date, [\IntlDateFormatter::NONE, \IntlDateFormatter::FULL], null],
83  [$date, "d 'of' MMMM y", 'en_US'],
84  [new \DateTime('2013-09-09 09:09:09 Europe/Madrid'), \IntlDateFormatter::FULL, 'es_ES'],
85  [new \DateTime('2013-09-09 09:09:09 -01:00'), null, null],
86  [new \DateTime('2013-09-09 09:09:09 +01:00'), null, null],
87  [$calendar, null, null],
88  [$calendar, \IntlDateFormatter::FULL, null],
89  [$calendar, null, 'en-US'],
90  [$calendar, [\IntlDateFormatter::SHORT, \IntlDateFormatter::FULL], 'en-US'],
91  [$calendar, 'E y-MM-d HH,mm,ss.SSS v', 'en-US'],
92  [$calendar, [\IntlDateFormatter::NONE, \IntlDateFormatter::FULL], null],
93  [$calendar, "d 'of' MMMM y", 'en_US'],
94  [\IntlCalendar::fromDateTime('2013-09-09 09:09:09 Europe/Madrid'), \IntlDateFormatter::FULL, 'es_ES'],
95  [\IntlCalendar::fromDateTime('2013-09-09 09:09:09 -01:00'), null, null],
96  [\IntlCalendar::fromDateTime('2013-09-09 09:09:09 +01:00'), null, null],
97  [$date, null, null, true],
98  [$date, \IntlDateFormatter::FULL, null, true],
99  [$date, null, 'en-US', true],
100  [$date, [\IntlDateFormatter::SHORT, \IntlDateFormatter::FULL], 'en-US', true],
101  [$date, 'E y-MM-d HH,mm,ss.SSS v', 'en-US', true],
102  [$date, [\IntlDateFormatter::NONE, \IntlDateFormatter::FULL], null, true],
103  [$date, "d 'of' MMMM y", 'en_US', true],
104  [new \DateTime('2013-09-09 09:09:09 Europe/Madrid'), \IntlDateFormatter::FULL, 'es_ES', true],
105  [new \DateTime('2013-09-09 09:09:09 -01:00'), null, null, true],
106  [new \DateTime('2013-09-09 09:09:09 +01:00'), null, null, true],
107  [$calendar, null, null, true],
108  [$calendar, \IntlDateFormatter::FULL, null, true],
109  [$calendar, null, 'en-US', true],
110  [$calendar, [\IntlDateFormatter::SHORT, \IntlDateFormatter::FULL], 'en-US', true],
111  [$calendar, 'E y-MM-d HH,mm,ss.SSS v', 'en-US', true],
112  [$calendar, [\IntlDateFormatter::NONE, \IntlDateFormatter::FULL], null, true],
113  [$calendar, "d 'of' MMMM y", 'en_US', true],
114  [\IntlCalendar::fromDateTime('2013-09-09 09:09:09 Europe/Madrid'), \IntlDateFormatter::FULL, 'es_ES', true],
115  [\IntlCalendar::fromDateTime('2013-09-09 09:09:09 -01:00'), null, null, true],
116  [\IntlCalendar::fromDateTime('2013-09-09 09:09:09 +01:00'), null, null, true],
117  ];
118  }
119 
125  {
126  $dateTimeFormatter = $this->objectManager->getObject(
127  \Magento\Framework\Stdlib\DateTime\DateTimeFormatter::class,
128  [
129  'useIntlFormatObject' => false,
130  ]
131  );
132 
133  $reflection = new \ReflectionClass(get_class($dateTimeFormatter));
134  $reflectionProperty = $reflection->getProperty('localeResolver');
135  $reflectionProperty->setAccessible(true);
136  $reflectionProperty->setValue($dateTimeFormatter, $this->localeResolverMock);
137  $dateTimeFormatter->formatObject(new \DateTime('2013-06-06 17:05:06 Europe/Dublin'), new \StdClass());
138  }
139 }
$format
Definition: list.phtml:12
testFormatObject($object, $format=null, $locale=null, $useIntlFormatObject=false)