Skip to content

Commit 2c82569

Browse files
ENGCOM-5498: [2.3] magento catalog:images:resize now Database Media Storage mode aware (Again!) #23913
2 parents 1c56040 + 3409bfc commit 2c82569

File tree

5 files changed

+50
-29
lines changed

5 files changed

+50
-29
lines changed

app/code/Magento/MediaStorage/Service/ImageResize.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -183,11 +183,11 @@ public function resizeFromThemes(array $themes = null): \Generator
183183
$mediastoragefilename = $this->imageConfig->getMediaPath($originalImageName);
184184
$originalImagePath = $this->mediaDirectory->getAbsolutePath($mediastoragefilename);
185185

186+
if ($this->fileStorageDatabase->checkDbUsage()) {
187+
$this->fileStorageDatabase->saveFileToFilesystem($mediastoragefilename);
188+
}
186189
if ($this->mediaDirectory->isFile($originalImagePath)) {
187190
foreach ($viewImages as $viewImage) {
188-
if ($this->fileStorageDatabase->checkDbUsage()) {
189-
$this->fileStorageDatabase->saveFileToFilesystem($mediastoragefilename);
190-
}
191191
$this->resize($viewImage, $originalImagePath, $originalImageName);
192192
}
193193
} else {

dev/tests/integration/testsuite/Magento/Catalog/_files/product_image.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,15 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
67

78
use Magento\Framework\App\Filesystem\DirectoryList;
89

910
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
1011
/** @var $mediaConfig \Magento\Catalog\Model\Product\Media\Config */
1112
$mediaConfig = $objectManager->get(\Magento\Catalog\Model\Product\Media\Config::class);
13+
/** @var $database \Magento\MediaStorage\Helper\File\Storage\Database */
14+
$database = $objectManager->get(\Magento\MediaStorage\Helper\File\Storage\Database::class);
1215

1316
/** @var $mediaDirectory \Magento\Framework\Filesystem\Directory\WriteInterface */
1417
$mediaDirectory = $objectManager->get(\Magento\Framework\Filesystem::class)
@@ -28,4 +31,5 @@
2831

2932
copy($sourceFilePath, $targetTmpFilePath);
3033
// Copying the image to target dir is not necessary because during product save, it will be moved there from tmp dir
34+
$database->saveFile($targetTmpFilePath);
3135
}

dev/tests/integration/testsuite/Magento/Catalog/_files/product_image_rollback.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,18 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
7+
68
use Magento\Framework\App\Filesystem\DirectoryList;
79

810
/** @var $config \Magento\Catalog\Model\Product\Media\Config */
911
$config = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
1012
\Magento\Catalog\Model\Product\Media\Config::class
1113
);
14+
/** @var $database \Magento\MediaStorage\Helper\File\Storage\Database */
15+
$database = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
16+
\Magento\MediaStorage\Helper\File\Storage\Database::class
17+
);
1218

1319
/** @var \Magento\Framework\Filesystem\Directory\WriteInterface $mediaDirectory */
1420
$mediaDirectory = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
@@ -19,3 +25,6 @@
1925

2026
$mediaDirectory->delete($config->getBaseMediaPath());
2127
$mediaDirectory->delete($config->getBaseTmpMediaPath());
28+
29+
$database->deleteFolder($config->getBaseMediaPath());
30+
$database->deleteFolder($config->getBaseTmpMediaPath());

dev/tests/integration/testsuite/Magento/MediaStorage/Console/Command/ImageResizeCommandTest.php

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6-
declare(strict_types = 1);
6+
declare(strict_types=1);
77

88
namespace Magento\MediaStorage\Console\Command;
99

@@ -15,8 +15,6 @@
1515
use Magento\Framework\ObjectManagerInterface;
1616
use Magento\TestFramework\Helper\Bootstrap;
1717
use Symfony\Component\Console\Tester\CommandTester;
18-
use Symfony\Component\Console\Input\ArgvInput;
19-
use Symfony\Component\Console\Output\ConsoleOutput;
2018

2119
/**
2220
* Test for \Magento\MediaStorage\Console\Command\ImagesResizeCommand.
@@ -38,21 +36,6 @@ class ImageResizeCommandTest extends \PHPUnit\Framework\TestCase
3836
*/
3937
private $objectManager;
4038

41-
/**
42-
* @var \Magento\MediaStorage\Console\Command\ImagesResizeCommand
43-
*/
44-
private $imageResizeCommand;
45-
46-
/**
47-
* @var ArgvInput
48-
*/
49-
private $input;
50-
51-
/**
52-
* @var ConsoleOutput
53-
*/
54-
private $output;
55-
5639
/**
5740
* @var WriteInterface
5841
*/
@@ -76,12 +59,6 @@ protected function setUp()
7659
parent::setUp();
7760

7861
$this->objectManager = Bootstrap::getObjectManager();
79-
$this->imageResizeCommand = $this->objectManager->create(
80-
\Magento\MediaStorage\Console\Command\ImagesResizeCommand::class
81-
);
82-
83-
$this->input = $this->objectManager->create(ArgvInput::class, ['argv' => ['catalog:image:resize']]);
84-
$this->output = $this->objectManager->create(ConsoleOutput::class);
8562
$this->fileName = 'image.jpg';
8663
$this->command = $this->objectManager->get(ImagesResizeCommand::class);
8764
$this->tester = new CommandTester($this->command);
@@ -96,8 +73,8 @@ protected function setUp()
9673
*/
9774
public function testRunResizeWithMissingFile()
9875
{
99-
$resultCode = $this->imageResizeCommand->run($this->input, $this->output);
100-
$this->assertSame($resultCode, 0);
76+
$this->tester->execute([]);
77+
$this->assertContains('original image not found', $this->tester->getDisplay());
10178
}
10279

10380
/**
@@ -132,4 +109,17 @@ public function testExecuteWithZeroByteImage()
132109
$this->assertContains('Wrong file', $this->tester->getDisplay());
133110
$this->mediaDirectory->getDriver()->deleteFile($this->mediaDirectory->getAbsolutePath($this->fileName));
134111
}
112+
113+
/**
114+
* Test that catalog:image:resize command executes successfully in database storage mode
115+
* with file missing from local folder
116+
*
117+
* @magentoDataFixture Magento/MediaStorage/_files/database_mode.php
118+
* @magentoDataFixture Magento/MediaStorage/_files/product_with_missed_image.php
119+
*/
120+
public function testDatabaseStorageMissingFile()
121+
{
122+
$this->tester->execute([]);
123+
$this->assertContains('Product images resized successfully', $this->tester->getDisplay());
124+
}
135125
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
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+
/** @var \Magento\Catalog\Api\ProductRepositoryInterface $productRepository */
9+
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
10+
/** @var $database \Magento\MediaStorage\Helper\File\Storage\Database */
11+
$database = $objectManager->get(\Magento\MediaStorage\Helper\File\Storage\Database::class);
12+
13+
$database->getStorageDatabaseModel()->init();
14+
15+
$config = $objectManager->get(Magento\Framework\App\Config\ConfigResource\ConfigInterface::class);
16+
$config->saveConfig('system/media_storage_configuration/media_storage', '1');
17+
$config->saveConfig('system/media_storage_configuration/media_database', 'default_setup');
18+
$objectManager->get(Magento\Framework\App\Config\ReinitableConfigInterface::class)->reinit();

0 commit comments

Comments
 (0)