Skip to content

Commit 1afad8d

Browse files
committed
Sync with template-lint
1 parent 3ba27aa commit 1afad8d

3 files changed

Lines changed: 49 additions & 39 deletions

File tree

docs/rules/template-no-unbound.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,16 @@ It is also a poor practice to use it for rendering only the initial value of a p
1313

1414
This rule **forbids** the following:
1515

16-
```hbs
17-
{{unbound aVar}}
16+
```gjs
17+
<template>
18+
{{unbound aVar}}
19+
</template>
1820
```
1921

20-
```hbs
21-
{{some-component foo=(unbound aVar)}}
22+
```gjs
23+
<template>
24+
{{some-component foo=(unbound aVar)}}
25+
</template>
2226
```
2327

2428
## References

lib/rules/template-no-unbound.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ module.exports = {
99
templateMode: 'loose',
1010
},
1111
schema: [],
12-
messages: { unexpected: 'Unexpected unbound helper usage.' },
12+
messages: { unexpected: 'Unexpected {{unboundHelper}} usage.' },
1313
originallyFrom: {
1414
name: 'ember-template-lint',
1515
rule: 'lib/rules/no-unbound.js',
@@ -20,7 +20,11 @@ module.exports = {
2020
create(context) {
2121
function check(node) {
2222
if (node.path?.type === 'GlimmerPathExpression' && node.path.original === 'unbound') {
23-
context.report({ node, messageId: 'unexpected' });
23+
context.report({
24+
node,
25+
messageId: 'unexpected',
26+
data: { unboundHelper: '{{unbound}}' },
27+
});
2428
}
2529
}
2630
return {
Lines changed: 35 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,42 @@
11
const rule = require('../../../lib/rules/template-no-unbound');
22
const RuleTester = require('eslint').RuleTester;
33

4-
const ruleTester = new RuleTester({
4+
const validHbs = ['{{foo}}', '{{button}}'];
5+
6+
const invalidHbs = [
7+
{
8+
code: '{{unbound foo}}',
9+
output: null,
10+
errors: [{ message: 'Unexpected {{unbound}} usage.' }],
11+
},
12+
{
13+
code: '{{my-thing foo=(unbound foo)}}',
14+
output: null,
15+
errors: [{ message: 'Unexpected {{unbound}} usage.' }],
16+
},
17+
];
18+
19+
function wrapTemplate(entry) {
20+
if (typeof entry === 'string') {
21+
return `<template>${entry}</template>`;
22+
}
23+
24+
return {
25+
...entry,
26+
code: `<template>${entry.code}</template>`,
27+
output: entry.output ? `<template>${entry.output}</template>` : entry.output,
28+
errors: entry.errors.map(() => ({ messageId: 'unexpected' })),
29+
};
30+
}
31+
32+
const gjsRuleTester = new RuleTester({
533
parser: require.resolve('ember-eslint-parser'),
634
parserOptions: { ecmaVersion: 2022, sourceType: 'module' },
735
});
8-
ruleTester.run('template-no-unbound', rule, {
9-
valid: [
10-
'<template>{{this.value}}</template>',
11-
'<template>{{foo}}</template>',
12-
'<template>{{button}}</template>',
13-
],
14-
invalid: [
15-
{
16-
code: '<template>{{unbound foo}}</template>',
17-
output: null,
18-
errors: [{ messageId: 'unexpected' }],
19-
},
20-
21-
{
22-
code: '<template>{{my-thing foo=(unbound foo)}}</template>',
23-
output: null,
24-
errors: [{ messageId: 'unexpected' }],
25-
},
26-
],
36+
37+
gjsRuleTester.run('template-no-unbound', rule, {
38+
valid: validHbs.map(wrapTemplate),
39+
invalid: invalidHbs.map(wrapTemplate),
2740
});
2841

2942
const hbsRuleTester = new RuleTester({
@@ -35,17 +48,6 @@ const hbsRuleTester = new RuleTester({
3548
});
3649

3750
hbsRuleTester.run('template-no-unbound', rule, {
38-
valid: ['{{foo}}', '{{button}}'],
39-
invalid: [
40-
{
41-
code: '{{unbound foo}}',
42-
output: null,
43-
errors: [{ message: 'Unexpected unbound helper usage.' }],
44-
},
45-
{
46-
code: '{{my-thing foo=(unbound foo)}}',
47-
output: null,
48-
errors: [{ message: 'Unexpected unbound helper usage.' }],
49-
},
50-
],
51+
valid: validHbs,
52+
invalid: invalidHbs,
5153
});

0 commit comments

Comments
 (0)