Skip to content

Commit 5cfdda0

Browse files
committed
Merge remote-tracking branch 'origin/MC-13732' into 2.3-develop-pr50
2 parents 844c0ea + 25399c7 commit 5cfdda0

File tree

5 files changed

+78
-54
lines changed

5 files changed

+78
-54
lines changed

app/code/Magento/Reports/Helper/Data.php

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,13 @@
44
* See COPYING.txt for license details.
55
*/
66

7-
/**
8-
* Reports data helper
9-
*/
107
namespace Magento\Reports\Helper;
118

129
use Magento\Framework\Data\Collection;
13-
use Magento\Framework\Stdlib\DateTime;
1410

1511
/**
12+
* Reports data helper.
13+
*
1614
* @api
1715
* @since 100.0.2
1816
*/
@@ -63,22 +61,27 @@ public function getIntervals($from, $to, $period = self::REPORT_PERIOD_TYPE_DAY)
6361

6462
$dateStart = new \DateTime($from);
6563
$dateEnd = new \DateTime($to);
64+
$dateFormat = 'Y-m-d';
65+
$dateInterval = new \DateInterval('P1D');
66+
switch ($period) {
67+
case self::REPORT_PERIOD_TYPE_MONTH:
68+
$dateFormat = 'Y-m';
69+
$dateInterval = new \DateInterval('P1M');
70+
break;
71+
case self::REPORT_PERIOD_TYPE_YEAR:
72+
$dateFormat = 'Y';
73+
$dateInterval = new \DateInterval('P1Y');
74+
break;
75+
}
6676
while ($dateStart->diff($dateEnd)->invert == 0) {
67-
switch ($period) {
68-
case self::REPORT_PERIOD_TYPE_DAY:
69-
$intervals[] = $dateStart->format('Y-m-d');
70-
$dateStart->add(new \DateInterval('P1D'));
71-
break;
72-
case self::REPORT_PERIOD_TYPE_MONTH:
73-
$intervals[] = $dateStart->format('Y-m');
74-
$dateStart->add(new \DateInterval('P1M'));
75-
break;
76-
case self::REPORT_PERIOD_TYPE_YEAR:
77-
$intervals[] = $dateStart->format('Y');
78-
$dateStart->add(new \DateInterval('P1Y'));
79-
break;
80-
}
77+
$intervals[] = $dateStart->format($dateFormat);
78+
$dateStart->add($dateInterval);
8179
}
80+
81+
if (!in_array($dateEnd->format($dateFormat), $intervals)) {
82+
$intervals[] = $dateEnd->format($dateFormat);
83+
}
84+
8285
return $intervals;
8386
}
8487

app/code/Magento/Reports/Test/Unit/Helper/DataTest.php

Lines changed: 34 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,34 +6,41 @@
66

77
namespace Magento\Reports\Test\Unit\Helper;
88

9+
use Magento\Framework\App\Helper\Context;
10+
use Magento\Framework\Data\Collection;
911
use Magento\Reports\Helper\Data;
12+
use Magento\Reports\Model\Item;
13+
use Magento\Reports\Model\ItemFactory;
1014

