mirror of
https://github.com/bdnugget/magento2.git
synced 2026-11-07 17:27:36 +00:00
125 lines
4.1 KiB
PHP
125 lines
4.1 KiB
PHP
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
declare(strict_types=1);
|
|
|
|
namespace Magento\MediaContentSynchronization\Test\Integration\Model;
|
|
|
|
use Magento\Framework\Exception\IntegrationException;
|
|
use Magento\Framework\Exception\LocalizedException;
|
|
use Magento\Framework\MessageQueue\ConsumerFactory;
|
|
use Magento\MediaContentApi\Api\Data\ContentIdentityInterfaceFactory;
|
|
use Magento\MediaContentApi\Api\GetAssetIdsByContentIdentityInterface;
|
|
use Magento\MediaContentApi\Api\GetContentByAssetIdsInterface;
|
|
use Magento\MediaContentSynchronization\Model\Publish;
|
|
use Magento\TestFramework\Helper\Bootstrap;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
/**
|
|
* Test for media content Publisher
|
|
*/
|
|
class PublisherTest extends TestCase
|
|
{
|
|
private const TOPIC_MEDIA_CONTENT_SYNCHRONIZATION = 'media.content.synchronization';
|
|
|
|
/**
|
|
* @var ConsumerFactory
|
|
*/
|
|
private $consumerFactory;
|
|
|
|
/**
|
|
* @var ContentIdentityInterfaceFactory
|
|
*/
|
|
private $contentIdentityFactory;
|
|
|
|
/**
|
|
* @var GetContentByAssetIdsInterface
|
|
*/
|
|
private $getContentIdentities;
|
|
|
|
/**
|
|
* @var GetAssetIdsByContentIdentityInterface
|
|
*/
|
|
private $getAssetIds;
|
|
|
|
/**
|
|
* @var Publish
|
|
*/
|
|
private $publish;
|
|
|
|
protected function setUp(): void
|
|
{
|
|
$this->consumerFactory = Bootstrap::getObjectManager()->get(ConsumerFactory::class);
|
|
$this->contentIdentityFactory = Bootstrap::getObjectManager()->get(ContentIdentityInterfaceFactory::class);
|
|
$this->getContentIdentities = Bootstrap::getObjectManager()->get(GetContentByAssetIdsInterface::class);
|
|
$this->getAssetIds = Bootstrap::getObjectManager()->get(GetAssetIdsByContentIdentityInterface::class);
|
|
$this->publish = Bootstrap::getObjectManager()->get(Publish::class);
|
|
}
|
|
|
|
/**
|
|
* @dataProvider filesProvider
|
|
* @magentoDataFixture Magento/MediaContentCatalog/_files/category_with_asset.php
|
|
* @magentoDataFixture Magento/MediaContentCatalog/_files/product_with_asset.php
|
|
* @magentoDataFixture Magento/MediaContentCms/_files/page_with_asset.php
|
|
* @magentoDataFixture Magento/MediaContentCms/_files/block_with_asset.php
|
|
* @magentoDataFixture Magento/MediaGallery/_files/media_asset.php
|
|
* @param array $contentIdentities
|
|
* @throws IntegrationException
|
|
* @throws LocalizedException
|
|
*/
|
|
public function testExecute(array $contentIdentities): void
|
|
{
|
|
// publish message to the queue
|
|
$this->publish->execute($contentIdentities);
|
|
|
|
// run and process message
|
|
$batchSize = 1;
|
|
$maxNumberOfMessages = 1;
|
|
$consumer = $this->consumerFactory->get(self::TOPIC_MEDIA_CONTENT_SYNCHRONIZATION, $batchSize);
|
|
$consumer->process($maxNumberOfMessages);
|
|
|
|
// verify synchronized media content
|
|
$assetId = 2020;
|
|
$entityIds = [];
|
|
foreach ($contentIdentities as $contentIdentity) {
|
|
$contentIdentityObject = $this->contentIdentityFactory->create($contentIdentity);
|
|
$this->assertEquals([$assetId], $this->getAssetIds->execute($contentIdentityObject));
|
|
$entityIds[] = $contentIdentityObject->getEntityId();
|
|
}
|
|
|
|
$synchronizedContentIdentities = $this->getContentIdentities->execute([$assetId]);
|
|
$this->assertEquals(2, count($synchronizedContentIdentities));
|
|
|
|
foreach ($synchronizedContentIdentities as $syncedContentIdentity) {
|
|
$this->assertContains($syncedContentIdentity->getEntityId(), $entityIds);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Data provider
|
|
*
|
|
* @return array
|
|
*/
|
|
public function filesProvider(): array
|
|
{
|
|
return [
|
|
[
|
|
[
|
|
[
|
|
'entityType' => 'catalog_category',
|
|
'field' => 'description',
|
|
'entityId' => 28767
|
|
],
|
|
[
|
|
'entityType' => 'catalog_product',
|
|
'field' => 'description',
|
|
'entityId' => 1567
|
|
]
|
|
]
|
|
]
|
|
];
|
|
}
|
|
}
|