setLocale($locale); $requestStack = new RequestStack(); $requestStack->push($request); $localeSettings = new LocaleSettings($requestStack, $dateSettings); return new DateExtensions($localeSettings); } public function testGetFilters() { $filters = ['month_name', 'date_short', 'date_time', 'date_format', 'time', 'hour24']; $sut = $this->getSut('de', []); $twigFilters = $sut->getFilters(); $this->assertCount(count($filters), $twigFilters); $i = 0; foreach ($twigFilters as $filter) { $this->assertInstanceOf(TwigFilter::class, $filter); $this->assertEquals($filters[$i++], $filter->getName()); } } /** * @param string $locale * @param \DateTime $date * @param string $result * @dataProvider getDateShortData */ public function testDateShort($locale, \DateTime $date, $result) { $sut = $this->getSut($locale, [ 'de' => ['date' => 'd.m.Y'], 'en' => ['date' => 'Y-m-d'], 'ru' => ['date' => 'd.m.Y'], ]); $this->assertEquals($result, $sut->dateShort($date)); } public function getDateShortData() { return [ ['en', new \DateTime('7 January 2010'), '2010-01-07'], ['en', new \DateTime('2016-06-23'), '2016-06-23'], ['de', new \DateTime('1980-12-14'), '14.12.1980'], ['ru', new \DateTime('1980-12-14'), '14.12.1980'], ]; } /** * @param string $locale * @param \DateTime $date * @param string $result * @dataProvider getDateTimeData */ public function testDateTime($locale, \DateTime $date, $result) { $sut = $this->getSut($locale, [ 'de' => ['date_time' => 'd.m.Y H:i:s'], 'en' => ['date_time' => 'Y-m-d h:m A'], ]); $this->assertEquals($result, $sut->dateTime($date)); } public function getDateTimeData() { return [ ['en', new \DateTime('7 January 2010'), '2010-01-07 12:01 AM'], ['de', (new \DateTime('1980-12-14'))->setTime(13, 27, 55), '14.12.1980 13:27:55'], ]; } /** * @param \DateTime $date * @param string $result * @dataProvider getMonthData */ public function testMonthName(\DateTime $date, $result) { $sut = $this->getSut('en', []); $this->assertEquals($result, $sut->monthName($date)); } public function getMonthData() { return [ [new \DateTime('January 2016'), 'month.1'], [new \DateTime('2016-06-23'), 'month.6'], [new \DateTime('2016-12-23'), 'month.12'], ]; } public function testDateFormat() { $date = new \DateTime('7 January 2010 17:43:21', new \DateTimeZone('Europe/Berlin')); $sut = $this->getSut('en', []); $this->assertEquals('2010-01-07T17:43:21+01:00', $sut->dateFormat($date, 'c')); } public function testTime() { $time = new \DateTime('2016-06-23'); $time->setTime(17, 53, 23); $sut = $this->getSut('en', ['en' => ['time' => 'H:i']]); $this->assertEquals('17:53', $sut->time($time)); } public function testHour24() { $sut = $this->getSut('en', [ 'en' => ['24_hours' => false], ]); $this->assertEquals('bar', $sut->hour24('foo', 'bar')); $sut = $this->getSut('de', [ 'de' => ['24_hours' => true], ]); $this->assertEquals('foo', $sut->hour24('foo', 'bar')); } }