watch-sync-effect.test.js 5.3 KB
Newer Older
1 2
const PAGE_PATH = '/pages/composition-api/reactivity/watch-sync-effect/watch-sync-effect'

3 4
describe('watchSyncEffect', () => {
	const isSafari = process.env.uniTestPlatformInfo.toLowerCase().indexOf('safari') > -1
雪洛's avatar
雪洛 已提交
5
  const isWeb = process.env.uniTestPlatformInfo.startsWith('web')
雪洛's avatar
雪洛 已提交
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
  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()).toBe(
      'watch count result: count: 0, count ref text: count: 0')

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

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

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

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

    expect(await count.text()).toBe('count: 1')
    expect(await watchCountRes.text()).toBe(
      'watch count result: count: 1, count ref text: count: 0')
    expect(await watchCountTrackNum.text()).toBe('watch count track number: 3')
    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: count: 1, obj.num: 0')

    await incrementBtn.tap()

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

    expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 2, obj.num: 0')

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

    await incrementBtn.tap()

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

    expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 3, obj.num: 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')
80
    expect(await objArr.text()).toBe(isSafari ? 'obj.arr: [ 0]' : 'obj.arr: [0]')
雪洛's avatar
雪洛 已提交
81 82 83

    const watchObjRes = await page.$('#watch-obj-res')
    expect(await watchObjRes.text()).toBe(
雪洛's avatar
雪洛 已提交
84 85 86 87
      isWeb ?
      'watch obj result: obj: {"num":0,"str":"num: 0","bool":false,"arr":[0]}' :
      'watch obj result: obj: {"arr":[0],"bool":false,"num":0,"str":"num: 0"}'
    )
雪洛's avatar
雪洛 已提交
88 89 90 91 92 93 94 95 96 97 98 99
    const watchObjStrRes = await page.$('#watch-obj-str-res')
    expect(await watchObjStrRes.text()).toBe(
      'watch obj.str result: str: num: 0, obj.str ref text: obj.str: num: 0')
    const watchObjArrRes = await page.$('#watch-obj-arr-res')
    expect(await watchObjArrRes.text()).toBe('watch obj.arr result: arr: [0]')

    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')
100
    expect(await objArr.text()).toBe(isSafari ? 'obj.arr: [ 0, 1]' : 'obj.arr: [0,1]')
雪洛's avatar
雪洛 已提交
101 102

    expect(await watchObjRes.text()).toBe(
雪洛's avatar
雪洛 已提交
103 104
      isWeb ?
      'watch obj result: obj: {"num":1,"str":"num: 1","bool":true,"arr":[0,1]}' :
DCloud-WZF's avatar
DCloud-WZF 已提交
105
      'watch obj result: obj: {"arr":[0],"bool":false,"num":0,"str":"num: 0"}'
雪洛's avatar
雪洛 已提交
106
    )
雪洛's avatar
雪洛 已提交
107 108 109 110 111 112 113
    expect(await watchObjStrRes.text()).toBe(
      'watch obj.str result: str: num: 1, obj.str ref text: obj.str: num: 0')
    expect(await watchObjArrRes.text()).toBe('watch obj.arr result: arr: [0,1]')

    const watchCountAndObjNumRes = await page.$('#watch-count-obj-num-res')
    expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 3, obj.num: 1')
  })
114
})