soupette 3d4a684076 Fix tests
Signed-off-by: soupette <cyril.lpz@gmail.com>
2020-10-14 17:20:33 +02:00

384 lines
12 KiB
JavaScript

import { SETTINGS_BASE_URL } from '../../../config';
import init from '../init';
describe('ADMIN | LeftMenu | init', () => {
it('should return the initialState if the plugins are empty', () => {
const initialState = {
ok: true,
generalSectionLinks: [],
};
expect(init(initialState)).toEqual({ ok: true, generalSectionLinks: [] });
});
it('should create the pluginsSectionLinks correctly', () => {
const plugins = {
documentation: {
menu: {
pluginsSectionLinks: [
{
destination: '/plugins/documentation',
icon: 'doc',
label: {
id: 'documentation.plugin.name',
defaultMessage: 'Documentation',
},
name: 'documentation',
permissions: [{ action: 'plugins::documentation.read', subject: null }],
},
{
destination: '/plugins/documentation/test',
icon: 'doc',
label: {
id: 'documentation.plugin.name.test',
defaultMessage: 'Documentation Test',
},
name: 'documentation test',
permissions: [],
},
],
},
},
test: {},
'content-type-builder': {
menu: {
pluginsSectionLinks: [
{
destination: '/plugins/content-type-builder',
icon: 'plug',
label: {
id: 'content-type-builder.plugin.name',
defaultMessage: 'content-type-builder',
},
name: 'content-type-builder',
permissions: [{ action: 'plugins::content-type-builder.read', subject: null }],
},
],
},
},
};
const initialState = {
generalSectionLinks: [],
pluginsSectionLinks: [],
isLoading: true,
};
const expected = {
generalSectionLinks: [],
pluginsSectionLinks: [
{
destination: '/plugins/content-type-builder',
icon: 'plug',
label: {
id: 'content-type-builder.plugin.name',
defaultMessage: 'content-type-builder',
},
isDisplayed: false,
permissions: [{ action: 'plugins::content-type-builder.read', subject: null }],
},
{
destination: '/plugins/documentation',
icon: 'doc',
label: {
id: 'documentation.plugin.name',
defaultMessage: 'Documentation',
},
isDisplayed: false,
permissions: [{ action: 'plugins::documentation.read', subject: null }],
},
{
destination: '/plugins/documentation/test',
icon: 'doc',
label: {
id: 'documentation.plugin.name.test',
defaultMessage: 'Documentation Test',
},
isDisplayed: false,
permissions: [],
},
],
isLoading: true,
};
expect(init(initialState, plugins)).toEqual(expected);
});
it('should set the permissions in the settings link correctly for the plugins', () => {
const menu = [
{
id: 'global',
title: { id: 'Settings.global' },
links: [
{
title: 'Settings.webhooks.title',
to: '/settings/webhooks',
name: 'webhooks',
permissions: [
{ action: 'admin::webhook.create', subject: null },
{ action: 'admin::webhook.read', subject: null },
{ action: 'admin::webhook.update', subject: null },
{ action: 'admin::webhook.delete', subject: null },
],
},
{
name: 'media-library',
permissions: [
{
action: 'plugins::upload.settings.read',
subject: null,
},
],
title: { id: 'upload.plugin.name', defaultMessage: 'Media Library' },
to: '/settings/media-library',
},
],
},
{
id: 'permissions',
title: 'Settings.permissions',
links: [
{
title: 'roles',
to: '/settings/roles',
name: 'roles',
permissions: [
{ action: 'admin::roles.create', subject: null },
{ action: 'admin::roles.update', subject: null },
{ action: 'admin::roles.read', subject: null },
{ action: 'admin::roles.delete', subject: null },
],
},
{
title: 'users',
to: '/settings/users?pageSize=10&page=1&_sort=firstname%3AASC',
name: 'users',
permissions: [
{ action: 'admin::users.create', subject: null },
{ action: 'admin::users.read', subject: null },
{ action: 'admin::users.update', subject: null },
{ action: 'admin::users.delete', subject: null },
],
},
],
},
];
const initialState = {
generalSectionLinks: [
{
icon: 'list',
label: 'app.components.LeftMenuLinkContainer.listPlugins',
destination: '/list-plugins',
isDisplayed: false,
permissions: [
{ action: 'admin::marketplace.read', subject: null },
{ action: 'admin::marketplace.plugins.uninstall', subject: null },
],
},
{
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 },
],
},
{
icon: 'cog',
label: 'app.components.LeftMenuLinkContainer.settings',
isDisplayed: false,
destination: SETTINGS_BASE_URL,
permissions: [],
},
],
pluginsSectionLinks: [],
isLoading: true,
};
const plugins = {};
const expected = {
generalSectionLinks: [
{
icon: 'list',
label: 'app.components.LeftMenuLinkContainer.listPlugins',
destination: '/list-plugins',
isDisplayed: false,
permissions: [
{ action: 'admin::marketplace.read', subject: null },
{ action: 'admin::marketplace.plugins.uninstall', subject: null },
],
},
{
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 },
],
},
{
icon: 'cog',
label: 'app.components.LeftMenuLinkContainer.settings',
isDisplayed: false,
destination: SETTINGS_BASE_URL,
notificationsCount: 0,
permissions: [
// webhooks
{ action: 'admin::webhook.create', subject: null },
{ action: 'admin::webhook.read', subject: null },
{ action: 'admin::webhook.update', subject: null },
{ action: 'admin::webhook.delete', subject: null },
{
action: 'plugins::upload.settings.read',
subject: null,
},
{ action: 'admin::roles.create', subject: null },
{ action: 'admin::roles.update', subject: null },
{ action: 'admin::roles.read', subject: null },
{ action: 'admin::roles.delete', subject: null },
// users
{ action: 'admin::users.create', subject: null },
{ action: 'admin::users.read', subject: null },
{ action: 'admin::users.update', subject: null },
{ action: 'admin::users.delete', subject: null },
// roles
],
},
],
pluginsSectionLinks: [],
isLoading: true,
};
expect(init(initialState, plugins, menu)).toEqual(expected);
});
it('should set the permissions in the settings link to an empty array if at least one link of the settings menu has no permissions', () => {
const menu = [
{
id: 'global',
title: { id: 'Settings.global' },
links: [
{
title: 'Settings.webhooks.title',
to: '/settings/webhooks',
name: 'webhooks',
permissions: [
{ action: 'admin::webhook.create', subject: null },
{ action: 'admin::webhook.read', subject: null },
{ action: 'admin::webhook.update', subject: null },
{ action: 'admin::webhook.delete', subject: null },
],
},
{
name: 'media-library',
permissions: [],
title: { id: 'upload.plugin.name', defaultMessage: 'Media Library' },
to: '/settings/media-library',
},
],
},
{
id: 'permissions',
title: 'Settings.permissions',
links: [
{
title: 'roles',
to: '/settings/roles',
name: 'roles',
permissions: [
{ action: 'admin::roles.create', subject: null },
{ action: 'admin::roles.update', subject: null },
{ action: 'admin::roles.read', subject: null },
{ action: 'admin::roles.delete', subject: null },
],
},
{
title: 'users',
to: '/settings/users?pageSize=10&page=1&_sort=firstname%3AASC',
name: 'users',
permissions: [
{ action: 'admin::users.create', subject: null },
{ action: 'admin::users.read', subject: null },
{ action: 'admin::users.update', subject: null },
{ action: 'admin::users.delete', subject: null },
],
},
],
},
];
const initialState = {
generalSectionLinks: [
{
icon: 'list',
label: 'app.components.LeftMenuLinkContainer.listPlugins',
destination: '/list-plugins',
isDisplayed: false,
permissions: [
{ action: 'admin::marketplace.read', subject: null },
{ action: 'admin::marketplace.plugins.uninstall', subject: null },
],
},
{
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 },
],
},
{
icon: 'cog',
label: 'app.components.LeftMenuLinkContainer.settings',
isDisplayed: false,
destination: SETTINGS_BASE_URL,
permissions: [],
},
],
pluginsSectionLinks: [],
isLoading: true,
};
const plugins = {};
const expected = {
generalSectionLinks: [
{
icon: 'list',
label: 'app.components.LeftMenuLinkContainer.listPlugins',
destination: '/list-plugins',
isDisplayed: false,
permissions: [
{ action: 'admin::marketplace.read', subject: null },
{ action: 'admin::marketplace.plugins.uninstall', subject: null },
],
},
{
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 },
],
},
{
icon: 'cog',
label: 'app.components.LeftMenuLinkContainer.settings',
isDisplayed: false,
destination: SETTINGS_BASE_URL,
permissions: [],
},
],
pluginsSectionLinks: [],
isLoading: true,
};
expect(init(initialState, plugins, menu)).toEqual(expected);
});
});