const assert = require('node:assert/strict'); const fs = require('node:fs'); const path = require('node:path'); const test = require('node:test'); const root = path.resolve(__dirname, '..', '..'); const read = (file) => fs.readFileSync(path.join(root, file), 'utf8'); test('block and classic editors share the reference article extension fields', () => { const meta = read('src/Core/PostMetaBox.php'); const fields = [ 'thumbnail_url', 'cover_image', 'featured_slide', 'featured_video', 'featured_video_title', 'featured_video_episode', 'subtitle', 'views', 'like', 'show_layout', 'no_article-navs', 'article_maxheight_xz', ]; assert.ok(meta.includes("add_meta_box('post_main', __('文章扩展'")); assert.match(meta, /\['post\.php', 'post-new\.php'\]/); assert.match(meta, /wp_enqueue_media\(\)/); fields.forEach((field) => assert.match(meta, new RegExp(field.replace('-', '\\-')))); assert.doesNotMatch(meta, /custom_excerpt|header_image_mode|show_reading_progress|enable_lightbox|enable_pdf|copyright_text|is_featured/); }); test('front submit follows the reference newposts shell and cards', () => { const page = read('templates/pages/page-submit.php'); const main = read('templates/parts/submit/editor-main.php'); const terms = read('templates/parts/submit/sidebar-terms.php'); const pay = read('templates/parts/submit/sidebar-pay.php'); const submit = read('templates/parts/submit/sidebar-submit.php'); const submitJs = read('assets/js/front-submit.js'); const submitCss = read('assets/css/frontend/pages/submit.css'); const mainCss = read('assets/css/main.css'); const mobileSubmitCss = submitCss.slice(submitCss.indexOf('@media (max-width: 991px)')); assert.match(page, /content-wrap newposts-wrap/); assert.match(page, /class="content-layout"/); assert.match(page, /<\/div>\s*<\/div>\s*