Update tests

Signed-off-by: soupette <cyril.lpz@gmail.com>
This commit is contained in:
soupette 2021-05-24 17:26:56 +02:00
parent 146ee5907e
commit e40bc6ceed
14 changed files with 185 additions and 155 deletions

View File

@ -3,6 +3,7 @@
const adminPermissions = require('./permissions/admin-permissions');
const cmPermissions = require('./permissions/content-manager-permissions');
const ctbPermissions = require('./permissions/content-type-builder-permissions');
const store = require('./store');
const permissions = [...adminPermissions, ...cmPermissions, ...ctbPermissions];
@ -11,4 +12,5 @@ module.exports = {
cmPermissions,
ctbPermissions,
permissions,
store,
};

View File

@ -0,0 +1,56 @@
'use strict';
// eslint-disable-next-line node/no-extraneous-require
const { combineReducers, createStore } = require('redux');
const reducers = {
app: jest.fn(() => ({ isLoading: true, uuid: false })),
language: jest.fn(() => ({ locale: 'en' })),
menu: jest.fn(() => ({
collectionTypesSectionLinks: [],
generalSectionLinks: [
{
icon: 'list',
label: 'app.components.LeftMenuLinkContainer.listPlugins',
destination: '/list-plugins',
isDisplayed: false,
permissions: [
{ action: 'admin::marketplace.read', subject: null },
{ action: 'admin::marketplace.plugins.install', subject: null },
{ action: 'admin::marketplace.plugins.uninstall', subject: null },
],
notificationsCount: 0,
},
{
icon: 'shopping-basket',
label: 'app.components.LeftMenuLinkContainer.installNewPlugin',
destination: '/marketplace',
isDisplayed: false,
permissions: [
{ action: 'admin::marketplace.read', subject: null },
{ action: 'admin::marketplace.plugins.install', subject: null },
{ action: 'admin::marketplace.plugins.uninstall', subject: null },
],
notificationsCount: 0,
},
{
icon: 'cog',
label: 'app.components.LeftMenuLinkContainer.settings',
isDisplayed: false,
destination: '/settings',
// Permissions of this link are retrieved in the init phase
// using the settings menu
permissions: [],
notificationsCount: 0,
},
],
singleTypesSectionLinks: [],
pluginsSectionLinks: [],
isLoading: true,
})),
rbacProvider: jest.fn(() => ({ allPermissions: null, collectionTypesRelatedPermissions: {} })),
};
const store = createStore(combineReducers(reducers)).getState();
module.exports = store;

View File

