From 2e96405273537091658405df2051b02a5341b500 Mon Sep 17 00:00:00 2001 From: soupette Date: Tue, 11 May 2021 12:24:00 +0200 Subject: [PATCH] Load i18n plugin Signed-off-by: soupette --- packages/core/admin/admin/src/StrapiApp.js | 2 + .../admin/src/core/store/configureStore.js | 2 +- packages/core/admin/admin/src/plugins.js | 2 + .../i18n/admin/src/containers/Initializer.js | 8 +- .../SettingsPage/tests/SettingsPage.test.js | 9 +- .../i18n/admin/src/hooks/useHasI18n/index.js | 2 +- .../i18n/admin/src/hooks/useLocales/index.js | 4 +- packages/plugins/i18n/admin/src/index.js | 261 +++++++++--------- .../addCommonFieldsToInitialDataMiddleware.js | 5 +- .../addLocaleColumnToListViewMiddleware.js | 2 +- .../addLocaleToCollectionTypesMiddleware.js | 4 +- .../addLocaleToSingleTypesMiddleware.js | 4 +- ...extendCTBAttributeInitialDataMiddleware.js | 4 +- ...ommonFieldsToInitialDataMiddleware.test.js | 11 +- ...ddLocaleColumnToListViewMiddleware.test.js | 4 +- ...dLocaleToCollectionTypesMiddleware.test.js | 77 +++--- .../addLocaleToSingleTypesMiddleware.test.js | 97 ++++--- ...CTBAttrributeInitialDataMiddleware.test.js | 20 +- ...selectCollectionTypesRelatedPermissions.js | 2 +- .../admin/src/selectors/selectI18nLocales.js | 2 +- 20 files changed, 284 insertions(+), 238 deletions(-) diff --git a/packages/core/admin/admin/src/StrapiApp.js b/packages/core/admin/admin/src/StrapiApp.js index 27107976bf..1fd99e755f 100644 --- a/packages/core/admin/admin/src/StrapiApp.js +++ b/packages/core/admin/admin/src/StrapiApp.js @@ -41,10 +41,12 @@ class StrapiApp { this.appPlugins = appPlugins || {}; this.componentApi = Components(); this.fieldApi = Fields(); + // FIXME this.middlewares = []; this.plugins = {}; this.reducers = { ...reducers }; this.translations = translations; + // this.addMiddleware = this.addMiddleware.bind(this); this.getPlugin = this.getPlugin.bind(this); } diff --git a/packages/core/admin/admin/src/core/store/configureStore.js b/packages/core/admin/admin/src/core/store/configureStore.js index 5d2ecdbbc2..00288d2f85 100644 --- a/packages/core/admin/admin/src/core/store/configureStore.js +++ b/packages/core/admin/admin/src/core/store/configureStore.js @@ -4,7 +4,7 @@ import createReducer from './createReducer'; const configureStore = app => { const middlewares = []; - middlewares.forEach(middleware => { + app.middlewares.forEach(middleware => { middlewares.push(middleware()); }); diff --git a/packages/core/admin/admin/src/plugins.js b/packages/core/admin/admin/src/plugins.js index 91415d820b..7ad00d414a 100644 --- a/packages/core/admin/admin/src/plugins.js +++ b/packages/core/admin/admin/src/plugins.js @@ -1,6 +1,7 @@ // TODO temp file import documentationPlugin from '../../../../plugins/documentation/admin/src'; import graphqlPlugin from '../../../../plugins/graphql/admin/src'; +import i18nPlugin from '../../../../plugins/i18n/admin/src'; import sentryPlugin from '../../../../plugins/sentry/admin/src'; import usersPermissionsPlugin from '../../../../plugins/users-permissions/admin/src'; import cmPlugin from '../../../content-manager/admin/src'; @@ -12,6 +13,7 @@ const plugins = { '@strapi/plugin-content-manager': cmPlugin, '@strapi/plugin-content-type-builder': ctbPlugin, '@strapi/plugin-documentation': documentationPlugin, + '@strapi/plugin-i18n': i18nPlugin, '@strapi/plugin-email': emailPlugin, '@strapi/plugin-upload': uploadPlugin, '@strapi/plugin-graphql': graphqlPlugin, diff --git a/packages/plugins/i18n/admin/src/containers/Initializer.js b/packages/plugins/i18n/admin/src/containers/Initializer.js index 1793b6af3b..e1540960c2 100644 --- a/packages/plugins/i18n/admin/src/containers/Initializer.js +++ b/packages/plugins/i18n/admin/src/containers/Initializer.js @@ -9,15 +9,15 @@ import PropTypes from 'prop-types'; import pluginId from '../pluginId'; import useLocales from '../hooks/useLocales'; -const Initializer = ({ updatePlugin }) => { +const Initializer = ({ setPlugin }) => { const { isLoading, locales } = useLocales(); const ref = useRef(); - ref.current = updatePlugin; + ref.current = setPlugin; useEffect(() => { if (!isLoading && locales.length > 0) { - ref.current(pluginId, 'isReady', true); + ref.current(pluginId); } }, [isLoading, locales]); @@ -25,7 +25,7 @@ const Initializer = ({ updatePlugin }) => { }; Initializer.propTypes = { - updatePlugin: PropTypes.func.isRequired, + setPlugin: PropTypes.func.isRequired, }; export default Initializer; diff --git a/packages/plugins/i18n/admin/src/containers/SettingsPage/tests/SettingsPage.test.js b/packages/plugins/i18n/admin/src/containers/SettingsPage/tests/SettingsPage.test.js index a51df72bb4..f635c8bb84 100644 --- a/packages/plugins/i18n/admin/src/containers/SettingsPage/tests/SettingsPage.test.js +++ b/packages/plugins/i18n/admin/src/containers/SettingsPage/tests/SettingsPage.test.js @@ -1,10 +1,7 @@ /* eslint-disable react/prop-types */ import React from 'react'; -import { createStore } from 'redux'; -import { combineReducers } from 'redux-immutable'; -import { fromJS } from 'immutable'; - +import { createStore, combineReducers } from 'redux'; import { Provider } from 'react-redux'; import { request, useUserPermissions } from '@strapi/helper-plugin'; import { fireEvent, render, screen, within, waitFor } from '@testing-library/react'; @@ -14,13 +11,13 @@ import LocaleSettingsPage from '..'; // TODO: move to @strapi/helper-plugin import themes from '../../../../../../../core/admin/admin/src/themes'; import i18nReducers, { initialState } from '../../../hooks/reducers'; +import pluginId from '../../../pluginId'; const TestWrapper = ({ children }) => { const queryClient = new QueryClient(); - const initialStoreState = fromJS(initialState); const rootReducer = combineReducers(i18nReducers); - const store = createStore(rootReducer, initialStoreState); + const store = createStore(rootReducer, { [`${pluginId}_locales`]: initialState }); return ( diff --git a/packages/plugins/i18n/admin/src/hooks/useHasI18n/index.js b/packages/plugins/i18n/admin/src/hooks/useHasI18n/index.js index 6fd31ba218..1b1046f45d 100644 --- a/packages/plugins/i18n/admin/src/hooks/useHasI18n/index.js +++ b/packages/plugins/i18n/admin/src/hooks/useHasI18n/index.js @@ -2,7 +2,7 @@ import { useSelector } from 'react-redux'; import get from 'lodash/get'; const selectContentManagerListViewPluginOptions = state => - state.get('content-manager_listView').contentType.pluginOptions; + state['content-manager_listView'].contentType.pluginOptions; const useHasI18n = () => { const pluginOptions = useSelector(selectContentManagerListViewPluginOptions); diff --git a/packages/plugins/i18n/admin/src/hooks/useLocales/index.js b/packages/plugins/i18n/admin/src/hooks/useLocales/index.js index 91787dd471..45711ac4a4 100644 --- a/packages/plugins/i18n/admin/src/hooks/useLocales/index.js +++ b/packages/plugins/i18n/admin/src/hooks/useLocales/index.js @@ -22,8 +22,8 @@ const fetchLocalesList = async () => { const useLocales = () => { const dispatch = useDispatch(); - const locales = useSelector(state => state.get('i18n_locales').locales); - const isLoading = useSelector(state => state.get('i18n_locales').isLoading); + const locales = useSelector(state => state.i18n_locales.locales); + const isLoading = useSelector(state => state.i18n_locales.isLoading); useEffect(() => { fetchLocalesList().then(locales => dispatch({ type: RESOLVE_LOCALES, locales })); diff --git a/packages/plugins/i18n/admin/src/index.js b/packages/plugins/i18n/admin/src/index.js index f7e1c86320..036e61ffd9 100644 --- a/packages/plugins/i18n/admin/src/index.js +++ b/packages/plugins/i18n/admin/src/index.js @@ -18,152 +18,155 @@ import LOCALIZED_FIELDS from './utils/localizedFields'; import i18nReducers from './hooks/reducers'; import DeleteModalAdditionalInfos from './components/DeleteModalAdditionalInfos'; -export default strapi => { - const pluginDescription = pluginPkg.strapi.description || pluginPkg.description; +const pluginDescription = pluginPkg.strapi.description || pluginPkg.description; +const icon = pluginPkg.strapi.icon; +const name = pluginPkg.strapi.name; - middlewares.forEach(middleware => { - strapi.middlewares.add(middleware); - }); +export default { + register(app) { + // FIXME + middlewares.forEach(middleware => { + app.addMiddleware(middleware); + }); - const plugin = { - description: pluginDescription, - icon: pluginPkg.strapi.icon, - id: pluginId, - isReady: false, - isRequired: pluginPkg.strapi.required || false, - mainComponent: null, - name: pluginPkg.strapi.name, - pluginLogo, - preventComponentRendering: false, - settings: { - global: { - links: [ - { - title: { - id: getTrad('plugin.name'), - defaultMessage: 'Internationalization', + app.addReducers(i18nReducers); + + app.registerPlugin({ + description: pluginDescription, + icon, + id: pluginId, + initializer: Initializer, + isReady: false, + isRequired: pluginPkg.strapi.required || false, + mainComponent: null, + name, + pluginLogo, + settings: { + global: { + links: [ + { + title: { + id: getTrad('plugin.name'), + defaultMessage: 'Internationalization', + }, + name: 'internationalization', + to: '/settings/internationalization', + Component: () => , + permissions: pluginPermissions.accessMain, }, - name: 'internationalization', - to: '/settings/internationalization', - Component: () => , - permissions: pluginPermissions.accessMain, - }, - ], + ], + }, }, - }, - trads, - reducers: i18nReducers, - boot(app) { - const ctbPlugin = app.getPlugin('content-type-builder'); - const cmPlugin = app.getPlugin('content-manager'); + trads, + }); + }, + boot(app) { + const ctbPlugin = app.getPlugin('content-type-builder'); + const cmPlugin = app.getPlugin('content-manager'); - if (cmPlugin) { - cmPlugin.injectComponent('editView', 'informations', { - name: 'i18n-locale-filter-edit-view', - Component: CMEditViewInjectedComponents, - }); - cmPlugin.injectComponent('listView', 'actions', { - name: 'i18n-locale-filter', - Component: LocalePicker, - }); + if (cmPlugin) { + cmPlugin.injectComponent('editView', 'informations', { + name: 'i18n-locale-filter-edit-view', + Component: CMEditViewInjectedComponents, + }); + cmPlugin.injectComponent('listView', 'actions', { + name: 'i18n-locale-filter', + Component: LocalePicker, + }); - cmPlugin.injectComponent('listView', 'deleteModalAdditionalInfos', { - name: 'i18n-delete-bullets-in-modal', - Component: DeleteModalAdditionalInfos, - }); - } + cmPlugin.injectComponent('listView', 'deleteModalAdditionalInfos', { + name: 'i18n-delete-bullets-in-modal', + Component: DeleteModalAdditionalInfos, + }); + } - if (ctbPlugin) { - const ctbFormsAPI = ctbPlugin.apis.forms; - ctbFormsAPI.addContentTypeSchemaMutation(mutateCTBContentTypeSchema); - ctbFormsAPI.components.add({ id: 'checkboxConfirmation', component: CheckboxConfirmation }); + if (ctbPlugin) { + const ctbFormsAPI = ctbPlugin.apis.forms; + ctbFormsAPI.addContentTypeSchemaMutation(mutateCTBContentTypeSchema); + ctbFormsAPI.components.add({ id: 'checkboxConfirmation', component: CheckboxConfirmation }); - ctbFormsAPI.extendContentType({ - validator: () => ({ - i18n: yup.object().shape({ - localized: yup.bool(), - }), + ctbFormsAPI.extendContentType({ + validator: () => ({ + i18n: yup.object().shape({ + localized: yup.bool(), }), - form: { - advanced() { - return [ - [ - { - name: 'pluginOptions.i18n.localized', - description: { - id: getTrad('plugin.schema.i18n.localized.description-content-type'), - }, - type: 'checkboxConfirmation', - label: { id: getTrad('plugin.schema.i18n.localized.label-content-type') }, + }), + form: { + advanced() { + return [ + [ + { + name: 'pluginOptions.i18n.localized', + description: { + id: getTrad('plugin.schema.i18n.localized.description-content-type'), }, - ], - ]; - }, - }, - }); - - ctbFormsAPI.extendFields(LOCALIZED_FIELDS, { - validator: args => ({ - i18n: yup.object().shape({ - localized: yup.bool().test({ - name: 'ensure-unique-localization', - message: getTrad('plugin.schema.i18n.ensure-unique-localization'), - test(value) { - if (value === undefined || value) { - return true; - } - - const unique = get(args, ['3', 'modifiedData', 'unique'], null); - - // Unique fields must be localized - if (unique && !value) { - return false; - } - - return true; + type: 'checkboxConfirmation', + label: { id: getTrad('plugin.schema.i18n.localized.label-content-type') }, }, - }), + ], + ]; + }, + }, + }); + + ctbFormsAPI.extendFields(LOCALIZED_FIELDS, { + validator: args => ({ + i18n: yup.object().shape({ + localized: yup.bool().test({ + name: 'ensure-unique-localization', + message: getTrad('plugin.schema.i18n.ensure-unique-localization'), + test(value) { + if (value === undefined || value) { + return true; + } + + const unique = get(args, ['3', 'modifiedData', 'unique'], null); + + // Unique fields must be localized + if (unique && !value) { + return false; + } + + return true; + }, }), }), - form: { - advanced({ contentTypeSchema, forTarget, type, step }) { - if (forTarget !== 'contentType') { - return []; - } + }), + form: { + advanced({ contentTypeSchema, forTarget, type, step }) { + if (forTarget !== 'contentType') { + return []; + } - const hasI18nEnabled = get( - contentTypeSchema, - ['schema', 'pluginOptions', 'i18n', 'localized'], - false - ); + const hasI18nEnabled = get( + contentTypeSchema, + ['schema', 'pluginOptions', 'i18n', 'localized'], + false + ); - if (!hasI18nEnabled) { - return []; - } + if (!hasI18nEnabled) { + return []; + } - if (type === 'component' && step === '1') { - return []; - } + if (type === 'component' && step === '1') { + return []; + } - return [ - [ - { - name: 'pluginOptions.i18n.localized', - description: { - id: getTrad('plugin.schema.i18n.localized.description-field'), - }, - type: 'checkbox', - label: { id: getTrad('plugin.schema.i18n.localized.label-field') }, + return [ + [ + { + name: 'pluginOptions.i18n.localized', + description: { + id: getTrad('plugin.schema.i18n.localized.description-field'), }, - ], - ]; - }, + type: 'checkbox', + label: { id: getTrad('plugin.schema.i18n.localized.label-field') }, + }, + ], + ]; }, - }); - } - }, - initializer: Initializer, - }; - - return strapi.registerPlugin(plugin); + }, + }); + } + }, }; diff --git a/packages/plugins/i18n/admin/src/middlewares/addCommonFieldsToInitialDataMiddleware.js b/packages/plugins/i18n/admin/src/middlewares/addCommonFieldsToInitialDataMiddleware.js index 24ac08ecf1..588437571a 100644 --- a/packages/plugins/i18n/admin/src/middlewares/addCommonFieldsToInitialDataMiddleware.js +++ b/packages/plugins/i18n/admin/src/middlewares/addCommonFieldsToInitialDataMiddleware.js @@ -28,8 +28,9 @@ const addCommonFieldsToInitialDataMiddleware = () => ({ getState, dispatch }) => return next(action); } - const cmDataStore = getState().get('content-manager_editViewCrudReducer'); - const cmLayoutStore = getState().get('content-manager_editViewLayoutManager'); + const store = getState(); + const cmDataStore = store['content-manager_editViewCrudReducer']; + const cmLayoutStore = store['content-manager_editViewLayoutManager']; const { contentTypeDataStructure } = cmDataStore; const { currentLayout } = cmLayoutStore; diff --git a/packages/plugins/i18n/admin/src/middlewares/addLocaleColumnToListViewMiddleware.js b/packages/plugins/i18n/admin/src/middlewares/addLocaleColumnToListViewMiddleware.js index 6f722bd76a..d142ca68c3 100644 --- a/packages/plugins/i18n/admin/src/middlewares/addLocaleColumnToListViewMiddleware.js +++ b/packages/plugins/i18n/admin/src/middlewares/addLocaleColumnToListViewMiddleware.js @@ -14,7 +14,7 @@ const addLocaleColumnToListViewMiddleware = () => ({ getState }) => next => acti } const store = getState(); - const { locales } = store.get('i18n_locales'); + const { locales } = store.i18n_locales; const locale = { key: '__locale_key__', diff --git a/packages/plugins/i18n/admin/src/middlewares/addLocaleToCollectionTypesMiddleware.js b/packages/plugins/i18n/admin/src/middlewares/addLocaleToCollectionTypesMiddleware.js index ac6e911cde..c7fe754204 100644 --- a/packages/plugins/i18n/admin/src/middlewares/addLocaleToCollectionTypesMiddleware.js +++ b/packages/plugins/i18n/admin/src/middlewares/addLocaleToCollectionTypesMiddleware.js @@ -7,8 +7,8 @@ const addLocaleToCollectionTypesMiddleware = () => ({ getState }) => next => act if (action.data.authorizedCtLinks.length) { const store = getState(); - const { locales } = store.get('i18n_locales'); - const { collectionTypesRelatedPermissions } = store.get('permissionsManager'); + const { locales } = store.i18n_locales; + const { collectionTypesRelatedPermissions } = store.permissionsManager; action.data.authorizedCtLinks = addLocaleToLinksSearch( action.data.authorizedCtLinks, diff --git a/packages/plugins/i18n/admin/src/middlewares/addLocaleToSingleTypesMiddleware.js b/packages/plugins/i18n/admin/src/middlewares/addLocaleToSingleTypesMiddleware.js index 921630d489..0d46114b07 100644 --- a/packages/plugins/i18n/admin/src/middlewares/addLocaleToSingleTypesMiddleware.js +++ b/packages/plugins/i18n/admin/src/middlewares/addLocaleToSingleTypesMiddleware.js @@ -7,8 +7,8 @@ const addLocaleToSingleTypesMiddleware = () => ({ getState }) => next => action if (action.data.authorizedStLinks.length) { const store = getState(); - const { locales } = store.get('i18n_locales'); - const { collectionTypesRelatedPermissions } = store.get('permissionsManager'); + const { locales } = store.i18n_locales; + const { collectionTypesRelatedPermissions } = store.permissionsManager; action.data.authorizedStLinks = addLocaleToLinksSearch( action.data.authorizedStLinks, diff --git a/packages/plugins/i18n/admin/src/middlewares/extendCTBAttributeInitialDataMiddleware.js b/packages/plugins/i18n/admin/src/middlewares/extendCTBAttributeInitialDataMiddleware.js index 21f3718882..086801978b 100644 --- a/packages/plugins/i18n/admin/src/middlewares/extendCTBAttributeInitialDataMiddleware.js +++ b/packages/plugins/i18n/admin/src/middlewares/extendCTBAttributeInitialDataMiddleware.js @@ -4,8 +4,8 @@ const extendCTBAttributeInitialDataMiddleware = () => { // the block here is to catch the error when trying to access the state // of the ctb when the plugin is not mounted try { - const hasi18nEnabled = getState().getIn([ - 'content-type-builder_dataManagerProvider', + const store = getState(); + const hasi18nEnabled = store['content-type-builder_dataManagerProvider'].getIn([ 'modifiedData', 'contentType', 'schema', diff --git a/packages/plugins/i18n/admin/src/middlewares/tests/addCommonFieldsToInitialDataMiddleware.test.js b/packages/plugins/i18n/admin/src/middlewares/tests/addCommonFieldsToInitialDataMiddleware.test.js index 7db440e340..c6bde66745 100644 --- a/packages/plugins/i18n/admin/src/middlewares/tests/addCommonFieldsToInitialDataMiddleware.test.js +++ b/packages/plugins/i18n/admin/src/middlewares/tests/addCommonFieldsToInitialDataMiddleware.test.js @@ -14,12 +14,13 @@ describe('i18n | middlewares | addCommonFieldsToInitialDataMiddleware', () => { const dispatch = jest.fn(); beforeEach(() => { - const store = new Map(); + const store = {}; - store.set('content-manager_editViewCrudReducer', { + store['content-manager_editViewCrudReducer'] = { contentTypeDataStructure: { name: 'test', common: 'common default value' }, - }); - store.set('content-manager_editViewLayoutManager', { + }; + + store['content-manager_editViewLayoutManager'] = { currentLayout: { components: {}, contentType: { @@ -30,7 +31,7 @@ describe('i18n | middlewares | addCommonFieldsToInitialDataMiddleware', () => { }, }, }, - }); + }; getState = () => store; }); diff --git a/packages/plugins/i18n/admin/src/middlewares/tests/addLocaleColumnToListViewMiddleware.test.js b/packages/plugins/i18n/admin/src/middlewares/tests/addLocaleColumnToListViewMiddleware.test.js index 16d72eb6de..fa9cc61b0f 100644 --- a/packages/plugins/i18n/admin/src/middlewares/tests/addLocaleColumnToListViewMiddleware.test.js +++ b/packages/plugins/i18n/admin/src/middlewares/tests/addLocaleColumnToListViewMiddleware.test.js @@ -4,9 +4,9 @@ describe('addLocaleColumnToListViewMiddleware', () => { let getState; beforeEach(() => { - const store = new Map(); + const store = {}; - store.set('i18n_locales', { locales: [] }); + store.i18n_locales = { locales: [] }; getState = () => store; }); diff --git a/packages/plugins/i18n/admin/src/middlewares/tests/addLocaleToCollectionTypesMiddleware.test.js b/packages/plugins/i18n/admin/src/middlewares/tests/addLocaleToCollectionTypesMiddleware.test.js index d67afc54e3..88e01bbd32 100644 --- a/packages/plugins/i18n/admin/src/middlewares/tests/addLocaleToCollectionTypesMiddleware.test.js +++ b/packages/plugins/i18n/admin/src/middlewares/tests/addLocaleToCollectionTypesMiddleware.test.js @@ -4,17 +4,18 @@ describe('i18n | middlewares | addLocaleToCollectionTypesMiddleware', () => { let getState; beforeEach(() => { - const store = new Map(); - store.set('i18n_locales', { locales: [] }); - store.set('permissionsManager', { userPermissions: [] }); - store.set('permissionsManager', { - collectionTypesRelatedPermissions: { - test: { - 'plugins::content-manager.explorer.read': [], - 'plugins::content-manager.explorer.create': [], + const store = { + i18n_locales: { locales: [] }, + permissionsManager: { + userPermissions: [], + collectionTypesRelatedPermissions: { + test: { + 'plugins::content-manager.explorer.read': [], + 'plugins::content-manager.explorer.create': [], + }, }, }, - }); + }; getState = () => store; }); @@ -75,17 +76,19 @@ describe('i18n | middlewares | addLocaleToCollectionTypesMiddleware', () => { }); it('should add a search key with the default locale when the user has the right to read it', () => { - const tempStore = new Map(); - tempStore.set('i18n_locales', { locales: [{ code: 'en', isDefault: true }] }); - tempStore.set('permissionsManager', { userPermissions: [] }); - tempStore.set('permissionsManager', { - collectionTypesRelatedPermissions: { - test: { - 'plugins::content-manager.explorer.read': [{ properties: { locales: ['en'] } }], - 'plugins::content-manager.explorer.create': [], + const tempStore = { + i18n_locales: { locales: [{ code: 'en', isDefault: true }] }, + permissionsManager: { + userPermissions: [], + collectionTypesRelatedPermissions: { + test: { + 'plugins::content-manager.explorer.read': [{ properties: { locales: ['en'] } }], + 'plugins::content-manager.explorer.create': [], + }, }, }, - }); + }; + const action = { type: 'StrapiAdmin/LeftMenu/SET_CT_OR_ST_LINKS', data: { @@ -113,16 +116,18 @@ describe('i18n | middlewares | addLocaleToCollectionTypesMiddleware', () => { }); it('should set the isDisplayed key to false when the user does not have the right to read any locale', () => { - const tempStore = new Map(); - tempStore.set('i18n_locales', { locales: [{ code: 'en', isDefault: true }] }); - tempStore.set('permissionsManager', { userPermissions: [] }); - tempStore.set('permissionsManager', { - collectionTypesRelatedPermissions: { - test: { - 'plugins::content-manager.explorer.read': [{ properties: { locales: [] } }], + const tempStore = { + i18n_locales: { locales: [{ code: 'en', isDefault: true }] }, + permissionsManager: { + userPermissions: [], + collectionTypesRelatedPermissions: { + test: { + 'plugins::content-manager.explorer.read': [{ properties: { locales: [] } }], + }, }, }, - }); + }; + const action = { type: 'StrapiAdmin/LeftMenu/SET_CT_OR_ST_LINKS', data: { @@ -156,17 +161,19 @@ describe('i18n | middlewares | addLocaleToCollectionTypesMiddleware', () => { }); it('should keep the previous search', () => { - const tempStore = new Map(); - tempStore.set('i18n_locales', { locales: [{ code: 'en', isDefault: true }] }); - tempStore.set('permissionsManager', { userPermissions: [] }); - tempStore.set('permissionsManager', { - collectionTypesRelatedPermissions: { - test: { - 'plugins::content-manager.explorer.read': [{ properties: { locales: ['en'] } }], - 'plugins::content-manager.explorer.create': [], + const tempStore = { + i18n_locales: { locales: [{ code: 'en', isDefault: true }] }, + permissionsManager: { + userPermissions: [], + collectionTypesRelatedPermissions: { + test: { + 'plugins::content-manager.explorer.read': [{ properties: { locales: ['en'] } }], + 'plugins::content-manager.explorer.create': [], + }, }, }, - }); + }; + const action = { type: 'StrapiAdmin/LeftMenu/SET_CT_OR_ST_LINKS', data: { diff --git a/packages/plugins/i18n/admin/src/middlewares/tests/addLocaleToSingleTypesMiddleware.test.js b/packages/plugins/i18n/admin/src/middlewares/tests/addLocaleToSingleTypesMiddleware.test.js index c956fe2b6c..94e88fa041 100644 --- a/packages/plugins/i18n/admin/src/middlewares/tests/addLocaleToSingleTypesMiddleware.test.js +++ b/packages/plugins/i18n/admin/src/middlewares/tests/addLocaleToSingleTypesMiddleware.test.js @@ -4,17 +4,18 @@ describe('i18n | middlewares | addLocaleToSingleTypesMiddleware', () => { let getState; beforeEach(() => { - const store = new Map(); - store.set('i18n_locales', { locales: [] }); - store.set('permissionsManager', { userPermissions: [] }); - store.set('permissionsManager', { - collectionTypesRelatedPermissions: { - test: { - 'plugins::content-manager.explorer.read': [], - 'plugins::content-manager.explorer.create': [], + const store = { + i18n_locales: { locales: [] }, + permissionsManager: { + userPermissions: [], + collectionTypesRelatedPermissions: { + test: { + 'plugins::content-manager.explorer.read': [], + 'plugins::content-manager.explorer.create': [], + }, }, }, - }); + }; getState = () => store; }); @@ -75,17 +76,19 @@ describe('i18n | middlewares | addLocaleToSingleTypesMiddleware', () => { }); it('should add a search key with the default locale when the user has the right to read it', () => { - const tempStore = new Map(); - tempStore.set('i18n_locales', { locales: [{ code: 'en', isDefault: true }] }); - tempStore.set('permissionsManager', { userPermissions: [] }); - tempStore.set('permissionsManager', { - collectionTypesRelatedPermissions: { - test: { - 'plugins::content-manager.explorer.read': [{ properties: { locales: ['en'] } }], - 'plugins::content-manager.explorer.create': [], + const tempStore = { + i18n_locales: { locales: [{ code: 'en', isDefault: true }] }, + permissionsManager: { + userPermissions: [], + collectionTypesRelatedPermissions: { + test: { + 'plugins::content-manager.explorer.read': [{ properties: { locales: ['en'] } }], + 'plugins::content-manager.explorer.create': [], + }, }, }, - }); + }; + const action = { type: 'StrapiAdmin/LeftMenu/SET_CT_OR_ST_LINKS', data: { @@ -113,17 +116,28 @@ describe('i18n | middlewares | addLocaleToSingleTypesMiddleware', () => { }); it('should set the isDisplayed key to false when the user does not have the right to read any locale', () => { - const tempStore = new Map(); - tempStore.set('i18n_locales', { locales: [{ code: 'en', isDefault: true }] }); - tempStore.set('permissionsManager', { userPermissions: [] }); - tempStore.set('permissionsManager', { - collectionTypesRelatedPermissions: { - test: { - 'plugins::content-manager.explorer.read': [{ properties: { locales: [] } }], - 'plugins::content-manager.explorer.create': [], + const tempStore = { + i18n_locales: { locales: [{ code: 'en', isDefault: true }] }, + permissionsManager: { + userPermissions: [], + collectionTypesRelatedPermissions: { + test: { + 'plugins::content-manager.explorer.read': [{ properties: { locales: [] } }], + 'plugins::content-manager.explorer.create': [], + }, }, }, - }); + }; + // tempStore.set('i18n_locales', { locales: [{ code: 'en', isDefault: true }] }); + // tempStore.set('permissionsManager', { userPermissions: [] }); + // tempStore.set('permissionsManager', { + // collectionTypesRelatedPermissions: { + // test: { + // 'plugins::content-manager.explorer.read': [{ properties: { locales: [] } }], + // 'plugins::content-manager.explorer.create': [], + // }, + // }, + // }); const action = { type: 'StrapiAdmin/LeftMenu/SET_CT_OR_ST_LINKS', data: { @@ -149,17 +163,28 @@ describe('i18n | middlewares | addLocaleToSingleTypesMiddleware', () => { }); it('should keep the previous search', () => { - const tempStore = new Map(); - tempStore.set('i18n_locales', { locales: [{ code: 'en', isDefault: true }] }); - tempStore.set('permissionsManager', { userPermissions: [] }); - tempStore.set('permissionsManager', { - collectionTypesRelatedPermissions: { - test: { - 'plugins::content-manager.explorer.read': [{ properties: { locales: ['en'] } }], - 'plugins::content-manager.explorer.create': [], + const tempStore = { + i18n_locales: { locales: [{ code: 'en', isDefault: true }] }, + permissionsManager: { + userPermissions: [], + collectionTypesRelatedPermissions: { + test: { + 'plugins::content-manager.explorer.read': [{ properties: { locales: ['en'] } }], + 'plugins::content-manager.explorer.create': [], + }, }, }, - }); + }; + // tempStore.set('i18n_locales', { locales: [{ code: 'en', isDefault: true }] }); + // tempStore.set('permissionsManager', { userPermissions: [] }); + // tempStore.set('permissionsManager', { + // collectionTypesRelatedPermissions: { + // test: { + // 'plugins::content-manager.explorer.read': [{ properties: { locales: ['en'] } }], + // 'plugins::content-manager.explorer.create': [], + // }, + // }, + // }); const action = { type: 'StrapiAdmin/LeftMenu/SET_CT_OR_ST_LINKS', data: { diff --git a/packages/plugins/i18n/admin/src/middlewares/tests/extendCTBAttrributeInitialDataMiddleware.test.js b/packages/plugins/i18n/admin/src/middlewares/tests/extendCTBAttrributeInitialDataMiddleware.test.js index 5e532d8c93..a838a59694 100644 --- a/packages/plugins/i18n/admin/src/middlewares/tests/extendCTBAttrributeInitialDataMiddleware.test.js +++ b/packages/plugins/i18n/admin/src/middlewares/tests/extendCTBAttrributeInitialDataMiddleware.test.js @@ -49,7 +49,9 @@ describe('i18n | middlewares | extendCTBAttributeInitialDataMiddleware', () => { type: 'ContentTypeBuilder/FormModal/SET_ATTRIBUTE_DATA_SCHEMA', }; const getState = jest.fn(() => ({ - getIn: jest.fn(() => false), + 'content-type-builder_dataManagerProvider': { + getIn: jest.fn(() => false), + }, })); const next = jest.fn(); @@ -67,7 +69,9 @@ describe('i18n | middlewares | extendCTBAttributeInitialDataMiddleware', () => { type: 'ContentTypeBuilder/FormModal/SET_ATTRIBUTE_DATA_SCHEMA', }; const getState = jest.fn(() => ({ - getIn: undefined, + 'content-type-builder_dataManagerProvider': { + getIn: undefined, + }, })); const next = jest.fn(); @@ -86,8 +90,10 @@ describe('i18n | middlewares | extendCTBAttributeInitialDataMiddleware', () => { type: 'ContentTypeBuilder/FormModal/SET_ATTRIBUTE_DATA_SCHEMA', }; const getState = jest.fn(() => ({ - // i18n is activated - getIn: jest.fn(() => true), + 'content-type-builder_dataManagerProvider': { + // i18n is activated + getIn: jest.fn(() => true), + }, })); const next = jest.fn(); @@ -108,8 +114,10 @@ describe('i18n | middlewares | extendCTBAttributeInitialDataMiddleware', () => { options: { pluginOptions: { pluginTest: { ok: true } } }, }; const getState = jest.fn(() => ({ - // i18n is activated - getIn: jest.fn(() => true), + 'content-type-builder_dataManagerProvider': { + // i18n is activated + getIn: jest.fn(() => true), + }, })); const next = jest.fn(); diff --git a/packages/plugins/i18n/admin/src/selectors/selectCollectionTypesRelatedPermissions.js b/packages/plugins/i18n/admin/src/selectors/selectCollectionTypesRelatedPermissions.js index 0715c40f2e..d201601a21 100644 --- a/packages/plugins/i18n/admin/src/selectors/selectCollectionTypesRelatedPermissions.js +++ b/packages/plugins/i18n/admin/src/selectors/selectCollectionTypesRelatedPermissions.js @@ -1,4 +1,4 @@ const selectCollectionTypesRelatedPermissions = state => - state.get('permissionsManager').collectionTypesRelatedPermissions; + state.permissionsManager.collectionTypesRelatedPermissions; export default selectCollectionTypesRelatedPermissions; diff --git a/packages/plugins/i18n/admin/src/selectors/selectI18nLocales.js b/packages/plugins/i18n/admin/src/selectors/selectI18nLocales.js index d8114c8d74..32915f9389 100644 --- a/packages/plugins/i18n/admin/src/selectors/selectI18nLocales.js +++ b/packages/plugins/i18n/admin/src/selectors/selectI18nLocales.js @@ -1,3 +1,3 @@ -const selectI18NLocales = state => state.get('i18n_locales').locales; +const selectI18NLocales = state => state.i18n_locales.locales; export default selectI18NLocales;