svelte-i18n/test/client/index.test.ts
2019-11-29 00:25:31 -03:00

50 lines
1.5 KiB
TypeScript

import { defineMessages, waitLocale, register, init } from '../../src/client'
import { $locale } from '../../src/client/stores/locale'
import { hasLocaleQueue } from '../../src/client/includes/loaderQueue'
import {
getLocaleDictionary,
$dictionary,
} from '../../src/client/stores/dictionary'
test('defineMessages returns the identity of its first argument', () => {
const obj = {}
expect(obj).toBe(defineMessages(obj))
})
describe('waiting for a locale to load', () => {
beforeEach(() => {
$dictionary.set({})
$locale.set(undefined)
})
test('should wait for a locale queue to be flushed', async () => {
register('en', () => Promise.resolve({ foo: 'foo' }))
$locale.set('en')
await waitLocale('en')
expect(hasLocaleQueue('en')).toBe(false)
expect(getLocaleDictionary('en')).toMatchObject({ foo: 'foo' })
})
test('should wait for the current locale queue to be flushed', async () => {
register('en', () => Promise.resolve({ foo: 'foo' }))
init({ fallbackLocale: 'pt', initialLocale: 'en' })
await waitLocale()
expect(hasLocaleQueue('en')).toBe(false)
expect(getLocaleDictionary('en')).toMatchObject({ foo: 'foo' })
})
test('should wait for the fallback locale queue to be flushed if initial not set', async () => {
register('pt', () => Promise.resolve({ foo: 'foo' }))
init({ fallbackLocale: 'pt' })
await waitLocale()
expect(hasLocaleQueue('pt')).toBe(false)
expect(getLocaleDictionary('pt')).toMatchObject({ foo: 'foo' })
})
})