Browse Source

update if tests

dev
Evan You 9 years ago
parent
commit
7169d14179
  1. 2
      package.json
  2. 56
      test/unit/features/directives/if.spec.js
  3. 7
      test/unit/features/global-api/global-config.spec.js
  4. 4
      test/unit/index.js

2
package.json

@ -13,7 +13,7 @@
"dev": "webpack --watch --config build/webpack.dist.dev.config.js",
"dev-test": "karma start build/karma.dev.config.js",
"dev-ssr": "webpack --watch --config build/webpack.ssr.dev.config.js",
"test": "npm run unit && npm run e2e",
"test": "npm run lint && npm run unit && npm run e2e",
"build": "NODE_ENV=production node build/build.js",
"lint": "eslint src build test",
"unit": "karma start build/karma.unit.config.js",

56
test/unit/features/directives/if.spec.js

@ -5,7 +5,7 @@ describe('Directive v-if', () => {
const vm = new Vue({
el: '#app',
template: '<div><span v-if="foo">hello</span></div>',
data: {foo: true}
data: { foo: true }
})
expect(vm.$el.innerHTML).toBe('<span>hello</span>')
})
@ -14,16 +14,16 @@ describe('Directive v-if', () => {
const vm = new Vue({
el: '#app',
template: '<div><span v-if="foo">hello</span></div>',
data: {foo: false}
data: { foo: false }
})
expect(vm.$el.innerHTML).toBe('')
})
it('should update if value changed', (done) => {
it('should update if value changed', done => {
const vm = new Vue({
el: '#app',
template: '<div><span v-if="foo">hello</span></div>',
data: {foo: true}
data: { foo: true }
})
expect(vm.$el.innerHTML).toBe('<span>hello</span>')
vm.foo = false
@ -57,11 +57,16 @@ describe('Directive v-if', () => {
})
})
it('should work well with v-else', (done) => {
it('should work well with v-else', done => {
const vm = new Vue({
el: '#app',
template: '<div><span v-if="foo">hello</span><span v-else>bye</span></div>',
data: {foo: true}
template: `
<div>
<span v-if="foo">hello</span>
<span v-else>bye</span>
</div>
`,
data: { foo: true }
})
expect(vm.$el.innerHTML).toBe('<span>hello</span>')
vm.foo = false
@ -95,18 +100,28 @@ describe('Directive v-if', () => {
})
})
it('should work well with v-for', (done) => {
it('should work well with v-for', done => {
const vm = new Vue({
el: '#app',
template: '<div><span v-for="item,i in list" v-if="item.value">{{i}}</span></div>',
data: {list: [{value: true}, {value: false}, {value: true}]}
template: `
<div>
<span v-for="item,i in list" v-if="item.value">{{i}}</span>
</div>
`,
data: {
list: [
{ value: true },
{ value: false },
{ value: true }
]
}
})
expect(vm.$el.innerHTML).toBe('<span>0</span><span>2</span>')
vm.list[0].value = false
setTimeout(() => {
new Promise((res, rej) => {
expect(vm.$el.innerHTML).toBe('<span>2</span>')
vm.list.push({value: true})
vm.list.push({ value: true })
res()
}).then(() => {
expect(vm.$el.innerHTML).toBe('<span>2</span><span>3</span>')
@ -118,18 +133,29 @@ describe('Directive v-if', () => {
})
})
it('should work well with v-for and v-else', (done) => {
it('should work well with v-for and v-else', done => {
const vm = new Vue({
el: '#app',
template: '<div><span v-for="item,i in list" v-if="item.value">hello</span><span v-else>bye</span></div>',
data: {list: [{value: true}, {value: false}, {value: true}]}
template: `
<div>
<span v-for="item,i in list" v-if="item.value">hello</span>
<span v-else>bye</span>
</div>
`,
data: {
list: [
{ value: true },
{ value: false },
{ value: true }
]
}
})
expect(vm.$el.innerHTML).toBe('<span>hello</span><span>bye</span><span>hello</span>')
vm.list[0].value = false
setTimeout(() => {
new Promise((res, rej) => {
expect(vm.$el.innerHTML).toBe('<span>bye</span><span>bye</span><span>hello</span>')
vm.list.push({value: true})
vm.list.push({ value: true })
res()
}).then(() => {
expect(vm.$el.innerHTML).toBe('<span>bye</span><span>bye</span><span>hello</span><span>hello</span>')

7
test/unit/features/global-api/global-config.spec.js

@ -2,22 +2,23 @@ import Vue from 'vue'
describe('Global config', () => {
describe('preserveWhitespace', () => {
it('should be true by default', () => {
it('should preserve whitepspaces when set to true', () => {
// this option is set to false during unit tests.
Vue.config.preserveWhitespace = true
const vm = new Vue({
el: document.createElement('div'),
template: '<div><span>hi</span> <span>ha</span></div>'
})
expect(vm.$el.innerHTML).toBe('<span>hi</span> <span>ha</span>')
Vue.config.preserveWhitespace = false
})
it('should remove whitespaces when set to false', () => {
Vue.config.preserveWhitespace = false
const vm = new Vue({
el: document.createElement('div'),
template: '<div><span>hi</span> <span>ha</span></div>'
})
expect(vm.$el.innerHTML).toBe('<span>hi</span><span>ha</span>')
Vue.config.preserveWhitespace = true
})
})

4
test/unit/index.js

@ -1,3 +1,7 @@
import Vue from 'vue'
Vue.config.preserveWhitespace = false
if (typeof console === 'undefined') {
window.console = {
error: function () {}

Loading…
Cancel
Save