From dd51304dc53b2b08ae8f75fae9f99e2b6669ef33 Mon Sep 17 00:00:00 2001 From: Jamie Howard Date: Mon, 10 Jul 2023 14:47:34 +0100 Subject: [PATCH] test(ee): unit test for assignee update --- .../services/__tests__/assignees.test.js | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 packages/core/admin/ee/server/services/__tests__/assignees.test.js diff --git a/packages/core/admin/ee/server/services/__tests__/assignees.test.js b/packages/core/admin/ee/server/services/__tests__/assignees.test.js new file mode 100644 index 0000000000..c854024dc8 --- /dev/null +++ b/packages/core/admin/ee/server/services/__tests__/assignees.test.js @@ -0,0 +1,76 @@ +'use strict'; + +jest.mock('@strapi/strapi/lib/utils/ee', () => { + const eeModule = () => true; + + Object.assign(eeModule, { + features: { + isEnabled() { + return true; + }, + getEnabled() { + return ['review-workflows']; + }, + }, + }); + + return eeModule; +}); + +const { ENTITY_ASSIGNEE_ATTRIBUTE } = require('../../constants/workflows'); +const assigneeFactory = require('../review-workflows/assignees'); + +const uid = 'uid'; +const fromAssigneeId = 1; +const entityServiceMock = { + findOne: jest.fn(() => { + return { + [ENTITY_ASSIGNEE_ATTRIBUTE]: { + id: fromAssigneeId, + }, + }; + }), + update: jest.fn((uid, id, { data }) => data), +}; +const servicesMock = { + 'admin::user': { + exists: jest.fn(() => true), + }, + 'admin::review-workflows-metrics': { + sendDidEditAssignee: jest.fn(), + }, +}; + +const strapiMock = { + entityService: entityServiceMock, + service: jest.fn((serviceName) => { + return servicesMock[serviceName]; + }), +}; + +const assigneeService = assigneeFactory({ strapi: strapiMock }); + +describe('Review workflows - Stages service', () => { + afterEach(() => { + jest.clearAllMocks(); + }); + + describe('updateEntityAssignee', () => { + it('should update the assignee of an entity', async () => { + const id = 10; + const toId = 2; + await assigneeService.updateEntityAssignee(id, uid, toId); + + expect(servicesMock['admin::user'].exists).toBeCalled(); + expect(servicesMock['admin::review-workflows-metrics'].sendDidEditAssignee).toBeCalledWith( + fromAssigneeId, + toId + ); + expect(entityServiceMock.update).toBeCalledWith(uid, id, { + data: { strapi_assignee: toId }, + fields: [], + populate: [ENTITY_ASSIGNEE_ATTRIBUTE], + }); + }); + }); +});