mirror of
https://github.com/cupcakearmy/svelte-i18n.git
synced 2024-11-16 18:10:43 +01:00
ff541367f8
✅ Closes: Closes #83
83 lines
1.9 KiB
TypeScript
83 lines
1.9 KiB
TypeScript
import { lookup, lookupCache } from '../../../src/runtime/includes/lookup';
|
|
import {
|
|
$dictionary,
|
|
addMessages,
|
|
} from '../../../src/runtime/stores/dictionary';
|
|
|
|
beforeEach(() => {
|
|
$dictionary.set({});
|
|
});
|
|
|
|
test('returns null if no locale was passed', () => {
|
|
expect(lookup('message.id', undefined)).toBeNull();
|
|
expect(lookup('message.id', null)).toBeNull();
|
|
});
|
|
|
|
test('gets a shallow message of a locale dictionary', () => {
|
|
addMessages('en', { field: 'name' });
|
|
|
|
expect(lookup('field', 'en')).toBe('name');
|
|
});
|
|
|
|
test('gets a deep message of a locale dictionary', () => {
|
|
addMessages('en', { deep: { field: 'lastname' } });
|
|
expect(lookup('deep.field', 'en')).toBe('lastname');
|
|
});
|
|
|
|
test('gets a message from the fallback dictionary', () => {
|
|
addMessages('en', { field: 'name' });
|
|
|
|
expect(lookup('field', 'en-US')).toBe('name');
|
|
});
|
|
|
|
test('gets an array ', () => {
|
|
addMessages('en', {
|
|
careers: [
|
|
{
|
|
role: 'Role 1',
|
|
description: 'Description 1',
|
|
},
|
|
{
|
|
role: 'Role 2',
|
|
description: 'Description 2',
|
|
},
|
|
],
|
|
});
|
|
|
|
expect(lookup('careers', 'en-US')).toMatchInlineSnapshot(`
|
|
Array [
|
|
Object {
|
|
"description": "Description 1",
|
|
"role": "Role 1",
|
|
},
|
|
Object {
|
|
"description": "Description 2",
|
|
"role": "Role 2",
|
|
},
|
|
]
|
|
`);
|
|
});
|
|
|
|
test('caches found messages by locale', () => {
|
|
addMessages('en', { field: 'name' });
|
|
addMessages('pt', { field: 'nome' });
|
|
lookup('field', 'en-US');
|
|
lookup('field', 'pt');
|
|
|
|
expect(lookupCache).toMatchObject({
|
|
'en-US': { field: 'name' },
|
|
pt: { field: 'nome' },
|
|
});
|
|
});
|
|
|
|
test("doesn't cache falsy messages", () => {
|
|
addMessages('en', { field: 'name' });
|
|
addMessages('pt', { field: 'nome' });
|
|
lookup('field_2', 'en-US');
|
|
lookup('field_2', 'pt');
|
|
expect(lookupCache).not.toMatchObject({
|
|
'en-US': { field_2: 'name' },
|
|
pt: { field_2: 'nome' },
|
|
});
|
|
});
|