Skip to content

Commit b4f69c3

Browse files
committed
Merge remote-tracking branch 'mainline/develop' into MAGETWO-58976
2 parents adb3c21 + dbbf925 commit b4f69c3

File tree

66 files changed

+328
-113
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+328
-113
lines changed

app/code/Magento/Catalog/Controller/Adminhtml/Product/MassStatus.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,11 @@ public function execute()
8484
$productIds = $collection->getAllIds();
8585
$storeId = (int) $this->getRequest()->getParam('store', 0);
8686
$status = (int) $this->getRequest()->getParam('status');
87+
$filters = (array)$this->getRequest()->getParam('filters', []);
88+
89+
if (isset($filters['store_id'])) {
90+
$storeId = (int)$filters['store_id'];
91+
}
8792

8893
try {
8994
$this->_validateMassStatus($productIds, $status);

app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/Product/MassStatusTest.php

Lines changed: 102 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -6,32 +6,74 @@
66
*/
77
namespace Magento\Catalog\Test\Unit\Controller\Adminhtml\Product;
88

9+
use Magento\Ui\Component\MassAction\Filter;
10+
use Magento\Backend\Model\View\Result\Redirect;
11+
use Magento\Catalog\Model\Indexer\Product\Price\Processor;
12+
use Magento\Catalog\Controller\Adminhtml\Product\Builder;
13+
use Magento\Framework\Data\Collection\AbstractDb;
14+
use Magento\Catalog\Model\Product\Action;
15+
16+
/**
17+
* Class MassStatusTest
18+
*
19+
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
20+
*/
921
class MassStatusTest extends \Magento\Catalog\Test\Unit\Controller\Adminhtml\ProductTest
1022
{
1123
/**
12-
* @var \PHPUnit_Framework_MockObject_MockObject
24+
* @var Processor|\PHPUnit_Framework_MockObject_MockObject
1325
*/
14-
protected $priceProcessor;
26+
private $priceProcessorMock;
1527

16-
/** @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Backend\Model\View\Result\Redirect */
17-
protected $resultRedirect;
28+
/**
29+
* @var Redirect|\PHPUnit_Framework_MockObject_MockObject
30+
*/
31+
private $resultRedirectMock;
32+
33+
/**
34+
* @var Filter|\PHPUnit_Framework_MockObject_MockObject
35+
*/
36+
private $filterMock;
37+
38+
/**
39+
* @var Builder|\PHPUnit_Framework_MockObject_MockObject
40+
*/
41+
private $productBuilderMock;
42+
43+
/**
44+
* @var AbstractDb|\PHPUnit_Framework_MockObject_MockObject
45+
*/
46+
private $abstractDbMock;
47+
48+
/**
49+
* @var Action|\PHPUnit_Framework_MockObject_MockObject
50+
*/
51+
private $actionMock;
1852

1953
protected function setUp()
2054
{
21-
$this->priceProcessor = $this->getMockBuilder(\Magento\Catalog\Model\Indexer\Product\Price\Processor::class)
55+
$this->priceProcessorMock = $this->getMockBuilder(Processor::class)
2256
->disableOriginalConstructor()->getMock();
57+
$this->productBuilderMock = $this->getMockBuilder(Builder::class)
58+
->setMethods(['build'])
59+
->disableOriginalConstructor()
60+
->getMock();
2361

24-
$productBuilder = $this->getMockBuilder(
25-
\Magento\Catalog\Controller\Adminhtml\Product\Builder::class
26-
)->setMethods(['build'])->disableOriginalConstructor()->getMock();
27-
28-
$product = $this->getMockBuilder(\Magento\Catalog\Model\Product::class)->disableOriginalConstructor()
29-
->setMethods(['getTypeId', 'getStoreId', '__sleep', '__wakeup'])->getMock();
30-
$product->expects($this->any())->method('getTypeId')->will($this->returnValue('simple'));
31-
$product->expects($this->any())->method('getStoreId')->will($this->returnValue('1'));
32-
$productBuilder->expects($this->any())->method('build')->will($this->returnValue($product));
62+
$productMock = $this->getMockBuilder(\Magento\Catalog\Model\Product::class)
63+
->disableOriginalConstructor()
64+
->setMethods(['getTypeId', 'getStoreId', '__sleep', '__wakeup'])
65+
->getMock();
66+
$productMock->expects($this->any())
67+
->method('getTypeId')
68+
->willReturn('simple');
69+
$productMock->expects($this->any())
70+
->method('getStoreId')
71+
->willReturn('1');
72+
$this->productBuilderMock->expects($this->any())
73+
->method('build')
74+
->willReturn($productMock);
3375

34-
$this->resultRedirect = $this->getMockBuilder(\Magento\Backend\Model\View\Result\Redirect::class)
76+
$this->resultRedirectMock = $this->getMockBuilder(\Magento\Backend\Model\View\Result\Redirect::class)
3577
->disableOriginalConstructor()
3678
->getMock();
3779
$resultFactory = $this->getMockBuilder(\Magento\Framework\Controller\ResultFactory::class)
@@ -41,47 +83,71 @@ protected function setUp()
4183
$resultFactory->expects($this->atLeastOnce())
4284
->method('create')
4385
->with(\Magento\Framework\Controller\ResultFactory::TYPE_REDIRECT)
44-
->willReturn($this->resultRedirect);
86+
->willReturn($this->resultRedirectMock);
4587

46-
$abstractDbMock = $this->getMockBuilder(\Magento\Framework\Data\Collection\AbstractDb::class)
88+
$this->abstractDbMock = $this->getMockBuilder(AbstractDb::class)
4789
->disableOriginalConstructor()
4890
->setMethods(['getAllIds', 'getResource'])
4991
->getMock();
50-
$abstractDbMock->expects($this->any())
51-
->method('getAllIds')
52-
->willReturn([]);
53-
54-
$filterMock = $this->getMockBuilder(\Magento\Ui\Component\MassAction\Filter::class)
92+
$this->filterMock = $this->getMockBuilder(\Magento\Ui\Component\MassAction\Filter::class)
5593
->disableOriginalConstructor()
5694
->setMethods(['getCollection'])
5795
->getMock();
58-
$filterMock->expects($this->any())
59-
->method('getCollection')
60-
->willReturn($abstractDbMock);
61-
62-
$collectionFactoryMock = $this->getMockBuilder(
63-
\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory::class
64-
)
96+
$this->actionMock = $this->getMockBuilder(Action::class)
97+
->disableOriginalConstructor()
98+
->getMock();
99+
100+
$collectionFactoryMock =
101+
$this->getMockBuilder(\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory::class)
65102
->disableOriginalConstructor()
66103
->setMethods(['create'])
67104
->getMock();
68105
$collectionFactoryMock->expects($this->any())
69106
->method('create')
70-
->willReturn($abstractDbMock);
107+
->willReturn($this->abstractDbMock);
108+
109+
$additionalParams = [
110+
'resultFactory' => $resultFactory
111+
];
112+
/** @var \Magento\Backend\App\Action\Context $context */
113+
$context = $this->initContext($additionalParams, [[Action::class, $this->actionMock]]);
71114

72-
$additionalParams = ['resultFactory' => $resultFactory];
73115
$this->action = new \Magento\Catalog\Controller\Adminhtml\Product\MassStatus(
74-
$this->initContext($additionalParams),
75-
$productBuilder,
76-
$this->priceProcessor,
77-
$filterMock,
116+
$context,
117+
$this->productBuilderMock,
118+
$this->priceProcessorMock,
119+
$this->filterMock,
78120
$collectionFactoryMock
79121
);
80122
}
81123

82124
public function testMassStatusAction()
83125
{
84-
$this->priceProcessor->expects($this->once())->method('reindexList');
126+
$storeId = 1;
127+
$status = \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_DISABLED;
128+
$filters = [
129+
'store_id' => 2,
130+
];
131+
132+
$this->filterMock->expects($this->once())
133+
->method('getCollection')
134+
->willReturn($this->abstractDbMock);
135+
$this->abstractDbMock->expects($this->once())
136+
->method('getAllIds')
137+
->willReturn([3]);
138+
$this->request->expects($this->exactly(3))
139+
->method('getParam')
140+
->willReturnMap([
141+
['store', 0, $storeId],
142+
['status', null, $status],
143+
['filters', [], $filters]
144+
]);
145+
$this->actionMock->expects($this->once())
146+
->method('updateAttributes')
147+
->with([3], ['status' => $status], 2);
148+
$this->priceProcessorMock->expects($this->once())
149+
->method('reindexList');
150+
85151
$this->action->execute();
86152
}
87153
}

app/code/Magento/Catalog/Test/Unit/Controller/Adminhtml/ProductTest.php

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
*/
66
namespace Magento\Catalog\Test\Unit\Controller\Adminhtml;
77

8+
use Magento\Catalog\Api\Data\ProductInterface;
9+
810
/**
911
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
1012
*/
@@ -25,17 +27,33 @@ abstract class ProductTest extends \PHPUnit_Framework_TestCase
2527
/** @var \Magento\Framework\App\Request\Http|\PHPUnit_Framework_MockObject_MockObject */
2628
protected $request;
2729

30+
/**
31+
* @var \Magento\Framework\ObjectManagerInterface|\PHPUnit_Framework_MockObject_MockObject
32+
*/
33+
private $objectManagerMock;
34+
2835
/**
2936
* Init context object
3037
*
3138
* @param array $additionalParams
39+
* @param array $objectManagerMap Object Manager mappings
3240
* @return \PHPUnit_Framework_MockObject_MockObject
3341
*/
34-
protected function initContext(array $additionalParams = [])
42+
protected function initContext(array $additionalParams = [], array $objectManagerMap = [])
3543
{
3644
$productActionMock = $this->getMock(\Magento\Catalog\Model\Product\Action::class, [], [], '', false);
37-
$objectManagerMock = $this->getMockForAbstractClass(\Magento\Framework\ObjectManagerInterface::class);
38-
$objectManagerMock->expects($this->any())->method('get')->will($this->returnValue($productActionMock));
45+
46+
$this->objectManagerMock = $this->getMockForAbstractClass(\Magento\Framework\ObjectManagerInterface::class);
47+
48+
if ($objectManagerMap) {
49+
$this->objectManagerMock->expects($this->any())
50+
->method('get')
51+
->willReturnMap($objectManagerMap);
52+
}
53+
54+
$this->objectManagerMock->expects($this->any())
55+
->method('get')
56+
->willReturn($productActionMock);
3957

4058
$block = $this->getMockBuilder(\Magento\Framework\View\Element\AbstractBlock::class)
4159
->disableOriginalConstructor()->getMockForAbstractClass();
@@ -93,7 +111,7 @@ protected function initContext(array $additionalParams = [])
93111
$this->context->expects($this->any())->method('getEventManager')->will($this->returnValue($eventManager));
94112
$this->context->expects($this->any())->method('getRequest')->will($this->returnValue($requestInterfaceMock));
95113
$this->context->expects($this->any())->method('getResponse')->will($this->returnValue($responseInterfaceMock));
96-
$this->context->expects($this->any())->method('getObjectManager')->will($this->returnValue($objectManagerMock));
114+
$this->context->expects($this->any())->method('getObjectManager')->willReturn($this->objectManagerMock);
97115

98116
$this->context->expects($this->any())->method('getMessageManager')
99117
->will($this->returnValue($managerInterfaceMock));

app/code/Magento/Ui/view/base/web/js/grid/data-storage.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,10 @@ define([
7979
getData: function (params, options) {
8080
var cachedRequest = this.getRequest(params);
8181

82+
if (params && params.filters && params.filters['store_id']) {
83+
cachedRequest = false;
84+
}
85+
8286
options = options || {};
8387

8488
return !options.refresh && cachedRequest ?

dev/tests/functional/tests/app/Magento/Authorizenet/Test/TestCase/OnePageCheckoutTest.xml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66
*/
77
-->
88
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
9-
<testCase name="Magento\Checkout\Test\TestCase\OnePageCheckoutTest" summary="One page check out with Authorize.Net payment method.">
10-
<variation name="OnePageCheckoutAuthorizenetTestVariation1" summary="Check Out as a Guest with Authorize.Net and Offline Shipping method" ticketId="MAGETWO-12832">
9+
<testCase name="Magento\Checkout\Test\TestCase\OnePageCheckoutTest" summary="One page check out with Authorize.Net Direct Post payment method.">
10+
<variation name="OnePageCheckoutAuthorizenetTestVariation1" summary="CheckOut with Authorize.Net Direct Post" ticketId="MAGETWO-59170">
1111
<data name="products/0" xsi:type="string">catalogProductSimple::product_10_dollar</data>
1212
<data name="customer/dataset" xsi:type="string">default</data>
13-
<data name="shippingAddress/dataset" xsi:type="string">US_address_1</data>
14-
<data name="checkoutMethod" xsi:type="string">guest</data>
13+
<data name="checkoutMethod" xsi:type="string">login</data>
14+
<data name="shippingAddress/dataset" xsi:type="string">US_address_1_without_email</data>
1515
<data name="shipping/shipping_service" xsi:type="string">Flat Rate</data>
1616
<data name="shipping/shipping_method" xsi:type="string">Fixed</data>
1717
<data name="prices" xsi:type="array">
@@ -26,7 +26,7 @@
2626
<item name="isClosed" xsi:type="string">No</item>
2727
<item name="transactionType" xsi:type="string">Authorization</item>
2828
</data>
29-
<data name="tag" xsi:type="string">test_type:3rd_party_test</data>
29+
<data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
3030
<constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
3131
<constraint name="Magento\Checkout\Test\Constraint\AssertMinicartEmpty" />
3232
<constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />

dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/BraintreeSettlementReportTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ class BraintreeSettlementReportTest extends Scenario
3838
/* tags */
3939
const MVP = 'yes';
4040
const TEST_TYPE = '3rd_party_test';
41+
const SEVERITY = 'S1';
4142
/* end tags */
4243

4344
/**

dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/BraintreeSettlementReportTest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
<data name="creditCard/dataset" xsi:type="string">visa_braintree</data>
2323
<data name="configData" xsi:type="string">braintree</data>
2424
<data name="status" xsi:type="string">Processing</data>
25-
<data name="tag" xsi:type="string">test_type:extended_acceptance_test, test_type:3rd_party_test</data>
25+
<data name="tag" xsi:type="string">test_type:extended_acceptance_test, test_type:3rd_party_test, severity:S1</data>
2626
<constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
2727
<constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
2828
<constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />

dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalCartTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class CheckoutWithBraintreePaypalCartTest extends Scenario
3333
/* tags */
3434
const MVP = 'yes';
3535
const TEST_TYPE = '3rd_party_test';
36+
const SEVERITY = 'S0';
3637
/* end tags */
3738

3839
/**

dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalCartTest.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<data name="payment/method" xsi:type="string">braintree_paypal</data>
2121
<data name="configData" xsi:type="string">braintree, braintree_paypal, braintree_paypal_skip_order_review</data>
2222
<data name="status" xsi:type="string">Processing</data>
23-
<data name="tag" xsi:type="string">test_type:3rd_party_test</data>
23+
<data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
2424
<constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
2525
<constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
2626
<constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
@@ -42,7 +42,7 @@
4242
<data name="payment/method" xsi:type="string">braintree_paypal</data>
4343
<data name="configData" xsi:type="string">braintree, braintree_paypal, braintree_paypal_sale, braintree_paypal_skip_order_review</data>
4444
<data name="status" xsi:type="string">Processing</data>
45-
<data name="tag" xsi:type="string">test_type:3rd_party_test</data>
45+
<data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S0</data>
4646
<constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
4747
<constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
4848
<constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />

dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CheckoutWithBraintreePaypalMinicartTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class CheckoutWithBraintreePaypalMinicartTest extends Scenario
3333
/* tags */
3434
const MVP = 'yes';
3535
const TEST_TYPE = '3rd_party_test';
36+
const SEVERITY = 'S0';
3637
/* end tags */
3738

3839
/**

0 commit comments

Comments
 (0)