13
13
use Magento \AdobeStockAssetApi \Api \CreatorRepositoryInterface ;
14
14
use Magento \AdobeStockAssetApi \Api \Data \AssetInterface ;
15
15
use Magento \AdobeStockAssetApi \Api \Data \AssetInterfaceFactory ;
16
+ use Magento \AdobeStockAssetApi \Api \Data \CategoryInterfaceFactory ;
16
17
use Magento \AdobeStockAssetApi \Api \SaveAssetInterface ;
17
18
use Magento \MediaGalleryApi \Api \GetAssetsByPathsInterface ;
18
19
use Magento \MediaGalleryApi \Api \SaveAssetsInterface ;
@@ -35,6 +36,29 @@ class SaveAssetTest extends TestCase
35
36
*/
36
37
private $ saveAsset ;
37
38
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
+
38
62
/**
39
63
* @inheritdoc
40
64
*/
@@ -46,13 +70,17 @@ protected function setUp(): void
46
70
47
71
/**
48
72
* Test save an Adobe Stock asset.
73
+ *
74
+ * @param array $caseData
75
+ *
76
+ * @dataProvider getAssetData
49
77
* @magentoDataFixture ../../../../app/code/Magento/AdobeStockAsset/Test/_files/media_asset.php
50
78
* @magentoDataFixture ../../../../app/code/Magento/AdobeStockAsset/Test/_files/category.php
51
79
* @magentoDataFixture ../../../../app/code/Magento/AdobeStockAsset/Test/_files/creator.php
52
80
*/
53
- public function testExecute (): void
81
+ public function testExecute (array $ caseData ): void
54
82
{
55
- $ asset = $ this ->prepareAsset ();
83
+ $ asset = $ this ->prepareAsset ($ caseData );
56
84
$ this ->saveAsset ->execute ($ asset );
57
85
$ expectedAsset = $ this ->assetRepository ->getById ($ asset ->getId ());
58
86
@@ -66,35 +94,24 @@ public function testExecute(): void
66
94
67
95
/**
68
96
* Prepare an Adobe Stock asset test object.
97
+ *
98
+ * @param array $caseData
99
+ * @return AssetInterface
100
+ * @throws \Magento\Framework\Exception\LocalizedException
69
101
*/
70
- public function prepareAsset (): AssetInterface
102
+ public function prepareAsset (array $ caseData ): AssetInterface
71
103
{
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
-
104
+ $ assetData ['data ' ] = [
105
+ 'id ' => 1 ,
106
+ 'is_licensed ' => 1 ,
107
+ ];
108
+ $ assetData ['data ' ]['media_gallery_id ' ] = $ this ->getMediaAssetId ($ caseData ['media_gallery_path ' ]);
109
+ $ assetData ['data ' ]['category ' ] = $ this ->getCategory ($ caseData ['category_id ' ]);
110
+ $ assetData ['data ' ]['creator ' ] = $ this ->getCreator ($ caseData ['creator_id ' ]);
84
111
/** @var AssetInterfaceFactory $assetFactory */
85
112
$ assetFactory = Bootstrap::getObjectManager ()->get (AssetInterfaceFactory::class);
86
113
/** @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
- );
114
+ $ asset = $ assetFactory ->create ($ assetData );
98
115
99
116
return $ asset ;
100
117
}
@@ -109,4 +126,47 @@ private function cleanUpEntries(AssetInterface $asset): void
109
126
{
110
127
$ this ->assetRepository ->deleteById ($ asset ->getId ());
111
128
}
129
+
130
+ /**
131
+ * @param $paths
132
+ * @return int|null
133
+ * @throws \Magento\Framework\Exception\LocalizedException
134
+ */
135
+ protected function getMediaAssetId ($ paths ): int
136
+ {
137
+ /** @var GetAssetsByPathsInterface $mediaGetByPath */
138
+ $ mediaGetByPath = Bootstrap::getObjectManager ()->get (GetAssetsByPathsInterface::class);
139
+ $ mediaAssetId = $ mediaGetByPath ->execute ($ paths )[0 ]->getId ();
140
+
141
+ return $ mediaAssetId ;
142
+ }
143
+
144
+ /**
145
+ * @param int|null $categoryId
146
+ * @return \Magento\AdobeStockAssetApi\Api\Data\CategoryInterface|null
147
+ * @throws \Magento\Framework\Exception\NoSuchEntityException
148
+ */
149
+ protected function getCategory (?int $ categoryId ): ?\Magento \AdobeStockAssetApi \Api \Data \CategoryInterface
150
+ {
151
+ /** @var CategoryRepositoryInterface $categoryRepository */
152
+ $ categoryRepository = Bootstrap::getObjectManager ()->get (CategoryRepositoryInterface::class);
153
+ /** @var CategoryInterfaceFactory $categoryRepository */
154
+ $ categoryFactory = Bootstrap::getObjectManager ()->get (CategoryInterfaceFactory::class);
155
+
156
+ return $ categoryId !== null ? $ categoryRepository ->getById ($ categoryId ) : $ categoryFactory ->create ();
157
+ }
158
+
159
+ /**
160
+ * @param int $creatorId
161
+ * @return \Magento\AdobeStockAssetApi\Api\Data\CreatorInterface
162
+ * @throws \Magento\Framework\Exception\NoSuchEntityException
163
+ */
164
+ protected function getCreator (int $ creatorId ): \Magento \AdobeStockAssetApi \Api \Data \CreatorInterface
165
+ {
166
+ /** @var CreatorRepositoryInterface $creatorRepository */
167
+ $ creatorRepository = Bootstrap::getObjectManager ()->get (CreatorRepositoryInterface::class);
168
+ $ creator = $ creatorRepository ->getById ($ creatorId );
169
+
170
+ return $ creator ;
171
+ }
112
172
}
0 commit comments