UNPKG

strapi-plugin-i18n

Version:

This plugin enables to create, to read and to update content in different languages, both from the Admin Panel and from the API

204 lines (178 loc) 4.41 kB
import reducers, { initialState } from '../reducers'; import { RESOLVE_LOCALES, ADD_LOCALE, DELETE_LOCALE, UPDATE_LOCALE } from '../constants'; describe('i18n reducer', () => { it('resolves the initial state when the action is not known', () => { const action = { type: 'UNKNWON_ACTION', }; const actual = reducers.i18n_locales(initialState, action); const expected = initialState; expect(actual).toEqual(expected); }); it('resolves a list of locales when triggering RESOLVE_LOCALES', () => { const action = { type: RESOLVE_LOCALES, locales: [{ id: 1, displayName: 'French', isDefault: false }], }; const actual = reducers.i18n_locales(initialState, action); const expected = { isLoading: false, locales: [ { displayName: 'French', id: 1, isDefault: false, }, ], }; expect(actual).toEqual(expected); }); it('adds a locale when triggering ADD_LOCALE', () => { const action = { type: ADD_LOCALE, newLocale: { id: 1, displayName: 'French', isDefault: false }, }; const actual = reducers.i18n_locales(initialState, action); const expected = { isLoading: true, locales: [ { displayName: 'French', id: 1, isDefault: false, }, ], }; expect(actual).toEqual(expected); }); it('adds a locale when triggering ADD_LOCALE and set it to default', () => { const action = { type: ADD_LOCALE, newLocale: { id: 1, displayName: 'French', isDefault: true }, }; const locales = [ { displayName: 'English', id: 2, isDefault: true, }, ]; const actual = reducers.i18n_locales({ ...initialState, locales }, action); const expected = { isLoading: true, locales: [ { displayName: 'English', id: 2, isDefault: false, }, { displayName: 'French', id: 1, isDefault: true, }, ], }; expect(actual).toEqual(expected); }); it('removes a locale when triggering DELETE_LOCALE ', () => { const action = { type: DELETE_LOCALE, id: 2, }; const locales = [ { displayName: 'French', id: 1, isDefault: true, }, { displayName: 'English', id: 2, isDefault: false, }, ]; const actual = reducers.i18n_locales({ ...initialState, locales }, action); const expected = { isLoading: true, locales: [ { displayName: 'French', id: 1, isDefault: true, }, ], }; expect(actual).toEqual(expected); }); it('updates a locale when triggering UPDATE_LOCALE', () => { const action = { type: UPDATE_LOCALE, editedLocale: { id: 1, displayName: 'Frenchie', isDefault: false }, }; const locales = [ { displayName: 'English', id: 2, isDefault: true, }, { displayName: 'French', id: 1, isDefault: false, }, ]; const actual = reducers.i18n_locales({ ...initialState, locales }, action); const expected = { isLoading: true, locales: [ { displayName: 'English', id: 2, isDefault: true, }, { displayName: 'Frenchie', id: 1, isDefault: false, }, ], }; expect(actual).toEqual(expected); }); it('updates a locale when triggering UPDATE_LOCALE and set it to default', () => { const action = { type: UPDATE_LOCALE, editedLocale: { id: 1, displayName: 'Frenchie', isDefault: true }, }; const locales = [ { displayName: 'English', id: 2, isDefault: true, }, { displayName: 'French', id: 1, isDefault: false, }, ]; const actual = reducers.i18n_locales({ ...initialState, locales }, action); const expected = { isLoading: true, locales: [ { displayName: 'English', id: 2, isDefault: false, }, { displayName: 'Frenchie', id: 1, isDefault: true, }, ], }; expect(actual).toEqual(expected); }); });