b374k
m1n1 1.01
Apache/2.4.41 (Ubuntu)
Linux vmi616275.contaboserver.net 5.4.0-84-generic #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 x86_64
uid=33(www-data) gid=33(www-data) groups=33(www-data)
server ip : 62.171.164.128 | your ip : 127.0.0.1
safemode OFF
 >  / home / dev2.destoffenstraat.com / vendor / magento / framework / Stdlib / Test / Unit / DateTime /
Filename/home/dev2.destoffenstraat.com/vendor/magento/framework/Stdlib/Test/Unit/DateTime/DateTimeTest.php
Size3.19 kb
Permissionrw-r--r--
Ownerroot : root
Create time17-Aug-2025 10:26
Last modified07-Jan-2021 21:08
Last accessed23-Aug-2025 03:56
Actionsedit | rename | delete | download (gzip)
Viewtext | code | image
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);

namespace Magento\Framework\Stdlib\Test\Unit\DateTime;

use DateTimeImmutable;
use DateTimeInterface;
use Exception;
use Magento\Framework\Stdlib\DateTime\DateTime;
use Magento\Framework\Stdlib\DateTime\TimezoneInterface;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;

/**
* Tests for @see DateTime
*/
class DateTimeTest extends TestCase
{
/**
* @var string
*/
private $testDate = '2015-04-02 21:03:00';

/**
* @param int|string|DateTimeInterface $input
* @throws Exception
*
* @dataProvider dateTimeInputDataProvider
*/
public function testGmtTimestamp($input)
{
/** @var TimezoneInterface|MockObject $timezone */
$timezone = $this->getMockBuilder(TimezoneInterface::class)
->getMock();
$timezone->method('date')->willReturn(new \DateTime($this->testDate));

$expected = gmdate('U', strtotime($this->testDate));
$this->assertEquals($expected, (new DateTime($timezone))->gmtTimestamp($input));
}

/**
* @param int|string|DateTimeInterface $input
* @throws Exception
*
* @dataProvider dateTimeInputDataProvider
*/
public function testTimestamp($input)
{
/** @var TimezoneInterface|MockObject $timezone */
$timezone = $this->getMockBuilder(TimezoneInterface::class)
->getMock();
$timezone->method('date')->willReturn(new \DateTime($this->testDate));

$expected = gmdate('U', strtotime($this->testDate));
$this->assertEquals($expected, (new DateTime($timezone))->timestamp($input));
}

public function testGtmOffset()
{
/** @var TimezoneInterface|MockObject $timezone */
$timezone = $this->getMockBuilder(TimezoneInterface::class)
->getMock();
$timezone->method('getConfigTimezone')->willReturn('Europe/Amsterdam');

/** @var DateTime|MockObject $dateTime */
$dateTime = $this->getMockBuilder(DateTime::class)
->setConstructorArgs([$timezone])
->setMethods(null)
->getMock();

$this->assertEquals(
$this->getExpectedGtmOffset($timezone->getConfigTimezone()),
$dateTime->getGmtOffset()
);
}

/**
* Returns expected offset according to Daylight Saving Time in timezone
*
* @param string $timezoneIdentifier
* @return int
*/
private function getExpectedGtmOffset(string $timezoneIdentifier): int
{
$timeZoneToReturn = date_default_timezone_get();
date_default_timezone_set($timezoneIdentifier);
$expectedOffset = (date('I', time()) + 1) * 3600;
date_default_timezone_set($timeZoneToReturn);

return (int) $expectedOffset;
}

/**
* Data provider
*
* @return array
* @throws Exception
*/
public function dateTimeInputDataProvider()
{
return [
'string' => [$this->testDate],
'int' => [strtotime($this->testDate)],
DateTimeInterface::class => [new DateTimeImmutable($this->testDate)],
];
}
}