Skip to content

Commit fbe2c1c

Browse files
committed
AC-663: Create phpcs static check for ClassesTest::testPhpCode
1 parent 936c28c commit fbe2c1c

File tree

2 files changed

+176
-0
lines changed

2 files changed

+176
-0
lines changed

Magento2/Sniffs/Legacy/ClassReferencesInConfigurationFilesSniff.php

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,12 @@ public function process(File $phpcsFile, $stackPtr)
5757

5858
$modules = $this->getValuesFromXmlTagAttribute($xml, '//@module', 'module');
5959
$this->assertNonFactoryNameModule($phpcsFile, $modules);
60+
61+
$layouts = $this->collectClassesInLayout($xml);
62+
$this->assertNonFactoryName($phpcsFile, $layouts);
63+
64+
$layoutTabs = $this->collectClassesInLayoutTabs($xml);
65+
$this->assertNonFactoryNameTab($phpcsFile, $layoutTabs);
6066
}
6167

6268
/**
@@ -100,6 +106,25 @@ private function assertNonFactoryNameModule(File $phpcsFile, array $classes)
100106
}
101107
}
102108

109+
/**
110+
* Check whether specified class names in layout tabs are right according PSR-1 Standard.
111+
*
112+
* @param File $phpcsFile
113+
* @param array $elements
114+
*/
115+
private function assertNonFactoryNameTab(File $phpcsFile, array $elements)
116+
{
117+
foreach ($elements as $element) {
118+
if (preg_match('/\//', $element['value']) !== false) {
119+
$phpcsFile->addError(
120+
self::ERROR_MESSAGE_CONFIG,
121+
$element['lineNumber'],
122+
self::ERROR_CODE_CONFIG,
123+
);
124+
}
125+
}
126+
}
127+
103128
/**
104129
* Format the incoming XML to avoid tags split into several lines.
105130
*
@@ -165,6 +190,41 @@ function (array $extendedNode) {
165190
return $classes;
166191
}
167192

193+
private function collectClassesInLayout(SimpleXMLElement $xml): array
194+
{
195+
$classes = $this->getValuesFromXmlTagAttribute(
196+
$xml,
197+
'/layout//@helper',
198+
'helper'
199+
);
200+
$classes = array_map(
201+
function (array $extendedNode) {
202+
$extendedNode['value'] = explode('::', trim($extendedNode['value']))[0];
203+
return $extendedNode;
204+
},
205+
$classes
206+
);
207+
$classes = array_merge(
208+
$classes,
209+
$this->getValuesFromXmlTagAttribute(
210+
$xml,
211+
'/layout//@module',
212+
'module'
213+
)
214+
);
215+
216+
return $classes;
217+
}
218+
219+
private function collectClassesInLayoutTabs(SimpleXMLElement $xml): array
220+
{
221+
return $this->getValuesFromXmlTagContent(
222+
$xml,
223+
'/layout//action[@method="addTab"]/block',
224+
);
225+
}
226+
227+
168228
/**
169229
* Extract value from tag contents which exist in the XML path
170230
*
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
<?xml version="1.0"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
9+
<update handle="sales_order_transactions_grid_block"/>
10+
<head>
11+
<link src="Magento_Sales::js/bootstrap/order-create-index.js"/>
12+
<link src="Magento_Sales::js/bootstrap/order-post-action.js"/>
13+
</head>
14+
<update handle="sales_order_item_price"/>
15+
<body>
16+
<referenceContainer name="admin.scope.col.wrap" htmlClass="admin__old" />
17+
18+
<referenceContainer name="content">
19+
<block class="Magento\Sales\Block\Adminhtml\Order\View" name="sales_order_edit"/>
20+
</referenceContainer>
21+
<referenceContainer name="left">
22+
<block class="Magento\Sales\Block\Adminhtml\Order\View\Tabs" name="sales_order_tabs">
23+
<block class="Magento\Sales\Block\Adminhtml\Order\View\Tab\Info" name="order_tab_info" template="Magento_Sales::order/view/tab/info.phtml">
24+
<block class="Magento\Sales\Block\Adminhtml\Order\View\Messages" name="order_messages"/>
25+
<block class="Magento\Sales\Block\Adminhtml\Order\View\Info" name="order_info" template="Magento_Sales::order/view/info.phtml">
26+
<container name="extra_customer_info"/>
27+
</block>
28+
<container name="order_additional_info"/>
29+
<block class="Magento\Sales\Block\Adminhtml\Order\View\Items" name="order_items" template="Magento_Sales::order/view/items.phtml">
30+
<arguments>
31+
<argument name="columns" xsi:type="array">
32+
<item name="product" xsi:type="string" translate="true">Product</item>
33+
<item name="status" xsi:type="string" translate="true">Item Status</item>
34+
<item name="price-original" xsi:type="string" translate="true">Original Price</item>
35+
<item name="price" xsi:type="string" translate="true">Price</item>
36+
<item name="ordered-qty" xsi:type="string" translate="true">Qty</item>
37+
<item name="subtotal" xsi:type="string" translate="true">Subtotal</item>
38+
<item name="tax-amount" xsi:type="string" translate="true">Tax Amount</item>
39+
<item name="tax-percent" xsi:type="string" translate="true">Tax Percent</item>
40+
<item name="discont" xsi:type="string" translate="true">Discount Amount</item>
41+
<item name="total" xsi:type="string" translate="true">Row Total</item>
42+
</argument>
43+
</arguments>
44+
<block class="Magento\Sales\Block\Adminhtml\Order\View\Items\Renderer\DefaultRenderer" as="default" name="default_order_items_renderer" template="Magento_Sales::order/view/items/renderer/default.phtml">
45+
<arguments>
46+
<argument name="columns" xsi:type="array">
47+
<item name="product" xsi:type="string" translate="false">col-product</item>
48+
<item name="status" xsi:type="string" translate="false">col-status</item>
49+
<item name="price-original" xsi:type="string" translate="false">col-price-original</item>
50+
<item name="price" xsi:type="string" translate="false">col-price</item>
51+
<item name="qty" xsi:type="string" translate="false">col-ordered-qty</item>
52+
<item name="subtotal" xsi:type="string" translate="false">col-subtotal</item>
53+
<item name="tax-amount" xsi:type="string" translate="false">col-tax-amount</item>
54+
<item name="tax-percent" xsi:type="string" translate="false">col-tax-percent</item>
55+
<item name="discont" xsi:type="string" translate="false">col-discont</item>
56+
<item name="total" xsi:type="string" translate="false">col-total</item>
57+
</argument>
58+
</arguments>
59+
</block>
60+
<block class="Magento\Sales\Block\Adminhtml\Items\Column\Qty" name="column_qty" template="Magento_Sales::items/column/qty.phtml" group="column"/>
61+
<block class="Magento\Sales\Block\Adminhtml\Items\Column\Name" name="column_name" template="Magento_Sales::items/column/name.phtml" group="column"/>
62+
<block class="Magento\Framework\View\Element\Text\ListText" name="order_item_extra_info"/>
63+
</block>
64+
65+
<container name="payment_additional_info" htmlTag="div" htmlClass="order-payment-additional" />
66+
<block class="Magento\Sales\Block\Adminhtml\Order\Payment" name="order_payment"/>
67+
<block class="Magento\Sales\Block\Adminhtml\Order\View\History" name="order_history" template="Magento_Sales::order/view/history.phtml"/>
68+
<block class="Magento\Backend\Block\Template" name="gift_options" template="Magento_Sales::order/giftoptions.phtml">
69+
<block class="Magento\Sales\Block\Adminhtml\Order\View\Giftmessage" name="order_giftmessage" template="Magento_Sales::order/view/giftmessage.phtml"/>
70+
</block>
71+
<block class="Magento\Sales\Block\Adminhtml\Order\Totals" name="order_totals" template="Magento_Sales::order/totals.phtml">
72+
<block class="Magento\Sales\Block\Adminhtml\Order\Totals\Tax" name="tax" template="Magento_Sales::order/totals/tax.phtml"/>
73+
</block>
74+
</block>
75+
<action method="addTab">
76+
<argument name="name" xsi:type="string">order_info</argument>
77+
<argument name="block" xsi:type="string">order_tab_info</argument>
78+
</action>
79+
<block class="Magento\Sales\Block\Adminhtml\Order\View\Tab\Invoices" name="sales_order_invoice.grid.container"/>
80+
<action method="addTab">
81+
<argument name="name" xsi:type="string">order_invoices</argument>
82+
<argument name="block" xsi:type="string">sales_order_invoice.grid.container</argument>
83+
</action>
84+
<block class="Magento\Sales\Block\Adminhtml\Order\View\Tab\Creditmemos" name="sales_order_creditmemo.grid.container"/>
85+
<action method="addTab">
86+
<block class="Magento\Framework\View\Element\Js\Components" name="sales_page_head_components" template="Magento_Sales::page/js/components.phtml"/> </action>
87+
<block class="Magento\Sales\Block\Adminhtml\Order\View\Tab\Shipments" name="sales_order_shipment.grid.container"/>
88+
<action method="addTab">
89+
<argument name="name" xsi:type="string">order_shipments</argument>
90+
<argument name="block" xsi:type="string">sales_order_shipment.grid.container</argument>
91+
</action>
92+
<action method="addTab">
93+
<argument name="name" xsi:type="string">order_history</argument>
94+
<argument name="block" xsi:type="string">Magento\Sales\Block\Adminhtml\Order\View\Tab\History</argument>
95+
</action>
96+
<block class="Magento\Sales\Block\Adminhtml\Order\View\Tab\Transactions" name="sales_transactions.grid.container"/>
97+
<action method="addTab">
98+
<argument name="name" xsi:type="string">order_transactions</argument>
99+
<argument name="block" xsi:type="string">sales_transactions.grid.container</argument>
100+
</action>
101+
</block>
102+
</referenceContainer>
103+
<referenceBlock name="head.components">
104+
<block class="Magento\Framework\View\Element\Js\Components" name="sales_page_head_components" template="Magento_Sales::page/js/components.phtml"/>
105+
</referenceBlock>
106+
<referenceBlock name="sales_order_invoice.grid.container">
107+
<uiComponent name="sales_order_view_invoice_grid"/>
108+
</referenceBlock>
109+
<referenceBlock name="sales_order_creditmemo.grid.container">
110+
<uiComponent name="sales_order_view_creditmemo_grid"/>
111+
</referenceBlock>
112+
<referenceBlock name="sales_order_shipment.grid.container">
113+
<uiComponent name="sales_order_view_shipment_grid"/>
114+
</referenceBlock>
115+
</body>
116+
</page>

0 commit comments

Comments
 (0)