58 lines
1.7 KiB
JavaScript
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,
|
|
)
|
|
})
|
|
})
|