Skip to content

Commit a636ed7

Browse files
authored
Merge pull request #23 from magento-commerce/imported-magento-magento-coding-standard-223
[Imported] AC-957: Create unit test for Magento2\Html\HtmlDirectiveSniff check
2 parents 9eda380 + 98edd6a commit a636ed7

File tree

5 files changed

+166
-4
lines changed

5 files changed

+166
-4
lines changed

Magento2/Sniffs/Html/HtmlDirectiveSniff.php

+4-4
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ private function validateVariableUsage(File $phpcsFile, string $body): void
200200
'Template directives may not invoke methods. Only scalar array access is allowed.' . PHP_EOL
201201
. 'Found "' . trim($body) . '"',
202202
null,
203-
'HtmlTemplates.DirectiveUsage.ProhibitedMethodCall'
203+
'HtmlTemplatesProhibitedMethodCall'
204204
);
205205
}
206206
}
@@ -224,7 +224,7 @@ private function validateDefinedVariables(File $phpcsFile, string $templateText)
224224
$phpcsFile->addError(
225225
'Template @vars comment block contains invalid JSON.',
226226
null,
227-
'HtmlTemplates.DirectiveUsage.InvalidVarsJSON'
227+
'HtmlTemplatesInvalidVarsJSON'
228228
);
229229
return;
230230
}
@@ -235,7 +235,7 @@ private function validateDefinedVariables(File $phpcsFile, string $templateText)
235235
'Template @vars comment block contains invalid label.' . PHP_EOL
236236
. 'Label for variable "' . $var . '" is empty.',
237237
null,
238-
'HtmlTemplates.DirectiveUsage.InvalidVariableLabel'
238+
'HtmlTemplatesInvalidVariableLabel'
239239
);
240240
}
241241
}
@@ -254,7 +254,7 @@ private function validateDefinedVariables(File $phpcsFile, string $templateText)
254254
'Template @vars comment block is missing a variable used in the template.' . PHP_EOL
255255
. 'Missing variable: ' . $undefinedVariable,
256256
null,
257-
'HtmlTemplates.DirectiveUsage.UndefinedVariable'
257+
'HtmlTemplatesUndefinedVariable'
258258
);
259259
}
260260
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
<!--
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
-->
7+
<!--@vars {
8+
"var foo.good":"Some variable",
9+
"var foo.good|stillfine":"Some variable",
10+
"var foo.bad()":"Some variable",
11+
"var foo.bad()|alsobad":"Some variable",
12+
"var foo.getGood()":"Some variable",
13+
"var foo.foo.getGood()":"Some variable",
14+
"var foo.getGood().fine":"Some variable",
15+
"var foo.getGood().fine|alsofine":"Some variable",
16+
"var foo.bad($bad.param())":"Some variable",
17+
"var foo.bad.baz()":"Some variable",
18+
"var foo.good.trans":"Some variable",
19+
"var extra.var.getOhNo()":"Uh Oh, Error time!",
20+
"var foo.bad.trans()":"Some variable",
21+
"var bad.bad()":"Some variable",
22+
"var foo.goodif":"Some Variable",
23+
"var foo.goodif":"Some Variable",
24+
"var foo.badif().bad":"Some Variable",
25+
"var foo.badif3()":"Some Variable",
26+
"var foo.gooddepend":"Some Variable",
27+
"var foo.badDepend().bad":"Some Variable",
28+
"var foo.goodFor":"Some Variable",
29+
"var foo.getGoodFor()":"Some Variable",
30+
"var foo.badForLoop()":"Some Variable",
31+
"var foo.goodif2":"Some Variable",
32+
"var foo.goodif2":"Some Variable",
33+
"var foo.goodif3":"Some Variable",
34+
"var foo.badif2()":"Some Variable",
35+
"var foo.badif4()":"Some Variable",
36+
"var foo.badif5()":"Some Variable",
37+
"var foo.gooddepend2":"Some Variable",
38+
"var foo.baddepend2()":"Some Variable",
39+
"var foo.goodFor":"Some Variable",
40+
"var foo.goodFor|stillfine":"Some Variable",
41+
"var foo.badFor()":"Some Variable",
42+
"var foo.badFor()|alsobad":"Some Variable",
43+
"foobar baz":"Some other directive as a variable",
44+
"var iusefilterslater|raw":"Some Variable",
45+
"var bad.multiline()":""
46+
} @-->
47+
48+
<div>{{var foo.good}}</div>
49+
<div>{{var foo.good|stillfine}}</div>
50+
<div>{{var foo.bad()}}</div>
51+
<div>{{var foo.bad()|alsobad}}</div>
52+
<div>{{var foo.getGood()}}</div>
53+
<div>{{var foo.foo.getGood()}}</div>
54+
<div>{{var foo.getGood().fine}}</div>
55+
<div>{{var foo.getGood().fine|alsofine}}</div>
56+
<div>{{var foo.bad($bad.param())}}</div>
57+
<div>{{var foo.bad.baz()}}</div>
58+
<div>{{var foo.undeclared.baz}}</div>
59+
<div>{{trans "foo %bar" bar=$foo.good.trans}}</div>
60+
<div>{{trans "foo %bar" bar=$foo.bad.trans()}}</div>
61+
<div>{{trans "foo %bar" bar="something"}}</div>
62+
<div>{{trans "foo %bar" bar="something" bad="$bad.bad()" something=$undeclared.var.error}}</div>
63+
<div>{{something "
64+
<blah>foo %bar</blah>blah
65+
" bar="something"
66+
}}</div>
67+
<div>{{something "
68+
<blah>foo %bar</blah>blah
69+
" bar="something" bad=$bad.multiline()
70+
}}</div>
71+
72+
{{if foo.goodif}}
73+
<div>{{var foo.goodif2}}</div>
74+
{{/if}}
75+
76+
{{if foo.goodif}}
77+
<div>{{var foo.goodif2}}</div>
78+
{{else}}
79+
<div>{{var foo.goodif3}}</div>
80+
{{/if}}
81+
82+
{{if foo.badif().bad}}
83+
<div>{{var foo.badif2()}}</div>
84+
{{/if}}
85+
86+
{{if foo.badif3()}}
87+
<div>{{var foo.badif4()}}</div>
88+
{{else}}
89+
<div>{{var foo.badif5()}}</div>
90+
{{/if}}
91+
92+
{{depend foo.gooddepend}}
93+
<div>{{var foo.gooddepend2}}</div>
94+
{{/depend}}
95+
96+
{{depend foo.badDepend().bad}}
97+
<div>{{var foo.baddepend2()}}</div>
98+
{{/depend}}
99+
100+
{{for item in foo.goodFor}}
101+
<div>{{var foo.goodFor}}</div>
102+
<div>{{var foo.goodFor|stillfine}}</div>
103+
<div>{{var foo.badFor()}}</div>
104+
<div>{{var foo.badFor()|alsobad}}</div>
105+
{{/for}}
106+
107+
{{for item in foo.getGoodFor()}}
108+
<div>loopy</div>
109+
{{/for}}
110+
111+
{{for item in foo.badForLoop()}}
112+
<div>this loop has a bad variable</div>
113+
{{/for}}
114+
115+
{{depend iusefilterslater}}
116+
{{var iusefilterslater|raw}}
117+
{{/depend}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<!--
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
-->
7+
<!--@vars {
8+
"var foo.good":"Some variable",
9+
"var foo.good|stillfine""Some variable"
10+
} @-->
11+
12+
Template content doesn't matter. The JSON is invalid.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
/**
3+
* Copyright © Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento2\Tests\Html;
7+
8+
use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest;
9+
10+
class HtmlDirectiveUnitTest extends AbstractSniffUnitTest
11+
{
12+
/**
13+
* @inheritdoc
14+
*/
15+
public function getErrorList($testFile = '')
16+
{
17+
if ($testFile === 'HtmlDirectiveUnitTest.1.inc') {
18+
return [1 => 20];
19+
} elseif ($testFile === 'HtmlDirectiveUnitTest.2.inc') {
20+
return [1 => 1];
21+
}
22+
23+
return [];
24+
}
25+
26+
/**
27+
* @inheritdoc
28+
*/
29+
public function getWarningList()
30+
{
31+
return [];
32+
}
33+
}

0 commit comments

Comments
 (0)