Skip to content

Commit 147f287

Browse files
committed
Merge branch 'MAGETWO-65329' into MAGETWO-65001
2 parents d7e07f9 + a874c55 commit 147f287

File tree

7 files changed

+150
-12
lines changed

7 files changed

+150
-12
lines changed

app/code/Magento/Analytics/Cron/CollectData.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*/
66
namespace Magento\Analytics\Cron;
77

8-
use Magento\Analytics\Model\ExportDataHandler;
8+
use Magento\Analytics\Model\ExportDataHandlerInterface;
99
use Magento\Analytics\Model\SubscriptionStatusProvider;
1010

1111
/**
@@ -28,11 +28,11 @@ class CollectData
2828
private $subscriptionStatus;
2929

3030
/**
31-
* @param ExportDataHandler $exportDataHandler
31+
* @param ExportDataHandlerInterface $exportDataHandler
3232
* @param SubscriptionStatusProvider $subscriptionStatus
3333
*/
3434
public function __construct(
35-
ExportDataHandler $exportDataHandler,
35+
ExportDataHandlerInterface $exportDataHandler,
3636
SubscriptionStatusProvider $subscriptionStatus
3737
) {
3838
$this->exportDataHandler = $exportDataHandler;

app/code/Magento/Analytics/Model/ExportDataHandler.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
/**
1616
* Class for the handling of a new data collection for MBI.
1717
*/
18-
class ExportDataHandler
18+
class ExportDataHandler implements ExportDataHandlerInterface
1919
{
2020
/**
2121
* Subdirectory path for all temporary files.
@@ -84,9 +84,7 @@ public function __construct(
8484
}
8585

8686
/**
87-
* Execute collecting new data for MBI.
88-
*
89-
* @return bool
87+
* @inheritdoc
9088
*/
9189
public function prepareExportData()
9290
{
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
/**
3+
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Analytics\Model;
7+
8+
/**
9+
* The interface represents the type of classes that handling of a new data collection for MBI.
10+
*/
11+
interface ExportDataHandlerInterface
12+
{
13+
/**
14+
* Execute collecting new data for MBI.
15+
*
16+
* @return bool
17+
*/
18+
public function prepareExportData();
19+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?php
2+
/**
3+
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Analytics\Model;
7+
8+
/**
9+
* Class which add notification behaviour to classes that handling of a new data collection for MBI.
10+
*/
11+
class ExportDataHandlerNotification implements ExportDataHandlerInterface
12+
{
13+
/**
14+
* @var ExportDataHandlerInterface
15+
*/
16+
private $exportDataHandler;
17+
18+
/**
19+
* @var Connector
20+
*/
21+
private $analyticsConnector;
22+
23+
/**
24+
* ExportDataHandlerNotification constructor.
25+
*
26+
* @param ExportDataHandlerInterface $exportDataHandler
27+
* @param Connector $connector
28+
*/
29+
public function __construct(ExportDataHandlerInterface $exportDataHandler, Connector $connector)
30+
{
31+
$this->exportDataHandler = $exportDataHandler;
32+
$this->analyticsConnector = $connector;
33+
}
34+
35+
/**
36+
* {@inheritdoc}
37+
* Execute notification command.
38+
*
39+
* @return bool
40+
*/
41+
public function prepareExportData()
42+
{
43+
$result = $this->exportDataHandler->prepareExportData();
44+
$this->analyticsConnector->execute('notifyDataChanged');
45+
return $result;
46+
}
47+
}

app/code/Magento/Analytics/Test/Unit/Cron/CollectDataTest.php

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
namespace Magento\Analytics\Test\Unit\Cron;
77

88
use Magento\Analytics\Cron\CollectData;
9-
use Magento\Analytics\Model\ExportDataHandler;
9+
use Magento\Analytics\Model\ExportDataHandlerInterface;
1010
use Magento\Analytics\Model\SubscriptionStatusProvider;
1111
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
1212

@@ -16,7 +16,7 @@
1616
class CollectDataTest extends \PHPUnit_Framework_TestCase
1717
{
1818
/**
19-
* @var ExportDataHandler|\PHPUnit_Framework_MockObject_MockObject
19+
* @var ExportDataHandlerInterface|\PHPUnit_Framework_MockObject_MockObject
2020
*/
2121
private $exportDataHandlerMock;
2222

@@ -40,9 +40,8 @@ class CollectDataTest extends \PHPUnit_Framework_TestCase
4040
*/
4141
protected function setUp()
4242
{
43-
$this->exportDataHandlerMock = $this->getMockBuilder(ExportDataHandler::class)
44-
->disableOriginalConstructor()
45-
->getMock();
43+
$this->exportDataHandlerMock = $this->getMockBuilder(ExportDataHandlerInterface::class)
44+
->getMockForAbstractClass();
4645

4746
$this->subscriptionStatusMock = $this->getMockBuilder(SubscriptionStatusProvider::class)
4847
->disableOriginalConstructor()
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
<?php
2+
/**
3+
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Analytics\Test\Unit\Model;
7+
8+
use Magento\Analytics\Model\Connector;
9+
use Magento\Analytics\Model\ExportDataHandlerInterface;
10+
use Magento\Analytics\Model\ExportDataHandlerNotification;
11+
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
12+
13+
/**
14+
* Class ExportDataHandlerNotificationTest
15+
*/
16+
class ExportDataHandlerNotificationTest extends \PHPUnit_Framework_TestCase
17+
{
18+
/**
19+
* @var ObjectManagerHelper
20+
*/
21+
private $objectManagerHelper;
22+
23+
/**
24+
* @return void
25+
*/
26+
public function setUp()
27+
{
28+
$this->objectManagerHelper = new ObjectManagerHelper($this);
29+
}
30+
31+
/**
32+
* @return void
33+
*/
34+
public function testThatNotifyExecuted()
35+
{
36+
$expectedResult = true;
37+
$notifyCommandName = 'notifyDataChanged';
38+
$exportDataHandlerMockObject = $this->createExportDataHandlerMock();
39+
$analyticsConnectorMockObject = $this->createAnalyticsConnectorMock();
40+
/**
41+
* @var $exportDataHandlerNotification ExportDataHandlerNotification
42+
*/
43+
$exportDataHandlerNotification = $this->objectManagerHelper->getObject(
44+
ExportDataHandlerNotification::class,
45+
[
46+
'exportDataHandler' => $exportDataHandlerMockObject,
47+
'connector' => $analyticsConnectorMockObject,
48+
]
49+
);
50+
$exportDataHandlerMockObject->expects($this->once())
51+
->method('prepareExportData')
52+
->willReturn($expectedResult);
53+
$analyticsConnectorMockObject->expects($this->once())
54+
->method('execute')
55+
->with($notifyCommandName);
56+
$this->assertEquals($expectedResult, $exportDataHandlerNotification->prepareExportData());
57+
}
58+
59+
/**
60+
* @return \PHPUnit_Framework_MockObject_MockObject
61+
*/
62+
private function createExportDataHandlerMock()
63+
{
64+
return $this->getMockBuilder(ExportDataHandlerInterface::class)->getMockForAbstractClass();
65+
}
66+
67+
/**
68+
* @return \PHPUnit_Framework_MockObject_MockObject
69+
*/
70+
private function createAnalyticsConnectorMock()
71+
{
72+
return $this->getMockBuilder(Connector::class)->disableOriginalConstructor()->getMock();
73+
}
74+
}

app/code/Magento/Analytics/etc/di.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
<preference for="Magento\Analytics\Api\LinkProviderInterface" type="Magento\Analytics\Model\LinkProvider" />
1313
<preference for="Magento\Analytics\Api\Data\LinkInterface" type="Magento\Analytics\Model\Link" />
1414
<preference for="Magento\Analytics\Model\Connector\Http\ClientInterface" type="Magento\Analytics\Model\Connector\Http\Client\Curl" />
15+
<preference for="Magento\Analytics\Model\ExportDataHandlerInterface" type="Magento\Analytics\Model\ExportDataHandler" />
1516
<type name="Magento\Analytics\Model\Connector">
1617
<arguments>
1718
<argument name="commands" xsi:type="array">

0 commit comments

Comments
 (0)