Skip to content

Commit 40bdae0

Browse files
NullVoxPopuliclaude
andcommitted
Add test coverage for required argument validation on builtin components
The rule already had logic to check that required arguments are present (e.g., LinkTo requires at least one of @route, @query, @model, or @models), but this code path had no test coverage. Add test cases for both GJS and HBS parsers to verify that <LinkTo /> without any required argument correctly reports a requiredArgument error. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
1 parent f07f842 commit 40bdae0

1 file changed

Lines changed: 57 additions & 0 deletions

File tree

tests/lib/rules/template-no-unknown-arguments-for-builtin-components.js

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,31 @@ ruleTester.run('template-no-unknown-arguments-for-builtin-components', rule, {
184184
output: null,
185185
errors: [{ messageId: 'unknownArgument' }],
186186
},
187+
188+
// Missing required arguments
189+
{
190+
code: '<template><LinkTo /></template>',
191+
output: null,
192+
errors: [{ messageId: 'requiredArgument' }],
193+
},
194+
{
195+
code: '<template><LinkTo @disabled={{true}} /></template>',
196+
output: null,
197+
errors: [{ messageId: 'requiredArgument' }],
198+
},
199+
{
200+
filename: 'my-component.gjs',
201+
code: `
202+
import Component from '@glimmer/component';
203+
export default class MyComponent extends Component {
204+
<template>
205+
<LinkTo @replace={{true}}>Home</LinkTo>
206+
</template>
207+
}
208+
`,
209+
output: null,
210+
errors: [{ messageId: 'requiredArgument' }],
211+
},
187212
],
188213
});
189214

@@ -333,5 +358,37 @@ Instead, please use the {{on}} modifier, i.e. "<Textarea {{on "keyup" ...}} />"
333358
},
334359
],
335360
},
361+
362+
// Missing required arguments
363+
{
364+
code: '<LinkTo />',
365+
output: null,
366+
errors: [
367+
{
368+
message:
369+
'Arguments "@route" or "@query" or "@model" or "@models" is required for <LinkTo /> component.',
370+
},
371+
],
372+
},
373+
{
374+
code: '<LinkTo @disabled={{true}} />',
375+
output: null,
376+
errors: [
377+
{
378+
message:
379+
'Arguments "@route" or "@query" or "@model" or "@models" is required for <LinkTo /> component.',
380+
},
381+
],
382+
},
383+
{
384+
code: '<LinkTo @replace={{true}}>Home</LinkTo>',
385+
output: null,
386+
errors: [
387+
{
388+
message:
389+
'Arguments "@route" or "@query" or "@model" or "@models" is required for <LinkTo /> component.',
390+
},
391+
],
392+
},
336393
],
337394
});

0 commit comments

Comments
 (0)