Skip to content

Commit e964356

Browse files
committed
MAGETWO-73039: Orders export to csv shows inconsistent date format
1 parent 7474def commit e964356

File tree

2 files changed

+99
-13
lines changed

2 files changed

+99
-13
lines changed

app/code/Magento/Ui/Model/Export/MetadataProvider.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public function __construct(
6060
Filter $filter,
6161
TimezoneInterface $localeDate,
6262
ResolverInterface $localeResolver,
63-
$dateFormat = 'M j, Y H:i:s A',
63+
$dateFormat = 'M j, Y h:i:s A',
6464
array $data = []
6565
) {
6666
$this->filter = $filter;

app/code/Magento/Ui/Test/Unit/Model/Export/MetadataProviderTest.php

Lines changed: 98 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,39 +3,74 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
7+
68
namespace Magento\Ui\Test\Unit\Model\Export;
79

810
use Magento\Framework\Api\Search\DocumentInterface;
11+
use Magento\Framework\Locale\ResolverInterface;
12+
use Magento\Framework\Stdlib\DateTime\TimezoneInterface;
913
use Magento\Framework\View\Element\UiComponentInterface;
1014
use Magento\Ui\Component\Listing\Columns;
1115
use Magento\Ui\Component\Listing\Columns\Column;
1216
use Magento\Ui\Component\MassAction\Filter;
1317
use Magento\Ui\Model\Export\MetadataProvider;
1418
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
1519

20+
/**
21+
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
22+
*/
1623
class MetadataProviderTest extends \PHPUnit\Framework\TestCase
1724
{
1825
/**
1926
* @var MetadataProvider
2027
*/
21-
protected $model;
28+
private $model;
2229

2330
/**
2431
* @var Filter | \PHPUnit_Framework_MockObject_MockObject
2532
*/
26-
protected $filter;
33+
private $filter;
34+
35+
/**
36+
* @var TimezoneInterface | \PHPUnit_Framework_MockObject_MockObject
37+
*/
38+
private $localeDate;
2739

40+
/**
41+
* @var ResolverInterface | \PHPUnit_Framework_MockObject_MockObject
42+
*/
43+
private $localeResolver;
44+
45+
/**
46+
* @inheritdoc
47+
*/
2848
protected function setUp()
2949
{
3050
$this->filter = $this->getMockBuilder(\Magento\Ui\Component\MassAction\Filter::class)
3151
->disableOriginalConstructor()
3252
->getMock();
3353

54+
$this->localeDate = $this->getMockBuilder(\Magento\Framework\Stdlib\DateTime\TimezoneInterface::class)
55+
->disableOriginalConstructor()
56+
->getMock();
57+
58+
$this->localeResolver = $this->getMockBuilder(\Magento\Framework\Locale\ResolverInterface::class)
59+
->disableOriginalConstructor()
60+
->getMock();
61+
62+
$this->localeResolver->expects($this->any())
63+
->method('getLocale')
64+
->willReturn(null);
65+
3466
$objectManager = new ObjectManager($this);
3567
$this->model = $objectManager->getObject(
3668
\Magento\Ui\Model\Export\MetadataProvider::class,
3769
[
3870
'filter' => $this->filter,
71+
'localeDate' => $this->localeDate,
72+
'localeResolver' => $this->localeResolver,
73+
'data' => ['component_name' => ['field']],
3974
]
4075
);
4176
}
@@ -96,12 +131,12 @@ public function testGetFields()
96131
* @return UiComponentInterface|\PHPUnit_Framework_MockObject_MockObject
97132
*/
98133
protected function prepareColumns(
99-
$componentName,
100-
$columnName,
101-
$columnLabel,
102-
$columnActionsName = 'actions_name',
103-
$columnActionsLabel = 'actions_label'
104-
) {
134+
string $componentName,
135+
string $columnName,
136+
string $columnLabel,
137+
string $columnActionsName = 'actions_name',
138+
string $columnActionsLabel = 'actions_label'
139+
): UiComponentInterface {
105140
/** @var UiComponentInterface|\PHPUnit_Framework_MockObject_MockObject $component */
106141
$component = $this->getMockBuilder(\Magento\Framework\View\Element\UiComponentInterface::class)
107142
->getMockForAbstractClass();
@@ -165,7 +200,7 @@ protected function prepareColumns(
165200
* @param array $expected
166201
* @dataProvider getRowDataProvider
167202
*/
168-
public function testGetRowData($key, $fields, $options, $expected)
203+
public function testGetRowData(string $key, array $fields, array $options, array $expected)
169204
{
170205
/** @var DocumentInterface|\PHPUnit_Framework_MockObject_MockObject $document */
171206
$document = $this->getMockBuilder(\Magento\Framework\Api\Search\DocumentInterface::class)
@@ -192,7 +227,7 @@ public function testGetRowData($key, $fields, $options, $expected)
192227
/**
193228
* @return array
194229
*/
195-
public function getRowDataProvider()
230+
public function getRowDataProvider(): array
196231
{
197232
return [
198233
[
@@ -236,7 +271,7 @@ public function getRowDataProvider()
236271
* @param array $expected
237272
* @dataProvider getOptionsDataProvider
238273
*/
239-
public function testGetOptions($filter, $options, $expected)
274+
public function testGetOptions(string $filter, array $options, array $expected)
240275
{
241276
$component = $this->getMockBuilder(\Magento\Framework\View\Element\UiComponentInterface::class)
242277
->getMockForAbstractClass();
@@ -285,7 +320,7 @@ public function testGetOptions($filter, $options, $expected)
285320
/**
286321
* @return array
287322
*/
288-
public function getOptionsDataProvider()
323+
public function getOptionsDataProvider(): array
289324
{
290325
return [
291326
[
@@ -347,4 +382,55 @@ public function getOptionsDataProvider()
347382
],
348383
];
349384
}
385+
386+
/**
387+
* Test for convertDate function.
388+
*
389+
* @param string $fieldValue
390+
* @param string $expected
391+
* @dataProvider convertDateProvider
392+
* @covers \Magento\Ui\Model\Export\MetadataProvider::convertDate()
393+
*/
394+
public function testConvertDate(string $fieldValue, string $expected)
395+
{
396+
$componentName = 'component_name';
397+
/** @var DocumentInterface|\PHPUnit_Framework_MockObject_MockObject $document */
398+
$document = $this->getMockBuilder(\Magento\Framework\DataObject::class)
399+
->disableOriginalConstructor()
400+
->getMock();
401+
402+
$document->expects($this->once())
403+
->method('getData')
404+
->with('field')
405+
->willReturn($fieldValue);
406+
407+
$this->localeDate->expects($this->once())
408+
->method('date')
409+
->willReturn(new \DateTime($fieldValue, new \DateTimeZone('UTC')));
410+
411+
$document->expects($this->once())
412+
->method('setData')
413+
->with('field', $expected);
414+
415+
$this->model->convertDate($document, $componentName);
416+
}
417+
418+
/**
419+
* Data provider for testConvertDate.
420+
*
421+
* @return array
422+
*/
423+
public function convertDateProvider(): array
424+
{
425+
return [
426+
[
427+
'fieldValue' => '@1534505233',
428+
'expected' => 'Aug 17, 2018 11:27:13 AM',
429+
],
430+
[
431+
'fieldValue' => '@1534530000',
432+
'expected' => 'Aug 17, 2018 06:20:00 PM',
433+
],
434+
];
435+
}
350436
}

0 commit comments

Comments
 (0)