66
77const RuleTester = require ( 'eslint' ) . RuleTester
88const rule = require ( '../../../lib/rules/no-undef-components' )
9+ const semver = require ( 'semver' )
910
1011const tester = new RuleTester ( {
1112 parser : require . resolve ( 'vue-eslint-parser' ) ,
@@ -598,6 +599,26 @@ tester.run('no-undef-components', rule, {
598599 <script setup>
599600 import TheModal from 'foo'
600601 </script>`
602+ } ,
603+ {
604+ filename : 'test.vue' ,
605+ code : `
606+ <script setup lang="ts">
607+ import Foo from './Foo.vue'
608+ import {HelloWorld1} from './components/HelloWorld'
609+ </script>
610+
611+ <template>
612+ <Foo />
613+ <HelloWorld1 />
614+ </template>
615+ ` ,
616+ parserOptions : {
617+ ecmaVersion : 6 ,
618+ sourceType : 'module' ,
619+ parser : require . resolve ( '@typescript-eslint/parser' )
620+ } ,
621+ parser : require . resolve ( 'vue-eslint-parser' )
601622 }
602623 ] ,
603624 invalid : [
@@ -661,9 +682,14 @@ tester.run('no-undef-components', rule, {
661682 }
662683 ]
663684 } ,
664- {
665- filename : 'test.vue' ,
666- code : `
685+ ...( semver . gte (
686+ require ( '@typescript-eslint/parser/package.json' ) . version ,
687+ '5.0.0'
688+ )
689+ ? [
690+ {
691+ filename : 'test.vue' ,
692+ code : `
667693 <script setup lang="ts">
668694 import type Foo from './Foo.vue'
669695 import type {HelloWorld1} from './components/HelloWorld'
@@ -681,6 +707,58 @@ tester.run('no-undef-components', rule, {
681707 <HelloWorld4 />
682708 <HelloWorld5 />
683709 </template>
710+ ` ,
711+ parserOptions : {
712+ ecmaVersion : 6 ,
713+ sourceType : 'module' ,
714+ parser : require . resolve ( '@typescript-eslint/parser' )
715+ } ,
716+ parser : require . resolve ( 'vue-eslint-parser' ) ,
717+ errors : [
718+ {
719+ message :
720+ "The '<Foo>' component has been used, but 'Foo' only refers to a type." ,
721+ line : 12
722+ } ,
723+ {
724+ message :
725+ "The '<HelloWorld1>' component has been used, but 'HelloWorld1' only refers to a type." ,
726+ line : 13
727+ } ,
728+ {
729+ message :
730+ "The '<HelloWorld2>' component has been used, but 'HelloWorld2' only refers to a type." ,
731+ line : 14
732+ } ,
733+ {
734+ message :
735+ "The '<HelloWorld3>' component has been used, but 'HelloWorld3' only refers to a type." ,
736+ line : 15
737+ } ,
738+ {
739+ message :
740+ "The '<HelloWorld4>' component has been used, but 'HelloWorld4' only refers to a type." ,
741+ line : 16
742+ } ,
743+ {
744+ message :
745+ "The '<HelloWorld5>' component has been used, but 'HelloWorld5' only refers to a type." ,
746+ line : 17
747+ }
748+ ]
749+ }
750+ ]
751+ : [ ] ) ,
752+ {
753+ filename : 'test.vue' ,
754+ code : `
755+ <script setup lang="ts">
756+ type Foo = {}
757+ </script>
758+
759+ <template>
760+ <Foo />
761+ </template>
684762 ` ,
685763 parserOptions : {
686764 ecmaVersion : 6 ,
@@ -692,32 +770,7 @@ tester.run('no-undef-components', rule, {
692770 {
693771 message :
694772 "The '<Foo>' component has been used, but 'Foo' only refers to a type." ,
695- line : 12
696- } ,
697- {
698- message :
699- "The '<HelloWorld1>' component has been used, but 'HelloWorld1' only refers to a type." ,
700- line : 13
701- } ,
702- {
703- message :
704- "The '<HelloWorld2>' component has been used, but 'HelloWorld2' only refers to a type." ,
705- line : 14
706- } ,
707- {
708- message :
709- "The '<HelloWorld3>' component has been used, but 'HelloWorld3' only refers to a type." ,
710- line : 15
711- } ,
712- {
713- message :
714- "The '<HelloWorld4>' component has been used, but 'HelloWorld4' only refers to a type." ,
715- line : 16
716- } ,
717- {
718- message :
719- "The '<HelloWorld5>' component has been used, but 'HelloWorld5' only refers to a type." ,
720- line : 17
773+ line : 7
721774 }
722775 ]
723776 } ,
0 commit comments