UNPKG

@voerkai18n/runtime

Version:
53 lines (45 loc) 2.16 kB
import { test, vi, describe, expect, beforeEach } from 'vitest' import { VoerkaI18nScope } from '../scope' import { VoerkaI18nManager } from '../manager'; import { createVoerkaI18nScope, resetVoerkaI18n } from './_utils'; import { VoerkaI18nOnlyOneAppScopeError } from '@/errors'; describe('创建VoerkaI18nScope实例', () => { beforeEach(() => { resetVoerkaI18n() }); test('创建默认VoerkaI18nScope实例', () => { const scope = createVoerkaI18nScope(); expect(scope.id).toBe('test-scope'); expect(scope.debug).toBe(false); expect(scope.activeLanguage).toBe('zh'); expect(scope.defaultLanguage).toBe('zh'); expect(scope.activeMessages).toEqual({ message: '你好' }); expect(scope.defaultMessages).toEqual({ message: '你好' }); expect(scope.messages).toEqual({ en: { message: 'Hello' }, zh: { message: '你好' } }); expect(scope.manager).toBeInstanceOf(VoerkaI18nManager); expect(scope.appScope).toBeInstanceOf(VoerkaI18nScope); expect(scope.manager.scopes).toEqual([scope]); }); test('只能有一个VoerkaI18nScope,library=false应用实例,否则触发错误', () => { createVoerkaI18nScope({ id: "a" }); try { createVoerkaI18nScope({ id: "b" }); } catch (e) { expect(e).toBeInstanceOf(VoerkaI18nOnlyOneAppScopeError); } }); test('先创建appScope再创建多个VoerkaI18nScope实例', () => { createVoerkaI18nScope({ id: "a" }); createVoerkaI18nScope({ id: "b", library: true }); createVoerkaI18nScope({ id: "c", library: true }); createVoerkaI18nScope({ id: "d", library: true }); expect(globalThis.VoerkaI18n.scopes.length).toBe(4); }) test('先创建多个VoerkaI18nScope实例再创建appScope', () => { createVoerkaI18nScope({ id: "b", library: true }); createVoerkaI18nScope({ id: "c", library: true }); createVoerkaI18nScope({ id: "d", library: true }); createVoerkaI18nScope({ id: "a" }); expect(globalThis.VoerkaI18n.scopes.length).toBe(4); }) });