@@ -155,6 +155,19 @@ tester.run('require-meta-docs-url', rule, {
155
155
} ,
156
156
] ,
157
157
} ,
158
+ {
159
+ // Spread.
160
+ filename : 'test-rule' ,
161
+ code : `
162
+ const extraDocs = { url: "path/to/test-rule.md" };
163
+ const extraMeta = { docs: { ...extraDocs } };
164
+ module.exports = {
165
+ meta: { ...extraMeta },
166
+ create() {}
167
+ }
168
+ ` ,
169
+ options : [ { pattern : 'path/to/{{name}}.md' } ] ,
170
+ } ,
158
171
] ,
159
172
160
173
invalid : [
@@ -624,6 +637,51 @@ url: "plugin-name/test.md"
624
637
] ,
625
638
errors : [ { messageId : 'missing' , type : 'ObjectExpression' } ] ,
626
639
} ,
640
+ {
641
+ // URL missing, spreads present.
642
+ filename : 'test.js' ,
643
+ code : `
644
+ const extraDocs = { };
645
+ const extraMeta = { docs: { ...extraDocs } };
646
+ module.exports = {
647
+ meta: { ...extraMeta },
648
+ create() {}
649
+ }
650
+ ` ,
651
+ output : `
652
+ const extraDocs = { };
653
+ const extraMeta = { docs: { ...extraDocs,
654
+ url: "plugin-name/test.md" } };
655
+ module.exports = {
656
+ meta: { ...extraMeta },
657
+ create() {}
658
+ }
659
+ ` ,
660
+ options : [ { pattern : 'plugin-name/{{ name }}.md' } ] ,
661
+ errors : [ { messageId : 'missing' , type : 'ObjectExpression' } ] ,
662
+ } ,
663
+ {
664
+ // URL wrong inside spreads.
665
+ filename : 'test.js' ,
666
+ code : `
667
+ const extraDocs = { url: 'wrong' };
668
+ const extraMeta = { docs: { ...extraDocs } };
669
+ module.exports = {
670
+ meta: { ...extraMeta },
671
+ create() {}
672
+ }
673
+ ` ,
674
+ output : `
675
+ const extraDocs = { url: "plugin-name/test.md" };
676
+ const extraMeta = { docs: { ...extraDocs } };
677
+ module.exports = {
678
+ meta: { ...extraMeta },
679
+ create() {}
680
+ }
681
+ ` ,
682
+ options : [ { pattern : 'plugin-name/{{ name }}.md' } ] ,
683
+ errors : [ { messageId : 'mismatch' , type : 'Literal' } ] ,
684
+ } ,
627
685
{
628
686
// CJS file extension
629
687
filename : 'test.cjs' ,
0 commit comments