watch.test.js 6.1 KB
Newer Older
DCloud-WZF's avatar
DCloud-WZF 已提交
1 2 3
const PAGE_PATH = '/pages/composition-api/reactivity/watch/watch'

describe('watch', () => {
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
  let page = null
  beforeAll(async () => {
    page = await program.reLaunch(PAGE_PATH)
    await page.waitFor('view')
  })
  it('count', async () => {
    const count = await page.$('#count')
    expect(await count.text()).toBe('count: 0')

    // watch
    const watchCountRes = await page.$('#watch-count-res')
    expect((await watchCountRes.text()).trim()).toBe('watch count result:')

    // track
    const watchCountTrackNum = await page.$('#watch-count-track-num')
    expect(await watchCountTrackNum.text()).toBe('watch count track number: 2')

    // trigger
    const watchCountTriggerNum = await page.$('#watch-count-trigger-num')
    expect(await watchCountTriggerNum.text()).toBe('watch count trigger number: 0')
    const watchCountCleanupRes = await page.$('#watch-count-cleanup-res')
    expect((await watchCountCleanupRes.text()).trim()).toBe('watch count cleanup result:')

    // watch count and obj.num
    const watchCountAndObjNumRes = await page.$('#watch-count-obj-num-res')
    expect((await watchCountAndObjNumRes.text()).trim()).toBe('watch count and obj.num result:')

    const incrementBtn = await page.$('.increment-btn')
    await incrementBtn.tap()

    expect(await count.text()).toBe('count: 1')

36 37
    expect(await watchCountRes.text()).toBe(
      'watch count result: count: 1, prevCount: 0, count ref text (flush sync): count: 0')
38 39 40 41 42 43 44 45 46 47 48

    expect(await watchCountTrackNum.text()).toBe('watch count track number: 2')
    expect(await watchCountTriggerNum.text()).toBe('watch count trigger number: 1')
    expect((await watchCountCleanupRes.text()).trim()).toBe('watch count cleanup result:')

    expect(await watchCountAndObjNumRes.text()).toBe(
      'watch count and obj.num result: state: [1,0], preState: [0,0]')

    await incrementBtn.tap()

    expect(await count.text()).toBe('count: 2')
49 50
    expect(await watchCountRes.text()).toBe(
      'watch count result: count: 2, prevCount: 1, count ref text (flush sync): count: 1')
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
    expect(await watchCountTrackNum.text()).toBe('watch count track number: 2')
    expect(await watchCountTriggerNum.text()).toBe('watch count trigger number: 2')
    expect(await watchCountCleanupRes.text()).toBe('watch count cleanup result: watch count cleanup: 1')

    expect(await watchCountAndObjNumRes.text()).toBe(
      'watch count and obj.num result: state: [2,0], preState: [1,0]')

    // stop watch
    const stopWatchCountBtn = await page.$('.stop-watch-count-btn')
    await stopWatchCountBtn.tap()

    expect(await watchCountCleanupRes.text()).toBe('watch count cleanup result: watch count cleanup: 2')

    await incrementBtn.tap()

    expect(await count.text()).toBe('count: 3')
67 68
    expect(await watchCountRes.text()).toBe(
      'watch count result: count: 2, prevCount: 1, count ref text (flush sync): count: 1')
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
    expect(await watchCountTrackNum.text()).toBe('watch count track number: 2')
    expect(await watchCountTriggerNum.text()).toBe('watch count trigger number: 2')
    expect(await watchCountCleanupRes.text()).toBe('watch count cleanup result: watch count cleanup: 2')

    expect(await watchCountAndObjNumRes.text()).toBe(
      'watch count and obj.num result: state: [3,0], preState: [2,0]')
  })
  it('obj', async () => {
    const objStr = await page.$('#obj-str')
    expect(await objStr.text()).toBe('obj.str: num: 0')
    const objNum = await page.$('#obj-num')
    expect(await objNum.text()).toBe('obj.num: 0')
    const objBool = await page.$('#obj-bool')
    expect(await objBool.text()).toBe('obj.bool: false')
    const objArr = await page.$('#obj-arr')
DCloud-WZF's avatar
DCloud-WZF 已提交
84
    expect(await objArr.text()).toBe('obj.arr: [0]')
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109

    const watchObjRes = await page.$('#watch-obj-res')
    if (process.env.uniTestPlatformInfo.startsWith('android')) {
      expect(await watchObjRes.text()).toBe(
        'watch obj result: obj: {"arr":[0],"bool":false,"num":0,"str":"num: 0"}, prevObj: {"arr":[0],"bool":false,"num":0,"str":"num: 0"}'
      )
    }
    if (process.env.uniTestPlatformInfo.startsWith('web')) {
      expect(await watchObjRes.text()).toBe(
        'watch obj result: obj: {"num":0,"str":"num: 0","bool":false,"arr":[0]}, prevObj: null'
      )
    }
    const watchObjStrRes = await page.$('#watch-obj-str-res')
    expect((await watchObjStrRes.text()).trim()).toBe('watch obj.str result:')
    const watchObjBoolRes = await page.$('#watch-obj-bool-res')
    expect((await watchObjBoolRes.text()).trim()).toBe('watch obj.bool result:')
    const watchObjArrRes = await page.$('#watch-obj-arr-res')
    expect((await watchObjArrRes.text()).trim()).toBe('watch obj.arr result:')

    const updateObjBtn = await page.$('.update-obj-btn')
    await updateObjBtn.tap()

    expect(await objStr.text()).toBe('obj.str: num: 1')
    expect(await objNum.text()).toBe('obj.num: 1')
    expect(await objBool.text()).toBe('obj.bool: true')
DCloud-WZF's avatar
DCloud-WZF 已提交
110
    expect(await objArr.text()).toBe('obj.arr: [0,1]')
111 112 113 114 115 116 117 118 119 120 121

    if (process.env.uniTestPlatformInfo.startsWith('android')) {
      expect(await watchObjRes.text()).toBe(
        'watch obj result: obj: {"arr":[0,1],"bool":true,"num":1,"str":"num: 1"}, prevObj: {"arr":[0,1],"bool":true,"num":1,"str":"num: 1"}'
      )
    }
    if (process.env.uniTestPlatformInfo.startsWith('web')) {
      expect(await watchObjRes.text()).toBe(
        'watch obj result: obj: {"num":1,"str":"num: 1","bool":true,"arr":[0,1]}, prevObj: {"num":1,"str":"num: 1","bool":true,"arr":[0,1]}'
      )
    }
122 123
    expect(await watchObjStrRes.text()).toBe(
      'watch obj.str result: str: num: 1, prevStr: num: 0, obj.str ref text (flush pre): obj.str: num: 0')
124

125 126 127
    expect(await watchObjBoolRes.text()).toBe(
      'watch obj.bool result: bool: true, prevBool: false, obj.bool ref text (flush post): obj.bool: true'
    )
128 129 130 131 132 133
    expect(await watchObjArrRes.text()).toBe('watch obj.arr result: arr: [0,1], prevArr: [0,1]')

    const watchCountAndObjNumRes = await page.$('#watch-count-obj-num-res')
    expect(await watchCountAndObjNumRes.text()).toBe(
      'watch count and obj.num result: state: [3,1], preState: [3,0]')
  })
DCloud-WZF's avatar
DCloud-WZF 已提交
134
})