mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-07-21 21:01:55 +08:00
- 接管 Cmd/Ctrl+E,选择当前行并复制,避免落到宿主搜索 - 新增 Cmd/Ctrl+D 复制当前行到下一行,并同步快捷键冲突校验 - 增加 macOS SQL 菜单桥接,确保原生 Cmd+E 回落到编辑器 - 保持 Monaco 内置搜索并下移,避免遮挡 SQL 第一行 - 补齐多语言文案与 QueryEditor/shortcut/main 回归测试
67 lines
3.6 KiB
TypeScript
67 lines
3.6 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import { readFileSync } from 'node:fs';
|
|
|
|
const queryEditorSource = readFileSync(new URL('./QueryEditor.tsx', import.meta.url), 'utf8');
|
|
const queryEditorHelpersSource = readFileSync(new URL('./queryEditor/QueryEditorHelpers.ts', import.meta.url), 'utf8');
|
|
|
|
describe('QueryEditor i18n source guards', () => {
|
|
it('does not keep legacy builtin SQL function completion details in component source', () => {
|
|
expect(queryEditorSource).not.toContain('const SQL_FUNCTIONS');
|
|
expect(queryEditorSource).not.toContain("detail: '聚合 - 计数'");
|
|
expect(queryEditorSource).not.toContain("detail: '字符串 - 拼接'");
|
|
expect(queryEditorSource).not.toContain("detail: '日期 - 当前日期时间'");
|
|
expect(queryEditorSource).not.toContain("detail: 'JSON - 提取值'");
|
|
expect(queryEditorSource).not.toContain("detail: '窗口 - 行号'");
|
|
});
|
|
|
|
it('uses a localized warning for pending managed transactions', () => {
|
|
expect(queryEditorSource).toContain('query_editor.transaction.message.pending_managed_transaction');
|
|
expect(queryEditorSource).not.toContain('当前 SQL 编辑器已有未提交事务,请先提交或回滚后再执行新的增删改语句。');
|
|
});
|
|
|
|
it('uses localized labels for SQL format restore chrome', () => {
|
|
expect(queryEditorSource).toContain('query_editor.format.restore_last_format');
|
|
expect(queryEditorSource).toContain('query_editor.message.no_format_restore_snapshot');
|
|
expect(queryEditorSource).toContain('query_editor.message.format_restore_success');
|
|
expect(queryEditorSource).not.toContain('没有可还原的美化前 SQL');
|
|
expect(queryEditorSource).not.toContain('已还原到美化前 SQL');
|
|
expect(queryEditorSource).not.toContain('还原上次美化');
|
|
});
|
|
|
|
it('uses localized wrappers for result pagination feedback', () => {
|
|
expect(queryEditorSource).toContain('query_editor.message.page_query_failed');
|
|
expect(queryEditorSource).toContain('query_editor.message.page_query_empty');
|
|
expect(queryEditorSource).not.toContain('翻页失败: ');
|
|
expect(queryEditorSource).not.toContain('翻页未返回结果集');
|
|
});
|
|
|
|
it('routes editor search through a localized Monaco action', () => {
|
|
expect(queryEditorSource).toContain('query_editor.action.find_in_editor');
|
|
expect(queryEditorSource).toContain('gonavi:find-active-query');
|
|
expect(queryEditorSource).toContain("editor.getAction?.('actions.find')");
|
|
expect(queryEditorSource).toContain('addExtraSpaceOnTop: true');
|
|
});
|
|
|
|
it('uses a localized wrapper for save query failures', () => {
|
|
expect(queryEditorSource).toContain('query_editor.message.save_query_failed');
|
|
expect(queryEditorSource).not.toContain('保存查询失败: ');
|
|
});
|
|
|
|
it('uses a localized AI diagnosis prompt wrapper', () => {
|
|
expect(queryEditorSource).toContain('query_editor.ai_prompt.diagnose');
|
|
expect(queryEditorSource).not.toContain('我在执行以下 SQL 时遇到了错误');
|
|
expect(queryEditorSource).not.toContain('数据库报错信息如下');
|
|
expect(queryEditorSource).not.toContain('请帮我分析错误原因,并给出修改建议。');
|
|
});
|
|
|
|
it('uses a localized read-only reason for system metadata query results', () => {
|
|
expect(queryEditorHelpersSource).toContain('query_editor.message.read_only_system_metadata');
|
|
expect(queryEditorHelpersSource).not.toContain('系统元数据查询结果保持只读。');
|
|
});
|
|
|
|
it('does not keep the index metadata internal fallback in Chinese', () => {
|
|
expect(queryEditorHelpersSource).toContain('Failed to load indexes');
|
|
expect(queryEditorHelpersSource).not.toContain('加载索引失败');
|
|
});
|
|
});
|