Ctrl K
ComunidadGuías…

frontend/test/settings-buttons.test.ts

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
/* 设置页的保存键统一叫「保存配置」并使用主按钮;主次层级与危险操作由浏览器和组件用例验收。 */
import { readdirSync, readFileSync } from 'node:fs';
import { resolve } from 'node:path';

import { expect, it } from 'vitest';

import { createTranslator } from '../src/i18n';

/* 按钮文字写成 `{t('命名空间:键')}`,按中文资源还原成界面上的字。 */
const zh = createTranslator('zh-CN');
const shown = (label: string) => label.replace(/^\{t\('([^']+)'\)\}$/, (_all, key: string) => zh.t(key));
const dir = resolve(process.cwd(), 'src/react/settings');
const buttons = readdirSync(dir)
  .filter((name) => name.endsWith('.tsx'))
  .flatMap((name) => [...readFileSync(resolve(dir, name), 'utf8').matchAll(/<Button\b([\s\S]*?)<\/Button>/g)]
    .map(([, tag = '']) => ({ name, tag, label: shown(tag.slice(tag.lastIndexOf('>') + 1).trim()) })));

it('保存键一律叫「保存配置」', () => {
  const saves = buttons.filter((button) => button.label.startsWith('保存'));
  expect(saves.length).toBeGreaterThan(0);
  expect(saves.filter((button) => button.label !== '保存配置').map((button) => `${button.name}: ${button.label}`)).toEqual([]);
});

it('保存配置使用主按钮', () => {
  const saves = buttons.filter((button) => button.label === '保存配置');
  expect(saves.filter((button) => /\bvariant=/.test(button.tag)).map((button) => button.name)).toEqual([]);
});