Skip to content

Commit 1391c57

Browse files
authored
Merge pull request #4575 from magento-tsg/2.3.3-develop-pr58
[TSG] Fixes for 2.3 (pr58) (2.3.3-develop)
2 parents af53acf + 8b3529b commit 1391c57

File tree

22 files changed

+401
-39
lines changed

22 files changed

+401
-39
lines changed

app/code/Magento/Checkout/Test/Mftf/Test/StorefrontUKCustomerCheckoutWithCouponTest.xml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
</annotations>
1919

2020
<before>
21-
<actionGroup ref="LoginAsAdmin" stepKey="loginToAdminPanel"/>
21+
<magentoCLI command="downloadable:domains:add" arguments="example.com static.magento.com" stepKey="addDownloadableDomain"/>
2222
<createData entity="ApiDownloadableProduct" stepKey="createDownloadableProduct">
2323
<field key="price">20.00</field>
2424
</createData>
@@ -38,10 +38,12 @@
3838
</createData>
3939
</before>
4040
<after>
41+
<magentoCLI command="downloadable:domains:remove" arguments="example.com static.magento.com" stepKey="removeDownloadableDomain"/>
4142
<deleteData createDataKey="createDownloadableProduct" stepKey="deleteProduct"/>
4243
<deleteData createDataKey="virtualProduct" stepKey="deleteVirtualProduct"/>
4344
<deleteData createDataKey="createCustomer" stepKey="deleteCustomer"/>
4445
<deleteData createDataKey="createSalesRule" stepKey="deleteSalesRule"/>
46+
<actionGroup ref="AdminOrdersGridClearFiltersActionGroup" stepKey="clearOrderFilters"/>
4547
<actionGroup ref="logout" stepKey="logout"/>
4648
</after>
4749

@@ -106,6 +108,9 @@
106108
<seeElement selector="{{StorefrontMiniCartSection.emptyMiniCart}}" stepKey="assertEmptyCart" />
107109
<grabTextFrom selector="{{CheckoutSuccessMainSection.orderLink}}" stepKey="orderId"/>
108110

111+
<!-- Login to Admin Page -->
112+
<actionGroup ref="LoginAsAdmin" stepKey="loginToAdminPanel"/>
113+
109114
<!-- Open Order Index Page -->
110115
<amOnPage url="{{AdminOrdersPage.url}}" stepKey="goToOrders"/>
111116
<waitForPageLoad stepKey="waitForPageLoad5"/>
@@ -127,4 +132,4 @@
127132
<see selector="{{AdminOrderTotalSection.grandTotal}}" userInput="$15.00" stepKey="seeGrandTotal"/>
128133
<see selector="{{AdminOrderDetailsInformationSection.orderStatus}}" userInput="Pending" stepKey="seeOrderStatus"/>
129134
</test>
130-
</tests>
135+
</tests>

app/code/Magento/Customer/Test/Mftf/Section/AdminCustomerAddressesGridActionsSection.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,6 @@
1717
<element name="filters" type="button" selector="button[data-action='grid-filter-expand']" timeout="30"/>
1818
<element name="ok" type="button" selector="//button[@data-role='action']//span[text()='OK']" timeout="30"/>
1919
<element name="headerRow" type="text" selector=".admin__data-grid-header-row.row.row-gutter"/>
20+
<element name="clearFilter" type="button" selector=".admin__data-grid-header .admin__data-grid-filters-current button.action-clear" timeout="30"/>
2021
</section>
2122
</sections>

app/code/Magento/Customer/Test/Mftf/Test/AdminCreateCustomerWithCountryUSATest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@
8585
<see selector="{{AdminCustomerAddressesDefaultBillingSection.addressDetails}}" userInput="{{US_Address_CA.telephone}}" stepKey="seePhoneNumberInDefaultAddressSection"/>
8686

