Skip to content

Commit 1b725d1

Browse files
authored
Merge branch '2.4-develop' into AC-9547
2 parents 2387414 + b9f57bd commit 1b725d1

File tree

160 files changed

+3996
-644
lines changed

Some content is hidden

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

160 files changed

+3996
-644
lines changed
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
AdminExportTaxRatesTest
2+
ImportProduct_Bundle
3+
ImportProductSimple1_Bundle
4+
ImportProductSimple2_Bundle
5+
ImportProductSimple3_Bundle
6+
CliCacheFlushActionGroup
7+
AdminFillImportFormActionGroup
8+
ImportProduct_Downloadable_FileLinks
9+
ImportProduct_Downloadable_UrlLinks
10+
ImportProduct_Grouped
11+
ImportProductSimple1_Grouped
12+
ImportProductSimple2_Grouped
13+
ImportProductSimple3_Grouped
14+
ImportProduct_Configurable
15+
ImportProductSimple1_Configurable
16+
ImportProductSimple2_Configurable
17+
ImportProductSimple3_Configurable
18+
placeholderBaseImage
19+
placeholderSmallImage
20+
placeholderThumbnailImage
21+
AdminImportTaxRatesTest
22+
AdminMediaGalleryFolderData
23+
AdminMediaGalleryFolder2Data
24+
ImageUpload
25+
AdminLoginActionGroup
26+
AdminOpenStandaloneMediaGalleryActionGroup
27+
ResetAdminDataGridToDefaultViewActionGroup
28+
AdminMediaGalleryFolderSelectActionGroup
29+
AdminMediaGalleryOpenNewFolderFormActionGroup
30+
AdminMediaGalleryCreateNewFolderActionGroup
31+
AdminEnhancedMediaGalleryUploadImageActionGroup
32+
AdminExpandMediaGalleryFolderActionGroup
33+
AdminMediaGalleryFolderDeleteActionGroup
34+
AdminLogoutActionGroup
35+
NavigateToCreatedCMSPageActionGroup
36+
AdminOpenMediaGalleryFromPageNoEditorActionGroup
37+
AdminMediaGalleryClickImageInGridActionGroup
38+
AdminMediaGalleryClickAddSelectedActionGroup
39+
AdminSaveAndContinueEditCmsPageActionGroup
40+
NavigateToStorefrontForCreatedPageActionGroup
41+
AdminMediaGalleryAssertFolderDoesNotExistActionGroup
42+
AdminEnhancedMediaGalleryImageDeleteActionGroup
43+
AdminMediaGalleryAssertImageNotExistsInTheGridActionGroup
44+
StorefrontProductMediaSection
45+
RedPngImageContent
46+
BluePngImageContent
47+
MagentoPlaceHolderImageContent
48+
StorefrontOpenProductEntityPageActionGroup
49+
AdminGoToCacheManagementPageActionGroup
50+
AdminClickFlushCatalogImagesCacheActionGroup
51+
placeholderBaseImageLongName
52+
AdminAddImageForCategoryTest
53+
AdminAddImageToWYSIWYGBlockTest
54+
AdminAddImageToWYSIWYGCMSTest
55+
AdminAddImageToWYSIWYGNewsletterTest
56+
AdminAddRemoveDefaultVideoSimpleProductTest
57+
AdminProductFormSection
58+
AdminProductDownloadableSection
59+
downloadableData
60+
StorefrontProductInfoMainSection
61+
DownloadableProduct
62+
StorefrontDownloadableProductSection
63+
StorefrontDownloadableLinkSection
64+
CheckoutCartProductSection
65+
StorefrontCustomerDownloadableProductsSection
66+
downloadableLinkWithMaxDownloads
67+
downloadableLink
68+
downloadableSampleFile
69+
StorefrontCustomerLogoutActionGroup
70+
DeleteProductUsingProductGridActionGroup
71+
AdminOpenProductIndexPageActionGroup
72+
GoToSpecifiedCreateProductPageActionGroup
73+
FillMainProductFormNoWeightActionGroup
74+
AddDownloadableProductLinkWithMaxDownloadsActionGroup
75+
AddDownloadableProductLinkActionGroup
76+
AddDownloadableSampleFileActionGroup
77+
SaveProductFormActionGroup
78+
CliIndexerReindexActionGroup
79+
LoginToStorefrontActionGroup
80+
StorefrontCheckProductPriceInCategoryActionGroup
81+
AssertProductNameAndSkuInStorefrontProductPageActionGroup
82+
AssertStorefrontSeeElementActionGroup
83+
StorefrontAddProductToCartActionGroup
84+
StorefrontCartPageOpenActionGroup
85+
StorefrontOpenCheckoutPageActionGroup
86+
CheckoutSelectCheckMoneyOrderPaymentActionGroup
87+
ClickPlaceOrderActionGroup
88+
StorefrontClickOrderLinkFromCheckoutSuccessPageActionGroup
89+
AdminOpenOrderByEntityIdActionGroup
90+
StartCreateInvoiceFromOrderPageActionGroup
91+
SubmitInvoiceActionGroup
92+
StorefrontAssertDownloadableProductIsPresentInCustomerAccount
93+
AdminMarketingCreateSitemapEntityTest
94+
AdminMarketingSiteMapCreateNewTest
95+
CheckingRMAPrintTest
96+
ConfigurableProductChildImageShouldBeShownOnWishListTest
97+
StorefrontCaptchaOnCustomerLoginTest
98+
StorefrontPrintOrderGuestTest
99+
UpdateImageFileCustomerAttributeTest

