From 4cf5ab1a0cca1b49ab63d193c37007a170c6b5f3 Mon Sep 17 00:00:00 2001 From: Marc-Roig Date: Mon, 24 Apr 2023 13:28:18 +0200 Subject: [PATCH 1/4] feat: add stage color validation --- packages/core/admin/ee/server/validation/review-workflows.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/core/admin/ee/server/validation/review-workflows.js b/packages/core/admin/ee/server/validation/review-workflows.js index 4f67c8645f..f6690fd338 100644 --- a/packages/core/admin/ee/server/validation/review-workflows.js +++ b/packages/core/admin/ee/server/validation/review-workflows.js @@ -5,6 +5,10 @@ const { yup, validateYupSchema } = require('@strapi/utils'); const stageObject = yup.object().shape({ id: yup.number().integer().min(1), name: yup.string().max(255).required(), + color: yup + .string() + .matches(/^#(?:[0-9a-fA-F]{3}){1,2}$/i) + .nullable(), // hex color }); const validateUpdateStagesSchema = yup.array().of(stageObject).required(); From e7e30045243e053816beedc2917b43b5f5a09ac9 Mon Sep 17 00:00:00 2001 From: Marc-Roig Date: Mon, 24 Apr 2023 13:28:33 +0200 Subject: [PATCH 2/4] feat: add stage color attribute --- .../admin/ee/server/content-types/workflow-stage/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/core/admin/ee/server/content-types/workflow-stage/index.js b/packages/core/admin/ee/server/content-types/workflow-stage/index.js index 48ab4118ad..5f93eb69c9 100644 --- a/packages/core/admin/ee/server/content-types/workflow-stage/index.js +++ b/packages/core/admin/ee/server/content-types/workflow-stage/index.js @@ -24,6 +24,11 @@ module.exports = { type: 'string', configurable: false, }, + color: { + type: 'string', + configurable: false, + default: '#4945FF', + }, workflow: { type: 'relation', target: 'admin::workflow', From ec118b342d466a973f4567c55c8e0e9d98db7560 Mon Sep 17 00:00:00 2001 From: Marc-Roig Date: Mon, 24 Apr 2023 13:28:44 +0200 Subject: [PATCH 3/4] test: stage color --- .../core/admin/ee/review-workflows.test.api.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/api-tests/core/admin/ee/review-workflows.test.api.js b/api-tests/core/admin/ee/review-workflows.test.api.js index c21cb4d975..fbc1a3dc30 100644 --- a/api-tests/core/admin/ee/review-workflows.test.api.js +++ b/api-tests/core/admin/ee/review-workflows.test.api.js @@ -270,10 +270,25 @@ describeOnCondition(edition === 'EE')('Review workflows', () => { ]; }); + test("It should assign a default color to stages if they don't have one", async () => { + await requests.admin.put(`/admin/review-workflows/workflows/${testWorkflow.id}/stages`, { + body: { + data: [defaultStage, { id: secondStage.id, name: 'new_name', color: '#000000' }], + }, + }); + + const workflowRes = await requests.admin.get( + `/admin/review-workflows/workflows/${testWorkflow.id}?populate=*` + ); + + expect(workflowRes.status).toBe(200); + expect(workflowRes.body.data.stages[0].color).toBe('#4945FF'); + expect(workflowRes.body.data.stages[1].color).toBe('#000000'); + }); test("It shouldn't be available for public", async () => { const stagesRes = await requests.public.put( `/admin/review-workflows/workflows/${testWorkflow.id}/stages`, - stagesUpdateData + { body: { data: stagesUpdateData } } ); const workflowRes = await requests.public.get( `/admin/review-workflows/workflows/${testWorkflow.id}` From 69cc9c5e8edc818d940fd18aab6be1cd850435c7 Mon Sep 17 00:00:00 2001 From: Marc-Roig Date: Mon, 24 Apr 2023 13:34:33 +0200 Subject: [PATCH 4/4] fix: stage color should not be nullabke --- packages/core/admin/ee/server/validation/review-workflows.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/core/admin/ee/server/validation/review-workflows.js b/packages/core/admin/ee/server/validation/review-workflows.js index f6690fd338..f47e2184fe 100644 --- a/packages/core/admin/ee/server/validation/review-workflows.js +++ b/packages/core/admin/ee/server/validation/review-workflows.js @@ -5,10 +5,7 @@ const { yup, validateYupSchema } = require('@strapi/utils'); const stageObject = yup.object().shape({ id: yup.number().integer().min(1), name: yup.string().max(255).required(), - color: yup - .string() - .matches(/^#(?:[0-9a-fA-F]{3}){1,2}$/i) - .nullable(), // hex color + color: yup.string().matches(/^#(?:[0-9a-fA-F]{3}){1,2}$/i), // hex color }); const validateUpdateStagesSchema = yup.array().of(stageObject).required();