From 3fdbbfc203fac47be20d448c30817e9ad247bb5c Mon Sep 17 00:00:00 2001 From: Boegie19 Date: Fri, 30 Jun 2023 14:55:47 +0200 Subject: [PATCH] fix test and add wrapResult support --- .../entity-service-decorator.test.js | 2 ++ .../services/entity-service-decorator.js | 24 +++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/packages/plugins/i18n/server/services/__tests__/entity-service-decorator.test.js b/packages/plugins/i18n/server/services/__tests__/entity-service-decorator.test.js index 7c1a333187..e72b2a787b 100644 --- a/packages/plugins/i18n/server/services/__tests__/entity-service-decorator.test.js +++ b/packages/plugins/i18n/server/services/__tests__/entity-service-decorator.test.js @@ -37,6 +37,7 @@ const singleTypeModel = { localized: true, }, }, + attributes: {} }; const models = { @@ -355,6 +356,7 @@ describe('Entity service decorator', () => { }; const defaultService = { + wrapResult: jest.fn((input) => Promise.resolve(input)), wrapParams: jest.fn(() => Promise.resolve(entry)), findMany: jest.fn(() => Promise.resolve(entry)), }; diff --git a/packages/plugins/i18n/server/services/entity-service-decorator.js b/packages/plugins/i18n/server/services/entity-service-decorator.js index eef1ba461f..73c0abfe1a 100644 --- a/packages/plugins/i18n/server/services/entity-service-decorator.js +++ b/packages/plugins/i18n/server/services/entity-service-decorator.js @@ -80,8 +80,19 @@ const assignValidLocale = async (data) => { */ const decorator = (service) => ({ /** + * Wraps result + * @param {object} params - Query options object (params, data, files, populate) + * @param {object} ctx - Query context + * @param {object} ctx.model - Model that is being used + */ + async wrapResult(params = {}, ctx = {}) { + return service.wrapResult.call(this, params, ctx); + }, + + + /** * Wraps query options. In particular will add default locale to query params - * @param {object} opts - Query options object (params, data, files, populate) + * @param {object} params - Query options object (params, data, files, populate) * @param {object} ctx - Query context * @param {object} ctx.model - Model that is being used */ @@ -156,7 +167,7 @@ const decorator = (service) => ({ * @param {string} uid - Model uid * @param {object} opts - Query options object (params, data, files, populate) */ - async findMany(uid, opts) { + async findMany(uid, opts = {}) { const model = strapi.getModel(uid); const { isLocalizedContentType } = getService('content-types'); @@ -170,9 +181,12 @@ const decorator = (service) => ({ if (kind === 'singleType') { if (opts[LOCALE_QUERY_FILTER] === 'all') { // TODO Fix so this won't break lower lying find many wrappers - const wrappedParams = await this.wrapParams(opts, { uid, action: 'findMany' }) || {}; - const query = transformParamsToQuery(model, wrappedParams); - return strapi.db.query(uid).findMany(query); + const wrappedParams = await this.wrapParams(opts, { uid, action: 'findMany' }); + console.log("ABC") + console.log(wrappedParams) + const query = transformParamsToQuery(uid, wrappedParams); + const entities = await strapi.db.query(uid).findMany(query); + return this.wrapResult(entities, { uid, action: 'findMany' }); } // This one gets transformed into a findOne on a lower layer