app/code/Magento/AwsS3/Test/Mftf/test-dependency-errors-detailed

Lines changed: 273 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
AdminMenuSystem
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
2+
File "/var/www/html/app/code/Magento/Backend/Test/Mftf/Test/AdminSystemCacheManagementNavigateMenuTest.xml"
3+
contains entity references that violate dependency constraints:
4+
5+
AdminMenuSystem from module(s): magento/module-admin-notification

app/code/Magento/Bundle/Test/Mftf/Section/StorefrontProductInfoMainSection.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<element name="minPrice" type="text" selector="span[data-price-type='minPrice']"/>
1515
<element name="maxPrice" type="text" selector="span[data-price-type='minPrice']"/>
1616
<element name="asLowAsFinalPrice" type="text" selector="div.price-box.price-final_price p.minimal-price > span.price-final_price span.price"/>
17-
<element name="fixedFinalPrice" type="text" selector="div.price-box.price-final_price > span.price-final_price span.price"/>
17+
<element name="fixedFinalPrice" type="text" selector="div.price-box.price-final_price p.price-from span.price-final_price span.price-wrapper span.price"/>
1818
<element name="productBundleOptionsCheckbox" type="checkbox" selector="//*[@id='product-options-wrapper']//div[@class='fieldset']//label[contains(.,'{{childName}}')]/../input" parameterized="true" timeout="30"/>
1919
<element name="productBundleOneOptionInput" type="input" selector="//*[@id='product-options-wrapper']//div[@class='fieldset']//label[contains(.,'{{childName}}')]/..//input[contains(@class, 'option')]" parameterized="true" timeout="30"/>
2020
<element name="productBundleOptionQty" type="input" selector="//*[@id='product-options-wrapper']//div[@class='fieldset']//label[contains(.,'{{childName}}')]/..//input[contains(@class, 'qty')]" parameterized="true" timeout="30"/>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
CliConsumerStartActionGroup
2+
ImportProductSimple2_Bundle
3+
ImportProductSimple1_Bundle
4+
StorefrontCatalogSearchMainSection
5+
StoreFrontQuickSearchActionGroup
6+
AdminProductAttributeUpdateMessageConsumerData
7+
StorefrontCatalogSearchAdvancedResultMainSection
8+
ConfigCurrencySetupPage
9+
CurrencySetupSection
10+
StorefrontCheckQuickSearchStringActionGroup
11+
StorefrontQuickSearchSeeProductByNameActionGroup
12+
StorefrontQuickSearchCheckProductNameNotInGridActionGroup
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
2+
File "/var/www/html/app/code/Magento/Bundle/Test/Mftf/Test/AdminBundleDynamicAttributesAfterMassUpdateTest.xml"
3+
contains entity references that violate dependency constraints:
4+
5+
CliConsumerStartActionGroup from module(s): magento/module-message-queue
6+
7+
File "/var/www/html/app/code/Magento/Bundle/Test/Mftf/Test/AdminCreateBundleProductTest.xml"
8+
contains entity references that violate dependency constraints:
9+
10+
ImportProductSimple2_Bundle from module(s): magento/module-bundle-import-export
11+
ImportProductSimple1_Bundle from module(s): magento/module-bundle-import-export
12+
13+
File "/var/www/html/app/code/Magento/Bundle/Test/Mftf/Test/AdminDeleteBundleDynamicPriceProductTest.xml"
14+
contains entity references that violate dependency constraints:
15+
16+
StorefrontCatalogSearchMainSection from module(s): magento/module-catalog-search
17+
StoreFrontQuickSearchActionGroup from module(s): magento/module-search
18+
19+
File "/var/www/html/app/code/Magento/Bundle/Test/Mftf/Test/AdminDeleteBundleDynamicProductTest.xml"
20+
contains entity references that violate dependency constraints:
21+
22+
StorefrontCatalogSearchMainSection from module(s): magento/module-catalog-search
23+
StoreFrontQuickSearchActionGroup from module(s): magento/module-search
24+
25+
File "/var/www/html/app/code/Magento/Bundle/Test/Mftf/Test/AdminDeleteBundleFixedProductTest.xml"
26+
contains entity references that violate dependency constraints:
27+
28+
StorefrontCatalogSearchMainSection from module(s): magento/module-catalog-search
29+
StoreFrontQuickSearchActionGroup from module(s): magento/module-search
30+
31+
File "/var/www/html/app/code/Magento/Bundle/Test/Mftf/Test/AdminShouldBeAbleToMassUpdateAttributesForBundleProductsTest.xml"
32+
contains entity references that violate dependency constraints:
33+
34+
AdminProductAttributeUpdateMessageConsumerData from module(s): magento/module-message-queue
35+
CliConsumerStartActionGroup from module(s): magento/module-message-queue
36+
37+
File "/var/www/html/app/code/Magento/Bundle/Test/Mftf/Test/AdvanceCatalogSearchBundleByDescriptionTest.xml"
38+
contains entity references that violate dependency constraints:
39+
40+
StorefrontCatalogSearchAdvancedResultMainSection from module(s): magento/module-catalog-search
41+
42+
File "/var/www/html/app/code/Magento/Bundle/Test/Mftf/Test/AdvanceCatalogSearchBundleByPriceTest.xml"
43+
contains entity references that violate dependency constraints:
44+
45+
StorefrontCatalogSearchAdvancedResultMainSection from module(s): magento/module-catalog-search
46+
47+
File "/var/www/html/app/code/Magento/Bundle/Test/Mftf/Test/AdvanceCatalogSearchBundleByShortDescriptionTest.xml"
48+
contains entity references that violate dependency constraints:
49+
50+
StorefrontCatalogSearchAdvancedResultMainSection from module(s): magento/module-catalog-search
51+
52+
File "/var/www/html/app/code/Magento/Bundle/Test/Mftf/Test/AdvanceCatalogSearchBundleProductTest.xml"
53+
contains entity references that violate dependency constraints:
54+
55+
StorefrontCatalogSearchAdvancedResultMainSection from module(s): magento/module-catalog-search
56+
57+
File "/var/www/html/app/code/Magento/Bundle/Test/Mftf/Test/CurrencyChangingBundleProductInCartTest.xml"
58+
contains entity references that violate dependency constraints:
59+
60+
ConfigCurrencySetupPage from module(s): magento/module-currency-symbol
61+
CurrencySetupSection from module(s): magento/module-currency-symbol
62+
63+
File "/var/www/html/app/code/Magento/Bundle/Test/Mftf/Test/StorefrontCustomerSearchBundleProductsByKeywordsTest.xml"
64+
contains entity references that violate dependency constraints:
65+
66+
StorefrontCheckQuickSearchStringActionGroup from module(s): magento/module-catalog-search
67+
StorefrontQuickSearchSeeProductByNameActionGroup from module(s): magento/module-catalog-search
68+
StorefrontQuickSearchCheckProductNameNotInGridActionGroup from module(s): magento/module-catalog-search

