152 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			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']);
 | 
						|
    }
 | 
						|
}
 |