mirror of https://github.com/vuejs/vue.git
90 lines
2.5 KiB
JavaScript
90 lines
2.5 KiB
JavaScript
describe('Misc Features', function () {
|
|
|
|
var nextTick = require('vue/src/utils').nextTick
|
|
|
|
describe('inline expression', function () {
|
|
it('should evaluate the correct value', function (done) {
|
|
var v = new Vue({
|
|
template: '{{a + "123" + b}} and {{c}}'
|
|
})
|
|
v.a = 'A'
|
|
v.b = 'B'
|
|
v.c = 'C'
|
|
nextTick(function () {
|
|
assert.strictEqual(v.$el.textContent, 'A123B and C')
|
|
done()
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('expression inside attributes', function () {
|
|
it('should interpolate the attribute', function (done) {
|
|
var v = new Vue({
|
|
attributes: {
|
|
test: 'one {{msg}} three'
|
|
},
|
|
data: {
|
|
msg: 'two'
|
|
}
|
|
})
|
|
assert.strictEqual(v.$el.getAttribute('test'), 'one two three')
|
|
v.msg = '2'
|
|
nextTick(function () {
|
|
assert.strictEqual(v.$el.getAttribute('test'), 'one 2 three')
|
|
done()
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('computed properties', function () {
|
|
it('should be accessible like a normal attribtue', function () {
|
|
var b = 2
|
|
var v = new Vue({
|
|
data: {
|
|
a: 1,
|
|
},
|
|
computed: {
|
|
test: {
|
|
$get: function () {
|
|
return this.a + b
|
|
},
|
|
$set: function (v) {
|
|
b = v - this.a
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
assert.strictEqual(v.test, 3)
|
|
v.a = 2
|
|
assert.strictEqual(v.test, 4)
|
|
b = 3
|
|
assert.strictEqual(v.test, 5)
|
|
v.test = 10
|
|
assert.strictEqual(b, 8)
|
|
})
|
|
})
|
|
|
|
describe('setting an object to empty', function () {
|
|
it('should emit undefined for paths in the old object', function (done) {
|
|
var v = new Vue({
|
|
data: {
|
|
a: {
|
|
b: { c: 1 }
|
|
}
|
|
}
|
|
})
|
|
var emitted = false
|
|
v.$watch('a.b.c', function (v) {
|
|
assert.strictEqual(v, undefined)
|
|
emitted = true
|
|
})
|
|
v.a = {}
|
|
nextTick(function () {
|
|
assert.ok(emitted)
|
|
done()
|
|
})
|
|
})
|
|
})
|
|
|
|
}) |