1import Vue from 'vue'2import { hasSymbol } from 'core/util/env'34describe('Directive v-for', () => {5 it('should render array of primitive values', done => {6 const vm = new Vue({7 template: `8 <div>9 <span v-for="item in list">{{item}}</span>10 </div>11 `,12 data: {13 list: ['a', 'b', 'c']14 }15 }).$mount()16 expect(vm.$el.innerHTML).toBe('<span>a</span><span>b</span><span>c</span>')17 Vue.set(vm.list, 0, 'd')18 waitForUpdate(() => {19 expect(vm.$el.innerHTML).toBe(20 '<span>d</span><span>b</span><span>c</span>'21 )22 vm.list.push('d')23 })24 .then(() => {25 expect(vm.$el.innerHTML).toBe(26 '<span>d</span><span>b</span><span>c</span><span>d</span>'27 )28 vm.list.splice(1, 2)29 })30 .then(() => {31 expect(vm.$el.innerHTML).toBe('<span>d</span><span>d</span>')32 vm.list = ['x', 'y']33 })34 .then(() => {35 expect(vm.$el.innerHTML).toBe('<span>x</span><span>y</span>')36 })37 .then(done)38 })3940 it('should render array of primitive values with index', done => {41 const vm = new Vue({42 template: `43 <div>44 <span v-for="(item, i) in list">{{i}}-{{item}}</span>45 </div>46 `,47 data: {48 list: ['a', 'b', 'c']49 }50 }).$mount()51 expect(vm.$el.innerHTML).toBe(52 '<span>0-a</span><span>1-b</span><span>2-c</span>'53 )54 Vue.set(vm.list, 0, 'd')55 waitForUpdate(() => {56 expect(vm.$el.innerHTML).toBe(57 '<span>0-d</span><span>1-b</span><span>2-c</span>'58 )59 vm.list.push('d')60 })61 .then(() => {62 expect(vm.$el.innerHTML).toBe(63 '<span>0-d</span><span>1-b</span><span>2-c</span><span>3-d</span>'64 )65 vm.list.splice(1, 2)66 })67 .then(() => {68 expect(vm.$el.innerHTML).toBe('<span>0-d</span><span>1-d</span>')69 vm.list = ['x', 'y']70 })71 .then(() => {72 expect(vm.$el.innerHTML).toBe('<span>0-x</span><span>1-y</span>')73 })74 .then(done)75 })7677 it('should render array of object values', done => {78 const vm = new Vue({79 template: `80 <div>81 <span v-for="item in list">{{item.value}}</span>82 </div>83 `,84 data: {85 list: [{ value: 'a' }, { value: 'b' }, { value: 'c' }]86 }87 }).$mount()88 expect(vm.$el.innerHTML).toBe('<span>a</span><span>b</span><span>c</span>')89 Vue.set(vm.list, 0, { value: 'd' })90 waitForUpdate(() => {91 expect(vm.$el.innerHTML).toBe(92 '<span>d</span><span>b</span><span>c</span>'93 )94 vm.list[0].value = 'e'95 })96 .then(() => {97 expect(vm.$el.innerHTML).toBe(98 '<span>e</span><span>b</span><span>c</span>'99 )100 vm.list.push({})101 })102 .then(() => {103 expect(vm.$el.innerHTML).toBe(104 '<span>e</span><span>b</span><span>c</span><span></span>'105 )106 vm.list.splice(1, 2)107 })108 .then(() => {109 expect(vm.$el.innerHTML).toBe('<span>e</span><span></span>')110 vm.list = [{ value: 'x' }, { value: 'y' }]111 })112 .then(() => {113 expect(vm.$el.innerHTML).toBe('<span>x</span><span>y</span>')114 })115 .then(done)116 })117118 it('should render array of object values with index', done => {119 const vm = new Vue({120 template: `121 <div>122 <span v-for="(item, i) in list">{{i}}-{{item.value}}</span>123 </div>124 `,125 data: {126 list: [{ value: 'a' }, { value: 'b' }, { value: 'c' }]127 }128 }).$mount()129 expect(vm.$el.innerHTML).toBe(130 '<span>0-a</span><span>1-b</span><span>2-c</span>'131 )132 Vue.set(vm.list, 0, { value: 'd' })133 waitForUpdate(() => {134 expect(vm.$el.innerHTML).toBe(135 '<span>0-d</span><span>1-b</span><span>2-c</span>'136 )137 vm.list[0].value = 'e'138 })139 .then(() => {140 expect(vm.$el.innerHTML).toBe(141 '<span>0-e</span><span>1-b</span><span>2-c</span>'142 )143 vm.list.push({})144 })145 .then(() => {146 expect(vm.$el.innerHTML).toBe(147 '<span>0-e</span><span>1-b</span><span>2-c</span><span>3-</span>'148 )149 vm.list.splice(1, 2)150 })151 .then(() => {152 expect(vm.$el.innerHTML).toBe('<span>0-e</span><span>1-</span>')153 vm.list = [{ value: 'x' }, { value: 'y' }]154 })155 .then(() => {156 expect(vm.$el.innerHTML).toBe('<span>0-x</span><span>1-y</span>')157 })158 .then(done)159 })160161 if (hasSymbol) {162 it('should render native iterables (Map)', () => {163 const vm = new Vue({164 template: `<div><span v-for="[key, val] in list">{{key}},{{val}}</span></div>`,165 data: {166 list: new Map([167 [1, 'foo'],168 [2, 'bar']169 ])170 }171 }).$mount()172 expect(vm.$el.innerHTML).toBe(`<span>1,foo</span><span>2,bar</span>`)173 })174175 it('should render native iterables (Set)', () => {176 const vm = new Vue({177 template: `<div><span v-for="val in list">{{val}}</span></div>`,178 data: {179 list: new Set([1, 2, 3])180 }181 }).$mount()182 expect(vm.$el.innerHTML).toBe(183 `<span>1</span><span>2</span><span>3</span>`184 )185 })186187 it('should render iterable of primitive values', done => {188 const iterable = {189 models: ['a', 'b', 'c'],190 index: 0,191 [Symbol.iterator]() {192 const iterator = {193 index: 0,194 models: this.models,195 next() {196 if (this.index < this.models.length) {197 return { value: this.models[this.index++] }198 } else {199 return { done: true }200 }201 }202 }203 return iterator204 }205 }206 const vm = new Vue({207 template: `208 <div>209 <span v-for="item in list">{{item}}</span>210 </div>211 `,212 data: {213 list: iterable214 }215 }).$mount()216 expect(vm.$el.innerHTML).toBe(217 '<span>a</span><span>b</span><span>c</span>'218 )219 Vue.set(vm.list.models, 0, 'd')220 waitForUpdate(() => {221 expect(vm.$el.innerHTML).toBe(222 '<span>d</span><span>b</span><span>c</span>'223 )224 vm.list.models.push('d')225 })226 .then(() => {227 expect(vm.$el.innerHTML).toBe(228 '<span>d</span><span>b</span><span>c</span><span>d</span>'229 )230 vm.list.models.splice(1, 2)231 })232 .then(() => {233 expect(vm.$el.innerHTML).toBe('<span>d</span><span>d</span>')234 vm.list.models = ['x', 'y']235 })236 .then(() => {237 expect(vm.$el.innerHTML).toBe('<span>x</span><span>y</span>')238 })239 .then(done)240 })241242 it('should render iterable of primitive values with index', done => {243 const iterable = {244 models: ['a', 'b', 'c'],245 index: 0,246 [Symbol.iterator]() {247 const iterator = {248 index: 0,249 models: this.models,250 next() {251 if (this.index < this.models.length) {252 return { value: this.models[this.index++] }253 } else {254 return { done: true }255 }256 }257 }258 return iterator259 }260 }261262 const vm = new Vue({263 template: `264 <div>265 <span v-for="(item, i) in list">{{i}}-{{item}}</span>266 </div>267 `,268 data: {269 list: iterable270 }271 }).$mount()272 expect(vm.$el.innerHTML).toBe(273 '<span>0-a</span><span>1-b</span><span>2-c</span>'274 )275 Vue.set(vm.list.models, 0, 'd')276 waitForUpdate(() => {277 expect(vm.$el.innerHTML).toBe(278 '<span>0-d</span><span>1-b</span><span>2-c</span>'279 )280 vm.list.models.push('d')281 })282 .then(() => {283 expect(vm.$el.innerHTML).toBe(284 '<span>0-d</span><span>1-b</span><span>2-c</span><span>3-d</span>'285 )286 vm.list.models.splice(1, 2)287 })288 .then(() => {289 expect(vm.$el.innerHTML).toBe('<span>0-d</span><span>1-d</span>')290 vm.list.models = ['x', 'y']291 })292 .then(() => {293 expect(vm.$el.innerHTML).toBe('<span>0-x</span><span>1-y</span>')294 })295 .then(done)296 })297298 it('should render iterable of object values', done => {299 const iterable = {300 models: [{ value: 'a' }, { value: 'b' }, { value: 'c' }],301 index: 0,302 [Symbol.iterator]() {303 const iterator = {304 index: 0,305 models: this.models,306 next() {307 if (this.index < this.models.length) {308 return { value: this.models[this.index++] }309 } else {310 return { done: true }311 }312 }313 }314 return iterator315 }316 }317318 const vm = new Vue({319 template: `320 <div>321 <span v-for="item in list">{{item.value}}</span>322 </div>323 `,324 data: {325 list: iterable326 }327 }).$mount()328 expect(vm.$el.innerHTML).toBe(329 '<span>a</span><span>b</span><span>c</span>'330 )331 Vue.set(vm.list.models, 0, { value: 'd' })332 waitForUpdate(() => {333 expect(vm.$el.innerHTML).toBe(334 '<span>d</span><span>b</span><span>c</span>'335 )336 vm.list.models[0].value = 'e'337 })338 .then(() => {339 expect(vm.$el.innerHTML).toBe(340 '<span>e</span><span>b</span><span>c</span>'341 )342 vm.list.models.push({})343 })344 .then(() => {345 expect(vm.$el.innerHTML).toBe(346 '<span>e</span><span>b</span><span>c</span><span></span>'347 )348 vm.list.models.splice(1, 2)349 })350 .then(() => {351 expect(vm.$el.innerHTML).toBe('<span>e</span><span></span>')352 vm.list.models = [{ value: 'x' }, { value: 'y' }]353 })354 .then(() => {355 expect(vm.$el.innerHTML).toBe('<span>x</span><span>y</span>')356 })357 .then(done)358 })359360 it('should render iterable of object values with index', done => {361 const iterable = {362 models: [{ value: 'a' }, { value: 'b' }, { value: 'c' }],363 index: 0,364 [Symbol.iterator]() {365 const iterator = {366 index: 0,367 models: this.models,368 next() {369 if (this.index < this.models.length) {370 return { value: this.models[this.index++] }371 } else {372 return { done: true }373 }374 }375 }376 return iterator377 }378 }379380 const vm = new Vue({381 template: `382 <div>383 <span v-for="(item, i) in list">{{i}}-{{item.value}}</span>384 </div>385 `,386 data: {387 list: iterable388 }389 }).$mount()390 expect(vm.$el.innerHTML).toBe(391 '<span>0-a</span><span>1-b</span><span>2-c</span>'392 )393 Vue.set(vm.list.models, 0, { value: 'd' })394 waitForUpdate(() => {395 expect(vm.$el.innerHTML).toBe(396 '<span>0-d</span><span>1-b</span><span>2-c</span>'397 )398 vm.list.models[0].value = 'e'399 })400 .then(() => {401 expect(vm.$el.innerHTML).toBe(402 '<span>0-e</span><span>1-b</span><span>2-c</span>'403 )404 vm.list.models.push({})405 })406 .then(() => {407 expect(vm.$el.innerHTML).toBe(408 '<span>0-e</span><span>1-b</span><span>2-c</span><span>3-</span>'409 )410 vm.list.models.splice(1, 2)411 })412 .then(() => {413 expect(vm.$el.innerHTML).toBe('<span>0-e</span><span>1-</span>')414 vm.list.models = [{ value: 'x' }, { value: 'y' }]415 })416 .then(() => {417 expect(vm.$el.innerHTML).toBe('<span>0-x</span><span>1-y</span>')418 })419 .then(done)420 })421 }422423 it('should render an Object', done => {424 const vm = new Vue({425 template: `426 <div>427 <span v-for="val in obj">{{val}}</span>428 </div>429 `,430 data: {431 obj: { a: 0, b: 1, c: 2 }432 }433 }).$mount()434 expect(vm.$el.innerHTML).toBe('<span>0</span><span>1</span><span>2</span>')435 vm.obj.a = 3436 waitForUpdate(() => {437 expect(vm.$el.innerHTML).toBe(438 '<span>3</span><span>1</span><span>2</span>'439 )440 Vue.set(vm.obj, 'd', 4)441 })442 .then(() => {443 expect(vm.$el.innerHTML).toBe(444 '<span>3</span><span>1</span><span>2</span><span>4</span>'445 )446 Vue.delete(vm.obj, 'a')447 })448 .then(() => {449 expect(vm.$el.innerHTML).toBe(450 '<span>1</span><span>2</span><span>4</span>'451 )452 })453 .then(done)454 })455456 it('should render an Object with key', done => {457 const vm = new Vue({458 template: `459 <div>460 <span v-for="(val, key) in obj">{{val}}-{{key}}</span>461 </div>462 `,463 data: {464 obj: { a: 0, b: 1, c: 2 }465 }466 }).$mount()467 expect(vm.$el.innerHTML).toBe(468 '<span>0-a</span><span>1-b</span><span>2-c</span>'469 )470 vm.obj.a = 3471 waitForUpdate(() => {472 expect(vm.$el.innerHTML).toBe(473 '<span>3-a</span><span>1-b</span><span>2-c</span>'474 )475 Vue.set(vm.obj, 'd', 4)476 })477 .then(() => {478 expect(vm.$el.innerHTML).toBe(479 '<span>3-a</span><span>1-b</span><span>2-c</span><span>4-d</span>'480 )481 Vue.delete(vm.obj, 'a')482 })483 .then(() => {484 expect(vm.$el.innerHTML).toBe(485 '<span>1-b</span><span>2-c</span><span>4-d</span>'486 )487 })488 .then(done)489 })490491 it('should render an Object with key and index', done => {492 const vm = new Vue({493 template: `494 <div>495 <span v-for="(val, key, i) in obj">{{val}}-{{key}}-{{i}}</span>496 </div>497 `,498 data: {499 obj: { a: 0, b: 1, c: 2 }500 }501 }).$mount()502 expect(vm.$el.innerHTML).toBe(503 '<span>0-a-0</span><span>1-b-1</span><span>2-c-2</span>'504 )505 vm.obj.a = 3506 waitForUpdate(() => {507 expect(vm.$el.innerHTML).toBe(508 '<span>3-a-0</span><span>1-b-1</span><span>2-c-2</span>'509 )510 Vue.set(vm.obj, 'd', 4)511 })512 .then(() => {513 expect(vm.$el.innerHTML).toBe(514 '<span>3-a-0</span><span>1-b-1</span><span>2-c-2</span><span>4-d-3</span>'515 )516 Vue.delete(vm.obj, 'a')517 })518 .then(() => {519 expect(vm.$el.innerHTML).toBe(520 '<span>1-b-0</span><span>2-c-1</span><span>4-d-2</span>'521 )522 })523 .then(done)524 })525526 it('should render each key of data', done => {527 const vm = new Vue({528 template: `529 <div>530 <span v-for="(val, key) in $data">{{val}}-{{key}}</span>531 </div>532 `,533 data: { a: 0, b: 1, c: 2 }534 }).$mount()535 expect(vm.$el.innerHTML).toBe(536 '<span>0-a</span><span>1-b</span><span>2-c</span>'537 )538 vm.a = 3539 waitForUpdate(() => {540 expect(vm.$el.innerHTML).toBe(541 '<span>3-a</span><span>1-b</span><span>2-c</span>'542 )543 }).then(done)544 })545546 it('check priorities: v-if before v-for', function () {547 const vm = new Vue({548 data: {549 items: [1, 2, 3]550 },551 template:552 '<div><div v-if="item < 3" v-for="item in items">{{item}}</div></div>'553 }).$mount()554 expect(vm.$el.textContent).toBe('12')555 })556557 it('check priorities: v-if after v-for', function () {558 const vm = new Vue({559 data: {560 items: [1, 2, 3]561 },562 template:563 '<div><div v-for="item in items" v-if="item < 3">{{item}}</div></div>'564 }).$mount()565 expect(vm.$el.textContent).toBe('12')566 })567568 it('range v-for', () => {569 const vm = new Vue({570 template: '<div><div v-for="n in 3">{{n}}</div></div>'571 }).$mount()572 expect(vm.$el.textContent).toBe('123')573 })574575 it('without key', done => {576 const vm = new Vue({577 data: {578 items: [579 { id: 1, msg: 'a' },580 { id: 2, msg: 'b' },581 { id: 3, msg: 'c' }582 ]583 },584 template: '<div><div v-for="item in items">{{ item.msg }}</div></div>'585 }).$mount()586 expect(vm.$el.textContent).toBe('abc')587 const first = vm.$el.children[0]588 vm.items.reverse()589 waitForUpdate(() => {590 expect(vm.$el.textContent).toBe('cba')591 // assert reusing DOM element in place592 expect(vm.$el.children[0]).toBe(first)593 }).then(done)594 })595596 it('with key', done => {597 const vm = new Vue({598 data: {599 items: [600 { id: 1, msg: 'a' },601 { id: 2, msg: 'b' },602 { id: 3, msg: 'c' }603 ]604 },605 template:606 '<div><div v-for="item in items" :key="item.id">{{ item.msg }}</div></div>'607 }).$mount()608 expect(vm.$el.textContent).toBe('abc')609 const first = vm.$el.children[0]610 vm.items.reverse()611 waitForUpdate(() => {612 expect(vm.$el.textContent).toBe('cba')613 // assert moving DOM element614 expect(vm.$el.children[0]).not.toBe(first)615 expect(vm.$el.children[2]).toBe(first)616 }).then(done)617 })618619 it('nested loops', () => {620 const vm = new Vue({621 data: {622 items: [623 { items: [{ a: 1 }, { a: 2 }], a: 1 },624 { items: [{ a: 3 }, { a: 4 }], a: 2 }625 ]626 },627 template:628 '<div>' +629 '<div v-for="(item, i) in items">' +630 '<p v-for="(subItem, j) in item.items">{{j}} {{subItem.a}} {{i}} {{item.a}}</p>' +631 '</div>' +632 '</div>'633 }).$mount()634 expect(vm.$el.innerHTML).toBe(635 '<div><p>0 1 0 1</p><p>1 2 0 1</p></div>' +636 '<div><p>0 3 1 2</p><p>1 4 1 2</p></div>'637 )638 })639640 it('template v-for', done => {641 const vm = new Vue({642 data: {643 list: [{ a: 1 }, { a: 2 }, { a: 3 }]644 },645 template:646 '<div>' +647 '<template v-for="item in list">' +648 '<p>{{item.a}}</p>' +649 '<p>{{item.a + 1}}</p>' +650 '</template>' +651 '</div>'652 }).$mount()653 assertMarkup()654 vm.list.reverse()655 waitForUpdate(() => {656 assertMarkup()657 vm.list.splice(1, 1)658 })659 .then(() => {660 assertMarkup()661 vm.list.splice(1, 0, { a: 2 })662 })663 .then(done)664665 function assertMarkup() {666 const markup = vm.list667 .map(function (item) {668 return '<p>' + item.a + '</p><p>' + (item.a + 1) + '</p>'669 })670 .join('')671 expect(vm.$el.innerHTML).toBe(markup)672 }673 })674675 it('component v-for', done => {676 const vm = new Vue({677 data: {678 list: [{ a: 1 }, { a: 2 }, { a: 3 }]679 },680 template:681 '<div>' +682 '<test v-for="item in list" :msg="item.a" :key="item.a">' +683 '<span>{{item.a}}</span>' +684 '</test>' +685 '</div>',686 components: {687 test: {688 props: ['msg'],689 template: '<p>{{msg}}<slot></slot></p>'690 }691 }692 }).$mount()693 assertMarkup()694 vm.list.reverse()695 waitForUpdate(() => {696 assertMarkup()697 vm.list.splice(1, 1)698 })699 .then(() => {700 assertMarkup()701 vm.list.splice(1, 0, { a: 2 })702 })703 .then(done)704705 function assertMarkup() {706 const markup = vm.list707 .map(function (item) {708 return `<p>${item.a}<span>${item.a}</span></p>`709 })710 .join('')711 expect(vm.$el.innerHTML).toBe(markup)712 }713 })714715 it('dynamic component v-for', done => {716 const vm = new Vue({717 data: {718 list: [{ type: 'one' }, { type: 'two' }]719 },720 template:721 '<div>' +722 '<component v-for="item in list" :key="item.type" :is="item.type"></component>' +723 '</div>',724 components: {725 one: {726 template: '<p>One!</p>'727 },728 two: {729 template: '<div>Two!</div>'730 }731 }732 }).$mount()733 expect(vm.$el.innerHTML).toContain('<p>One!</p><div>Two!</div>')734 vm.list.reverse()735 waitForUpdate(() => {736 expect(vm.$el.innerHTML).toContain('<div>Two!</div><p>One!</p>')737 }).then(done)738 })739740 it('should warn component v-for without keys', () => {741 new Vue({742 template: `<div><test v-for="i in 3"></test></div>`,743 components: {744 test: {745 render() {}746 }747 }748 }).$mount()749 expect(750 `<test v-for="i in 3">: component lists rendered with v-for should have explicit keys`751 ).toHaveBeenTipped()752 })753754 it('multi nested array reactivity', done => {755 const vm = new Vue({756 data: {757 list: [[['foo']]]758 },759 template: `760 <div>761 <div v-for="i in list">762 <div v-for="j in i">763 <div v-for="k in j">764 {{ k }}765 </div>766 </div>767 </div>768 </div>769 `770 }).$mount()771 expect(vm.$el.textContent).toMatch(/\s+foo\s+/)772 vm.list[0][0].push('bar')773 waitForUpdate(() => {774 expect(vm.$el.textContent).toMatch(/\s+foo\s+bar\s+/)775 }).then(done)776 })777778 it('should work with strings', done => {779 const vm = new Vue({780 data: {781 text: 'foo'782 },783 template: `784 <div>785 <span v-for="letter in text">{{ letter }}.</span>786 </div>787 `788 }).$mount()789 expect(vm.$el.textContent).toMatch('f.o.o.')790 vm.text += 'bar'791 waitForUpdate(() => {792 expect(vm.$el.textContent).toMatch('f.o.o.b.a.r.')793 }).then(done)794 })795796 // #7792797 it('should work with multiline expressions', () => {798 const vm = new Vue({799 data: {800 a: [1],801 b: [2]802 },803 template: `804 <div>805 <span v-for="n in (806 a.concat(807 b808 )809 )">{{ n }}</span>810 </div>811 `812 }).$mount()813 expect(vm.$el.textContent).toBe('12')814 })815816 // #9181817 it('components with v-for and empty list', done => {818 const vm = new Vue({819 template:820 '<div attr>' +821 '<foo v-for="item in list" :key="item">{{ item }}</foo>' +822 '</div>',823 data: {824 list: undefined825 },826 components: {827 foo: {828 template: '<div><slot></slot></div>'829 }830 }831 }).$mount()832 expect(vm.$el.innerHTML).toBe('')833 vm.list = [1, 2, 3]834 waitForUpdate(() => {835 expect(vm.$el.innerHTML).toBe('<div>1</div><div>2</div><div>3</div>')836 }).then(done)837 })838839 it('elements with v-for and empty list', done => {840 const vm = new Vue({841 template:842 '<div attr>' + '<div v-for="item in list">{{ item }}</div>' + '</div>',843 data: {844 list: undefined845 }846 }).$mount()847 expect(vm.$el.innerHTML).toBe('')848 vm.list = [1, 2, 3]849 waitForUpdate(() => {850 expect(vm.$el.innerHTML).toBe('<div>1</div><div>2</div><div>3</div>')851 }).then(done)852 })853854 const supportsDestructuring = (() => {855 try {856 new Function('var { foo } = bar')857 return true858 } catch (e) {}859 })()860861 if (supportsDestructuring) {862 it('should support destructuring syntax in alias position (object)', () => {863 const vm = new Vue({864 data: { list: [{ foo: 'hi', bar: 'ho' }] },865 template:866 '<div><div v-for="({ foo, bar }, i) in list">{{ foo }} {{ bar }} {{ i }}</div></div>'867 }).$mount()868 expect(vm.$el.textContent).toBe('hi ho 0')869 })870871 it('should support destructuring syntax in alias position (array)', () => {872 const vm = new Vue({873 data: {874 list: [875 [1, 2],876 [3, 4]877 ]878 },879 template:880 '<div><div v-for="([ foo, bar ], i) in list">{{ foo }} {{ bar }} {{ i }}</div></div>'881 }).$mount()882 expect(vm.$el.textContent).toBe('1 2 03 4 1')883 })884 }885})
Findings
✓ No findings reported for this file.