admin-vue3/scripts/reviewMeetingEditHelpers.ch...

76 lines
2.0 KiB
TypeScript

import assert from 'node:assert/strict'
import fs from 'node:fs'
import path from 'node:path'
import {
buildProjectTimeBatchPayload,
mapCopiedProjectItems,
mapPersistedProjectItems,
shouldSyncPersistedProjectTimes
} from '../src/views/review/meeting/meetingEditHelpers'
const baseProject = {
id: 101,
seqNo: 1,
startTime: '09:00',
endTime: '09:15',
agendaCategory: '项目申报论证',
projectTitle: '项目A',
reporter: '张三',
reporterUnit: '软件学院',
reviewDate: '2026-04-01'
}
const persistedProjects = mapPersistedProjectItems([baseProject])
assert.equal(
persistedProjects[0].sourceProjectId,
undefined,
'编辑已有会议时,不应该把现有项目 id 回填到 sourceProjectId'
)
const copiedProjects = mapCopiedProjectItems([baseProject])
assert.equal(copiedProjects[0].sourceProjectId, 101, '复制会议时,应该保留源项目 id 用于首次复制资料')
assert.equal(
shouldSyncPersistedProjectTimes({
isEdit: true,
isProjectsModified: false,
originalMeetingStart: 1711942800000,
currentMeetingStart: 1711944600000,
projects: [baseProject]
}),
true,
'编辑已有会议且仅修改会议开始时间时,应该同步已落库项目时间'
)
assert.deepEqual(buildProjectTimeBatchPayload([baseProject]), {
items: [
{
id: 101,
startTime: '09:00',
endTime: '09:15'
}
]
})
const meetingEditSource = fs.readFileSync(
path.resolve(process.cwd(), 'src/views/review/meeting/MeetingEdit.vue'),
'utf8'
)
assert.match(
meetingEditSource,
/mapPersistedProjectItems/,
'MeetingEdit.vue 应该接入编辑态项目映射,避免把现有项目 id 回填到 sourceProjectId'
)
assert.match(
meetingEditSource,
/mapCopiedProjectItems/,
'MeetingEdit.vue 应该接入复制态项目映射,保留首次复制资料所需的 sourceProjectId'
)
assert.match(
meetingEditSource,
/updateReviewProjectTimeBatch/,
'MeetingEdit.vue 应该在会议起始时间变化后同步已落库项目时间'
)
console.log('reviewMeetingEditHelpers checks passed')