Files
workspace/code/fms/fms-vue/tests/unit/app-locale-sync.spec.js
T
2026-09-17 21:29:08 +08:00

58 lines
1.7 KiB
JavaScript

import { beforeEach, describe, expect, it, vi } from 'vitest'
import { mount } from '@vue/test-utils'
import { createTestPinia, createTestRouter } from '../helpers/app'
import App from '@/App.vue'
import { useI18nStore } from '@/stores/i18n'
import { uiConfig } from '@/components/ui/config'
import { resetUIConfig } from '@/components/ui'
const loadDataApi = vi.fn()
vi.mock('@/services/api', () => ({
loadDataApi: (...args) => loadDataApi(...args),
}))
async function mountApp() {
const pinia = createTestPinia()
const router = createTestRouter('/dashboard')
await router.isReady()
const wrapper = mount(App, {
global: { plugins: [pinia, router], stubs: { FpsMonitor: true } },
})
await wrapper.vm.$nextTick()
return { wrapper, i18n: useI18nStore() }
}
beforeEach(() => {
localStorage.clear()
sessionStorage.clear()
loadDataApi.mockReset()
loadDataApi.mockResolvedValue({ data: [] })
resetUIConfig()
})
describe('App 语言联动(表单布局 + 译文)', () => {
it('中文 → 表单横排,并按当前语言加载译文', async () => {
const { i18n } = await mountApp()
i18n.setLocale('zh-CN')
await Promise.resolve()
expect(uiConfig.form.layout).toBe('horizontal')
expect(loadDataApi.mock.calls.some(([, cond]) => String(cond).includes("b_locale = N'zh-CN'"))).toBe(
true,
)
})
it('切到英文 → 表单竖排,并重新拉取 en-US 译文', async () => {
const { i18n } = await mountApp()
i18n.setLocale('en-US')
await Promise.resolve()
await Promise.resolve()
expect(uiConfig.form.layout).toBe('vertical')
expect(loadDataApi.mock.calls.some(([, cond]) => String(cond).includes("b_locale = N'en-US'"))).toBe(
true,
)
})
})