15+
/**
16+
* Unit tests for \Magento\Reports\Helper\Data class.
17+
*/
1118
class DataTest extends \PHPUnit\Framework\TestCase
1219
{
1320
/**
14-
* @var \Magento\Reports\Helper\Data
21+
* @var Data
1522
*/
1623
protected $data;
1724

1825
/**
19-
* @var \Magento\Framework\App\Helper\Context|\PHPUnit_Framework_MockObject_MockObject
26+
* @var Context|\PHPUnit_Framework_MockObject_MockObject
2027
*/
2128
protected $contextMock;
2229

2330
/**
24-
* @var \Magento\Reports\Model\ItemFactory|\PHPUnit_Framework_MockObject_MockObject
31+
* @var ItemFactory|\PHPUnit_Framework_MockObject_MockObject
2532
*/
2633
protected $itemFactoryMock;
2734

2835
/**
29-
* {@inheritDoc}
36+
* @inheritdoc
3037
*/
3138
protected function setUp()
3239
{
33-
$this->contextMock = $this->getMockBuilder(\Magento\Framework\App\Helper\Context::class)
40+
$this->contextMock = $this->getMockBuilder(Context::class)
3441
->disableOriginalConstructor()
3542
->getMock();
36-
$this->itemFactoryMock = $this->getMockBuilder(\Magento\Reports\Model\ItemFactory::class)
43+
$this->itemFactoryMock = $this->getMockBuilder(ItemFactory::class)
3744
->setMethods(['create'])
3845
->disableOriginalConstructor()
3946
->getMock();
@@ -67,12 +74,12 @@ public function testGetIntervals($from, $to, $period, $results)
6774
*/
6875
public function testPrepareIntervalsCollection($from, $to, $period, $results)
6976
{
70-
$collection = $this->getMockBuilder(\Magento\Framework\Data\Collection::class)
77+
$collection = $this->getMockBuilder(Collection::class)
7178
->disableOriginalConstructor()
7279
->setMethods(['addItem'])
7380
->getMock();
7481

75-
$item = $this->getMockBuilder(\Magento\Reports\Model\Item::class)
82+
$item = $this->getMockBuilder(Item::class)
7683
->disableOriginalConstructor()
7784
->setMethods(['setPeriod', 'setIsEmpty'])
7885
->getMock();
@@ -103,44 +110,50 @@ public function intervalsDataProvider()
103110
[
104111
'from' => '2000-01-15 10:00:00',
105112
'to' => '2000-01-15 11:00:00',
106-
'period' => \Magento\Reports\Helper\Data::REPORT_PERIOD_TYPE_DAY,
107-
'results' => ['2000-01-15']
113+
'period' => Data::REPORT_PERIOD_TYPE_DAY,
114+
'results' => ['2000-01-15'],
108115
],
109116
[
110117
'from' => '2000-01-15 10:00:00',
111118
'to' => '2000-01-17 10:00:00',
112-
'period' => \Magento\Reports\Helper\Data::REPORT_PERIOD_TYPE_MONTH,
113-
'results' => ['2000-01']
119+
'period' => Data::REPORT_PERIOD_TYPE_MONTH,
120+
'results' => ['2000-01'],
114121
],
115122
[
116123
'from' => '2000-01-15 10:00:00',
117124
'to' => '2000-02-15 10:00:00',
118-
'period' => \Magento\Reports\Helper\Data::REPORT_PERIOD_TYPE_YEAR,
125+
'period' => Data::REPORT_PERIOD_TYPE_YEAR,
119126
'results' => ['2000']
120127
],
121128
[
122129
'from' => '2000-01-15 10:00:00',
123130
'to' => '2000-01-16 11:00:00',
124-
'period' => \Magento\Reports\Helper\Data::REPORT_PERIOD_TYPE_DAY,
125-
'results' => ['2000-01-15', '2000-01-16']
131+
'period' => Data::REPORT_PERIOD_TYPE_DAY,
132+
'results' => ['2000-01-15', '2000-01-16'],
126133
],
127134
[
128135
'from' => '2000-01-15 10:00:00',
129136
'to' => '2000-02-17 10:00:00',
130-
'period' => \Magento\Reports\Helper\Data::REPORT_PERIOD_TYPE_MONTH,
131-
'results' => ['2000-01', '2000-02']
137+
'period' => Data::REPORT_PERIOD_TYPE_MONTH,
138+
'results' => ['2000-01', '2000-02'],
132139
],
133140
[
134141
'from' => '2000-01-15 10:00:00',
135142
'to' => '2003-02-15 10:00:00',
136-
'period' => \Magento\Reports\Helper\Data::REPORT_PERIOD_TYPE_YEAR,
137-
'results' => ['2000', '2001', '2002', '2003']
143+
'period' => Data::REPORT_PERIOD_TYPE_YEAR,
144+
'results' => ['2000', '2001', '2002', '2003'],
145+
],
146+
[
147+
'from' => '2000-12-31 10:00:00',
148+
'to' => '2001-01-01 10:00:00',
149+
'period' => Data::REPORT_PERIOD_TYPE_YEAR,
150+
'results' => ['2000', '2001'],
138151
],
139152
[
140153
'from' => '',
141154
'to' => '',
142-
'period' => \Magento\Reports\Helper\Data::REPORT_PERIOD_TYPE_YEAR,
143-
'results' => []
155+
'period' => Data::REPORT_PERIOD_TYPE_YEAR,
156+
'results' => [],
144157
]
145158
];
146159
}

dev/tests/functional/tests/app/Magento/Reports/Test/Constraint/AssertReportStatisticsNoticeMessage.php

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
namespace Magento\Reports\Test\Constraint;
88

99
use Magento\Reports\Test\Page\Adminhtml\SalesReport;
10-
use Magento\Sales\Test\Fixture\OrderInjectable;
11-
use DateTime;
1210

1311
/**
1412
* Assert that message in Sales Reports Pages displays correct date/time.
@@ -27,22 +25,22 @@ class AssertReportStatisticsNoticeMessage extends AbstractAssertSalesReportResul
2725
*
2826
* @param array $salesReport
2927
* @param SalesReport $salesReportPage
30-
* @param DateTime $currentDate
3128
* @return void
3229
*/
3330
public function processAssert(
3431
array $salesReport,
35-
SalesReport $salesReportPage,
36-
DateTime $currentDate
32+
SalesReport $salesReportPage
3733
) {
34+
$timezone = new \DateTimeZone($_ENV['magento_timezone']);
35+
$initialDate = new \DateTime('now', $timezone);
3836
$this->salesReportPage = $salesReportPage;
3937
$this->searchInSalesReportGrid($salesReport);
40-
$date = $this->getLastUpdatedDate();
41-
$currentDateTime = $currentDate->format('M j, Y, g');
42-
$displayedDateTime = date('M j, Y, g', strtotime($date));
43-
\PHPUnit\Framework\Assert::assertEquals(
44-
$currentDateTime,
45-
$displayedDateTime,
38+
$displayedDate = new \DateTime($this->getLastUpdatedDate(), $timezone);
39+
$currentDate = new \DateTime('now', $timezone);
40+
41+
\PHPUnit\Framework\Assert::assertTrue(
42+
$displayedDate->getTimestamp() > $initialDate->getTimestamp()
43+
&& $displayedDate->getTimestamp() < $currentDate->getTimestamp(),
4644
"Message in Sales Reports Page is displayed in an incorrect timezone."
4745
);
4846
}

dev/tests/functional/tests/app/Magento/Reports/Test/TestCase/SalesOrderReportEntityTest.xml

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
<constraint name="Magento\Reports\Test\Constraint\AssertReportStatisticsNoticeMessage" />
2323
</variation>
2424
<variation name="SalesOrderReportEntityTestVariation2">
25-
<data name="tag" xsi:type="string">stable:no</data>
2625
<data name="order/dataset" xsi:type="string">default</data>
2726
<data name="order/data/price/dataset" xsi:type="string">full_invoice</data>
2827
<data name="salesReport/report_type" xsi:type="string">Order Created</data>
@@ -36,7 +35,6 @@
3635
<constraint name="Magento\Reports\Test\Constraint\AssertSalesReportTotalResult" />
3736
</variation>
3837
<variation name="SalesOrderReportEntityTestVariation3">
39-
<data name="tag" xsi:type="string">stable:no</data>
4038
<data name="order/dataset" xsi:type="string">default</data>
4139
<data name="order/data/price/dataset" xsi:type="string">full_invoice</data>
4240
<data name="salesReport/report_type" xsi:type="string">Order Updated</data>
@@ -50,5 +48,19 @@
5048
<constraint name="Magento\Reports\Test\Constraint\AssertSalesReportIntervalResult" />
5149
<constraint name="Magento\Reports\Test\Constraint\AssertSalesReportTotalResult" />
5250
</variation>
51+
<variation name="SalesOrderReportEntityTestVariation4">
52+
<data name="order/dataset" xsi:type="string">default</data>
53+
<data name="order/data/price/dataset" xsi:type="string">full_invoice</data>
54+
<data name="salesReport/report_type" xsi:type="string">Order Created</data>
55+
<data name="salesReport/period_type" xsi:type="string">Year</data>
56+
<data name="salesReport/from" xsi:type="string">12/31/Y 12:00 a-1 year</data>
57+
<data name="salesReport/to" xsi:type="string">m/d/Y 12:00</data>
58+
<data name="salesReport/show_order_statuses" xsi:type="string">Any</data>
59+
<data name="salesReport/show_empty_rows" xsi:type="string">Yes</data>
60+
<data name="salesReport/show_actual_columns" xsi:type="string">No</data>
61+
<constraint name="Magento\Reports\Test\Constraint\AssertSalesReportIntervalResult" />
62+
<constraint name="Magento\Reports\Test\Constraint\AssertSalesReportTotalResult" />
63+
<constraint name="Magento\Reports\Test\Constraint\AssertReportStatisticsNoticeMessage" />
64+
</variation>
5365
</testCase>
5466
</config>

dev/tests/functional/tests/app/Magento/Reports/Test/TestCase/SalesRefundsReportEntityTest.xml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
<constraint name="Magento\Reports\Test\Constraint\AssertRefundReportIntervalResult" />
2121
</variation>
2222
<variation name="SalesRefundsReportEntityTestVariation2">
23-
<data name="tag" xsi:type="string">stable:no</data>
2423
<data name="description" xsi:type="string">assert refunds month report</data>
2524
<data name="order/dataset" xsi:type="string">default</data>
2625
<data name="order/data/price/dataset" xsi:type="string">full_invoice</data>
@@ -33,7 +32,6 @@
3332
<constraint name="Magento\Reports\Test\Constraint\AssertRefundReportIntervalResult" />
3433
</variation>
3534
<variation name="SalesRefundsReportEntityTestVariation3">
36-
<data name="tag" xsi:type="string">stable:no</data>
3735
<data name="description" xsi:type="string">assert refund Daily report</data>
3836
<data name="order/dataset" xsi:type="string">default</data>
3937
<data name="order/data/price/dataset" xsi:type="string">full_invoice</data>

0 commit comments

Comments
 (0)