| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- import test from 'node:test'
- import assert from 'node:assert/strict'
- import fs from 'node:fs'
- import path from 'node:path'
- import vm from 'node:vm'
- const practiceFile = path.resolve('pagesMy/practice.vue')
- const flushPromises = () => new Promise(resolve => setImmediate(resolve))
- function mountPracticePage () {
- const source = fs.readFileSync(practiceFile, 'utf8')
- const script = source.match(/<script setup[^>]*>([\s\S]*?)<\/script>/)[1]
- .replace(/^\s*import\s+.*$/gm, '')
- const lifecycle = {}
- const requests = []
- const api = {
- get (url, params) {
- requests.push({ url, params: { ...params } })
- if (url === '/core/family/member/page') {
- return Promise.resolve({ data: { code: 0, data: { list: [{ id: 'member-1', name: '小明' }] } } })
- }
- return Promise.resolve({ data: { code: 0, data: { list: [] } } })
- },
- post () {
- return Promise.resolve({ data: { code: 0, data: {} } })
- }
- }
- vm.runInNewContext(script, {
- ref: value => ({ value }),
- getCurrentInstance: () => ({ proxy: { $api: api, $showToast: () => {} } }),
- onMounted: callback => { lifecycle.mounted = callback },
- onShow: callback => { lifecycle.show = callback },
- uni: {
- getStorageSync: key => key === 'userInfo' ? JSON.stringify({ id: 'user-1' }) : '',
- navigateTo: () => {}
- },
- Date,
- console
- })
- return { lifecycle, requests }
- }
- test('申领社会实践记录页面每次显示时重新查询可申领数据', async () => {
- const { lifecycle, requests } = mountPracticePage()
- assert.equal(typeof lifecycle.show, 'function', '页面必须注册 onShow 刷新处理')
- lifecycle.show()
- await flushPromises()
- await flushPromises()
- assert.deepEqual(requests.map(item => item.url), [
- '/core/family/member/page',
- '/core/social/practice/record/claimPage'
- ])
- assert.equal(requests[1].params.userId, 'user-1')
- assert.equal(requests[1].params.memberId, 'member-1')
- assert.equal(requests[1].params.page, 1)
- })
- test('查看社会实践详情返回后姓名筛选请求不复用记录分页', async () => {
- const { lifecycle, requests } = mountPracticePage()
- lifecycle.show()
- await flushPromises()
- await flushPromises()
- lifecycle.show()
- await flushPromises()
- await flushPromises()
- const memberRequests = requests.filter(item => item.url === '/core/family/member/page')
- assert.equal(memberRequests.length, 2)
- assert.deepEqual(memberRequests.map(item => item.params.page), [1, 1])
- assert.deepEqual(memberRequests.map(item => item.params.limit), [-1, -1])
- })
- test('触底只加载下一页,不重置已选择的可申领记录', () => {
- const source = fs.readFileSync(practiceFile, 'utf8')
- const scrollToLower = source.match(/const scrolltolower = \(\) => \{([\s\S]*?)\n\t\}/)[1]
- assert.doesNotMatch(scrollToLower, /getDataByTab\(\)/)
- assert.match(scrollToLower, /getKslList\(\)/)
- assert.match(scrollToLower, /getYslList\(\)/)
- assert.match(scrollToLower, /isLoading\.value/)
- })
|