mirror of
https://github.com/cupcakearmy/svelte-i18n.git
synced 2024-11-16 09:59:58 +01:00
test: 💍 add tests for format store
This commit is contained in:
parent
efbe793a0f
commit
7dee09b668
@ -3,8 +3,8 @@ import {
|
||||
getDateFormatter,
|
||||
getTimeFormatter,
|
||||
getMessageFormatter,
|
||||
} from '../../src/client/includes/formatters'
|
||||
import { init } from '../../src/client/configs'
|
||||
} from '../../../src/client/includes/formatters'
|
||||
import { init } from '../../../src/client/configs'
|
||||
|
||||
beforeEach(() => {
|
||||
init({ fallbackLocale: undefined })
|
||||
@ -27,7 +27,7 @@ describe('number formatter', () => {
|
||||
test('should format a number with a custom format', () => {
|
||||
init({
|
||||
fallbackLocale: 'en',
|
||||
formats: require('../fixtures/formats.json'),
|
||||
formats: require('../../fixtures/formats.json'),
|
||||
})
|
||||
|
||||
expect(getNumberFormatter({ format: 'brl' }).format(number)).toBe(
|
||||
@ -59,7 +59,7 @@ describe('date formatter', () => {
|
||||
test('should throw if passed a non-existing format', () => {
|
||||
init({
|
||||
fallbackLocale: 'en',
|
||||
formats: require('../fixtures/formats.json'),
|
||||
formats: require('../../fixtures/formats.json'),
|
||||
})
|
||||
|
||||
expect(() =>
|
||||
@ -70,7 +70,7 @@ describe('date formatter', () => {
|
||||
test('should format a date with a custom format', () => {
|
||||
init({
|
||||
fallbackLocale: 'en',
|
||||
formats: require('../fixtures/formats.json'),
|
||||
formats: require('../../fixtures/formats.json'),
|
||||
})
|
||||
|
||||
expect(getDateFormatter({ format: 'customDate' }).format(date)).toBe(
|
||||
@ -102,7 +102,7 @@ describe('time formatter', () => {
|
||||
test('should format a time with a custom format', () => {
|
||||
init({
|
||||
fallbackLocale: 'en',
|
||||
formats: require('../fixtures/formats.json'),
|
||||
formats: require('../../fixtures/formats.json'),
|
||||
})
|
||||
|
||||
expect(getTimeFormatter({ format: 'customTime' }).format(time)).toBe(
|
||||
@ -113,7 +113,7 @@ describe('time formatter', () => {
|
||||
test('should throw if passed a non-existing format', () => {
|
||||
init({
|
||||
fallbackLocale: 'en',
|
||||
formats: require('../fixtures/formats.json'),
|
||||
formats: require('../../fixtures/formats.json'),
|
||||
})
|
||||
|
||||
expect(() =>
|
6
test/client/index.test.ts
Normal file
6
test/client/index.test.ts
Normal file
@ -0,0 +1,6 @@
|
||||
import { defineMessages } from '../../src/client'
|
||||
|
||||
test('defineMessages returns the identity of its first argument', () => {
|
||||
const obj = {}
|
||||
expect(obj).toBe(defineMessages(obj))
|
||||
})
|
92
test/client/stores/format.test.ts
Normal file
92
test/client/stores/format.test.ts
Normal file
@ -0,0 +1,92 @@
|
||||
import { Formatter } from '../../../src/client/types/index'
|
||||
import { $format } from '../../../src/client/stores/format'
|
||||
import { init } from '../../../src/client/configs'
|
||||
import { addMessages } from '../../../src/client/stores/dictionary'
|
||||
import { $locale } from '../../../src/client/stores/locale'
|
||||
|
||||
let format: Formatter
|
||||
$format.subscribe(f => (format = f))
|
||||
|
||||
addMessages('en', require('../../fixtures/en.json'))
|
||||
addMessages('en-GB', require('../../fixtures/en-GB.json'))
|
||||
addMessages('pt', require('../../fixtures/pt.json'))
|
||||
addMessages('pt-BR', require('../../fixtures/pt-BR.json'))
|
||||
addMessages('pt-PT', require('../../fixtures/pt-PT.json'))
|
||||
|
||||
beforeEach(() => {
|
||||
init({ fallbackLocale: 'en' })
|
||||
})
|
||||
|
||||
test('formats a message by its id and the current locale', () => {
|
||||
expect(format({ id: 'form.field_1_name' })).toBe('Name')
|
||||
})
|
||||
|
||||
test('formats a message by its id and the a passed locale', () => {
|
||||
expect(format({ id: 'form.field_1_name', locale: 'pt' })).toBe('Nome')
|
||||
})
|
||||
|
||||
test('formats a message with interpolated values', () => {
|
||||
expect(format({ id: 'photos', values: { n: 0 } })).toBe('You have no photos.')
|
||||
expect(format({ id: 'photos', values: { n: 1 } })).toBe('You have one photo.')
|
||||
expect(format({ id: 'photos', values: { n: 21 } })).toBe(
|
||||
'You have 21 photos.'
|
||||
)
|
||||
})
|
||||
|
||||
test('accepts a message id as first argument', () => {
|
||||
expect(format('form.field_1_name')).toBe('Name')
|
||||
})
|
||||
|
||||
test('accepts a message id as first argument and formatting options as second', () => {
|
||||
expect(format('form.field_1_name', { locale: 'pt' })).toBe('Nome')
|
||||
})
|
||||
|
||||
test('throws if no locale is set', () => {
|
||||
$locale.set(null)
|
||||
expect(() => format('form.field_1_name')).toThrow(
|
||||
'[svelte-i18n] Cannot format a message without first setting the initial locale.'
|
||||
)
|
||||
})
|
||||
|
||||
test('uses a missing message default value', () => {
|
||||
expect(format('missing', { default: 'Missing Default' })).toBe(
|
||||
'Missing Default'
|
||||
)
|
||||
})
|
||||
|
||||
test('warn on missing messages', () => {
|
||||
const warn = global.console.warn
|
||||
global.console.warn = jest.fn()
|
||||
|
||||
format('missing')
|
||||
|
||||
expect(console.warn).toBeCalledWith(
|
||||
`[svelte-i18n] The message "missing" was not found in "en".`
|
||||
)
|
||||
|
||||
global.console.warn = warn
|
||||
})
|
||||
|
||||
describe('format utilities', () => {
|
||||
test('time', () => {
|
||||
expect(format.time(new Date(2019, 0, 1, 20, 37))).toBe('8:37 PM')
|
||||
})
|
||||
test('date', () => {
|
||||
expect(format.date(new Date(2019, 0, 1, 20, 37))).toBe('1/1/19')
|
||||
})
|
||||
test('number', () => {
|
||||
expect(format.number(123123123)).toBe('123,123,123')
|
||||
})
|
||||
test('capital', () => {
|
||||
expect(format.capital('title')).toBe('Page title')
|
||||
})
|
||||
test('title', () => {
|
||||
expect(format.title('title')).toBe('Page Title')
|
||||
})
|
||||
test('upper', () => {
|
||||
expect(format.upper('title')).toBe('PAGE TITLE')
|
||||
})
|
||||
test('lower', () => {
|
||||
expect(format.lower('title')).toBe('page title')
|
||||
})
|
||||
})
|
13
test/fixtures/en.json
vendored
13
test/fixtures/en.json
vendored
@ -1,14 +1,9 @@
|
||||
{
|
||||
"hi": "hi yo",
|
||||
"switch.lang": "Switch language",
|
||||
"page": {
|
||||
"title_home": "Home"
|
||||
},
|
||||
"greeting": {
|
||||
"ask": "Please type your name",
|
||||
"message": "Hello {name}, how are you?"
|
||||
"form": {
|
||||
"field_1_name": "Name",
|
||||
"field_2_name": "Lastname"
|
||||
},
|
||||
"photos": "You have {n, plural, =0 {no photos.} =1 {one photo.} other {# photos.}}",
|
||||
"cats": "I have {n, number} {n,plural,one{cat}other{cats}}",
|
||||
"title": "Page title",
|
||||
"sneakers": "sneakers"
|
||||
}
|
||||
|
11
test/fixtures/es.json
vendored
11
test/fixtures/es.json
vendored
@ -1,11 +1,8 @@
|
||||
{
|
||||
"hi": "hola yo",
|
||||
"switch.lang": "Cambiar de idioma",
|
||||
"greeting": {
|
||||
"ask": "Por favor escriba su nombre",
|
||||
"message": "Hola {name}, cómo estás?"
|
||||
"form": {
|
||||
"field_1_name": "Nombre",
|
||||
"field_2_name": "Apellido"
|
||||
},
|
||||
"photos": "Tienes {n, plural, =0 {0 fotos.} =1 {una foto.} other {# fotos.}}",
|
||||
"cats": "Yo tengo {n, number} {n,plural,one{gato}other{gatos}}",
|
||||
"title": "Título de la página",
|
||||
"sneakers": "zapatillas"
|
||||
}
|
||||
|
10
test/fixtures/pt.json
vendored
10
test/fixtures/pt.json
vendored
@ -1,11 +1,9 @@
|
||||
{
|
||||
"hi": "olá você",
|
||||
"switch.lang": "Trocar idioma",
|
||||
"greeting": {
|
||||
"ask": "Por favor, digite seu nome",
|
||||
"message": "Olá {name}, como vai?"
|
||||
"form": {
|
||||
"field_1_name": "Nome",
|
||||
"field_2_name": "Sobrenome"
|
||||
},
|
||||
"photos": "Você {n, plural, =0 {não tem fotos.} =1 {tem uma foto.} other {tem # fotos.}}",
|
||||
"cats": "Tenho {n, number} {n,plural,=0{gatos}one{gato}other{gatos}}",
|
||||
"title": "Título da página",
|
||||
"sneakers": "tênis"
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user