import assert from 'node:assert/strict'
|
import test from 'node:test'
|
|
import {
|
CLEAN_DEV_TARGETS,
|
buildMinimalRouteModuleFiles,
|
createMinimalChangeLogContent,
|
createMinimalFastEnterContent,
|
pruneLocaleMessages,
|
rewriteMenuApiContent
|
} from '../scripts/clean-dev.helpers.mjs'
|
|
test('clean:dev targets align with current JS workspace structure', () => {
|
assert.ok(CLEAN_DEV_TARGETS.includes('src/views/template'))
|
assert.ok(CLEAN_DEV_TARGETS.includes('src/views/widgets'))
|
assert.ok(CLEAN_DEV_TARGETS.includes('src/views/examples'))
|
assert.ok(CLEAN_DEV_TARGETS.includes('src/views/article'))
|
assert.ok(CLEAN_DEV_TARGETS.includes('src/views/safeguard'))
|
assert.ok(CLEAN_DEV_TARGETS.includes('src/views/change'))
|
assert.ok(CLEAN_DEV_TARGETS.includes('src/views/dashboard/analysis'))
|
assert.ok(CLEAN_DEV_TARGETS.includes('src/views/dashboard/ecommerce'))
|
assert.ok(CLEAN_DEV_TARGETS.includes('src/components/core/charts/art-map-chart'))
|
assert.ok(CLEAN_DEV_TARGETS.includes('src/components/business/comment-widget'))
|
})
|
|
test('minimal route module files keep only dashboard/system/result/exception', () => {
|
const routeFiles = buildMinimalRouteModuleFiles()
|
|
assert.match(routeFiles.dashboard, /path: 'console'/)
|
assert.doesNotMatch(routeFiles.dashboard, /analysis/)
|
assert.doesNotMatch(routeFiles.dashboard, /ecommerce/)
|
assert.doesNotMatch(routeFiles.system, /nested/i)
|
assert.match(routeFiles.index, /dashboardRoutes/)
|
assert.match(routeFiles.index, /systemRoutes/)
|
assert.match(routeFiles.index, /resultRoutes/)
|
assert.match(routeFiles.index, /exceptionRoutes/)
|
assert.doesNotMatch(
|
routeFiles.index,
|
/templateRoutes|widgetsRoutes|examplesRoutes|articleRoutes|helpRoutes/
|
)
|
})
|
|
test('locale pruning removes demo menu entries and extra dashboard/system branches', () => {
|
const locale = {
|
menus: {
|
dashboard: {
|
title: 'Dashboard',
|
console: 'Console',
|
analysis: 'Analysis',
|
ecommerce: 'Ecommerce'
|
},
|
widgets: { title: 'Widgets' },
|
template: { title: 'Template' },
|
article: { title: 'Article' },
|
examples: { title: 'Examples' },
|
safeguard: { title: 'Safeguard' },
|
plan: { title: 'Plan' },
|
help: { title: 'Help' },
|
system: {
|
title: 'System',
|
user: 'User',
|
role: 'Role',
|
userCenter: 'User Center',
|
menu: 'Menu',
|
nested: 'Nested',
|
menu1: 'Menu1',
|
menu2: 'Menu2',
|
menu21: 'Menu21',
|
menu3: 'Menu3',
|
menu31: 'Menu31',
|
menu32: 'Menu32',
|
menu321: 'Menu321'
|
}
|
}
|
}
|
|
const result = pruneLocaleMessages(locale)
|
|
assert.deepEqual(Object.keys(result.menus).sort(), ['dashboard', 'system'])
|
assert.deepEqual(Object.keys(result.menus.dashboard).sort(), ['console', 'title'])
|
assert.deepEqual(Object.keys(result.menus.system).sort(), [
|
'menu',
|
'role',
|
'title',
|
'user',
|
'userCenter'
|
])
|
})
|
|
test('minimal fast enter content removes demo quick entries', () => {
|
const content = createMinimalFastEnterContent()
|
|
assert.match(content, /routeName: 'Console'/)
|
assert.match(content, /routeName: 'Login'/)
|
assert.match(content, /routeName: 'Register'/)
|
assert.match(content, /routeName: 'ForgetPassword'/)
|
assert.match(content, /routeName: 'UserCenter'/)
|
assert.doesNotMatch(content, /Analysis|Fireworks|Chat|ChangeLog|Pricing|ArticleComment/)
|
})
|
|
test('menu api rewrite switches to simple endpoint', () => {
|
const content = "url: '/api/v3/system/menus'"
|
|
assert.equal(rewriteMenuApiContent(content), "url: '/api/v3/system/menus/simple'")
|
})
|
|
test('minimal change log content clears upgrade history', () => {
|
assert.equal(
|
createMinimalChangeLogContent().trim(),
|
"import { ref } from 'vue'\n\nexport const upgradeLogList = ref([])"
|
)
|
})
|