@@ -155,6 +155,19 @@ tester.run('require-meta-docs-url', rule, {
155155 } ,
156156 ] ,
157157 } ,
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+ } ,
158171 ] ,
159172
160173 invalid : [
@@ -624,6 +637,51 @@ url: "plugin-name/test.md"
624637 ] ,
625638 errors : [ { messageId : 'missing' , type : 'ObjectExpression' } ] ,
626639 } ,
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+ } ,
627685 {
628686 // CJS file extension
629687 filename : 'test.cjs' ,
0 commit comments