var _ = require('../../../../src/util')
var Vue = require('../../../../src/vue')
if (_.inBrowser) {
describe('v-partial', function () {
var el
beforeEach(function () {
el = document.createElement('div')
spyOn(_, 'warn')
})
function wrap (content) {
return '' + content + ''
}
it('element', function () {
var vm = new Vue({
el: el,
template: '
',
partials: {
test: '{{a}}
{{b}}
'
},
data: {
a: 'A',
b: 'B'
}
})
expect(el.innerHTML).toBe('')
})
it('inline', function () {
var vm = new Vue({
el: el,
template: '{{>test}}
',
partials: {
test: '{{a}}
{{b}}
'
},
data: {
a: 'A',
b: 'B'
}
})
expect(el.innerHTML).toBe('')
})
it('not found', function () {
var vm = new Vue({
el: el,
template: '{{>test}}
'
})
expect(el.innerHTML).toBe('' + wrap('') + '
')
})
it('dynamic partial', function (done) {
var vm = new Vue({
el: el,
template: '',
data: {
msg: 'hello',
partial: 'p1'
},
partials: {
p1: '{{msg}}',
p2: ''
},
components: {
child: {
data: function () {
return {a:123}
},
template: '{{a}}'
}
}
})
expect(el.firstChild.innerHTML).toBe(wrap('hello'))
expect(vm._directives.length).toBe(2)
vm.partial = 'p2'
_.nextTick(function () {
expect(el.firstChild.innerHTML).toBe(wrap('123
'))
expect(vm._directives.length).toBe(2)
expect(vm._children.length).toBe(1)
vm.partial = 'p1'
_.nextTick(function () {
expect(el.firstChild.innerHTML).toBe(wrap('hello'))
expect(vm._directives.length).toBe(2)
expect(vm._children.length).toBe(0)
done()
})
})
})
it('template block partial', function (done) {
var vm = new Vue({
el: el,
template: '',
data: {
test: 'p1',
msg: 'b'
},
partials: {
p1: 'a {{msg}} c',
p2: '12'
}
})
expect(el.innerHTML).toBe(wrap('a b c'))
vm.test = 'p2'
_.nextTick(function () {
expect(el.innerHTML).toBe(wrap('12'))
done()
})
})
it('partial with filters', function () {
var vm = new Vue({
el: el,
template: '{{>test | replace}}
',
partials: {
test: '{{a}}'
},
data: {
a: 'A',
b: 'B'
},
filters: {
replace: function () {
return '{{b}}'
}
}
})
expect(el.innerHTML).toBe('' + wrap('B') + '
')
})
})
}