|
5 | 5 | createElement: h,
|
6 | 6 | provide,
|
7 | 7 | inject,
|
| 8 | + reactive, |
8 | 9 | toRefs,
|
9 | 10 | } = require('../src')
|
10 | 11 |
|
@@ -466,6 +467,107 @@ describe('setup', () => {
|
466 | 467 | .then(done)
|
467 | 468 | })
|
468 | 469 |
|
| 470 | + it('should unwrap on the template', () => { |
| 471 | + const vm = new Vue({ |
| 472 | + setup() { |
| 473 | + const r = ref('r') |
| 474 | + const nested = { |
| 475 | + a: ref('a'), |
| 476 | + aa: { |
| 477 | + b: ref('aa'), |
| 478 | + bb: { |
| 479 | + cc: ref('aa'), |
| 480 | + c: 'aa', |
| 481 | + }, |
| 482 | + }, |
| 483 | + |
| 484 | + aaa: reactive({ |
| 485 | + b: ref('aaa'), |
| 486 | + bb: { |
| 487 | + c: ref('aaa'), |
| 488 | + cc: 'aaa', |
| 489 | + }, |
| 490 | + }), |
| 491 | + |
| 492 | + aaaa: { |
| 493 | + b: [1], |
| 494 | + bb: ref([1]), |
| 495 | + bbb: reactive({ |
| 496 | + c: [1], |
| 497 | + cc: ref([1]), |
| 498 | + }), |
| 499 | + bbbb: [ref(1)], |
| 500 | + }, |
| 501 | + } |
| 502 | + |
| 503 | + const refList = ref([ref('1'), ref('2'), ref('3')]) |
| 504 | + const list = [ref('a'), ref('b')] |
| 505 | + |
| 506 | + return { |
| 507 | + r, |
| 508 | + nested, |
| 509 | + refList, |
| 510 | + list, |
| 511 | + } |
| 512 | + }, |
| 513 | + template: `<div> |
| 514 | + <p id="r">{{r}}</p> |
| 515 | + <p id="nested">{{nested.a}}</p> |
| 516 | + <p id="list">{{list}}</p> |
| 517 | + <p id="refList">{{refList}}</p> |
| 518 | +
|
| 519 | + <p id="nested_aa_b">{{ nested.aa.b }}</p> |
| 520 | + <p id="nested_aa_bb_c">{{ nested.aa.bb.c }}</p> |
| 521 | + <p id="nested_aa_bb_cc">{{ nested.aa.bb.cc }}</p> |
| 522 | +
|
| 523 | + <p id="nested_aaa_b">{{ nested.aaa.b }}</p> |
| 524 | + <p id="nested_aaa_bb_c">{{ nested.aaa.bb.c }}</p> |
| 525 | + <p id="nested_aaa_bb_cc">{{ nested.aaa.bb.cc }}</p> |
| 526 | +
|
| 527 | + <p id="nested_aaaa_b">{{ nested.aaaa.b }}</p> |
| 528 | + <p id="nested_aaaa_bb_c">{{ nested.aaaa.bb }}</p> |
| 529 | + <p id="nested_aaaa_bbb_cc">{{ nested.aaaa.bbb.c }}</p> |
| 530 | + <p id="nested_aaaa_bbb_cc">{{ nested.aaaa.bbb.cc }}</p> |
| 531 | + <p id="nested_aaaa_bbbb">{{ nested.aaaa.bbbb }}</p> |
| 532 | + </div>`, |
| 533 | + }).$mount() |
| 534 | + |
| 535 | + expect(vm.$el.querySelector('#r').textContent).toBe('r') |
| 536 | + expect(vm.$el.querySelector('#nested').textContent).toBe('a') |
| 537 | + |
| 538 | + // shouldn't unwrap arrays |
| 539 | + expect( |
| 540 | + JSON.parse(vm.$el.querySelector('#list').textContent) |
| 541 | + ).toMatchObject([{ value: 'a' }, { value: 'b' }]) |
| 542 | + expect( |
| 543 | + JSON.parse(vm.$el.querySelector('#refList').textContent) |
| 544 | + ).toMatchObject([{ value: '1' }, { value: '2' }, { value: '3' }]) |
| 545 | + |
| 546 | + expect(vm.$el.querySelector('#nested_aa_b').textContent).toBe('aa') |
| 547 | + expect(vm.$el.querySelector('#nested_aa_bb_c').textContent).toBe('aa') |
| 548 | + expect(vm.$el.querySelector('#nested_aa_bb_cc').textContent).toBe('aa') |
| 549 | + |
| 550 | + expect(vm.$el.querySelector('#nested_aaa_b').textContent).toBe('aaa') |
| 551 | + expect(vm.$el.querySelector('#nested_aaa_bb_c').textContent).toBe('aaa') |
| 552 | + expect(vm.$el.querySelector('#nested_aaa_bb_cc').textContent).toBe('aaa') |
| 553 | + |
| 554 | + expect( |
| 555 | + JSON.parse(vm.$el.querySelector('#nested_aaaa_b').textContent) |
| 556 | + ).toMatchObject([1]) |
| 557 | + expect( |
| 558 | + JSON.parse(vm.$el.querySelector('#nested_aaaa_bb_c').textContent) |
| 559 | + ).toMatchObject([1]) |
| 560 | + expect( |
| 561 | + JSON.parse(vm.$el.querySelector('#nested_aaaa_bbb_cc').textContent) |
| 562 | + ).toMatchObject([1]) |
| 563 | + expect( |
| 564 | + JSON.parse(vm.$el.querySelector('#nested_aaaa_bbb_cc').textContent) |
| 565 | + ).toMatchObject([1]) |
| 566 | + expect( |
| 567 | + JSON.parse(vm.$el.querySelector('#nested_aaaa_bbbb').textContent) |
| 568 | + ).toMatchObject([{ value: 1 }]) |
| 569 | + }) |
| 570 | + |
469 | 571 | describe('Methods', () => {
|
470 | 572 | it('binds methods when calling with parenthesis', async () => {
|
471 | 573 | let context = null
|
|
0 commit comments