Spaces:
No application file
No application file
| declare(strict_types=1); | |
| namespace Mautic\IntegrationsBundle\Tests\Unit\Sync\Helper; | |
| use Mautic\IntegrationsBundle\Sync\Helper\SyncDateHelper; | |
| use PHPUnit\Framework\Assert; | |
| use PHPUnit\Framework\TestCase; | |
| class SyncDateHelperTest extends TestCase | |
| { | |
| /** | |
| * @var SyncDateHelper|\PHPUnit\Framework\MockObject\MockObject | |
| */ | |
| private \PHPUnit\Framework\MockObject\MockObject $syncDateHelper; | |
| protected function setUp(): void | |
| { | |
| $this->syncDateHelper = $this->getMockBuilder(SyncDateHelper::class) | |
| ->disableOriginalConstructor() | |
| ->onlyMethods(['getLastSyncDateForObject']) | |
| ->getMock(); | |
| } | |
| public function testSpecifiedFromDateTimeIsReturned(): void | |
| { | |
| $syncFromDateTime = new \DateTimeImmutable('2018-10-08 00:00:00'); | |
| $this->syncDateHelper->setSyncDateTimes($syncFromDateTime); | |
| Assert::assertEquals($syncFromDateTime, $this->syncDateHelper->getSyncFromDateTime('Test', 'Object')); | |
| } | |
| public function testLastSyncDateForIntegrationSyncObjectIsReturned(): void | |
| { | |
| $objectLastSyncDate = new \DateTimeImmutable('2018-10-08 00:00:00'); | |
| $this->syncDateHelper->method('getLastSyncDateForObject') | |
| ->willReturn($objectLastSyncDate); | |
| Assert::assertEquals($objectLastSyncDate, $this->syncDateHelper->getSyncFromDateTime('Test', 'Object')); | |
| } | |
| public function testSyncToDateTimeIsReturnedIfSpecified(): void | |
| { | |
| $syncToDateTime = new \DateTimeImmutable('2018-10-08 00:00:00'); | |
| $this->syncDateHelper->setSyncDateTimes(null, $syncToDateTime); | |
| Assert::assertEquals($syncToDateTime, $this->syncDateHelper->getSyncToDateTime()); | |
| } | |
| public function testSyncDateTimeIsReturnedForSyncToDateTimeIfNotSpecified(): void | |
| { | |
| $this->syncDateHelper->setSyncDateTimes(); | |
| Assert::assertInstanceOf(\DateTimeImmutable::class, $this->syncDateHelper->getSyncToDateTime()); | |
| } | |
| public function testThatSetInternalSyncStartDateTimeMethodUsesSyncToDateValueIfItIsEarlier(): void | |
| { | |
| // Although $fiveSecondsBefore value is expected to be in UTC timezone let's use another timezone | |
| // to check how the method handles such cases. | |
| $fiveSecondsBefore = new \DateTime('-5 seconds', new \DateTimeZone('Etc/GMT-5')); | |
| $this->syncDateHelper->setSyncDateTimes(null, $fiveSecondsBefore); | |
| $this->syncDateHelper->setInternalSyncStartDateTime(); | |
| $internalSyncStartDateTime = $this->syncDateHelper->getInternalSyncStartDateTime(); | |
| Assert::assertSame($fiveSecondsBefore->getTimestamp(), $internalSyncStartDateTime->getTimestamp()); | |
| } | |
| public function testThatSetInternalSyncStartDateTimeMethodUsesNowIfItIsEarlier(): void | |
| { | |
| // Although $fiveSecondsAfter value is expected to be in UTC timezone let's use another timezone | |
| // to check how the method handles such cases. | |
| $fiveSecondsAfter = new \DateTime('+5 seconds', new \DateTimeZone('Etc/GMT+5')); | |
| $this->syncDateHelper->setSyncDateTimes(null, $fiveSecondsAfter); | |
| $this->syncDateHelper->setInternalSyncStartDateTime(); | |
| $now = new \DateTime('now', new \DateTimeZone('UTC')); | |
| $internalSyncStartDateTime = $this->syncDateHelper->getInternalSyncStartDateTime(); | |
| $difference = $internalSyncStartDateTime->getTimestamp() - $now->getTimestamp(); | |
| // Add a 1 second buffer in case there is some delay | |
| Assert::assertTrue((1 >= $difference) && (-1 < $difference)); | |
| } | |
| } | |