8787
<!--Assert Customer Address Grid -->
88+
<conditionalClick selector="{{AdminCustomerAddressesGridActionsSection.clearFilter}}" dependentSelector="{{AdminCustomerAddressesGridActionsSection.clearFilter}}" visible="true" stepKey="clearAddressesGridFilter"/>
8889
<see selector="{{AdminCustomerAddressesGridSection.customerAddressGrid}}" userInput="{{US_Address_CA.street}}" stepKey="seeStreetAddress"/>
8990
<see selector="{{AdminCustomerAddressesGridSection.customerAddressGrid}}" userInput="{{US_Address_CA.city}}" stepKey="seeCity"/>
9091
<see selector="{{AdminCustomerAddressesGridSection.customerAddressGrid}}" userInput="{{US_Address_CA.country}}" stepKey="seeCountry"/>

app/code/Magento/Downloadable/Controller/Adminhtml/Downloadable/File/Upload.php

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
use Magento\Framework\App\Action\HttpPostActionInterface;
99
use Magento\Framework\Controller\ResultFactory;
10+
use Magento\Framework\Exception\FileSystemException;
11+
use Magento\Framework\Exception\LocalizedException;
1012

1113
/**
1214
* Class Upload
@@ -76,23 +78,27 @@ public function __construct(
7678
*/
7779
public function execute()
7880
{
79-
$type = $this->getRequest()->getParam('type');
80-
$tmpPath = '';
81-
if ($type == 'samples') {
82-
$tmpPath = $this->_sample->getBaseTmpPath();
83-
} elseif ($type == 'links') {
84-
$tmpPath = $this->_link->getBaseTmpPath();
85-
} elseif ($type == 'link_samples') {
86-
$tmpPath = $this->_link->getBaseSampleTmpPath();
87-
}
88-
8981
try {
82+
$type = $this->getRequest()->getParam('type');
83+
$tmpPath = '';
84+
if ($type === 'samples') {
85+
$tmpPath = $this->_sample->getBaseTmpPath();
86+
} elseif ($type === 'links') {
87+
$tmpPath = $this->_link->getBaseTmpPath();
88+
} elseif ($type === 'link_samples') {
89+
$tmpPath = $this->_link->getBaseSampleTmpPath();
90+
} else {
91+
throw new LocalizedException(__('Upload type can not be determined.'));
92+
}
93+
9094
$uploader = $this->uploaderFactory->create(['fileId' => $type]);
9195

9296
$result = $this->_fileHelper->uploadFromTmp($tmpPath, $uploader);
9397

9498
if (!$result) {
95-
throw new \Exception('File can not be moved from temporary folder to the destination folder.');
99+
throw new FileSystemException(
100+
__('File can not be moved from temporary folder to the destination folder.')
101+
);
96102
}
97103

98104
unset($result['tmp_name'], $result['path']);
@@ -101,7 +107,7 @@ public function execute()
101107
$relativePath = rtrim($tmpPath, '/') . '/' . ltrim($result['file'], '/');
102108
$this->storageDatabase->saveFile($relativePath);
103109
}
104-
} catch (\Exception $e) {
110+
} catch (\Throwable $e) {
105111
$result = ['error' => $e->getMessage(), 'errorcode' => $e->getCode()];
106112
}
107113

app/code/Magento/Eav/Model/ResourceModel/Entity/Attribute.php

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111
use Magento\Eav\Model\Entity\Attribute as EntityAttribute;
1212
use Magento\Framework\App\ObjectManager;
1313
use Magento\Framework\DB\Select;
14+
use Magento\Framework\Exception\CouldNotDeleteException;
1415
use Magento\Framework\Model\AbstractModel;
16+
use Magento\Framework\Model\ResourceModel\Db\AbstractDb;
1517

