105 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
<?php
 | 
						|
/**
 | 
						|
 * Copyright © Magento, Inc. All rights reserved.
 | 
						|
 * See COPYING.txt for license details.
 | 
						|
 *
 | 
						|
 */
 | 
						|
declare(strict_types=1);
 | 
						|
 | 
						|
namespace Magento\MediaContent\Model;
 | 
						|
 | 
						|
use Magento\MediaContentApi\Api\ExtractAssetsFromContentInterface;
 | 
						|
use Magento\TestFramework\Helper\Bootstrap;
 | 
						|
use PHPUnit\Framework\TestCase;
 | 
						|
 | 
						|
/**
 | 
						|
 * Test for ExtractAssetsFromContent
 | 
						|
 */
 | 
						|
class ExtractAssetsFromContentTest extends TestCase
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * @var ExtractAssetsFromContentInterface
 | 
						|
     */
 | 
						|
    private $extractAssetsFromContent;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @inheritdoc
 | 
						|
     */
 | 
						|
    protected function setUp(): void
 | 
						|
    {
 | 
						|
        $this->extractAssetsFromContent = Bootstrap::getObjectManager()
 | 
						|
            ->get(ExtractAssetsFromContentInterface::class);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Assing assets to content, retrieve the data, then unassign assets from content
 | 
						|
     *
 | 
						|
     * @magentoDataFixture Magento/MediaGallery/_files/media_asset.php
 | 
						|
     *
 | 
						|
     * @dataProvider contentProvider
 | 
						|
     * @param string $content
 | 
						|
     * @param array $assetIds
 | 
						|
     */
 | 
						|
    public function testExecute(string $content, array $assetIds): void
 | 
						|
    {
 | 
						|
        $assets = $this->extractAssetsFromContent->execute($content);
 | 
						|
 | 
						|
        $extractedAssetIds = [];
 | 
						|
        foreach ($assets as $asset) {
 | 
						|
            $extractedAssetIds[] = $asset->getId();
 | 
						|
        }
 | 
						|
 | 
						|
        sort($assetIds);
 | 
						|
        sort($extractedAssetIds);
 | 
						|
 | 
						|
        $this->assertEquals($assetIds, $extractedAssetIds);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Data provider for testExecute
 | 
						|
     *
 | 
						|
     * @return array
 | 
						|
     */
 | 
						|
    public function contentProvider()
 | 
						|
    {
 | 
						|
        return [
 | 
						|
            'Empty Content' => [
 | 
						|
                '',
 | 
						|
                []
 | 
						|
            ],
 | 
						|
            'No paths in content' => [
 | 
						|
                'content without paths',
 | 
						|
                []
 | 
						|
            ],
 | 
						|
            'Relevant paths in content' => [
 | 
						|
                'content {{media url="testDirectory/path.jpg"}} content',
 | 
						|
                [
 | 
						|
                    2020
 | 
						|
                ]
 | 
						|
            ],
 | 
						|
            'Relevant wysiwyg paths in content' => [
 | 
						|
                'content <img src="https://domain.com/media/testDirectory/path.jpg"}} content',
 | 
						|
                [
 | 
						|
                    2020
 | 
						|
                ]
 | 
						|
            ],
 | 
						|
            'Relevant path content with pub' => [
 | 
						|
                '/pub/media/testDirectory/path.jpg',
 | 
						|
                [
 | 
						|
                    2020
 | 
						|
                ]
 | 
						|
            ],
 | 
						|
            'Relevant path content' => [
 | 
						|
                '/media/testDirectory/path.jpg',
 | 
						|
                [
 | 
						|
                    2020
 | 
						|
                ]
 | 
						|
            ],
 | 
						|
            'Irrelevant paths in content' => [
 | 
						|
                'content {{media url="media/non-existing-path.png"}} content',
 | 
						|
                []
 | 
						|
            ],
 | 
						|
        ];
 | 
						|
    }
 | 
						|
}
 |