Skip to content

Commit 7aaa5e4

Browse files
committed
ACP2E-2214: [Cloud] Orders Report export CSV - strange letters
1 parent 0a834cc commit 7aaa5e4

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

app/code/Magento/Backend/Block/Widget/Grid/Extended.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1022,6 +1022,7 @@ public function getCsvFile()
10221022
$stream = $this->_directory->openFile($file, 'w+');
10231023

10241024
$stream->lock();
1025+
$stream->write(pack('CCC', 0xef, 0xbb, 0xbf));
10251026
$stream->writeCsv($this->_getExportHeaders());
10261027
$this->_exportIterateCollection('_exportCsvItem', [$stream]);
10271028

dev/tests/integration/testsuite/Magento/Backend/Block/Widget/Grid/ExtendedTest.php

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77

88
use Laminas\Stdlib\Parameters;
99
use Magento\Backend\Block\Template\Context;
10+
use Magento\Framework\App\Filesystem\DirectoryList;
1011
use Magento\Framework\Data\Collection;
12+
use Magento\Framework\Filesystem;
1113
use Magento\Framework\View\LayoutInterface;
1214
use Magento\TestFramework\Helper\Bootstrap;
1315
use PHPUnit\Framework\TestCase;
@@ -34,7 +36,7 @@ protected function setUp(): void
3436
{
3537
parent::setUp();
3638

37-
$this->_layoutMock = Bootstrap::getObjectManager()->get(
39+
$this->_layoutMock = Bootstrap::getObjectManager()->create(
3840
LayoutInterface::class
3941
);
4042
$context = Bootstrap::getObjectManager()->create(
@@ -122,4 +124,21 @@ public function testExtendedTemplateMarkup(): void
122124
$html = str_replace(["\n", " "], '', $html);
123125
$this->assertStringEndsWith("</table></div>", $html);
124126
}
127+
128+
public function testGetCsvFileStartsWithBOM(): void
129+
{
130+
$collection = Bootstrap::getObjectManager()->create(Collection::class);
131+
$this->_block->setCollection($collection);
132+
$data = $this->_block->getCsvFile();
133+
134+
$filesystem = Bootstrap::getObjectManager()->get(Filesystem::class);
135+
$directory = $filesystem->getDirectoryWrite(DirectoryList::VAR_DIR);
136+
self::assertTrue($directory->isFile($data['value']));
137+
self::assertStringStartsWith(
138+
pack('CCC', 0xef, 0xbb, 0xbf),
139+
$directory->readFile($data['value'])
140+
);
141+
142+
$directory->delete($data['value']);
143+
}
125144
}

0 commit comments

Comments
 (0)