app/code/Magento/Catalog/Helper/Product/View.php

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,8 @@ private function preparePageMetadata(ResultPage $resultPage, $product)
118118
$pageConfig = $resultPage->getConfig();
119119

120120
$metaTitle = $product->getMetaTitle();
121-
$pageConfig->setMetaTitle($metaTitle);
121+
$productMetaTitle = $metaTitle ? $this->addConfigValues($metaTitle) : null;
122+
$pageConfig->setMetaTitle($productMetaTitle);
122123
$pageConfig->getTitle()->set($metaTitle ?: $product->getName());
123124

124125
$keyword = $product->getMetaKeyword();
@@ -294,4 +295,22 @@ public function prepareAndRender(ResultPage $resultPage, $productId, $controller
294295
$this->preparePageMetadata($resultPage, $product);
295296
return $this;
296297
}
298+
299+
/**
300+
* Add Prefix and Suffix as per the configuration.
301+
*
302+
* @param string $title
303+
* @return string
304+
*/
305+
private function addConfigValues(string $title): string
306+
{
307+
$preparedTitle = $this->scopeConfig->getValue(
308+
'design/head/title_prefix',
309+
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
310+
) . ' ' . $title . ' ' . $this->scopeConfig->getValue(
311+
'design/head/title_suffix',
312+
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
313+
);
314+
return trim($preparedTitle);
315+
}
297316
}

