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('
' + wrap('

A

B

') + '
') }) it('inline', function () { var vm = new Vue({ el: el, template: '
{{>test}}
', partials: { test: '

{{a}}

{{b}}

' }, data: { a: 'A', b: 'B' } }) expect(el.innerHTML).toBe('
' + wrap('

A

B

') + '
') }) 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') + '
') }) }) }