106 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			3.5 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\SaveContentAssetLinksInterface;
 | 
						|
use Magento\MediaContentApi\Api\Data\ContentIdentityInterface;
 | 
						|
use Magento\MediaContentApi\Api\Data\ContentAssetLinkInterface;
 | 
						|
use Magento\MediaContentApi\Api\GetAssetIdsByContentIdentityInterface;
 | 
						|
use Magento\MediaContentApi\Api\GetContentByAssetIdsInterface;
 | 
						|
use Magento\MediaContentApi\Api\DeleteContentAssetLinksInterface;
 | 
						|
use Magento\TestFramework\Helper\Bootstrap;
 | 
						|
use PHPUnit\Framework\TestCase;
 | 
						|
 | 
						|
/**
 | 
						|
 * Test for AssignAssets service
 | 
						|
 */
 | 
						|
class SaveDeleteContentAssetLinksTest extends TestCase
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * @var SaveContentAssetLinksInterface
 | 
						|
     */
 | 
						|
    private $saveContentAssetLinks;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var GetAssetIdsByContentIdentityInterface
 | 
						|
     */
 | 
						|
    private $getAssetIdsByContentIdentity;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var GetContentByAssetIdsInterface
 | 
						|
     */
 | 
						|
    private $getContentByAssetIds;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var DeleteContentAssetLinksInterface
 | 
						|
     */
 | 
						|
    private $deleteContentAssetLinks;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @inheritdoc
 | 
						|
     */
 | 
						|
    protected function setUp(): void
 | 
						|
    {
 | 
						|
        $this->saveContentAssetLinks = Bootstrap::getObjectManager()->get(SaveContentAssetLinksInterface::class);
 | 
						|
        $this->getAssetIdsByContentIdentity = Bootstrap::getObjectManager()
 | 
						|
            ->get(GetAssetIdsByContentIdentityInterface::class);
 | 
						|
        $this->getContentByAssetIds = Bootstrap::getObjectManager()->get(GetContentByAssetIdsInterface::class);
 | 
						|
        $this->deleteContentAssetLinks = Bootstrap::getObjectManager()->get(DeleteContentAssetLinksInterface::class);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Save asset to content links, retrieve the data, delete assets to content links
 | 
						|
     */
 | 
						|
    public function testAssignRetrieveAndUnassign(): void
 | 
						|
    {
 | 
						|
        $entityType = 'catalog_product';
 | 
						|
        $entityId = 42;
 | 
						|
        $field = 'description';
 | 
						|
        $assetIds = [56, 78];
 | 
						|
 | 
						|
        $contentIdentity = Bootstrap::getObjectManager()->create(
 | 
						|
            ContentIdentityInterface::class,
 | 
						|
            [
 | 
						|
                'entityType' => $entityType,
 | 
						|
                'entityId' => $entityId,
 | 
						|
                'field' => $field
 | 
						|
            ]
 | 
						|
        );
 | 
						|
 | 
						|
        $contentAssetLinks = [];
 | 
						|
 | 
						|
        foreach ($assetIds as $assetId) {
 | 
						|
            $contentAssetLinks[] = Bootstrap::getObjectManager()->create(
 | 
						|
                ContentAssetLinkInterface::class,
 | 
						|
                [
 | 
						|
                    'assetId' => $assetId,
 | 
						|
                    'contentIdentity' => $contentIdentity
 | 
						|
                ]
 | 
						|
            );
 | 
						|
        }
 | 
						|
 | 
						|
        $this->saveContentAssetLinks->execute($contentAssetLinks);
 | 
						|
        $retrievedAssetIds = $this->getAssetIdsByContentIdentity->execute($contentIdentity);
 | 
						|
        $this->assertEquals($assetIds, $retrievedAssetIds);
 | 
						|
        $retrievedContentIdentities = $this->getContentByAssetIds->execute($assetIds);
 | 
						|
        $this->assertEquals(count($retrievedContentIdentities), 1);
 | 
						|
 | 
						|
        foreach ($retrievedContentIdentities as $identity) {
 | 
						|
            $this->assertEquals($entityType, $identity->getEntityType());
 | 
						|
            $this->assertEquals($entityId, $identity->getEntityId());
 | 
						|
            $this->assertEquals($field, $identity->getField());
 | 
						|
        }
 | 
						|
 | 
						|
        $this->deleteContentAssetLinks->execute($contentAssetLinks);
 | 
						|
 | 
						|
        $this->assertEmpty($this->getContentByAssetIds->execute($assetIds));
 | 
						|
        $this->assertEmpty($this->getAssetIdsByContentIdentity->execute($contentIdentity));
 | 
						|
    }
 | 
						|
}
 |