@ -94,6 +94,12 @@ class StrapiApp {
});
}
createStore = () => {
const store = configureStore(this.middlewares.middlewares, this.reducers.reducers);
return store;
};
getPlugin = pluginId => {
return this.plugins[pluginId];
};
@ -138,7 +144,8 @@ class StrapiApp {
};
render() {
const store = configureStore(this.middlewares.middlewares, this.reducers.reducers);
const store = this.createStore();
const {
components: { components },
fields: { fields },

View File

@ -17,8 +17,6 @@ const AuthenticatedApp = () => {
latestStrapiReleaseTag: strapiVersion,
});
// TODO: clean components that depends on this
// This part is just to prepare the refactoring of the Admin page
const [
{ data: appInfos, status },
{ data: tag_name, status: releaseStatus, isLoading },

View File

@ -4,7 +4,6 @@ import { LoadingIndicatorPage, RBACProviderContext } from '@strapi/helper-plugin
import PropTypes from 'prop-types';
import { resetStore, setPermissions } from './actions';
// TODO
const RBACProvider = ({ children, permissions, refetchPermissions }) => {
const { allPermissions } = useSelector(state => state.rbacProvider);

View File

@ -1,11 +1,8 @@
class Plugin {
constructor(pluginConf) {
this.apis = pluginConf.apis || {};
// TODO
this.description = pluginConf.description;
// TODO
this.icon = pluginConf.icon;
// TODO
this.initializer = pluginConf.initializer || null;
this.injectionZones = pluginConf.injectionZones || {};
this.isReady = pluginConf.isReady !== undefined ? pluginConf.isReady : true;
@ -15,10 +12,8 @@ class Plugin {
this.mainComponent = pluginConf.mainComponent || null;
// TODO
this.menu = pluginConf.menu || null;
// TODO
this.name = pluginConf.name;
this.pluginId = pluginConf.id;
// TODO
this.pluginLogo = pluginConf.pluginLogo;
// TODO
this.settings = pluginConf.settings || null;

View File

@ -1,12 +1,14 @@
import { render } from '@testing-library/react';
import { fixtures } from '../../../../../admin-test-utils';
import StrapiApp from '../StrapiApp';
import appReducers from '../reducers';
const library = { fields: {}, components: {} };
const middlewares = { middlewares: [] };
const reducers = { reducers: appReducers };
describe('ADMIN | StrapiApp', () => {
it('should render the app without plugins', () => {
const library = { fields: {}, components: {} };
const middlewares = { middlewares: [] };
const reducers = { reducers: appReducers };
const app = StrapiApp({ middlewares, reducers, library });
expect(render(app.render())).toMatchInlineSnapshot(`
@ -144,4 +146,11 @@ describe('ADMIN | StrapiApp', () => {
}
`);
});
it('should create a valid store', () => {
const app = StrapiApp({ middlewares, reducers, library });
const store = app.createStore();
expect(store.getState()).toEqual(fixtures.store);
});
});

View File

@ -1,10 +1,11 @@
import { fixtures } from '../../../../../admin-test-utils';
import { selectPermissions, selectCollectionTypePermissions } from '../selectors';
describe('selectors', () => {
let store;
beforeEach(() => {
store = {};
store = { ...fixtures.store };
});
describe('selectPermissions', () => {
@ -25,13 +26,8 @@ describe('selectors', () => {
});
describe('selectCollectionTypePermissions', () => {
// TODO add store fixture
it('resolves the permissions key of the "rbacProvider" store key', () => {
store.rbacProvider = {
collectionTypesRelatedPermissions: {
some: 'permission again',
},
};
store.rbacProvider.collectionTypesRelatedPermissions.some = 'permission again';
const actual = selectCollectionTypePermissions(store);
const expected = {

View File

@ -21,9 +21,7 @@ export default {
description: pluginDescription,
icon,
id: pluginId,
// TODO
isReady: true,
// TODO
isRequired: pluginPkg.strapi.required || false,
// TODO
mainComponent: App,

View File

@ -1,3 +1,4 @@
import { fixtures } from '../../../../../../admin-test-utils';
import addCommonFieldsToInitialDataMiddleware from '../addCommonFieldsToInitialDataMiddleware';
jest.mock('@strapi/helper-plugin', () => ({
@ -14,20 +15,20 @@ describe('i18n | middlewares | addCommonFieldsToInitialDataMiddleware', () => {
const dispatch = jest.fn();
beforeEach(() => {
const store = {};
store['content-manager_editViewCrudReducer'] = {
contentTypeDataStructure: { name: 'test', common: 'common default value' },
};
store['content-manager_editViewLayoutManager'] = {
currentLayout: {
components: {},
contentType: {
uid: 'article',
attributes: {
name: { type: 'string' },
common: { type: 'string' },
const store = {
...fixtures.store,
'content-manager_editViewCrudReducer': {
contentTypeDataStructure: { name: 'test', common: 'common default value' },
},
'content-manager_editViewLayoutManager': {
currentLayout: {
components: {},
contentType: {
uid: 'article',
attributes: {
name: { type: 'string' },
common: { type: 'string' },
},
},
},
},

View File

@ -1,12 +1,11 @@
import { fixtures } from '../../../../../../admin-test-utils';
import addLocaleColumnToListViewMiddleware from '../addLocaleColumnToListViewMiddleware';
describe('addLocaleColumnToListViewMiddleware', () => {
let getState;
beforeEach(() => {
const store = {};
store.i18n_locales = { locales: [] };
const store = { ...fixtures.store, i18n_locales: { locales: [] } };
getState = () => store;
});

View File

@ -1,23 +1,25 @@
import { fixtures } from '../../../../../../admin-test-utils';
import addLocaleToCollectionTypesMiddleware from '../addLocaleToCollectionTypesMiddleware';
describe('i18n | middlewares | addLocaleToCollectionTypesMiddleware', () => {
let getState;
let store;
beforeEach(() => {
const store = {
store = {
...fixtures.store,
i18n_locales: { locales: [] },
rbacProvider: {
allPermissions: [],
collectionTypesRelatedPermissions: {
test: {
'plugins::content-manager.explorer.read': [],
'plugins::content-manager.explorer.create': [],
},
},
};
store.rbacProvider.allPermissions = [];
store.rbacProvider.collectionTypesRelatedPermissions = {
test: {
'plugins::content-manager.explorer.read': [],
'plugins::content-manager.explorer.create': [],
},
};
getState = () => store;
getState = jest.fn(() => store);
});
it('should forward the action when the type is undefined', () => {
@ -76,18 +78,10 @@ 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 = {
i18n_locales: { locales: [{ code: 'en', isDefault: true }] },
rbacProvider: {
allPermissions: [],
collectionTypesRelatedPermissions: {
test: {
'plugins::content-manager.explorer.read': [{ properties: { locales: ['en'] } }],
'plugins::content-manager.explorer.create': [],
},
},
},
};
store.i18n_locales = { locales: [{ code: 'en', isDefault: true }] };
store.rbacProvider.collectionTypesRelatedPermissions.test[
'plugins::content-manager.explorer.read'
] = [{ properties: { locales: ['en'] } }];
const action = {
type: 'StrapiAdmin/LeftMenu/SET_CT_OR_ST_LINKS',
@ -96,7 +90,7 @@ describe('i18n | middlewares | addLocaleToCollectionTypesMiddleware', () => {
contentTypeSchemas: [{ uid: 'test', pluginOptions: { i18n: { localized: true } } }],
},
};
const middleware = addLocaleToCollectionTypesMiddleware()({ getState: () => tempStore });
const middleware = addLocaleToCollectionTypesMiddleware()({ getState });
const next = jest.fn();
@ -116,17 +110,10 @@ 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 = {
i18n_locales: { locales: [{ code: 'en', isDefault: true }] },
rbacProvider: {
allPermissions: [],
collectionTypesRelatedPermissions: {
test: {
'plugins::content-manager.explorer.read': [{ properties: { locales: [] } }],
},
},
},
};
store.i18n_locales.locales = [{ code: 'en', isDefault: true }];
store.rbacProvider.collectionTypesRelatedPermissions.test[
'plugins::content-manager.explorer.read'
] = [{ properties: { locales: [] } }];
const action = {
type: 'StrapiAdmin/LeftMenu/SET_CT_OR_ST_LINKS',
@ -137,7 +124,7 @@ describe('i18n | middlewares | addLocaleToCollectionTypesMiddleware', () => {
contentTypeSchemas: [{ uid: 'test', pluginOptions: { i18n: { localized: true } } }],
},
};
const middleware = addLocaleToCollectionTypesMiddleware()({ getState: () => tempStore });
const middleware = addLocaleToCollectionTypesMiddleware()({ getState });
const next = jest.fn();
@ -161,18 +148,10 @@ describe('i18n | middlewares | addLocaleToCollectionTypesMiddleware', () => {
});
it('should keep the previous search', () => {
const tempStore = {
i18n_locales: { locales: [{ code: 'en', isDefault: true }] },
rbacProvider: {
allPermissions: [],
collectionTypesRelatedPermissions: {
test: {
'plugins::content-manager.explorer.read': [{ properties: { locales: ['en'] } }],
'plugins::content-manager.explorer.create': [],
},
},
},
};
store.i18n_locales.locales = [{ code: 'en', isDefault: true }];
store.rbacProvider.collectionTypesRelatedPermissions.test[
'plugins::content-manager.explorer.read'
] = [{ properties: { locales: ['en'] } }];
const action = {
type: 'StrapiAdmin/LeftMenu/SET_CT_OR_ST_LINKS',
@ -183,7 +162,7 @@ describe('i18n | middlewares | addLocaleToCollectionTypesMiddleware', () => {
contentTypeSchemas: [{ uid: 'test', pluginOptions: { i18n: { localized: true } } }],
},
};
const middleware = addLocaleToCollectionTypesMiddleware()({ getState: () => tempStore });
const middleware = addLocaleToCollectionTypesMiddleware()({ getState });
const next = jest.fn();

View File

@ -1,23 +1,25 @@
import { fixtures } from '../../../../../../admin-test-utils';
import addLocaleToSingleTypesMiddleware from '../addLocaleToSingleTypesMiddleware';
describe('i18n | middlewares | addLocaleToSingleTypesMiddleware', () => {
let getState;
let store;
beforeEach(() => {
const store = {
store = {
...fixtures.store,
i18n_locales: { locales: [] },
rbacProvider: {
allPermissions: [],
collectionTypesRelatedPermissions: {
test: {
'plugins::content-manager.explorer.read': [],
'plugins::content-manager.explorer.create': [],
},
},
};
store.rbacProvider.allPermissions = [];
store.rbacProvider.collectionTypesRelatedPermissions = {
test: {
'plugins::content-manager.explorer.read': [],
'plugins::content-manager.explorer.create': [],
},
};
getState = () => store;
getState = jest.fn(() => store);
});
it('should forward the action when the type is undefined', () => {
@ -76,18 +78,10 @@ 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 = {
i18n_locales: { locales: [{ code: 'en', isDefault: true }] },
rbacProvider: {
allPermissions: [],
collectionTypesRelatedPermissions: {
test: {
'plugins::content-manager.explorer.read': [{ properties: { locales: ['en'] } }],
'plugins::content-manager.explorer.create': [],
},
},
},
};
store.i18n_locales.locales = [{ code: 'en', isDefault: true }];
store.rbacProvider.collectionTypesRelatedPermissions.test[
'plugins::content-manager.explorer.read'
] = [{ properties: { locales: ['en'] } }];
const action = {
type: 'StrapiAdmin/LeftMenu/SET_CT_OR_ST_LINKS',
@ -96,7 +90,7 @@ describe('i18n | middlewares | addLocaleToSingleTypesMiddleware', () => {
contentTypeSchemas: [{ uid: 'test', pluginOptions: { i18n: { localized: true } } }],
},
};
const middleware = addLocaleToSingleTypesMiddleware()({ getState: () => tempStore });
const middleware = addLocaleToSingleTypesMiddleware()({ getState });
const next = jest.fn();
@ -116,28 +110,11 @@ 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 = {
i18n_locales: { locales: [{ code: 'en', isDefault: true }] },
rbacProvider: {
allPermissions: [],
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('rbacProvider', { allPermissions: [] });
// tempStore.set('rbacProvider', {
// collectionTypesRelatedPermissions: {
// test: {
// 'plugins::content-manager.explorer.read': [{ properties: { locales: [] } }],
// 'plugins::content-manager.explorer.create': [],
// },
// },
// });
store.i18n_locales.locales = [{ code: 'en', isDefault: true }];
store.rbacProvider.collectionTypesRelatedPermissions.test[
'plugins::content-manager.explorer.read'
] = [{ properties: { locales: [] } }];
const action = {
type: 'StrapiAdmin/LeftMenu/SET_CT_OR_ST_LINKS',
data: {
@ -145,7 +122,7 @@ describe('i18n | middlewares | addLocaleToSingleTypesMiddleware', () => {
contentTypeSchemas: [{ uid: 'test', pluginOptions: { i18n: { localized: true } } }],
},
};
const middleware = addLocaleToSingleTypesMiddleware()({ getState: () => tempStore });
const middleware = addLocaleToSingleTypesMiddleware()({ getState });
const next = jest.fn();
@ -163,28 +140,11 @@ describe('i18n | middlewares | addLocaleToSingleTypesMiddleware', () => {
});
it('should keep the previous search', () => {
const tempStore = {
i18n_locales: { locales: [{ code: 'en', isDefault: true }] },
rbacProvider: {
allPermissions: [],
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('rbacProvider', { allPermissions: [] });
// tempStore.set('rbacProvider', {
// collectionTypesRelatedPermissions: {
// test: {
// 'plugins::content-manager.explorer.read': [{ properties: { locales: ['en'] } }],
// 'plugins::content-manager.explorer.create': [],
// },
// },
// });
store.i18n_locales.locales = [{ code: 'en', isDefault: true }];
store.rbacProvider.collectionTypesRelatedPermissions.test[
'plugins::content-manager.explorer.read'
] = [{ properties: { locales: ['en'] } }];
const action = {
type: 'StrapiAdmin/LeftMenu/SET_CT_OR_ST_LINKS',
data: {
@ -194,7 +154,7 @@ describe('i18n | middlewares | addLocaleToSingleTypesMiddleware', () => {
contentTypeSchemas: [{ uid: 'test', pluginOptions: { i18n: { localized: true } } }],
},
};
const middleware = addLocaleToSingleTypesMiddleware()({ getState: () => tempStore });
const middleware = addLocaleToSingleTypesMiddleware()({ getState });
const next = jest.fn();

View File

@ -0,0 +1,31 @@
import { fixtures } from '../../../../../../admin-test-utils';
import selectCollectionTypePermissions from '../selectCollectionTypesRelatedPermissions';
import selectI18NLocales from '../selectI18NLocales';
describe('i18n | selectors | selectCollectionTypePermissions', () => {
let store;
beforeEach(() => {
store = { ...fixtures.store };
});
it('resolves the permissions key of the "rbacProvider.collectionTypesRelatedPermissions" store key', () => {
const actual = selectCollectionTypePermissions(store);
expect(actual).toBeDefined();
});
});
describe('i18n | selectors | selectI18NLocales', () => {
let store;
beforeEach(() => {
store = { ...fixtures.store, i18n_locales: { isLoading: true, locales: [] } };
});
it('resolves the permissions key of the "i18n_locales" store key', () => {
const actual = selectI18NLocales(store);
expect(actual).toBeDefined();
});
});