diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f0f602..2c81900 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,5 @@ # NEXT +- Replaced native time reads in ProductProvider with an injected clock (Psr\Clock\ClockInterface) - #15568 - Switched to PHP Symfony service definitions # 2.1.0 diff --git a/src/DataProvider/ProductProvider.php b/src/DataProvider/ProductProvider.php index 3d70457..d57b46b 100644 --- a/src/DataProvider/ProductProvider.php +++ b/src/DataProvider/ProductProvider.php @@ -10,12 +10,14 @@ namespace Swag\PlatformDemoData\DataProvider; use Doctrine\DBAL\Connection; +use Psr\Clock\ClockInterface; use Shopware\Core\Content\Product\Aggregate\ProductVisibility\ProductVisibilityDefinition; use Shopware\Core\Defaults; use Shopware\Core\Framework\Log\Package; use Shopware\Core\Framework\Uuid\Uuid; use Swag\PlatformDemoData\Helper\ProductReviewHelper; use Swag\PlatformDemoData\Helper\TranslationHelper; +use Symfony\Component\Clock\NativeClock; #[Package('fundamentals@after-sales')] class ProductProvider extends DemoDataProvider @@ -28,9 +30,12 @@ class ProductProvider extends DemoDataProvider private ProductReviewHelper $productReviewHelper; - public function __construct(Connection $connection) + private ClockInterface $clock; + + public function __construct(Connection $connection, ?ClockInterface $clock = null) { $this->connection = $connection; + $this->clock = $clock ?? new NativeClock(); $this->translationHelper = new TranslationHelper($connection); $this->productReviewHelper = new ProductReviewHelper(); } @@ -77,7 +82,7 @@ public function getPayload(): array 'width' => 590.0, 'height' => 600.0, 'length' => 840.0, - 'releaseDate' => new \DateTimeImmutable(), + 'releaseDate' => $this->clock->now(), 'displayInListing' => true, 'name' => $this->translationHelper->adjustTranslations([ 'de-DE' => 'Hauptprodukt mit erweiterten Preisen', @@ -159,7 +164,7 @@ public function getPayload(): array 'referenceUnit' => 250.0, 'shippingFree' => false, 'purchasePrice' => 1.99, - 'releaseDate' => new \DateTimeImmutable(), + 'releaseDate' => $this->clock->now(), 'displayInListing' => true, 'name' => $this->translationHelper->adjustTranslations([ 'de-DE' => 'Hauptprodukt mit Bewertungen', @@ -226,7 +231,7 @@ public function getPayload(): array 'shippingFree' => false, 'purchasePrice' => 495.95, 'weight' => 0.17, - 'releaseDate' => new \DateTimeImmutable(), + 'releaseDate' => $this->clock->now(), 'displayInListing' => true, 'name' => $this->translationHelper->adjustTranslations([ 'de-DE' => 'Hauptartikel', @@ -299,7 +304,7 @@ public function getPayload(): array 'shippingFree' => true, 'purchasePrice' => 20, 'weight' => 0.15, - 'releaseDate' => new \DateTimeImmutable(), + 'releaseDate' => $this->clock->now(), 'displayInListing' => true, 'name' => $this->translationHelper->adjustTranslations([ 'de-DE' => 'Hauptprodukt, versandkostenfrei mit Hervorhebung', @@ -362,7 +367,7 @@ public function getPayload(): array 'shippingFree' => true, 'purchasePrice' => 19.99, 'weight' => 0.5, - 'releaseDate' => new \DateTimeImmutable(), + 'releaseDate' => $this->clock->now(), 'displayInListing' => true, 'name' => $this->translationHelper->adjustTranslations([ 'de-DE' => 'Variantenprodukt', @@ -521,7 +526,7 @@ public function getPayload(): array 'referenceUnit' => 1.0, 'shippingFree' => true, 'purchasePrice' => 19.99, - 'releaseDate' => new \DateTimeImmutable(), + 'releaseDate' => $this->clock->now(), 'displayInListing' => true, 'name' => $this->translationHelper->adjustTranslations([ 'de-DE' => 'Hauptprodukt mit Eigenschaften', diff --git a/src/Resources/config/services.php b/src/Resources/config/services.php index 53bdc24..b54ae64 100644 --- a/src/Resources/config/services.php +++ b/src/Resources/config/services.php @@ -3,6 +3,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; use Doctrine\DBAL\Connection; +use Psr\Clock\ClockInterface; use Shopware\Core\Content\Media\File\FileSaver; use Shopware\Core\Framework\Api\Controller\SyncController; use Swag\PlatformDemoData\DataProvider\CategoryProvider; @@ -60,7 +61,10 @@ ->tag('swag.demo_data.data_provider', ['priority' => 500]); $services->set(ProductProvider::class) - ->args([service(Connection::class)]) + ->args([ + service(Connection::class), + service(ClockInterface::class), + ]) ->tag('swag.demo_data.data_provider', ['priority' => 400]); $services->set(ShippingMethodProvider::class)