Skip to content

Commit 958fee3

Browse files
committed
magento/adobe-stock-integration#1391: SaveAssetsKeywordsInterface to delete obsolete keywords - Allow empty keywords to execute saveAssetLinks, added condition to integration test for empty keywords
1 parent cc4c5d0 commit 958fee3

File tree

2 files changed

+23
-26
lines changed

2 files changed

+23
-26
lines changed

app/code/Magento/MediaGallery/Model/ResourceModel/Keyword/SaveAssetsKeywords.php

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -93,19 +93,17 @@ private function saveAssetKeywords(array $keywords, int $assetId): void
9393
$data[] = $keyword->getKeyword();
9494
}
9595

96-
if (empty($data)) {
97-
return;
96+
if (!empty($data)) {
97+
/** @var Mysql $connection */
98+
$connection = $this->resourceConnection->getConnection();
99+
$connection->insertArray(
100+
$this->resourceConnection->getTableName(self::TABLE_KEYWORD),
101+
[self::KEYWORD],
102+
$data,
103+
AdapterInterface::INSERT_IGNORE
104+
);
98105
}
99106

100-
/** @var Mysql $connection */
101-
$connection = $this->resourceConnection->getConnection();
102-
$connection->insertArray(
103-
$this->resourceConnection->getTableName(self::TABLE_KEYWORD),
104-
[self::KEYWORD],
105-
$data,
106-
AdapterInterface::INSERT_IGNORE
107-
);
108-
109107
$this->saveAssetLinks->execute($assetId, $this->getKeywordIds($data));
110108
}
111109

dev/tests/integration/testsuite/Magento/MediaGallery/Model/ResourceModel/AssetKeywordsTest.php

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -70,24 +70,23 @@ protected function setUp(): void
7070
* @param string[] $updatedKeywords
7171
* @throws \Magento\Framework\Exception\LocalizedException
7272
*/
73-
public function testSaveAndGetKeywords(array $keywords = [], array $updatedKeywords = []): void
73+
public function testSaveAndGetKeywords(array $keywords, array $updatedKeywords): void
7474
{
7575
$loadedAssets = $this->getAssetsByPath->execute([self::FIXTURE_ASSET_PATH]);
7676
$this->assertCount(1, $loadedAssets);
7777
$loadedAsset = current($loadedAssets);
7878

7979
$this->updateAssetKeywords($loadedAsset->getId(), $keywords);
80-
$this->updateAssetKeywords($loadedAsset->getId(), $updatedKeywords, $keywords);
80+
$this->updateAssetKeywords($loadedAsset->getId(), $updatedKeywords);
8181
}
8282

8383
/**
8484
* Update Asset keywords
8585
*
8686
* @param int $assetId
8787
* @param string[] $keywords
88-
* @param string[] $currentKeywords
8988
*/
90-
private function updateAssetKeywords(int $assetId, array $keywords = [], array $currentKeywords = []): void
89+
private function updateAssetKeywords(int $assetId, array $keywords): void
9190
{
9291
$assetKeywords = $this->assetsKeywordsFactory->create(
9392
[
@@ -99,28 +98,28 @@ private function updateAssetKeywords(int $assetId, array $keywords = [], array $
9998
$this->saveAssetsKeywords->execute([$assetKeywords]);
10099
$loadedAssetKeywords = $this->getAssetsKeywords->execute([$assetId]);
101100

102-
$currentKeywords = empty($keywords) ? $currentKeywords : $keywords;
103-
$expectedCount = !empty($currentKeywords) ? 1 : 0;
101+
if (empty($keywords)) {
102+
$this->assertEmpty($loadedAssetKeywords);
103+
return;
104+
}
104105

105-
$this->assertCount($expectedCount, $loadedAssetKeywords);
106+
$this->assertCount(1, $loadedAssetKeywords);
106107
/** @var AssetKeywordsInterface $loadedAssetKeyword */
107108
$loadedAssetKeyword = current($loadedAssetKeywords);
108109

109-
$loadedKeywords = !empty($loadedAssetKeyword) ? $loadedAssetKeyword->getKeywords() : [];
110+
$loadedKeywords = $loadedAssetKeyword->getKeywords();
110111

111-
$this->assertEquals(count($currentKeywords), count($loadedKeywords));
112+
$this->assertEquals(count($keywords), count($loadedKeywords));
112113

113114
$loadedKeywordStrings = [];
114-
if (!empty($loadedKeywords)) {
115-
foreach ($loadedKeywords as $loadedKeywordObject) {
116-
$loadedKeywordStrings[] = $loadedKeywordObject->getKeyword();
117-
}
115+
foreach ($loadedKeywords as $loadedKeywordObject) {
116+
$loadedKeywordStrings[] = $loadedKeywordObject->getKeyword();
118117
}
119118

120119
sort($loadedKeywordStrings);
121-
sort($currentKeywords);
120+
sort($keywords);
122121

123-
$this->assertEquals($currentKeywords, $loadedKeywordStrings);
122+
$this->assertEquals($keywords, $loadedKeywordStrings);
124123
}
125124

126125
/**

0 commit comments

Comments
 (0)