ra-core
Version:
Core components of react-admin, a frontend Framework for building admin applications on top of REST services, using ES6, React
69 lines (63 loc) • 2.24 kB
text/typescript
import expect from 'expect';
import {
resolveBrowserLocale,
mergeTranslations,
DEFAULT_LOCALE,
} from './index';
describe('TranslationUtils', () => {
describe('resolveBrowserLocale', () => {
let languageGetter;
beforeEach(() => {
//https://stackoverflow.com/questions/52868727/how-to-mock-window-navigator-language-using-jest
// @ts-ignore
languageGetter = jest.spyOn(window.navigator, 'language', 'get');
languageGetter.mockReturnValue('en-US');
});
it("should return default locale if there's no available locale in browser", () => {
// @ts-ignore
languageGetter.mockReturnValue(undefined);
expect(resolveBrowserLocale()).toEqual(DEFAULT_LOCALE);
});
it('should splice browser language to take first two locale letters', () => {
// @ts-ignore
expect(resolveBrowserLocale()).toEqual('en');
});
it('should return the full locale', () => {
// @ts-ignore
expect(
resolveBrowserLocale(DEFAULT_LOCALE, { fullLocale: true })
).toEqual('en-US');
});
});
describe('mergeTranslations', () => {
it('Merge translations modules', () => {
const defaultMessages = {
ra: { action: { save: 'Save', edit: 'Edit' } },
};
const addonMessages = {
ra: { tree: { dragPreview: 'Node %id%' } },
};
const customPackageWithOverrides = {
ra: {
action: { edit: 'Modify', saveAndAdd: 'Save and add' },
},
};
expect(
mergeTranslations(
defaultMessages,
addonMessages,
customPackageWithOverrides
)
).toEqual({
ra: {
action: {
save: 'Save',
edit: 'Modify',
saveAndAdd: 'Save and add',
},
tree: { dragPreview: 'Node %id%' },
},
});
});
});
});