mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-06-27 00:42:03 +08:00
- 提交 internal/db 多驱动用户可见错误与状态文案多语言化 - 补齐数据库驱动多语言测试与六语言 catalog - 修复 frontend i18n catalog 的 4 个失效 guard
75 lines
2.1 KiB
Go
75 lines
2.1 KiB
Go
//go:build gonavi_full_drivers || gonavi_iris_driver
|
|
|
|
package db
|
|
|
|
import (
|
|
"os"
|
|
"strings"
|
|
"testing"
|
|
|
|
"GoNavi-Wails/shared/i18n"
|
|
)
|
|
|
|
var rawIRISTableNameRequiredText = string([]rune{0x8868, 0x540d, 0x4e0d, 0x80fd, 0x4e3a, 0x7a7a})
|
|
|
|
func TestIRISTableRefErrorsUseCurrentLanguage(t *testing.T) {
|
|
SetBackendLanguage(i18n.LanguageEnUS)
|
|
t.Cleanup(func() {
|
|
SetBackendLanguage(i18n.LanguageZhCN)
|
|
})
|
|
|
|
tests := []struct {
|
|
name string
|
|
raw string
|
|
}{
|
|
{name: "empty table", raw: " "},
|
|
{name: "empty qualified table", raw: `"APP". `},
|
|
}
|
|
|
|
for _, tc := range tests {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
_, err := parseIRISTableRef("USER", tc.raw)
|
|
if err == nil {
|
|
t.Fatal("expected IRIS table reference parsing to fail")
|
|
}
|
|
if err.Error() != "Table name is required" {
|
|
t.Fatalf("expected English table-name-required error, got %q", err.Error())
|
|
}
|
|
if strings.Contains(err.Error(), rawIRISTableNameRequiredText) {
|
|
t.Fatalf("expected no raw Chinese table-name-required text, got %q", err.Error())
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestIRISTableNameRequiredSourcesUseI18nKeys(t *testing.T) {
|
|
sourceBytes, err := os.ReadFile("iris_impl.go")
|
|
if err != nil {
|
|
t.Fatalf("read iris_impl.go: %v", err)
|
|
}
|
|
source := string(sourceBytes)
|
|
functionSource := databaseFunctionSource(t, source, "func parseIRISTableRef(defaultSchema, raw string) (irisTableRef, error)")
|
|
rawMessage := `fmt.Errorf("` + rawIRISTableNameRequiredText + `")`
|
|
|
|
if strings.Contains(functionSource, rawMessage) {
|
|
t.Fatalf("parseIRISTableRef still contains raw IRIS table-name-required text %q", rawMessage)
|
|
}
|
|
if !strings.Contains(functionSource, "db.backend.error.table_name_required") {
|
|
t.Fatal("parseIRISTableRef does not reference db.backend.error.table_name_required")
|
|
}
|
|
}
|
|
|
|
func TestIRISTableNameRequiredCatalogKeysExist(t *testing.T) {
|
|
catalogs, err := i18n.LoadCatalogs()
|
|
if err != nil {
|
|
t.Fatalf("LoadCatalogs() error = %v", err)
|
|
}
|
|
|
|
for _, language := range i18n.SupportedLanguages() {
|
|
catalog := catalogs[language]
|
|
if strings.TrimSpace(catalog["db.backend.error.table_name_required"]) == "" {
|
|
t.Fatalf("%s catalog missing IRIS table-name-required key", language)
|
|
}
|
|
}
|
|
}
|