mirror of
https://github.com/werkraum-media/events.git
synced 2024-11-22 02:56:09 +01:00
Do not break tests once a certain date is passed
The code used native date functions, this made tests not robust. We switch to TYPO3 API to fetch the current date and time. Test is adjusted to define the date and time to verify code works as expected.
This commit is contained in:
parent
3d98475a6c
commit
6b6ae5b20c
3 changed files with 86 additions and 11 deletions
|
@ -2,10 +2,22 @@
|
|||
|
||||
namespace Wrm\Events\Service\DestinationDataImportService;
|
||||
|
||||
use TYPO3\CMS\Core\Context\Context;
|
||||
use Wrm\Events\Domain\Model\Date;
|
||||
|
||||
class DatesFactory
|
||||
{
|
||||
/**
|
||||
* @var Context
|
||||
*/
|
||||
private $context;
|
||||
|
||||
public function __construct(
|
||||
Context $context
|
||||
) {
|
||||
$this->context = $context;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Generator<Date>
|
||||
*/
|
||||
|
@ -178,6 +190,12 @@ class DatesFactory
|
|||
|
||||
private function getToday(): int
|
||||
{
|
||||
return (int) date('U', strtotime('midnight'));
|
||||
$today = $this->context->getPropertyFromAspect('date', 'full', new \DateTimeImmutable());
|
||||
if (!$today instanceof \DateTimeImmutable) {
|
||||
$today = new \DateTimeImmutable();
|
||||
}
|
||||
|
||||
$midnight = $today->modify('midnight');
|
||||
return (int) $midnight->format('U');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
namespace Wrm\Events\Tests\Functional\Import\DestinationDataTest;
|
||||
|
||||
use GuzzleHttp\Psr7\Response;
|
||||
use TYPO3\CMS\Core\Context\Context;
|
||||
use TYPO3\CMS\Core\Context\DateTimeAspect;
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
|
||||
class ImportDoesntEndUpInEndlessDateCreationTest extends AbstractTest
|
||||
|
@ -16,6 +18,7 @@ class ImportDoesntEndUpInEndlessDateCreationTest extends AbstractTest
|
|||
$fileImportPath = $this->getInstancePath() . '/fileadmin/' . $fileImportPathConfiguration;
|
||||
GeneralUtility::mkdir_deep($fileImportPath);
|
||||
|
||||
$this->setDateAspect(new \DateTimeImmutable('2022-07-01'));
|
||||
$this->importDataSet('EXT:events/Tests/Functional/Import/DestinationDataTest/Fixtures/SingleRegion.xml');
|
||||
$this->importDataSet('EXT:events/Tests/Functional/Import/DestinationDataTest/Fixtures/SingleCategory.xml');
|
||||
$this->setUpConfiguration([
|
||||
|
@ -49,4 +52,15 @@ class ImportDoesntEndUpInEndlessDateCreationTest extends AbstractTest
|
|||
'Logfile was not empty.'
|
||||
);
|
||||
}
|
||||
|
||||
private function setDateAspect(\DateTimeImmutable $dateTime): void
|
||||
{
|
||||
$context = $this->getContainer()->get(Context::class);
|
||||
if (!$context instanceof Context) {
|
||||
throw new \TypeError('Retrieved context was of unexpected type.', 1638182021);
|
||||
}
|
||||
|
||||
$aspect = new DateTimeAspect($dateTime);
|
||||
$context->setAspect('date', $aspect);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,20 +5,28 @@ declare(strict_types=1);
|
|||
namespace Wrm\Events\Tests\Unit\Service\DestinationDataImportService;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use TYPO3\CMS\Core\Context\Context;
|
||||
use Wrm\Events\Domain\Model\Date;
|
||||
use Wrm\Events\Service\DestinationDataImportService\DatesFactory;
|
||||
use Wrm\Events\Tests\ProphecyTrait;
|
||||
|
||||
/**
|
||||
* @covers \Wrm\Events\Service\DestinationDataImportService\DatesFactory
|
||||
*/
|
||||
class DatesFactoryTest extends TestCase
|
||||
{
|
||||
use ProphecyTrait;
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function canBeCreated(): void
|
||||
{
|
||||
$subject = new DatesFactory();
|
||||
$context = $this->prophesize(Context::class);
|
||||
|
||||
$subject = new DatesFactory(
|
||||
$context->reveal()
|
||||
);
|
||||
|
||||
self::assertInstanceOf(
|
||||
DatesFactory::class,
|
||||
|
@ -32,7 +40,11 @@ class DatesFactoryTest extends TestCase
|
|||
*/
|
||||
public function returnsNoResultOnUnkownInput(array $unkownInput): void
|
||||
{
|
||||
$subject = new DatesFactory();
|
||||
$context = $this->prophesize(Context::class);
|
||||
|
||||
$subject = new DatesFactory(
|
||||
$context->reveal()
|
||||
);
|
||||
|
||||
$result = $subject->createDates($unkownInput, false);
|
||||
|
||||
|
@ -60,7 +72,11 @@ class DatesFactoryTest extends TestCase
|
|||
*/
|
||||
public function returnsSingleNotCanceledDate(): void
|
||||
{
|
||||
$subject = new DatesFactory();
|
||||
$context = $this->prophesize(Context::class);
|
||||
|
||||
$subject = new DatesFactory(
|
||||
$context->reveal()
|
||||
);
|
||||
|
||||
$result = $subject->createDates([[
|
||||
'start' => '2099-06-21T16:00:00+02:00',
|
||||
|
@ -86,7 +102,11 @@ class DatesFactoryTest extends TestCase
|
|||
*/
|
||||
public function returnsSingleCanceledDate(): void
|
||||
{
|
||||
$subject = new DatesFactory();
|
||||
$context = $this->prophesize(Context::class);
|
||||
|
||||
$subject = new DatesFactory(
|
||||
$context->reveal()
|
||||
);
|
||||
|
||||
$result = $subject->createDates([[
|
||||
'start' => '2099-06-21T16:00:00+02:00',
|
||||
|
@ -111,7 +131,11 @@ class DatesFactoryTest extends TestCase
|
|||
*/
|
||||
public function returnsCanceledDatesOnDailyBasis(): void
|
||||
{
|
||||
$subject = new DatesFactory();
|
||||
$context = $this->prophesize(Context::class);
|
||||
|
||||
$subject = new DatesFactory(
|
||||
$context->reveal()
|
||||
);
|
||||
|
||||
$result = $subject->createDates([[
|
||||
'start' => '2099-04-01T16:00:00+02:00',
|
||||
|
@ -142,8 +166,11 @@ class DatesFactoryTest extends TestCase
|
|||
*/
|
||||
public function returnsNotCanceledDatesOnDailyBasis(): void
|
||||
{
|
||||
$context = $this->prophesize(Context::class);
|
||||
|
||||
$subject = new DatesFactory();
|
||||
$subject = new DatesFactory(
|
||||
$context->reveal()
|
||||
);
|
||||
|
||||
$result = $subject->createDates([[
|
||||
'start' => '2099-04-01T16:00:00+02:00',
|
||||
|
@ -174,7 +201,11 @@ class DatesFactoryTest extends TestCase
|
|||
*/
|
||||
public function returnsCanceledDatesOnWeeklyBasis(): void
|
||||
{
|
||||
$subject = new DatesFactory();
|
||||
$context = $this->prophesize(Context::class);
|
||||
|
||||
$subject = new DatesFactory(
|
||||
$context->reveal()
|
||||
);
|
||||
|
||||
$result = $subject->createDates([[
|
||||
'weekdays' => [
|
||||
|
@ -209,7 +240,11 @@ class DatesFactoryTest extends TestCase
|
|||
*/
|
||||
public function returnsNotCanceledDatesOnWeeklyBasis(): void
|
||||
{
|
||||
$subject = new DatesFactory();
|
||||
$context = $this->prophesize(Context::class);
|
||||
|
||||
$subject = new DatesFactory(
|
||||
$context->reveal()
|
||||
);
|
||||
|
||||
$result = $subject->createDates([[
|
||||
'weekdays' => [
|
||||
|
@ -244,7 +279,11 @@ class DatesFactoryTest extends TestCase
|
|||
*/
|
||||
public function returnsCanceledDatesOnMixedIntervals(): void
|
||||
{
|
||||
$subject = new DatesFactory();
|
||||
$context = $this->prophesize(Context::class);
|
||||
|
||||
$subject = new DatesFactory(
|
||||
$context->reveal()
|
||||
);
|
||||
|
||||
$result = $subject->createDates([
|
||||
[
|
||||
|
@ -291,7 +330,11 @@ class DatesFactoryTest extends TestCase
|
|||
*/
|
||||
public function returnsNotCanceledDatesOnMixedIntervals(): void
|
||||
{
|
||||
$subject = new DatesFactory();
|
||||
$context = $this->prophesize(Context::class);
|
||||
|
||||
$subject = new DatesFactory(
|
||||
$context->reveal()
|
||||
);
|
||||
|
||||
$result = $subject->createDates([
|
||||
[
|
||||
|
|
Loading…
Reference in a new issue