Skip to content

Commit 10fe63a

Browse files
committed
MC-15250: Explicit product sorting in PageBuilder Products Content type
- Add functional test - Ensure cache is invalidated on change
1 parent 0a1b87b commit 10fe63a

File tree

4 files changed

+224
-0
lines changed

4 files changed

+224
-0
lines changed

app/code/Magento/PageBuilder/Plugin/Catalog/Block/Product/ProductsListPlugin.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,17 @@ public function afterCreateCollection(
5050
return $result;
5151
}
5252
}
53+
54+
/**
55+
* Include sort order in cache key
56+
*
57+
* @param \Magento\CatalogWidget\Block\Product\ProductsList $subject
58+
* @param array $cacheKeys
59+
* @return array
60+
*/
61+
public function afterGetCacheKeyInfo(\Magento\CatalogWidget\Block\Product\ProductsList $subject, array $cacheKeys)
62+
{
63+
$cacheKeys[] = $subject->getData('sort_order');
64+
return $cacheKeys;
65+
}
5366
}

app/code/Magento/PageBuilder/Test/Mftf/Data/CatalogProductData.xml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,32 @@
1111
<entity name="EditWithPageBuilderButton" type="pagebuilder_button">
1212
<data key="value">Edit with Page Builder</data>
1313
</entity>
14+
<entity name="SortProduct1" type="product">
15+
<data key="sku" unique="suffix">sortProduct1</data>
16+
<data key="type_id">simple</data>
17+
<data key="attribute_set_id">4</data>
18+
<data key="visibility">4</data>
19+
<data key="name" unique="suffix">A Product Name</data>
20+
<data key="price">50.00</data>
21+
<data key="urlKey" unique="suffix">aproductname</data>
22+
<data key="status">1</data>
23+
<data key="quantity">5</data>
24+
<data key="weight">1</data>
25+
<requiredEntity type="product_extension_attribute">EavStockItem</requiredEntity>
26+
<requiredEntity type="custom_attribute_array">CustomAttributeCategoryIds</requiredEntity>
27+
</entity>
28+
<entity name="SortProduct2" type="product">
29+
<data key="sku" unique="suffix">sortProduct2</data>
30+
<data key="type_id">simple</data>
31+
<data key="attribute_set_id">4</data>
32+
<data key="visibility">4</data>
33+
<data key="name" unique="suffix">B Product Name</data>
34+
<data key="price">75.00</data>
35+
<data key="urlKey" unique="suffix">bproductname</data>
36+
<data key="status">1</data>
37+
<data key="quantity">15</data>
38+
<data key="weight">1</data>
39+
<requiredEntity type="product_extension_attribute">EavStockItem</requiredEntity>
40+
<requiredEntity type="custom_attribute_array">CustomAttributeCategoryIds</requiredEntity>
41+
</entity>
1442
</entities>

app/code/Magento/PageBuilder/Test/Mftf/Data/ProductsData.xml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,20 @@
3030
<data key="name">SKU</data>
3131
<data key="value">Magento\CatalogWidget\Model\Rule\Condition\Product|sku</data>
3232
</entity>
33+
<!-- Sort by -->
34+
<entity name="PageBuilderProductsSortByNewestTop" type="pagebuilder_content_type">
35+
<data key="name">Sort By</data>
36+
<data key="section">general</data>
37+
<data key="fieldName">sort_order</data>
38+
<data key="value">date_newest_top</data>
39+
</entity>
40+
<entity name="PageBuilderProductsSortByOldestTop" type="pagebuilder_content_type">
41+
<data key="name">Sort By</data>
42+
<data key="section">general</data>
43+
<data key="fieldName">sort_order</data>
44+
<data key="value">date_oldest_top</data>
45+
</entity>
46+
<!-- Products Count -->
3347
<entity name="PageBuilderProductsCountPropertyOne" type="pagebuilder_content_type">
3448
<data key="name">Number of Products to Display</data>
3549
<data key="section">general</data>

