102 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			102 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\MediaGallery\Model\ResourceModel;
 | 
						|
 | 
						|
use Magento\MediaGalleryApi\Api\GetAssetsByPathsInterface;
 | 
						|
use Magento\MediaGalleryApi\Api\DeleteAssetsByPathsInterface;
 | 
						|
use Magento\TestFramework\Helper\Bootstrap;
 | 
						|
use PHPUnit\Framework\TestCase;
 | 
						|
 | 
						|
/**
 | 
						|
 * Testing delete assets operation
 | 
						|
 */
 | 
						|
class DeleteAssetsTest extends TestCase
 | 
						|
{
 | 
						|
    private const FIXTURE_ASSET_PATH = 'testDirectory/path.jpg';
 | 
						|
    /**
 | 
						|
     * @var GetAssetsByPathsInterface
 | 
						|
     */
 | 
						|
    private $getAssetsByPath;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var DeleteAssetsByPathsInterface
 | 
						|
     */
 | 
						|
    private $deleteAssetsByPaths;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @inheritdoc
 | 
						|
     */
 | 
						|
    protected function setUp(): void
 | 
						|
    {
 | 
						|
        $this->getAssetsByPath = Bootstrap::getObjectManager()->get(GetAssetsByPathsInterface::class);
 | 
						|
        $this->deleteAssetsByPaths = Bootstrap::getObjectManager()->get(DeleteAssetsByPathsInterface::class);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Test deletion of assets by path
 | 
						|
     *
 | 
						|
     * @magentoDataFixture Magento/MediaGallery/_files/media_asset.php
 | 
						|
     *
 | 
						|
     * @param array $paths
 | 
						|
     * @throws \Magento\Framework\Exception\CouldNotSaveException
 | 
						|
     * @throws \Magento\Framework\Exception\LocalizedException
 | 
						|
     *
 | 
						|
     * @dataProvider matchingPathsProvider
 | 
						|
     */
 | 
						|
    public function testAssetsAreDeleted(array $paths): void
 | 
						|
    {
 | 
						|
        $this->deleteAssetsByPaths->execute($paths);
 | 
						|
        $this->assertEmpty($this->getAssetsByPath->execute([self::FIXTURE_ASSET_PATH]));
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Test scenarios where delete operation should not delete an asset
 | 
						|
     *
 | 
						|
     * @magentoDataFixture Magento/MediaGallery/_files/media_asset.php
 | 
						|
     *
 | 
						|
     * @param array $paths
 | 
						|
     * @throws \Magento\Framework\Exception\CouldNotSaveException
 | 
						|
     * @throws \Magento\Framework\Exception\LocalizedException
 | 
						|
     *
 | 
						|
     * @dataProvider notMatchingPathsProvider
 | 
						|
     */
 | 
						|
    public function testAssetsAreNotDeleted(array $paths): void
 | 
						|
    {
 | 
						|
        $this->deleteAssetsByPaths->execute($paths);
 | 
						|
        $this->assertNotEmpty($this->getAssetsByPath->execute([self::FIXTURE_ASSET_PATH]));
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Data provider of paths matching existing asset
 | 
						|
     *
 | 
						|
     * @return array
 | 
						|
     */
 | 
						|
    public function matchingPathsProvider(): array
 | 
						|
    {
 | 
						|
        return [
 | 
						|
            [['testDirectory/path.jpg']],
 | 
						|
            [['testDirectory/']],
 | 
						|
            [['testDirectory']]
 | 
						|
        ];
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Data provider of paths not matching existing asset
 | 
						|
     *
 | 
						|
     * @return array
 | 
						|
     */
 | 
						|
    public function notMatchingPathsProvider(): array
 | 
						|
    {
 | 
						|
        return [
 | 
						|
            [['testDirectory/path.png']],
 | 
						|
            [['anotherDirectory/path.jpg']],
 | 
						|
            [['path.jpg']]
 | 
						|
        ];
 | 
						|
    }
 | 
						|
}
 |