import assert from 'node:assert/strict' import fs from 'node:fs' import test from 'node:test' const routerSource = fs.readFileSync(new URL('../router/index.ts', import.meta.url), 'utf8') const profileSource = fs.readFileSync(new URL('./CompanyProfileView.vue', import.meta.url), 'utf8') const membersSource = fs.readFileSync(new URL('./MembersView.vue', import.meta.url), 'utf8') const rolesSource = fs.readFileSync(new URL('./RolesView.vue', import.meta.url), 'utf8') const permissionsSource = fs.readFileSync(new URL('./PermissionsView.vue', import.meta.url), 'utf8') const storeSource = fs.readFileSync(new URL('../stores/tenantAdministration.ts', import.meta.url), 'utf8') test('routes tenant administration modules to implemented views instead of the placeholder', () => { assert.match(routerSource, /company\/profile'.*CompanyProfileView\.vue/) assert.match(routerSource, /organization\/members'.*MembersView\.vue/) assert.match(routerSource, /organization\/roles'.*RolesView\.vue/) assert.match(routerSource, /organization\/permissions'.*PermissionsView\.vue/) assert.doesNotMatch(routerSource, /ModuleView\.vue/) }) test('implements company details, contact information and qualification workflow', () => { assert.match(profileSource, /企业基本信息/) assert.match(profileSource, /联系信息/) assert.match(profileSource, /资质文件/) assert.match(profileSource, /async function saveProfile\(\)/) assert.match(profileSource, /function submitQualification\(\)/) assert.match(profileSource, /validateQualificationFile/) assert.match(profileSource, /function removeSelectedFile\(\)/) assert.match(profileSource, /qualificationSubmitting/) assert.match(profileSource, /class="mobile-qualification-list"/) assert.match(profileSource, /import DataTable, \{ type DataTableColumn \} from '@\/components\/common\/DataTable\.vue'/) assert.match(profileSource, /const qualificationColumns: DataTableColumn\[\]/) assert.match(profileSource, /slotName: 'actions'/) assert.match(profileSource, / { assert.match(membersSource, /async function saveMember\(\)/) assert.match(membersSource, /function resetPassword\(member: TenantMember\)/) assert.match(membersSource, /function toggleStatus\(member: TenantMember\)/) assert.match(membersSource, /v-model="form\.roleIds" multiple/) assert.match(membersSource, /class="mobile-member-list"/) assert.match(membersSource, /store\.loadMembers\(\)/) assert.match(membersSource, /await store\.resetMemberPassword/) assert.match(membersSource, /await store\.toggleMemberStatus/) assert.match(membersSource, /v-model="form\.password"/) assert.match(membersSource, /企业成员加载失败/) assert.match(membersSource, /@click="loadMembers"/) assert.match(membersSource, /const memberRules: FormRules/) assert.match(membersSource, /ref="formRef" :model="form" :rules="memberRules"/) assert.match(membersSource, /prop="roleIds" required/) assert.match(membersSource, /await formRef\.value\?\.validate\(\)/) assert.match(membersSource, /import QueryToolbar.*QueryToolbar\.vue/) assert.match(membersSource, /import DataTable.*DataTable\.vue/) assert.match(membersSource, /]*class="permission-item"/) assert.doesNotMatch(permissionsSource, /