Skip to content

Commit d9f8dcb

Browse files
committed
Add testing config
1 parent c87fc63 commit d9f8dcb

File tree

10 files changed

+19425
-8005
lines changed

10 files changed

+19425
-8005
lines changed

.eslintrc.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,12 @@ module.exports = {
242242
],
243243
},
244244
},
245+
{
246+
files: ['**/__tests__/*.{j,t}s?(x)', '**/tests/unit/**/*.spec.{j,t}s?(x)'],
247+
env: {
248+
jest: true,
249+
},
250+
},
245251
],
246252
rules: {
247253
...baseRules,

babel.config.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module.exports = {
2+
presets: [
3+
'@vue/cli-plugin-babel/preset'
4+
]
5+
}

helper/classes.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@
5757
"is-fullwidth": ["expanded"]
5858
},
5959
"VButton": {
60-
"is-fullwidth": ["expanded"]
60+
"is-fullwidth": ["expanded"],
61+
"disabled": ["disabled"]
6162
},
6263
"VTag": {
6364
"tags": ["isClosable"],

jest.config.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module.exports = {
2+
preset: '@vue/cli-plugin-unit-jest',
3+
transform: {
4+
'^.+\\.vue$': 'vue-jest',
5+
},
6+
}

package-lock.json

Lines changed: 19300 additions & 8002 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131
"lint-arg": "eslint --ext .js,.ts,.vue,.md,.html --max-warnings=0",
3232
"lint-fix": "eslint --ext .js,.ts,.vue,.md,.html --fix .",
3333
"prepublishOnly": "npm run build",
34-
"release": "npm run build && np"
34+
"release": "npm run build && np",
35+
"test:unit": "vue-cli-service test:unit"
3536
},
3637
"husky": {
3738
"hooks": {
@@ -56,15 +57,21 @@
5657
"@pathscale/eslint-plugin-vue3": "0.0.1",
5758
"@rollup/plugin-node-resolve": "^11.0.1",
5859
"@rollup/plugin-replace": "^2.3.4",
60+
"@testing-library/vue": "^6.4.2",
5961
"@types/babel__traverse": "^7.11.0",
6062
"@types/fs-extra": "^9.0.5",
6163
"@types/node": "*",
6264
"@types/resolve": "^1.17.1",
6365
"@typescript-eslint/eslint-plugin": "^4.11.0",
6466
"@typescript-eslint/parser": "^4.11.0",
67+
"@vue/cli-plugin-babel": "~4.5.0",
68+
"@vue/cli-plugin-eslint": "~4.5.0",
69+
"@vue/cli-plugin-unit-jest": "^4.5.15",
70+
"@vue/cli-service": "~4.5.0",
6571
"@vue/compiler-sfc": "^3.0.4",
6672
"@wessberg/rollup-plugin-ts": "^1.3.8",
6773
"autoprefixer": "^10.1.0",
74+
"babel-eslint": "^10.1.0",
6875
"eslint": "^7.16.0",
6976
"eslint-config-ash-nazg": "^22.10.0",
7077
"eslint-config-prettier": "^7.1.0",
@@ -107,7 +114,8 @@
107114
"tslib": "^2.0.3",
108115
"typescript": "^4.1.3",
109116
"vue": "^3.0.4",
110-
"vue-eslint-parser": "^7.3.0"
117+
"vue-eslint-parser": "^7.3.0",
118+
"vue-jest": "^5.0.0-0"
111119
},
112120
"peerDependencies": {
113121
"vue": "^3.0.4"

src/App.vue

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<template>
2+
<img alt="Vue logo" src="./assets/logo.png">
3+
<HelloWorld msg="Welcome to Your Vue.js App"/>
4+
</template>
5+
6+
<script>
7+
import HelloWorld from './components/HelloWorld.vue'
8+
9+
export default {
10+
name: 'App',
11+
components: {
12+
HelloWorld
13+
}
14+
}
15+
</script>
16+
17+
<style>
18+
#app {
19+
font-family: Avenir, Helvetica, Arial, sans-serif;
20+
-webkit-font-smoothing: antialiased;
21+
-moz-osx-font-smoothing: grayscale;
22+
text-align: center;
23+
color: #2c3e50;
24+
margin-top: 60px;
25+
}
26+
</style>

src/assets/logo.png

6.69 KB
Loading

src/components/HelloWorld.vue

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<template>
2+
<div class="hello">
3+
<h1>{{ msg }}</h1>
4+
<p>
5+
For a guide and recipes on how to configure / customize this project,<br>
6+
check out the
7+
<a href="https://cli.vuejs.org" target="_blank" rel="noopener">vue-cli documentation</a>.
8+
</p>
9+
<h3>Installed CLI Plugins</h3>
10+
<ul>
11+
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel" target="_blank" rel="noopener">babel</a></li>
12+
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint" target="_blank" rel="noopener">eslint</a></li>
13+
</ul>
14+
<h3>Essential Links</h3>
15+
<ul>
16+
<li><a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a></li>
17+
<li><a href="https://forum.vuejs.org" target="_blank" rel="noopener">Forum</a></li>
18+
<li><a href="https://chat.vuejs.org" target="_blank" rel="noopener">Community Chat</a></li>
19+
<li><a href="https://twitter.com/vuejs" target="_blank" rel="noopener">Twitter</a></li>
20+
<li><a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a></li>
21+
</ul>
22+
<h3>Ecosystem</h3>
23+
<ul>
24+
<li><a href="https://router.vuejs.org" target="_blank" rel="noopener">vue-router</a></li>
25+
<li><a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a></li>
26+
<li><a href="https://github.com/vuejs/vue-devtools#vue-devtools" target="_blank" rel="noopener">vue-devtools</a></li>
27+
<li><a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener">vue-loader</a></li>
28+
<li><a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">awesome-vue</a></li>
29+
</ul>
30+
</div>
31+
</template>
32+
33+
<script>
34+
export default {
35+
name: 'HelloWorld',
36+
props: {
37+
msg: String
38+
}
39+
}
40+
</script>
41+
42+
<!-- Add "scoped" attribute to limit CSS to this component only -->
43+
<style scoped>
44+
h3 {
45+
margin: 40px 0 0;
46+
}
47+
ul {
48+
list-style-type: none;
49+
padding: 0;
50+
}
51+
li {
52+
display: inline-block;
53+
margin: 0 10px;
54+
}
55+
a {
56+
color: #42b983;
57+
}
58+
</style>

tests/unit/example.spec.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { render } from '@testing-library/vue'
2+
import HelloWorld from '@/components/HelloWorld.vue'
3+
4+
describe('HelloWorld.vue', () => {
5+
it('renders props.msg when passed', () => {
6+
const msg = 'new message'
7+
const { getByText } = render(HelloWorld, {
8+
props: { msg },
9+
})
10+
getByText(msg)
11+
})
12+
})

0 commit comments

Comments
 (0)