Skip to content

Commit 553abe6

Browse files
authored
test: check referenced imported type (#2936)
1 parent 9f9bd2a commit 553abe6

File tree

3 files changed

+85
-0
lines changed

3 files changed

+85
-0
lines changed

tests/fixtures/typescript/src/test01.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@ export type Props2 = {
1818
h?: string[]
1919
i?: readonly string[]
2020
}
21+
export type Props3 = {
22+
snake_case: string
23+
'kebab-case': number
24+
camelCase: boolean
25+
PascalCase?: string
26+
foo: number
27+
}
2128

2229
export type Slots1 = {
2330
default(props: { msg: string }): any

tests/lib/rules/no-dupe-keys.js

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66

77
const rule = require('../../../lib/rules/no-dupe-keys')
88
const RuleTester = require('../../eslint-compat').RuleTester
9+
const {
10+
getTypeScriptFixtureTestOptions
11+
} = require('../../test-utils/typescript')
912

1013
const ruleTester = new RuleTester({
1114
languageOptions: {
@@ -511,6 +514,20 @@ ruleTester.run('no-dupe-keys', rule, {
511514
</script>
512515
`,
513516
languageOptions: { parser: require('vue-eslint-parser') }
517+
},
518+
{
519+
code: `
520+
<script setup lang="ts">
521+
import {Props2 as Props} from './test01'
522+
523+
defineProps<Props>()
524+
525+
const bar = computed(() => {
526+
return "hello";
527+
});
528+
</script>
529+
`,
530+
...getTypeScriptFixtureTestOptions()
514531
}
515532
],
516533

@@ -1245,6 +1262,30 @@ ruleTester.run('no-dupe-keys', rule, {
12451262
endColumn: 24
12461263
}
12471264
]
1265+
},
1266+
{
1267+
code: `
1268+
<script setup lang="ts">
1269+
import {Props1 as Props} from './test01'
1270+
1271+
defineProps<Props>()
1272+
1273+
const foo = computed(() => {
1274+
return "hello";
1275+
});
1276+
</script>
1277+
`,
1278+
errors: [
1279+
{
1280+
message:
1281+
"Duplicate key 'foo'. May cause name collision in script or template tag.",
1282+
line: 7,
1283+
column: 13,
1284+
endLine: 9,
1285+
endColumn: 9
1286+
}
1287+
],
1288+
...getTypeScriptFixtureTestOptions()
12481289
}
12491290
]
12501291
})

tests/lib/rules/prop-name-casing.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
const semver = require('semver')
88
const rule = require('../../../lib/rules/prop-name-casing')
99
const RuleTester = require('../../eslint-compat').RuleTester
10+
const {
11+
getTypeScriptFixtureTestOptions
12+
} = require('../../test-utils/typescript')
1013

1114
const languageOptions = {
1215
ecmaVersion: 2018,
@@ -376,6 +379,16 @@ ruleTester.run('prop-name-casing', rule, {
376379
{ ignoreProps: ['ignored_prop', '/^ignored-pattern-/'] }
377380
],
378381
languageOptions
382+
},
383+
{
384+
code: `
385+
<script setup lang="ts">
386+
import {Props2 as Props} from './test01'
387+
388+
defineProps<Props>()
389+
</script>
390+
`,
391+
...getTypeScriptFixtureTestOptions()
379392
}
380393
],
381394

@@ -751,6 +764,30 @@ ruleTester.run('prop-name-casing', rule, {
751764
line: 3
752765
}
753766
]
767+
},
768+
{
769+
code: `
770+
<script setup lang="ts">
771+
import {Props3 as Props} from './test01'
772+
773+
defineProps<Props>()
774+
</script>
775+
`,
776+
errors: [
777+
{
778+
message: 'Prop "snake_case" is not in camelCase.',
779+
line: 5
780+
},
781+
{
782+
message: 'Prop "kebab-case" is not in camelCase.',
783+
line: 5
784+
},
785+
{
786+
message: 'Prop "PascalCase" is not in camelCase.',
787+
line: 5
788+
}
789+
],
790+
...getTypeScriptFixtureTestOptions()
754791
}
755792
]
756793
})

0 commit comments

Comments
 (0)