Skip to content

Commit 86506a3

Browse files
committed
#27536: Added ExtractAssetsFromContentTest
1 parent 3d8c2cf commit 86506a3

File tree

9 files changed

+168
-89
lines changed

9 files changed

+168
-89
lines changed

app/code/Magento/MediaContent/Model/Content/Config/Converter.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
class Converter implements ConverterInterface
1616
{
1717
/**
18-
* Blacklist tag name
18+
* Search tag name
1919
*/
20-
private const BLACKLIST_TAG_NAME = 'search';
20+
private const SEARCH_TAG_NAME = 'search';
2121

2222
/**
2323
* Patterns tag name
@@ -43,12 +43,12 @@ public function convert($source) : array
4343
return $result;
4444
}
4545

46-
foreach ($source->getElementsByTagName(self::BLACKLIST_TAG_NAME) as $blacklist) {
47-
$result[self::BLACKLIST_TAG_NAME] = [];
46+
foreach ($source->getElementsByTagName(self::SEARCH_TAG_NAME) as $blacklist) {
47+
$result[self::SEARCH_TAG_NAME] = [];
4848
foreach ($blacklist->getElementsByTagName(self::PATTERNS_TAG_NAME) as $patterns) {
49-
$result[self::BLACKLIST_TAG_NAME][self::PATTERNS_TAG_NAME] = [];
49+
$result[self::SEARCH_TAG_NAME][self::PATTERNS_TAG_NAME] = [];
5050
foreach ($patterns->getElementsByTagName(self::PATTERN_TAG_NAME) as $pattern) {
51-
$result[self::BLACKLIST_TAG_NAME][self::PATTERNS_TAG_NAME]
51+
$result[self::SEARCH_TAG_NAME][self::PATTERNS_TAG_NAME]
5252
[$pattern->attributes->getNamedItem('name')->nodeValue] = $pattern->nodeValue;
5353
}
5454
}

app/code/Magento/MediaContent/Model/Content/Config/Reader.php

Lines changed: 0 additions & 68 deletions
This file was deleted.

app/code/Magento/MediaContent/etc/di.xml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,16 @@
1919
<type name="Magento\MediaGalleryApi\Model\Asset\Command\DeleteByDirectoryPathInterface">
2020
<plugin name="remove_media_content_after_asset_is_removed_by_directory_path" type="Magento\MediaContent\Model\Plugin\MediaGalleryAssetDeleteByDirectoryPath" />
2121
</type>
22-
<type name="Magento\MediaContent\Model\Content\Config\Reader">
22+
<virtualType name="Magento\MediaContent\Model\Content\Config\Reader" type="Magento\Framework\Config\Reader\Filesystem">
2323
<arguments>
2424
<argument name="fileName" xsi:type="string">media_content.xml</argument>
2525
<argument name="converter" xsi:type="object">Magento\MediaContent\Model\Content\Config\Converter</argument>
2626
<argument name="schemaLocator" xsi:type="object">Magento\MediaContent\Model\Content\Config\SchemaLocator</argument>
27+
<argument name="idAttributes" xsi:type="array">
28+
<item name="/config/search/patterns/pattern" xsi:type="string">name</item>
29+
</argument>
2730
</arguments>
28-
</type>
31+
</virtualType>
2932
<virtualType name="Magento\MediaContent\Model\Content\Config\Data" type="Magento\Framework\Config\Data">
3033
<arguments>
3134
<argument name="reader" xsi:type="object">Magento\MediaContent\Model\Content\Config\Reader</argument>

app/code/Magento/MediaContentCatalog/etc/media_content.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* See COPYING.txt for license details.
66
*/
77
-->
8-
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_MediaGallery:etc/directory.xsd">
8+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_MediaContent:etc/media_content.xsd">
99
<search>
1010
<patterns>
1111
<pattern name="catalog_image">/^\/?media\/(.*)/</pattern>

app/code/Magento/MediaContentCms/etc/media_content.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* See COPYING.txt for license details.
66
*/
77
-->
8-
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_MediaGallery:etc/directory.xsd">
8+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_MediaContent:etc/media_content.xsd">
99
<search>
1010
<patterns>
1111
<pattern name="media_gallery">/{{media url="?(.*?)"?}}/</pattern>

dev/tests/integration/testsuite/Magento/MediaContent/Model/AssignGetUnassignTest.php

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class AssignGetUnassignTest extends TestCase
4444
/**
4545
* @inheritdoc
4646
*/
47-
public function setUp()
47+
public function setUp(): void
4848
{
4949
$this->assign = Bootstrap::getObjectManager()->create(AssignAssetsInterface::class);
5050
$this->getAssetIds = Bootstrap::getObjectManager()->create(GetAssetIdsUsedInContentInterface::class);
@@ -55,34 +55,38 @@ public function setUp()
5555
/**
5656
* Assing assets to content, retrieve the data, then unassign assets from content
5757
*/
58-
public function testAssignRetrieveAndUnassign()
58+
public function testAssignRetrieveAndUnassign(): void
5959
{
60+
$entityType = 'catalog_product';
61+
$entityId = '42';
62+
$field = 'description';
63+
$assetIds = [56, 78];
64+
6065
$contentIdentity = Bootstrap::getObjectManager()->create(
6166
ContentIdentityInterface::class,
6267
[
6368
'data' => [
64-
'entity_type' => 'catalog_product',
65-
'entity_id' => '42',
66-
'field' => 'description'
69+
'entity_type' => $entityType,
70+
'entity_id' => $entityId,
71+
'field' => $field
6772
]
6873
]
6974
);
70-
$assetIds = [56, 78];
7175

7276
$this->assign->execute($contentIdentity, $assetIds);
7377

7478
$retrievedAssetIds = $this->getAssetIds->execute($contentIdentity);
7579
$this->assertEquals($assetIds, $retrievedAssetIds);
7680

77-
7881
$retrievedContentIdentities = $this->getContent->execute($assetIds);
7982

8083
$this->assertEquals(count($retrievedContentIdentities), 1);
8184

82-
$identity = $retrievedContentIdentities[0];
83-
$this->assertEquals('catalog_product', $identity->getEntityType());
84-
$this->assertEquals('42', $identity->getEntityId());
85-
$this->assertEquals('description', $identity->getField());
85+
foreach ($retrievedContentIdentities as $identity) {
86+
$this->assertEquals($entityType, $identity->getEntityType());
87+
$this->assertEquals($entityId, $identity->getEntityId());
88+
$this->assertEquals($field, $identity->getField());
89+
}
8690

8791
$this->unassign->execute($contentIdentity, $assetIds);
8892

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*
6+
*/
7+
declare(strict_types=1);
8+
9+
namespace Magento\MediaContent\Model;
10+
11+
use Magento\MediaContentApi\Api\ExtractAssetsFromContentInterface;
12+
use Magento\TestFramework\Helper\Bootstrap;
13+
use PHPUnit\Framework\TestCase;
14+
15+
/**
16+
* Test for ExtractAssetsFromContent
17+
*/
18+
class ExtractAssetsFromContentTest extends TestCase
19+
{
20+
/**
21+
* @var ExtractAssetsFromContentInterface
22+
*/
23+
private $service;
24+
25+
/**
26+
* @inheritdoc
27+
*/
28+
public function setUp(): void
29+
{
30+
$this->service = Bootstrap::getObjectManager()->create(ExtractAssetsFromContentInterface::class);
31+
}
32+
33+
/**
34+
* Assing assets to content, retrieve the data, then unassign assets from content
35+
*
36+
* @magentoDataFixture Magento/MediaContent/_files/media_asset.php
37+
*
38+
* @dataProvider contentProvider
39+
* @param string $content
40+
* @param array $assetIds
41+
*/
42+
public function testExecute(string $content, array $assetIds): void
43+
{
44+
$assets = $this->service->execute($content);
45+
46+
$extractedAssetIds = [];
47+
foreach ($assets as $asset) {
48+
$extractedAssetIds[] = $asset->getId();
49+
}
50+
51+
sort($assetIds);
52+
sort($extractedAssetIds);
53+
54+
$this->assertEquals($assetIds, $extractedAssetIds);
55+
}
56+
57+
/**
58+
* Data provider for testExecute
59+
*
60+
* @return array
61+
*/
62+
public function contentProvider()
63+
{
64+
return [
65+
'Empty Content' => [
66+
'',
67+
[]
68+
],
69+
'No paths in content' => [
70+
'content without paths',
71+
[]
72+
],
73+
'Relevant paths in content' => [
74+
'content {{media url="testDirectory/path.jpg"}} content',
75+
[
76+
55
77+
]
78+
],
79+
'Irrelevant paths in content' => [
80+
'content {{media url="media/non-existing-path.png"}} content',
81+
[]
82+
],
83+
];
84+
}
85+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
declare(strict_types=1);
8+
9+
use Magento\MediaGalleryApi\Api\Data\AssetInterface;
10+
use Magento\MediaGalleryApi\Api\Data\AssetInterfaceFactory;
11+
use Magento\MediaGalleryApi\Model\Asset\Command\SaveInterface;
12+
use Magento\TestFramework\Helper\Bootstrap;
13+
14+
$objectManager = Bootstrap::getObjectManager();
15+
/** @var AssetInterfaceFactory $mediaAssetFactory */
16+
$mediaAssetFactory = $objectManager->get(AssetInterfaceFactory::class);
17+
/** @var AssetInterface $mediaAsset */
18+
$mediaAsset = $mediaAssetFactory->create(
19+
[
20+
'data' => [
21+
'id' => 55,
22+
'path' => '/testDirectory/path.jpg'
23+
]
24+
]
25+
);
26+
/** @var SaveInterface $saveAsset */
27+
$saveAsset = $objectManager->get(SaveInterface::class);
28+
$mediaId = $saveAsset->execute($mediaAsset);
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
use Magento\AdobeStockAssetApi\Model\Asset\Command\DeleteByIdInterface;
9+
use Magento\MediaGalleryApi\Api\Data\AssetInterface;
10+
use Magento\MediaGalleryApi\Api\Data\AssetInterfaceFactory;
11+
use Magento\TestFramework\Helper\Bootstrap;
12+
13+
$objectManager = Bootstrap::getObjectManager();
14+
/** @var AssetInterfaceFactory $mediaAssetFactory */
15+
$mediaAssetFactory = $objectManager->get(AssetInterfaceFactory::class);
16+
/** @var AssetInterface $mediaAsset */
17+
$mediaAsset = $mediaAssetFactory->create(
18+
[
19+
'data' => [
20+
'id' => 55,
21+
'path' => 'testDirectory/path.jpg'
22+
]
23+
]
24+
);
25+
/** @var DeleteByIdInterface $deleteMediaAsset */
26+
$deleteMediaAsset = $objectManager->get(DeleteByIdInterface::class);
27+
$deleteMediaAsset->execute(55);

0 commit comments

Comments
 (0)