app/code/Magento/PageBuilder/Test/Mftf/Test/AdminPageBuilderProductsTest.xml

Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1646,4 +1646,173 @@
16461646
</actionGroup>
16471647
<dontSeeElementInDOM selector="{{ProductsOnStorefront.product('1')}}" stepKey="validateProductCountStorefrontAfterChangingToFalse"/>
16481648
</test>
1649+
<test name="AdminPageBuilderProductsCanBeSorted">
1650+
<annotations>
1651+
<features value="PageBuilder"/>
1652+
<stories value="Products"/>
1653+
<title value="Sort products"/>
1654+
<description value="Ensure products can be sorted by the sort field within the admin."/>
1655+
<severity value="MAJOR"/>
1656+
<useCaseId value="MC-15250"/>
1657+
<testCaseId value="MC-18771"/>
1658+
<group value="pagebuilder"/>
1659+
<group value="pagebuilder-products"/>
1660+
</annotations>
1661+
<before>
1662+
<createData entity="PageBuilderProductsSubCategory" stepKey="createPreReqCategory"/>
1663+
<createData entity="SortProduct1" stepKey="createPreReqProduct1">
1664+
<requiredEntity createDataKey="createPreReqCategory"/>
1665+
</createData>
1666+
<createData entity="SortProduct2" stepKey="createPreReqProduct2">
1667+
<requiredEntity createDataKey="createPreReqCategory"/>
1668+
</createData>
1669+
<actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin"/>
1670+
<actionGroup ref="navigateToAPageWithPageBuilder" stepKey="navigateToAPageWithPageBuilder"/>
1671+
<actionGroup ref="switchToPageBuilderStage" stepKey="switchToPageBuilderStage"/>
1672+
</before>
1673+
<after>
1674+
<deleteData createDataKey="createPreReqProduct1" stepKey="deletePreReqProduct1"/>
1675+
<deleteData createDataKey="createPreReqProduct2" stepKey="deletePreReqProduct2"/>
1676+
<deleteData createDataKey="createPreReqCategory" stepKey="deletePreReqCategory"/>
1677+
<actionGroup ref="logout" stepKey="logout"/>
1678+
</after>
1679+
<actionGroup ref="addPageBuilderPageTitle" stepKey="enterPageTitle">
1680+
<argument name="contentType" value="PageBuilderProductsContentType"/>
1681+
</actionGroup>
1682+
<actionGroup ref="expandPageBuilderPanelMenuSection" stepKey="expandMenuSectionAddContent">
1683+
<argument name="contentType" value="PageBuilderProductsContentType"/>
1684+
</actionGroup>
1685+
<actionGroup ref="dragContentTypeToStage" stepKey="dragProductsIntoStage">
1686+
<argument name="contentType" value="PageBuilderProductsContentType"/>
1687+
</actionGroup>
1688+
<actionGroup ref="openPageBuilderEditPanel" stepKey="openEditAfterDrop">
1689+
<argument name="contentType" value="PageBuilderProductsContentType"/>
1690+
</actionGroup>
1691+
<actionGroup ref="addConditionToProductConditions" stepKey="addCategory">
1692+
<argument name="conditionInput" value="$$createPreReqCategory.id$$"/>
1693+
</actionGroup>
1694+
<actionGroup ref="saveEditPanelSettings" stepKey="saveEditPanelSettings"/>
1695+
<!-- Validate stage -->
1696+
<comment userInput="Validate stage" stepKey="commentValidateStage"/>
1697+
<actionGroup ref="validateProductCountInProducts" stepKey="validateProductsCountStage">
1698+
<argument name="page" value="ProductsOnStage"/>
1699+
<argument name="count" value="2"/>
1700+
</actionGroup>
1701+
<actionGroup ref="validateProductInProducts" stepKey="validateProduct1Stage">
1702+
<argument name="page" value="ProductsOnStage"/>
1703+
<argument name="product" value="SortProduct1"/>
1704+
<argument name="productIndex" value="2"/>
1705+
</actionGroup>
1706+
<actionGroup ref="validateProductInProducts" stepKey="validateProduct2Stage">
1707+
<argument name="page" value="ProductsOnStage"/>
1708+
<argument name="product" value="SortProduct2"/>
1709+
<argument name="productIndex" value="1"/>
1710+
</actionGroup>
1711+
<actionGroup ref="saveAndContinueEditCmsPage" stepKey="saveAndContinueEditCmsPage"/>
1712+
<actionGroup ref="switchToPageBuilderStage" stepKey="switchToPageBuilderStage"/>
1713+
<!-- Validate stage -->
1714+
<comment userInput="Validate stage" stepKey="commentValidateStage1"/>
1715+
<actionGroup ref="validateProductCountInProducts" stepKey="validateProductsCountStage1">
1716+
<argument name="page" value="ProductsOnStage"/>
1717+
<argument name="count" value="2"/>
1718+
</actionGroup>
1719+
<actionGroup ref="validateProductInProducts" stepKey="validateProduct1Stage1">
1720+
<argument name="page" value="ProductsOnStage"/>
1721+
<argument name="product" value="SortProduct1"/>
1722+
<argument name="productIndex" value="2"/>
1723+
</actionGroup>
1724+
<actionGroup ref="validateProductInProducts" stepKey="validateProduct2Stage1">
1725+
<argument name="page" value="ProductsOnStage"/>
1726+
<argument name="product" value="SortProduct2"/>
1727+
<argument name="productIndex" value="1"/>
1728+
</actionGroup>
1729+
<!-- Validate default order on store front -->
1730+
<comment userInput="Validate default order on store front" stepKey="commentValidateDefaultOrder"/>
1731+
<openNewTab stepKey="openTabToValidateStorefront" />
1732+
<actionGroup ref="navigateToStoreFront" stepKey="navigateToStoreFront">
1733+
<argument name="contentType" value="PageBuilderProductsContentType"/>
1734+
</actionGroup>
1735+
<actionGroup ref="validateProductCountInProducts" stepKey="validateProductCountStorefront">
1736+
<argument name="page" value="ProductsOnStorefront"/>
1737+
<argument name="count" value="2"/>
1738+
</actionGroup>
1739+
<actionGroup ref="validateProductInProducts" stepKey="validateProduct1Storefront">
1740+
<argument name="page" value="ProductsOnStorefront"/>
1741+
<argument name="product" value="SortProduct1"/>
1742+
<argument name="productIndex" value="2"/>
1743+
<argument name="isClickable" value="auto"/>
1744+
</actionGroup>
1745+
<actionGroup ref="validateProductInProducts" stepKey="validateProduct2Storefront">
1746+
<argument name="page" value="ProductsOnStorefront"/>
1747+
<argument name="product" value="SortProduct2"/>
1748+
<argument name="productIndex" value="1"/>
1749+
<argument name="isClickable" value="auto"/>
1750+
</actionGroup>
1751+
<closeTab stepKey="closeStorefrontTab" />
1752+
<reloadPage stepKey="reloadPage" />
1753+
<waitForPageLoad stepKey="waitForReload" />
1754+
<actionGroup ref="switchToPageBuilderStage" stepKey="switchToPageBuilderStage1"/>
1755+
<!-- Update sort by -->
1756+
<comment userInput="Update sort by" stepKey="commentUpdateSortBy"/>
1757+
<actionGroup ref="openPageBuilderEditPanel" stepKey="openEditForSortBy">
1758+
<argument name="contentType" value="PageBuilderProductsContentType"/>
1759+
</actionGroup>
1760+
<actionGroup ref="selectSlideOutPanelFieldGeneral" stepKey="enterSortBy">
1761+
<argument name="property" value="PageBuilderProductsSortByOldestTop"/>
1762+
</actionGroup>
1763+
<actionGroup ref="saveEditPanelSettings" stepKey="saveEditPanelSettings1"/>
1764+
<actionGroup ref="validateProductCountInProducts" stepKey="validateProductsCountStage2">
1765+
<argument name="page" value="ProductsOnStage"/>
1766+
<argument name="count" value="2"/>
1767+
</actionGroup>
1768+
<actionGroup ref="validateProductInProducts" stepKey="validateProduct1Stage2">
1769+
<argument name="page" value="ProductsOnStage"/>
1770+
<argument name="product" value="SortProduct1"/>
1771+
<argument name="productIndex" value="1"/>
1772+
</actionGroup>
1773+
<actionGroup ref="validateProductInProducts" stepKey="validateProduct2Stage2">
1774+
<argument name="page" value="ProductsOnStage"/>
1775+
<argument name="product" value="SortProduct2"/>
1776+
<argument name="productIndex" value="2"/>
1777+
</actionGroup>
1778+
<actionGroup ref="saveAndContinueEditCmsPage" stepKey="saveAndContinueEditCmsPage1"/>
1779+
<actionGroup ref="switchToPageBuilderStage" stepKey="switchToPageBuilderStage2"/>
1780+
<actionGroup ref="validateProductCountInProducts" stepKey="validateProductsCountStage3">
1781+
<argument name="page" value="ProductsOnStage"/>
1782+
<argument name="count" value="2"/>
1783+
</actionGroup>
1784+
<actionGroup ref="validateProductInProducts" stepKey="validateProduct1Stage3">
1785+
<argument name="page" value="ProductsOnStage"/>
1786+
<argument name="product" value="SortProduct1"/>
1787+
<argument name="productIndex" value="1"/>
1788+
</actionGroup>
1789+
<actionGroup ref="validateProductInProducts" stepKey="validateProduct2Stage3">
1790+
<argument name="page" value="ProductsOnStage"/>
1791+
<argument name="product" value="SortProduct2"/>
1792+
<argument name="productIndex" value="2"/>
1793+
</actionGroup>
1794+
<!-- Validate Storefront -->
1795+
<comment userInput="Validate Storefront" stepKey="commentValidateStorefront"/>
1796+
<openNewTab stepKey="openTabToValidateStorefront1" />
1797+
<actionGroup ref="navigateToStoreFront" stepKey="navigateToStoreFront1">
1798+
<argument name="contentType" value="PageBuilderProductsContentType"/>
1799+
</actionGroup>
1800+
<actionGroup ref="validateProductCountInProducts" stepKey="validateProductCountStorefront1">
1801+
<argument name="page" value="ProductsOnStorefront"/>
1802+
<argument name="count" value="2"/>
1803+
</actionGroup>
1804+
<actionGroup ref="validateProductInProducts" stepKey="validateProduct1Storefront1">
1805+
<argument name="page" value="ProductsOnStorefront"/>
1806+
<argument name="product" value="SortProduct1"/>
1807+
<argument name="productIndex" value="1"/>
1808+
<argument name="isClickable" value="auto"/>
1809+
</actionGroup>
1810+
<actionGroup ref="validateProductInProducts" stepKey="validateProduct2Storefront1">
1811+
<argument name="page" value="ProductsOnStorefront"/>
1812+
<argument name="product" value="SortProduct2"/>
1813+
<argument name="productIndex" value="2"/>
1814+
<argument name="isClickable" value="auto"/>
1815+
</actionGroup>
1816+
<closeTab stepKey="closeStoreFrontTab1"/>
1817+
</test>
16491818
</tests>

0 commit comments

Comments
 (0)