From e88cce892485fb573f0f7548fb57a11b2f48ff5f Mon Sep 17 00:00:00 2001 From: Gustav Hansen Date: Mon, 28 Feb 2022 13:11:46 +0100 Subject: [PATCH 1/2] CM: Add e2e test for resetted relations after server restart --- .../content-manager/relations.test.e2e.js | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 packages/core/content-manager/server/tests/content-manager/relations.test.e2e.js diff --git a/packages/core/content-manager/server/tests/content-manager/relations.test.e2e.js b/packages/core/content-manager/server/tests/content-manager/relations.test.e2e.js new file mode 100644 index 0000000000..cc7dbadcde --- /dev/null +++ b/packages/core/content-manager/server/tests/content-manager/relations.test.e2e.js @@ -0,0 +1,75 @@ +'use strict'; + +// Helpers. +const { createTestBuilder } = require('../../../../../../test/helpers/builder'); +const { createStrapiInstance } = require('../../../../../../test/helpers/strapi'); +const form = require('../../../../../../test/helpers/generators'); +const { createAuthRequest } = require('../../../../../../test/helpers/request'); + +const builder = createTestBuilder(); +let strapi; +let rq; + +const restart = async () => { + await strapi.destroy(); + strapi = await createStrapiInstance(); + rq = await createAuthRequest({ strapi }); +}; + +describe('Content Manager - Hide relations', () => { + beforeAll(async () => { + await builder.addContentTypes([form.article]).build(); + + strapi = await createStrapiInstance(); + rq = await createAuthRequest({ strapi }); + }); + + afterAll(async () => { + await strapi.destroy(); + await builder.cleanup(); + }); + + test('Hide relations', async () => { + await rq({ + url: '/content-manager/content-types/api::article.article/configuration', + method: 'PUT', + body: { + layouts: { + edit: [], + editRelations: [], + list: [], + }, + }, + }); + + const { body } = await rq({ + url: '/content-manager/content-types/api::article.article/configuration', + method: 'GET', + }); + + expect(body.data.contentType.layouts.editRelations).toStrictEqual([]); + }); + + test('Hide relations after server restart', async () => { + await rq({ + url: '/content-manager/content-types/api::article.article/configuration', + method: 'PUT', + body: { + layouts: { + edit: [], + editRelations: [], + list: [], + }, + }, + }); + + await restart(); + + const { body } = await rq({ + url: '/content-manager/content-types/api::article.article/configuration', + method: 'GET', + }); + + expect(body.data.contentType.layouts.editRelations).toStrictEqual([]); + }); +}); From 64d31b8bacbb0abfa3f0d888f57c79c5ea33aefd Mon Sep 17 00:00:00 2001 From: Gustav Hansen Date: Mon, 28 Feb 2022 13:40:43 +0100 Subject: [PATCH 2/2] CM: Fix sync layouts in case no relation is set --- .../server/services/utils/configuration/layouts.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/core/content-manager/server/services/utils/configuration/layouts.js b/packages/core/content-manager/server/services/utils/configuration/layouts.js index fc1fd9b6fb..27188370a4 100644 --- a/packages/core/content-manager/server/services/utils/configuration/layouts.js +++ b/packages/core/content-manager/server/services/utils/configuration/layouts.js @@ -138,7 +138,9 @@ function syncLayouts(configuration, schema) { list: cleanList.length > 0 ? cleanList : createDefaultListLayout(schema), edit: cleanEdit.length > 0 ? cleanEdit : createDefaultEditLayout(schema), editRelations: - cleanEditRelations.length > 0 ? cleanEditRelations : createDefaultEditRelationsLayout(schema), + editRelations.length === 0 || cleanEditRelations.length > 0 + ? cleanEditRelations + : createDefaultEditRelationsLayout(schema), }; }