1618
/**
1719
* EAV attribute resource model
@@ -20,7 +22,7 @@
2022
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
2123
* @since 100.0.2
2224
*/
23-
class Attribute extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
25+
class Attribute extends AbstractDb
2426
{
2527
/**
2628
* Eav Entity attributes cache
@@ -189,6 +191,23 @@ protected function _beforeSave(AbstractModel $object)
189191
return parent::_beforeSave($object);
190192
}
191193

194+
/**
195+
* @inheritdoc
196+
*
197+
* @param AbstractModel $attribute
198+
* @return AbstractDb
199+
* @throws CouldNotDeleteException
200+
*/
201+
protected function _beforeDelete(AbstractModel $attribute)
202+
{
203+
/** @var $attribute \Magento\Eav\Api\Data\AttributeInterface */
204+
if ($attribute->getId() && !$attribute->getIsUserDefined()) {
205+
throw new CouldNotDeleteException(__("The system attribute can't be deleted."));
206+
}
207+
208+
return parent::_beforeDelete($attribute);
209+
}
210+
192211
/**
193212
* Save additional attribute data after save attribute
194213
*

app/code/Magento/Sales/Test/Mftf/Test/StorefrontPrintOrderGuestTest.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
<group value="mtf_migrated"/>
2020
</annotations>
2121
<before>
22+
<magentoCLI command="downloadable:domains:add" arguments="example.com static.magento.com" stepKey="addDownloadableDomain"/>
2223
<actionGroup ref="LoginAsAdmin" stepKey="LoginAsAdmin"/>
2324
<createData entity="ApiCategory" stepKey="createCategory"/>
2425

@@ -207,6 +208,7 @@
207208
<actionGroup ref="orderSelectFlatRateShipping" stepKey="selectFlatRate"/>
208209
</before>
209210
<after>
211+
<magentoCLI command="downloadable:domains:remove" arguments="example.com static.magento.com" stepKey="removeDownloadableDomain"/>
210212
<deleteData createDataKey="downloadableProduct" stepKey="deleteProduct"/>
211213

212214
<deleteData createDataKey="createConfigChildProduct1" stepKey="deleteConfigChildProduct1"/>
@@ -275,4 +277,4 @@
275277
<see userInput="Flat Rate - Fixed" selector="{{StorefrontOrderDetailsSection.shippingMethod}}" stepKey="assertShippingMethodOnPrintOrder"/>
276278
<switchToPreviousTab stepKey="switchToPreviousTab"/>
277279
</test>
278-
</tests>
280+
</tests>

dev/tests/api-functional/testsuite/Magento/Catalog/Api/ProductAttributeRepositoryTest.php

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,13 @@
44
* Copyright © Magento, Inc. All rights reserved.
55
* See COPYING.txt for license details.
66
*/
7-
87
namespace Magento\Catalog\Api;
98

109
use Magento\Framework\Webapi\Exception as HTTPExceptionCodes;
11-
use Magento\TestFramework\Helper\Bootstrap;
1210

11+
/**
12+
* API tests for \Magento\Catalog\Model\Product\Attribute\Repository.
13+
*/
1314
class ProductAttributeRepositoryTest extends \Magento\TestFramework\TestCase\WebapiAbstract
1415
{
1516
const SERVICE_NAME = 'catalogProductAttributeRepositoryV1';
@@ -130,6 +131,7 @@ public function testCreateWithExceptionIfAttributeAlreadyExists()
130131
try {
131132
$this->createAttribute($attributeCode);
132133
$this->fail("Expected exception");
134+
// phpcs:ignore Magento2.CodeAnalysis.EmptyBlock.DetectedCatch
133135
} catch (\SoapFault $e) {
134136
//Expects soap exception
135137
} catch (\Exception $e) {
@@ -320,6 +322,20 @@ public function testDeleteById()
320322
$this->assertTrue($this->deleteAttribute($attributeCode));
321323
}
322324

325+
/**
326+
* Trying to delete system attribute.
327+
*
328+
* @magentoApiDataFixture Magento/Catalog/_files/product_system_attribute.php
329+
* @expectedException \Exception
330+
* @expectedExceptionMessage The system attribute can't be deleted.
331+
* @return void
332+
*/
333+
public function testDeleteSystemAttributeById(): void
334+
{
335+
$attributeCode = 'test_attribute_code_333';
336+
$this->deleteAttribute($attributeCode);
337+
}
338+
323339
/**
324340
* @return void
325341
*/

dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Cart/Sidebar/Item.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ class Item extends Sidebar
6262
*/
6363
public function removeItemFromMiniCart()
6464
{
65+
$this->waitForDeleteButtonVisible();
6566
$this->_rootElement->find($this->removeItem)->click();
6667
$element = $this->browser->find($this->confirmModal);
6768
/** @var \Magento\Ui\Test\Block\Adminhtml\Modal $modal */
@@ -70,6 +71,23 @@ public function removeItemFromMiniCart()
7071
$modal->waitModalWindowToDisappear();
7172
}
7273

74+
/**
75+
* Wait for Delete button is visible in the block.
76+
*
77+
* @return bool|null
78+
*/
79+
private function waitForDeleteButtonVisible()
80+
{
81+
$rootElement = $this->_rootElement;
82+
$deleteButtonSelector = $this->removeItem;
83+
return $rootElement->waitUntil(
84+
function () use ($rootElement, $deleteButtonSelector) {
85+
$element = $rootElement->find($deleteButtonSelector);
86+
return $element->isVisible() ? true : null;
87+
}
88+
);
89+
}
90+
7391
/**
7492
* Click "Edit item" button.
7593
*

dev/tests/integration/testsuite/Magento/Catalog/Model/Indexer/Product/Flat/ProcessorTest.php

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@
55
*/
66
namespace Magento\Catalog\Model\Indexer\Product\Flat;
77

8+
use Magento\Catalog\Model\Product\Attribute\Repository;
9+
810
/**
9-
* Class FullTest
11+
* Integration tests for \Magento\Catalog\Model\Indexer\Product\Flat\Processor.
1012
*/
1113
class ProcessorTest extends \Magento\TestFramework\Indexer\TestCase
1214
{
@@ -64,22 +66,23 @@ public function testSaveAttribute()
6466
}
6567

6668
/**
67-
* @magentoDbIsolation enabled
69+
* @magentoDbIsolation disabled
6870
* @magentoAppIsolation enabled
6971
* @magentoAppArea adminhtml
70-
* @magentoDataFixture Magento/Catalog/_files/multiple_products.php
72+
* @magentoDataFixture Magento/Catalog/_files/product_simple_with_custom_attribute_in_flat.php
7173
* @magentoConfigFixture current_store catalog/frontend/flat_catalog_product 1
7274
*/
7375
public function testDeleteAttribute()
7476
{
75-
/** @var $product \Magento\Catalog\Model\Product */
76-
$product = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
77-
\Magento\Catalog\Model\Product::class
78-
);
79-
80-
/** @var \Magento\Catalog\Model\ResourceModel\Product $productResource */
81-
$productResource = $product->getResource();
82-
$productResource->getAttribute('media_gallery')->delete();
77+
/** @var \Magento\Catalog\Model\ResourceModel\Eav\Attribute $model */
78+
$model = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
79+
->get(\Magento\Catalog\Model\ResourceModel\Eav\Attribute::class);
80+
/** @var Repository $productAttributeRepository */
81+
$productAttributeRepository = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
82+
->get(Repository::class);
83+
$productAttrubute = $productAttributeRepository->get('flat_attribute');
84+
$productAttributeId = $productAttrubute->getAttributeId();
85+
$model->load($productAttributeId)->delete();
8386

8487
$this->assertTrue($this->_processor->getIndexer()->isInvalid());
8588
}

dev/tests/integration/testsuite/Magento/Catalog/Model/Layer/Filter/_files/attribute_with_option.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
'is_global' => 1,
2121
'frontend_input' => 'select',
2222
'is_filterable' => 1,
23+
'is_user_defined' => 1,
2324
'option' => ['value' => ['option_0' => [0 => 'Option Label']]],
2425
'backend_type' => 'int',
2526
]

0 commit comments

Comments
 (0)