Skip to content

Commit a55fc41

Browse files
author
Viktor Kopin
committed
magento#1846 fix load preview, cover case by integration test
1 parent 822a84d commit a55fc41

File tree

3 files changed

+94
-33
lines changed

3 files changed

+94
-33
lines changed

AdobeStockAsset/Model/SaveAsset.php

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,13 @@ public function execute(AssetInterface $asset): void
7979
$data = $this->objectProcessor->buildOutputDataArray($asset, AssetInterface::class);
8080

8181
$category = $asset->getCategory();
82-
if ($category->getId() !== null) {
83-
$category = $this->categoryRepository->save($category);
82+
if ($category !== null) {
83+
if ($category->getId() !== null) {
84+
$category = $this->categoryRepository->save($category);
85+
}
86+
$data[self::CATEGORY_ID] = $category->getId();
87+
$data[self::CATEGORY] = $category;
8488
}
85-
$data[self::CATEGORY_ID] = $category->getId();
86-
$data[self::CATEGORY] = $category;
87-
8889
$creator = $asset->getCreator();
8990
if ($creator !== null) {
9091
$creator = $this->creatorRepository->save($creator);

AdobeStockAsset/Test/Integration/Model/SaveAssetTest.php

Lines changed: 85 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use Magento\AdobeStockAssetApi\Api\CreatorRepositoryInterface;
1414
use Magento\AdobeStockAssetApi\Api\Data\AssetInterface;
1515
use Magento\AdobeStockAssetApi\Api\Data\AssetInterfaceFactory;
16+
use Magento\AdobeStockAssetApi\Api\Data\CategoryInterfaceFactory;
1617
use Magento\AdobeStockAssetApi\Api\SaveAssetInterface;
1718
use Magento\MediaGalleryApi\Api\GetAssetsByPathsInterface;
1819
use Magento\MediaGalleryApi\Api\SaveAssetsInterface;
@@ -35,6 +36,29 @@ class SaveAssetTest extends TestCase
3536
*/
3637
private $saveAsset;
3738

39+
/**
40+
* @return array
41+
*/
42+
public function getAssetData(): array
43+
{
44+
return [
45+
'asset_save' => [
46+
'data' => [
47+
'media_gallery_path' => ['some/path.jpg'],
48+
'category_id' => 42,
49+
'creator_id' => 42,
50+
]
51+
],
52+
'without_category' => [
53+
'data' => [
54+
'media_gallery_path' => ['some/path.jpg'],
55+
'category_id' => null,
56+
'creator_id' => 42,
57+
]
58+
]
59+
];
60+
}
61+
3862
/**
3963
* @inheritdoc
4064
*/
@@ -46,13 +70,16 @@ protected function setUp(): void
4670

4771
/**
4872
* Test save an Adobe Stock asset.
73+
* @param array $caseData
74+
*
75+
* @dataProvider getAssetData
4976
* @magentoDataFixture ../../../../app/code/Magento/AdobeStockAsset/Test/_files/media_asset.php
5077
* @magentoDataFixture ../../../../app/code/Magento/AdobeStockAsset/Test/_files/category.php
5178
* @magentoDataFixture ../../../../app/code/Magento/AdobeStockAsset/Test/_files/creator.php
5279
*/
53-
public function testExecute(): void
80+
public function testExecute(array $caseData): void
5481
{
55-
$asset = $this->prepareAsset();
82+
$asset = $this->prepareAsset($caseData);
5683
$this->saveAsset->execute($asset);
5784
$expectedAsset = $this->assetRepository->getById($asset->getId());
5885

@@ -66,35 +93,24 @@ public function testExecute(): void
6693

6794
/**
6895
* Prepare an Adobe Stock asset test object.
96+
*
97+
* @param array $caseData
98+
* @return AssetInterface
99+
* @throws \Magento\Framework\Exception\LocalizedException
69100
*/
70-
public function prepareAsset(): AssetInterface
101+
public function prepareAsset(array $caseData): AssetInterface
71102
{
72-
/** @var GetAssetsByPathsInterface $mediaGetByPath */
73-
$mediaGetByPath = Bootstrap::getObjectManager()->get(GetAssetsByPathsInterface::class);
74-
$mediaAssetId = $mediaGetByPath->execute(['some/path.jpg'])[0]->getId();
75-
76-
/** @var CategoryRepositoryInterface $categoryRepository */
77-
$categoryRepository = Bootstrap::getObjectManager()->get(CategoryRepositoryInterface::class);
78-
$category= $categoryRepository->getById(42);
79-
80-
/** @var CreatorRepositoryInterface $creatorRepository */
81-
$creatorRepository = Bootstrap::getObjectManager()->get(CreatorRepositoryInterface::class);
82-
$creator = $creatorRepository->getById(42);
83-
103+
$assetData['data'] = [
104+
'id' => 1,
105+
'is_licensed' => 1,
106+
];
107+
$assetData['data']['media_gallery_id'] = $this->getMediaAssetId($caseData['media_gallery_path']);
108+
$assetData['data']['category'] = $this->getCategory($caseData['category_id']);
109+
$assetData['data']['creator'] = $this->getCreator($caseData['creator_id']);
84110
/** @var AssetInterfaceFactory $assetFactory */
85111
$assetFactory = Bootstrap::getObjectManager()->get(AssetInterfaceFactory::class);
86112
/** @var AssetInterface $asset */
87-
$asset = $assetFactory->create(
88-
[
89-
'data' => [
90-
'id' => 1,
91-
'is_licensed' => 1,
92-
'media_gallery_id' => $mediaAssetId,
93-
'category' => $category,
94-
'creator' => $creator
95-
]
96-
]
97-
);
113+
$asset = $assetFactory->create($assetData);
98114

99115
return $asset;
100116
}
@@ -109,4 +125,47 @@ private function cleanUpEntries(AssetInterface $asset): void
109125
{
110126
$this->assetRepository->deleteById($asset->getId());
111127
}
128+
129+
/**
130+
* @param $paths
131+
* @return int|null
132+
* @throws \Magento\Framework\Exception\LocalizedException
133+
*/
134+
protected function getMediaAssetId($paths): int
135+
{
136+
/** @var GetAssetsByPathsInterface $mediaGetByPath */
137+
$mediaGetByPath = Bootstrap::getObjectManager()->get(GetAssetsByPathsInterface::class);
138+
$mediaAssetId = $mediaGetByPath->execute($paths)[0]->getId();
139+
140+
return $mediaAssetId;
141+
}
142+
143+
/**
144+
* @param int|null $categoryId
145+
* @return \Magento\AdobeStockAssetApi\Api\Data\CategoryInterface|null
146+
* @throws \Magento\Framework\Exception\NoSuchEntityException
147+
*/
148+
protected function getCategory(?int $categoryId): ?\Magento\AdobeStockAssetApi\Api\Data\CategoryInterface
149+
{
150+
/** @var CategoryRepositoryInterface $categoryRepository */
151+
$categoryRepository = Bootstrap::getObjectManager()->get(CategoryRepositoryInterface::class);
152+
/** @var CategoryInterfaceFactory $categoryRepository */
153+
$categoryFactory = Bootstrap::getObjectManager()->get(CategoryInterfaceFactory::class);
154+
155+
return $categoryId !== null ? $categoryRepository->getById($categoryId) : $categoryFactory->create();
156+
}
157+
158+
/**
159+
* @param int $creatorId
160+
* @return \Magento\AdobeStockAssetApi\Api\Data\CreatorInterface
161+
* @throws \Magento\Framework\Exception\NoSuchEntityException
162+
*/
163+
protected function getCreator(int $creatorId): \Magento\AdobeStockAssetApi\Api\Data\CreatorInterface
164+
{
165+
/** @var CreatorRepositoryInterface $creatorRepository */
166+
$creatorRepository = Bootstrap::getObjectManager()->get(CreatorRepositoryInterface::class);
167+
$creator = $creatorRepository->getById($creatorId);
168+
169+
return $creator;
170+
}
112171
}

AdobeStockImageAdminUi/Plugin/AddAdobeStockImageDetailsPlugin.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,8 @@ public function afterExecute(
128128
*/
129129
private function loadAssetsInfo(AssetInterface $asset): array
130130
{
131-
$assetCategory = $this->categoryRepository->getById($asset->getCategoryId());
131+
$hasCategory = $asset->getCategoryId() !== null;
132+
$assetCategory = $hasCategory ? $this->categoryRepository->getById($asset->getCategoryId()) : null;
132133
$assetCreator = $this->creatorRepository->getById($asset->getCreatorId());
133134

134135
return [
@@ -142,7 +143,7 @@ private function loadAssetsInfo(AssetInterface $asset): array
142143
],
143144
[
144145
'title' => __('Category'),
145-
'value' => $assetCategory->getName(),
146+
'value' => $assetCategory !== null ? $assetCategory->getName() : __('None'),
146147
],
147148
[
148149
'title' => __('Author'),

0 commit comments

Comments
 (0)