magento2-docker/dev/tests/integration/testsuite/Magento/MediaGallery/Model/AssetEndToEndTest.php

152 lines
4.5 KiB
PHP
Executable File

<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Magento\MediaGallery\Model;
use Magento\MediaGalleryApi\Api\Data\KeywordInterfaceFactory;
use Magento\MediaGalleryApi\Api\Data\AssetInterfaceFactory;
use Magento\MediaGalleryApi\Api\Data\AssetKeywordsInterfaceFactory;
use Magento\MediaGalleryApi\Api\Data\AssetKeywordsInterface;
use Magento\MediaGalleryApi\Api\GetAssetsByIdsInterface;
use Magento\MediaGalleryApi\Api\GetAssetsByPathsInterface;
use Magento\MediaGalleryApi\Api\GetAssetsKeywordsInterface;
use Magento\MediaGalleryApi\Api\SaveAssetsInterface;
use Magento\MediaGalleryApi\Api\SaveAssetsKeywordsInterface;
use Magento\MediaGalleryApi\Api\DeleteAssetsByPathsInterface;
use Magento\TestFramework\Helper\Bootstrap;
use PHPUnit\Framework\TestCase;
/**
* End to end test for working with assets and keywords
*/
class AssetEndToEndTest extends TestCase
{
/**
* @var GetAssetsKeywordsInterface
*/
private $saveAssetsKeywords;
/**
* @var GetAssetsKeywordsInterface
*/
private $getAssetsKeywords;
/**
* @var AssetKeywordsInterfaceFactory
*/
private $assetsKeywordsFactory;
/**
* @var AssetInterfaceFactory
*/
private $assetFactory;
/**
* @var KeywordInterfaceFactory
*/
private $keywordFactory;
/**
* @var SaveAssetsInterface
*/
private $saveAssets;
/**
* @var GetAssetsByIdsInterface
*/
private $getAssetsByIds;
/**
* @var GetAssetsByPathsInterface
*/
private $getAssetsByPath;
/**
* @var DeleteAssetsByPathsInterface
*/
private $deleteAssetsByPaths;
/**
* @inheritdoc
*/
protected function setUp(): void
{
$this->saveAssetsKeywords = Bootstrap::getObjectManager()->get(SaveAssetsKeywordsInterface::class);
$this->getAssetsKeywords = Bootstrap::getObjectManager()->get(GetAssetsKeywordsInterface::class);
$this->assetsKeywordsFactory = Bootstrap::getObjectManager()->get(AssetKeywordsInterfaceFactory::class);
$this->assetFactory = Bootstrap::getObjectManager()->get(AssetInterfaceFactory::class);
$this->keywordFactory = Bootstrap::getObjectManager()->get(KeywordInterfaceFactory::class);
$this->saveAssets = Bootstrap::getObjectManager()->get(SaveAssetsInterface::class);
$this->getAssetsByIds = Bootstrap::getObjectManager()->get(GetAssetsByIdsInterface::class);
$this->getAssetsByPath = Bootstrap::getObjectManager()->get(GetAssetsByPathsInterface::class);
$this->deleteAssetsByPaths = Bootstrap::getObjectManager()->get(DeleteAssetsByPathsInterface::class);
}
/**
* Testing assets keywords save and get
*/
public function testExecute(): void
{
$keyword1 = $this->keywordFactory->create(
[
'keyword' => 'pear'
]
);
$keyword2 = $this->keywordFactory->create(
[
'keyword' => 'plum'
]
);
$asset = $this->assetFactory->create(
[
'path' => 'fruit.jpg',
'title' => 'Img',
'source' => 'Local',
'contentType' => 'image/jpeg',
'width' => 420,
'height' => 240,
'size' => 12877
]
);
$this->saveAssets->execute([$asset]);
$loadedAssets = $this->getAssetsByPath->execute([$asset->getPath()]);
$loadedAsset = $loadedAssets[0];
$this->assertCount(1, $loadedAssets);
$assetKeywords = $this->assetsKeywordsFactory->create(
[
'assetId' => $loadedAsset->getId(),
'keywords' => [
$keyword1,
$keyword2
]
]
);
$this->saveAssetsKeywords->execute([$assetKeywords]);
$loadedAssetKeywords = $this->getAssetsKeywords->execute([$loadedAsset->getId()]);
$this->assertCount(1, $loadedAssetKeywords);
/** @var AssetKeywordsInterface $loadedAssetKeywords1 */
$loadedAssetKeywords1 = current($loadedAssetKeywords);
$loadedKeywords = $loadedAssetKeywords1->getKeywords();
$this->assertCount(2, $loadedKeywords);
foreach ($loadedKeywords as $theKeyword) {
$this->assertTrue(in_array($theKeyword->getKeyword(), ['pear', 'plum']));
}
$this->deleteAssetsByPaths->execute(['fruit.jpg']);
}
}