Skip to content

Commit 76e74ca

Browse files
author
Graham Wharton
committed
When Saving design config, ensure that temporary file in database is renamed aswell as the local file in pub/media.
1 parent 18dc53f commit 76e74ca

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

app/code/Magento/Theme/Model/Design/Backend/File.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
use Magento\Framework\UrlInterface;
2222
use Magento\MediaStorage\Model\File\UploaderFactory;
2323
use Magento\Theme\Model\Design\Config\FileUploader\FileProcessor;
24+
use Magento\MediaStorage\Helper\File\Storage\Database;
2425

2526
/**
2627
* File Backend
@@ -39,6 +40,11 @@ class File extends BackendFile
3940
*/
4041
private $mime;
4142

43+
/**
44+
* @var Database
45+
*/
46+
private $databaseHelper;
47+
4248
/**
4349
* @param Context $context
4450
* @param Registry $registry
@@ -48,6 +54,7 @@ class File extends BackendFile
4854
* @param RequestDataInterface $requestData
4955
* @param Filesystem $filesystem
5056
* @param UrlInterface $urlBuilder
57+
* @param Database $databaseHelper
5158
* @param AbstractResource|null $resource
5259
* @param AbstractDb|null $resourceCollection
5360
* @param array $data
@@ -62,6 +69,7 @@ public function __construct(
6269
RequestDataInterface $requestData,
6370
Filesystem $filesystem,
6471
UrlInterface $urlBuilder,
72+
Database $databaseHelper,
6573
AbstractResource $resource = null,
6674
AbstractDb $resourceCollection = null,
6775
array $data = []
@@ -79,6 +87,7 @@ public function __construct(
7987
$data
8088
);
8189
$this->urlBuilder = $urlBuilder;
90+
$this->databaseHelper = $databaseHelper;
8291
}
8392

8493
/**
@@ -258,6 +267,10 @@ private function updateMediaDirectory(string $filename, string $url)
258267
$mediaPath,
259268
$destinationMediaPath
260269
);
270+
$this->databaseHelper->renameFile(
271+
$mediaPath,
272+
$destinationMediaPath
273+
);
261274
}
262275
if ($result) {
263276
if ($mediaPath === $tmpMediaPath) {

app/code/Magento/Theme/Test/Unit/Model/Design/Backend/FileTest.php

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ class FileTest extends \PHPUnit\Framework\TestCase
2828
*/
2929
private $mime;
3030

31+
/**
32+
* @var \Magento\MediaStorage\Helper\File\Storage\Database|\PHPUnit_Framework_MockObject_MockObject
33+
*/
34+
private $databaseHelper;
35+
3136
public function setUp()
3237
{
3338
$context = $this->getMockObject(\Magento\Framework\Model\Context::class);
@@ -55,6 +60,10 @@ public function setUp()
5560
->disableOriginalConstructor()
5661
->getMock();
5762

63+
$this->databaseHelper = $this->getMockBuilder(\Magento\MediaStorage\Helper\File\Storage\Database::class)
64+
->disableOriginalConstructor()
65+
->getMock();
66+
5867
$this->fileBackend = new File(
5968
$context,
6069
$registry,
@@ -63,7 +72,8 @@ public function setUp()
6372
$uploaderFactory,
6473
$requestData,
6574
$filesystem,
66-
$this->urlBuilder
75+
$this->urlBuilder,
76+
$this->databaseHelper
6777
);
6878

6979
$objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
@@ -196,6 +206,11 @@ public function testBeforeSave($fileName)
196206
]
197207
);
198208

209+
$this->databaseHelper->expects($this->once())
210+
->method('renameFile')
211+
->with($expectedTmpMediaPath, '/' . $expectedFileName)
212+
->willReturn(true);
213+
199214
$this->mediaDirectory->expects($this->once())
200215
->method('copyFile')
201216
->with($expectedTmpMediaPath, '/' . $expectedFileName)

0 commit comments

Comments
 (0)