修复了一些问题
This commit is contained in:
@@ -7,6 +7,9 @@ const { spawnSync } = require('node:child_process')
|
||||
const root = path.resolve(__dirname, '../..')
|
||||
const read = file => fs.readFileSync(path.join(root, file), 'utf8')
|
||||
const schema = read('src/Admin/Schema/SchemaPageDisplay.php')
|
||||
const paymentSchema = read('src/Admin/Schema/SchemaPayment.php')
|
||||
const adminVipSchema = read('assets/admin/src/schema/sections/payment/vip.js')
|
||||
const paymentRuntime = read('src/Settings/PaymentRuntime.php')
|
||||
const routes = read('assets/admin/src/constants/sections/page-display.js')
|
||||
const controller = read('src/Admin/PageDisplayController.php')
|
||||
const controllerBase = read('src/Admin/ControllerBase.php')
|
||||
@@ -103,13 +106,26 @@ test('defaults, nested structures, dependencies, and excluded product families a
|
||||
assert.match(schema, /'header_slider_card_s'.*?'dependsOn' => self::not_empty\('header_slider_show'\)/)
|
||||
assert.match(schema, /'header_slider_filter_blur'.*?'dependsOn' => self::not_empty\('header_slider_show'\)/)
|
||||
assert.match(schema, /'all' => \[self::enabled\('home_posts_list_s'\), self::enabled\('home_list1_orderby_s'\)\]/)
|
||||
for (const dead of ['nav_newposts_btns', 'nav_pay_vip', 'nav_user_pay_vip', 'forum_home', 'forum_plate', 'forum_post', 'ajax_list_cat_topics', 'ajax_list_tag_topics']) {
|
||||
for (const dead of ['nav_newposts_btns', 'forum_home', 'forum_plate', 'forum_post', 'ajax_list_cat_topics', 'ajax_list_tag_topics']) {
|
||||
assert.equal(schema.includes(dead), false, `legacy/excluded field remains: ${dead}`)
|
||||
}
|
||||
assert.equal(headerMenuButtons.includes('nav_newposts_btns'), false)
|
||||
assert.match(headerMenuButtons, /aksrt_render_new_add_btns\(\['post'\], \$class, \$label\)/)
|
||||
})
|
||||
|
||||
test('VIP navigation purchase switches are saved and consumed end to end', () => {
|
||||
for (const key of ['nav_pay_vip', 'nav_user_pay_vip']) {
|
||||
assert.match(paymentSchema, new RegExp(`'key' => '${key}'[^\\n]+?'type' => 'switch'[^\\n]+?'default' => true`))
|
||||
assert.match(adminVipSchema, new RegExp(`${key}: true`))
|
||||
assert.match(adminVipSchema, new RegExp(`key: '${key}'[^\\n]+type: 'switch'[^\\n]+default: true`))
|
||||
assert.match(paymentRuntime, new RegExp(`'${key}'[^\\n]+!isset\\(\\$settings\\['${key}'\\]\\)[^\\n]+!empty\\(\\$settings\\['${key}'\\]\\)`))
|
||||
}
|
||||
|
||||
assert.match(headerMenuButtons, /!empty\(\$vs\['enabled'\]\) && !empty\(\$vs\['nav_pay_vip'\]\)/)
|
||||
assert.match(headerUserbox, /empty\(\$vip\['nav_user_pay_vip'\]\)[\s\S]*?return '';/)
|
||||
assert.match(headerNavbar, /!empty\(\$vs\['enabled'\]\) && !empty\(\$vs\['nav_user_pay_vip'\]\)/)
|
||||
})
|
||||
|
||||
test('schema REST saves are privileged, section-whitelisted, and deeply sanitized', () => {
|
||||
assert.match(controllerBase, /current_user_can\('manage_options'\)/)
|
||||
assert.match(controllerBase, /sanitize_payload\(\$domain, \$payload, \$section\)/)
|
||||
@@ -266,6 +282,15 @@ test('save contract rejects invalid input and round-trips canonical nested value
|
||||
assert.equal(data.invalid_enum_rejected, true)
|
||||
assert.equal(data.nested_multiselect_valid, true)
|
||||
assert.equal(data.footer_valid, true)
|
||||
assert.equal(data.vip_switches_valid, true)
|
||||
assert.deepEqual(data.vip_switches_clean, {
|
||||
nav_pay_vip: false,
|
||||
nav_user_pay_vip: true,
|
||||
})
|
||||
assert.deepEqual(data.vip_switches_readback, {
|
||||
nav_pay_vip: false,
|
||||
nav_user_pay_vip: true,
|
||||
})
|
||||
assert.equal(data.homepage_defaults.home_list1_orderby_option, '')
|
||||
assert.equal(data.homepage_defaults.home_exclude_posts, '')
|
||||
assert.equal(data.homepage_defaults.home_exclude_cats, '')
|
||||
|
||||
Reference in New Issue
Block a user