app/code/Magento/Catalog/Model/Indexer/Product/Price/Action/Full.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -311,15 +311,14 @@ private function reindexByBatchWithDimensions(
311311
if (!empty($entityIds)) {
312312
$this->dimensionTableMaintainer->createMainTmpTable($dimensions);
313313
$temporaryTable = $this->dimensionTableMaintainer->getMainTmpTable($dimensions);
314-
$this->_emptyTable($temporaryTable);
315-
316314
$priceIndexer->executeByDimensions($dimensions, \SplFixedArray::fromArray($entityIds, false));
317315

318316
// Sync data from temp table to index table
319317
$this->_insertFromTable(
320318
$temporaryTable,
321319
$this->dimensionTableMaintainer->getMainReplicaTable($dimensions)
322320
);
321+
$this->_defaultIndexerResource->getConnection()->dropTable($temporaryTable);
323322
}
324323
}
325324

@@ -354,7 +353,6 @@ private function reindexBatch(PriceInterface $priceIndexer, Select $batch): void
354353
if (!empty($entityIds)) {
355354
// Temporary table will created if not exists
356355
$idxTableName = $this->_defaultIndexerResource->getIdxTable();
357-
$this->_emptyTable($idxTableName);
358356

359357
if ($priceIndexer->getIsComposite()) {
360358
$this->_copyRelationIndexData($entityIds);
@@ -489,6 +487,7 @@ private function moveDataFromReplicaTableToReplicaTables(array $dimensions): voi
489487
* Retrieves the index table that should be used
490488
*
491489
* @deprecated 102.0.6
490+
* @see only used in another deprecated method: _copyRelationIndexData
492491
*/
493492
protected function getIndexTargetTable(): string
494493
{

app/code/Magento/Catalog/Model/ProductRepository.php

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,6 @@ class ProductRepository implements \Magento\Catalog\Api\ProductRepositoryInterfa
6666
*/
6767
protected $instancesById = [];
6868

69-
/**
70-
* @var \Magento\Catalog\Controller\Adminhtml\Product\Initialization\Helper
71-
*/
72-
protected $initializationHelper;
73-
7469
/**
7570
* @var \Magento\Catalog\Api\Data\ProductSearchResultsInterfaceFactory
7671
*/
@@ -195,7 +190,6 @@ class ProductRepository implements \Magento\Catalog\Api\ProductRepositoryInterfa
195190
/**
196191
* ProductRepository constructor.
197192
* @param ProductFactory $productFactory
198-
* @param \Magento\Catalog\Controller\Adminhtml\Product\Initialization\Helper $initializationHelper
199193
* @param \Magento\Catalog\Api\Data\ProductSearchResultsInterfaceFactory $searchResultsFactory
200194
* @param ResourceModel\Product\CollectionFactory $collectionFactory
201195
* @param \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder
@@ -225,7 +219,6 @@ class ProductRepository implements \Magento\Catalog\Api\ProductRepositoryInterfa
225219
*/
226220
public function __construct(
227221
ProductFactory $productFactory,
228-
\Magento\Catalog\Controller\Adminhtml\Product\Initialization\Helper $initializationHelper,
229222
\Magento\Catalog\Api\Data\ProductSearchResultsInterfaceFactory $searchResultsFactory,
230223
\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $collectionFactory,
231224
\Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder,
@@ -253,7 +246,6 @@ public function __construct(
253246
) {
254247
$this->productFactory = $productFactory;
255248
$this->collectionFactory = $collectionFactory;
256-
$this->initializationHelper = $initializationHelper;
257249
$this->searchResultsFactory = $searchResultsFactory;
258250
$this->searchCriteriaBuilder = $searchCriteriaBuilder;
259251
$this->resourceModel = $resourceModel;
@@ -940,7 +932,7 @@ private function joinPositionField(
940932
foreach ($filterGroup->getFilters() as $filter) {
941933
if ($filter->getField() === 'category_id') {
942934
$filterValue = $filter->getValue();
943-
$categoryIds[] = is_array($filterValue) ? $filterValue : explode(',', $filterValue ?? '');
935+
$categoryIds[] = is_array($filterValue) ? $filterValue : explode(',', $filterValue);
944936
}
945937
}
946938
}

app/code/Magento/Catalog/Model/ResourceModel/Product/Indexer/Price/CustomOptionPriceModifier.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,8 @@ public function modifyPrice(IndexTableStructure $priceTable, array $entityIds =
122122
$query = $select->crossUpdateFromSelect(['i' => $finalPriceTable]);
123123
$connection->query($query);
124124

125-
$connection->delete($coaTable);
126-
$connection->delete($copTable);
125+
$connection->dropTemporaryTable($coaTable);
126+
$connection->dropTemporaryTable($copTable);
127127
}
128128

129129
/**

app/code/Magento/Catalog/Test/Fixture/Attribute.php

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
namespace Magento\Catalog\Test\Fixture;
99

10-
use Magento\Catalog\Api\Data\ProductAttributeInterface;
1110
use Magento\Catalog\Api\ProductAttributeManagementInterface;
1211
use Magento\Catalog\Api\ProductAttributeRepositoryInterface;
1312
use Magento\Catalog\Model\Product;
@@ -96,6 +95,11 @@ class Attribute implements RevertibleDataFixtureInterface
9695
*/
9796
private ResourceModelAttribute $resourceModelAttribute;
9897

98+
/**
99+
* @var ProductAttributeRepositoryInterface
100+
*/
101+
private ProductAttributeRepositoryInterface $productAttributeRepository;
102+
99103
/**
100104
* @param ServiceFactory $serviceFactory
101105
* @param ProcessorInterface $dataProcessor
@@ -104,6 +108,7 @@ class Attribute implements RevertibleDataFixtureInterface
104108
* @param AttributeFactory $attributeFactory
105109
* @param DataMerger $dataMerger
106110
* @param ResourceModelAttribute $resourceModelAttribute
111+
* @param ProductAttributeRepositoryInterface $productAttributeRepository
107112
*/
108113
public function __construct(
109114
ServiceFactory $serviceFactory,
@@ -112,7 +117,8 @@ public function __construct(
112117
ProductAttributeManagementInterface $productAttributeManagement,
113118
AttributeFactory $attributeFactory,
114119
DataMerger $dataMerger,
115-
ResourceModelAttribute $resourceModelAttribute
120+
ResourceModelAttribute $resourceModelAttribute,
121+
ProductAttributeRepositoryInterface $productAttributeRepository
116122
) {
117123
$this->serviceFactory = $serviceFactory;
118124
$this->dataProcessor = $dataProcessor;
@@ -121,6 +127,7 @@ public function __construct(
121127
$this->attributeFactory = $attributeFactory;
122128
$this->dataMerger = $dataMerger;
123129
$this->resourceModelAttribute = $resourceModelAttribute;
130+
$this->productAttributeRepository = $productAttributeRepository;
124131
}
125132

126133
/**
@@ -134,16 +141,11 @@ public function apply(array $data = []): ?DataObject
134141
return $this->applyAttributeWithAdditionalData($data);
135142
}
136143

137-
$service = $this->serviceFactory->create(ProductAttributeRepositoryInterface::class, 'save');
138-
139-
/**
140-
* @var ProductAttributeInterface $attribute
141-
*/
142-
$attribute = $service->execute(
143-
[
144-
'attribute' => $this->prepareData(array_diff_key($data, self::DEFAULT_ATTRIBUTE_SET_DATA))
145-
]
144+
$attribute = $this->attributeFactory->createAttribute(
145+
EavAttribute::class,
146+
$this->prepareData(array_diff_key($data, self::DEFAULT_ATTRIBUTE_SET_DATA))
146147
);
148+
$attribute = $this->productAttributeRepository->save($attribute);
147149

148150
$attributeSetData = $this->prepareAttributeSetData(
149151
array_intersect_key($data, self::DEFAULT_ATTRIBUTE_SET_DATA)
@@ -201,6 +203,7 @@ private function applyAttributeWithAdditionalData(array $data = []): ?DataObject
201203
private function prepareData(array $data): array
202204
{
203205
$data = array_merge(self::DEFAULT_DATA, $data);
206+
$data['frontend_label'] ??= $data['default_frontend_label'];
204207

205208
return $this->dataProcessor->process($this, $data);
206209
}

0 commit comments

Comments
 (0)