From ed39dd643c66ab17ad2eecb437b11ebba545d96d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?william=20chang=28=E5=BC=B5=E4=BB=B2=E5=A8=81=29?= Date: Thu, 23 May 2024 03:21:01 +0800 Subject: [PATCH] fix(wren-ui): fix tests. Remove nil values in view properties when building mdl --- wren-ui/src/apollo/server/mdl/mdlBuilder.ts | 17 ++++++++++++----- .../apollo/server/mdl/test/mdlBuilder.test.ts | 6 +++++- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/wren-ui/src/apollo/server/mdl/mdlBuilder.ts b/wren-ui/src/apollo/server/mdl/mdlBuilder.ts index 57acb6fff..978065af5 100644 --- a/wren-ui/src/apollo/server/mdl/mdlBuilder.ts +++ b/wren-ui/src/apollo/server/mdl/mdlBuilder.ts @@ -1,4 +1,4 @@ -import { isEmpty } from 'lodash'; +import { isEmpty, isNil, pick, pickBy } from 'lodash'; import { Model, ModelColumn, @@ -114,14 +114,21 @@ export class MDLBuilder implements IMDLBuilder { // if putting properties not string, it will throw error // filter out properties that have string value const properties = JSON.parse(view.properties) || {}; + + // filter out properties that are not null or undefined + // and are in the list of properties that are allowed + const viewProperties = pickBy(properties, (value, key) => { + return ( + !isNil(value) && + ['displayName', 'description', 'question', 'summary'].includes(key) + ); + }); + return { name: view.name, statement: view.statement, properties: { - displayName: properties.displayName, - description: properties.description, - question: properties.question, - summary: properties.summary, + ...viewProperties, // viewId will be passed back in other APIs // to identify the view diff --git a/wren-ui/src/apollo/server/mdl/test/mdlBuilder.test.ts b/wren-ui/src/apollo/server/mdl/test/mdlBuilder.test.ts index 0e6e58eb4..6b9ff1358 100644 --- a/wren-ui/src/apollo/server/mdl/test/mdlBuilder.test.ts +++ b/wren-ui/src/apollo/server/mdl/test/mdlBuilder.test.ts @@ -392,7 +392,11 @@ describe('MDLBuilder', () => { { name: 'view', statement: 'select * from order', - properties: { description: 'foo view', displayName: 'view' }, + properties: { + description: 'foo view', + displayName: 'view', + viewId: '1', + }, }, ] as ViewMDL[];