watch-effect.test.js 5.6 KB
Newer Older
DCloud-WZF's avatar
DCloud-WZF 已提交
1 2 3 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 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 80 81 82 83 84 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 110 111 112 113 114 115 116 117
const PAGE_PATH = '/pages/composition-api/reactivity/watch-effect/watch-effect'

describe('watch', () => {
  if (process.env.uniTestPlatformInfo.startsWith('android')) {
    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 (flush sync): 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 (flush sync): 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 (flush sync): 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 (flush sync): 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')
      expect(await objArr.text()).toBe('obj.arr: [0]')

      const watchObjRes = await page.$('#watch-obj-res')
      expect(await watchObjRes.text()).toBe(
        'watch obj result: obj: {"arr":[0],"bool":false,"num":0,"str":"num: 0"}')
      const watchObjStrRes = await page.$('#watch-obj-str-res')
      expect(await watchObjStrRes.text()).toBe(
        'watch obj.str result: str: num: 0, obj.str ref text (flush pre): obj.str: num: 0')
      const watchObjBoolRes = await page.$('#watch-obj-bool-res')
      expect(await watchObjBoolRes.text()).toBe(
        'watch obj.bool result: bool: false, obj.bool ref text (flush post): obj.bool: false')
      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')
      expect(await objArr.text()).toBe('obj.arr: [0,1]')

      expect(await watchObjRes.text()).toBe(
        'watch obj result: obj: {"arr":[0],"bool":false,"num":0,"str":"num: 0"}')
      expect(await watchObjStrRes.text()).toBe(
        'watch obj.str result: str: num: 1, obj.str ref text (flush pre): obj.str: num: 0')
      expect(await watchObjBoolRes.text()).toBe(
        'watch obj.bool result: bool: true, obj.bool ref text (flush post): obj.bool: true')
      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')
    })
  } else {
    it('other platform', () => {
      expect(1).toBe(1)
    })
  }
})