Skip to content

Commit a75bd82

Browse files
committed
add type definition test with tsd
1 parent a8815bd commit a75bd82

File tree

3 files changed

+542
-9
lines changed

3 files changed

+542
-9
lines changed

package.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
"opener": "^1.5.1",
5656
"shipjs": "^0.12.0",
5757
"ts-jest": "^24.2.0",
58+
"tsd": "^0.11.0",
5859
"typescript": "^3.7.3",
5960
"typescript-eslint-language-service": "^2.0.0",
6061
"vue": "^2.6.10",
@@ -64,7 +65,8 @@
6465
"node": ">= 10"
6566
},
6667
"files": [
67-
"types",
68+
"types/shims-vue-template-compiler.d.ts",
69+
"types/index.d.ts",
6870
"lib"
6971
],
7072
"homepage": "https://github.com/kazupon/vue-i18n-locale-message#readme",
@@ -92,9 +94,10 @@
9294
"lint": "eslint ./src ./test --ext .ts",
9395
"release:prepare": "shipjs prepare",
9496
"release:trigger": "shipjs trigger",
95-
"test": "npm run lint && npm run test:cover",
97+
"test": "npm run lint && npm run test:types && npm run test:cover",
9698
"test:cover": "npm run test:unit -- --coverage",
9799
"test:unit": "jest --env node",
100+
"test:types": "tsd",
98101
"test:watch": "jest --env node --watch"
99102
},
100103
"types": "types/index.d.ts"

test-d/index.test-d.ts

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
import { expectType } from 'tsd'
2+
import {
3+
MetaLocaleMessage,
4+
squeeze,
5+
infuse,
6+
SFCFileInfo
7+
} from '../types'
8+
9+
const files: SFCFileInfo[] = [{
10+
path: '/path/to/target/src/components/Hello.vue',
11+
content: `
12+
<template>
13+
<!-- template contents is here ... -->
14+
</template>
15+
16+
<script>
17+
// script codes is here ...
18+
</script>
19+
20+
<style scoped>
21+
// css style codes is here ...
22+
</style>
23+
24+
<i18n>
25+
{
26+
"en": {
27+
"ok": "OK",
28+
"cancel": "Cancel"
29+
},
30+
"ja": {
31+
"ok": "OK",
32+
"cancel": "キャンセル"
33+
}
34+
}
35+
</i18n>
36+
`
37+
}]
38+
39+
expectType<MetaLocaleMessage>(squeeze('/path/to/target', files))
40+
41+
const metaLocaleMessage: MetaLocaleMessage = {
42+
target: '/path/to/target',
43+
components: {
44+
'/path/to/project1/src/App.vue': [
45+
{
46+
lang: 'json',
47+
messages: {
48+
ja: {
49+
title: 'アプリケーション',
50+
lang: '言語切り替え'
51+
},
52+
en: {
53+
title: 'Application',
54+
lang: 'Change languages'
55+
}
56+
}
57+
}
58+
],
59+
'/path/to/project1/src/components/Modal.vue': [
60+
{
61+
lang: 'yaml',
62+
locale: 'ja',
63+
messages: {
64+
ja: {
65+
ok: 'OK',
66+
cancel: 'キャンセル'
67+
}
68+
}
69+
}
70+
]
71+
}
72+
}
73+
74+
expectType<SFCFileInfo[]>(infuse('/path/to/target', files, metaLocaleMessage, { intend: 2, eof: '\n' }))

0 commit comments

Comments
 (0)