2015-01-27 01:52:29 +08:00
|
|
|
// test cases for edge cases & bug fixes
|
|
|
|
var Vue = require('../../../src/vue')
|
|
|
|
|
|
|
|
describe('Misc', function () {
|
|
|
|
|
|
|
|
it('should handle directive.bind() altering its childNode structure', function () {
|
|
|
|
var vm = new Vue({
|
|
|
|
el: document.createElement('div'),
|
|
|
|
template: '<div v-test>{{test}}</div>',
|
|
|
|
data: {
|
|
|
|
test: 'hi'
|
|
|
|
},
|
|
|
|
directives: {
|
|
|
|
test: {
|
|
|
|
bind: function () {
|
|
|
|
this.el.insertBefore(document.createTextNode('yo '),
|
|
|
|
this.el.firstChild)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
expect(vm.$el.textContent).toBe('yo hi')
|
|
|
|
})
|
|
|
|
|
2015-02-03 02:22:01 +08:00
|
|
|
it('attached/detached hooks for transcluded components', function () {
|
|
|
|
var spy1 = jasmine.createSpy('attached')
|
|
|
|
var spy2 = jasmine.createSpy('detached')
|
|
|
|
var el = document.createElement('div')
|
2015-05-15 23:48:31 +08:00
|
|
|
el.innerHTML = '<outer v-ref="outter"><inner></inner></outer>'
|
2015-02-03 02:22:01 +08:00
|
|
|
document.body.appendChild(el)
|
|
|
|
|
|
|
|
var vm = new Vue({
|
|
|
|
el: el,
|
|
|
|
components: {
|
2015-05-15 23:48:31 +08:00
|
|
|
outer: {
|
2015-02-03 02:22:01 +08:00
|
|
|
template: '<content></content>'
|
|
|
|
},
|
|
|
|
inner: {
|
|
|
|
template: 'hi',
|
|
|
|
attached: spy1,
|
|
|
|
detached: spy2
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
expect(spy1).toHaveBeenCalled()
|
|
|
|
vm.$.outter.$remove()
|
|
|
|
expect(spy2).toHaveBeenCalled()
|
|
|
|
})
|
|
|
|
|
2015-05-13 11:00:53 +08:00
|
|
|
it('v-repeat on component root node with replace:true', function () {
|
|
|
|
var el = document.createElement('div')
|
|
|
|
var vm = new Vue({
|
|
|
|
el: el,
|
2015-05-15 23:48:31 +08:00
|
|
|
template: '<test></test>',
|
2015-05-13 11:00:53 +08:00
|
|
|
components: {
|
|
|
|
test: {
|
|
|
|
data: function () {
|
|
|
|
return { list: [1, 2, 3] }
|
|
|
|
},
|
|
|
|
template: '<div v-repeat="list">{{$value}}</div>',
|
|
|
|
replace: true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
2015-05-25 09:21:21 +08:00
|
|
|
expect(vm.$el.innerHTML).toBe('<div>1</div><div>2</div><div>3</div>')
|
2015-05-13 11:00:53 +08:00
|
|
|
})
|
|
|
|
|
2015-06-10 22:39:48 +08:00
|
|
|
// #922
|
|
|
|
it('template repeat inside svg', function () {
|
|
|
|
var el = document.createElement('div')
|
|
|
|
var vm = new Vue({
|
|
|
|
el: el,
|
|
|
|
template: '<svg><template v-repeat="list"><text>{{$value}}</text></template></svg>',
|
|
|
|
data: {
|
|
|
|
list: [1, 2, 3]
|
|
|
|
}
|
|
|
|
})
|
|
|
|
expect(el.innerHTML).toBe('<svg><text>1</text><text>2</text><text>3</text></svg>')
|
|
|
|
})
|
|
|
|
|
2015-01-27 01:52:29 +08:00
|
|
|
})
|