-
Notifications
You must be signed in to change notification settings - Fork 1.3k
/
formatDisplayNames.test.ts
61 lines (50 loc) · 1.58 KB
/
formatDisplayNames.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/* eslint-disable @typescript-eslint/camelcase */
import '@formatjs/intl-displaynames/polyfill-locales';
import {formatDisplayName as formatDisplayNameFn} from '../src/displayName';
import {OptionalIntlConfig, IntlFormatters} from '../src/types';
describe('format API', () => {
const {NODE_ENV} = process.env;
let config: OptionalIntlConfig<any>;
let getDisplayNames: any;
beforeEach(() => {
config = {
locale: 'en',
messages: {},
defaultLocale: 'en',
defaultFormats: {},
onError: jest.fn(),
};
getDisplayNames = jest
.fn()
.mockImplementation((...args) => new (Intl as any).DisplayNames(...args));
});
afterEach(() => {
process.env.NODE_ENV = NODE_ENV;
});
describe('formatDisplayNames()', function () {
let formatDisplayName!: IntlFormatters['formatDisplayName'];
beforeEach(() => {
// @ts-ignore
formatDisplayName = formatDisplayNameFn.bind(
null,
config,
getDisplayNames
);
});
it('should return locale display name as string', function () {
expect(formatDisplayName('zh-Hans-SG', {type: 'language'})).toBe(
'Simplified Chinese (Singapore)'
);
});
it('will return undefined if Intl.DisplayName would return undefined', function () {
const displayName = new (Intl as any).DisplayNames('en', {
type: 'language',
fallback: 'none',
});
expect(displayName.of('xx-XX')).toBeUndefined();
expect(
formatDisplayName('xx-XX', {type: 'language', fallback: 'none'})
).toBeUndefined();
});
});
});