diff --git a/backend/src/entities/table-filters/use-cases/update-table-filters.use.case.ts b/backend/src/entities/table-filters/use-cases/update-table-filters.use.case.ts index 126273dab..0b6ed5be4 100644 --- a/backend/src/entities/table-filters/use-cases/update-table-filters.use.case.ts +++ b/backend/src/entities/table-filters/use-cases/update-table-filters.use.case.ts @@ -53,6 +53,13 @@ export class UpdateTableFiltersUseCase } const updatedFilterEntity = buildNewTableFiltersEntity(updatedTableFilterData); + for (const key in updatedFilterEntity) { + // eslint-disable-next-line security/detect-object-injection + if (updatedFilterEntity[key] === undefined) { + // eslint-disable-next-line security/detect-object-injection + delete updatedFilterEntity[key]; + } + } const updatedFilters = Object.assign(filtersToUpdate, updatedFilterEntity); await this._dbContext.tableFiltersRepository.save(updatedFilters); return buildCreatedTableFilterRO(updatedFilters); diff --git a/backend/test/ava-tests/saas-tests/table-filters-e2e-test.ts b/backend/test/ava-tests/saas-tests/table-filters-e2e-test.ts index 3903516b6..3ea8e2043 100644 --- a/backend/test/ava-tests/saas-tests/table-filters-e2e-test.ts +++ b/backend/test/ava-tests/saas-tests/table-filters-e2e-test.ts @@ -287,7 +287,28 @@ test.serial(`${currentTest} should return updated table filters`, async (t) => { t.is(updateTableFiltersRO.hasOwnProperty('createdAt'), true); t.is(updateTableFiltersRO.hasOwnProperty('updatedAt'), true); t.is(updateTableFiltersRO.name, updatedFiltersDTO.name); + t.is(updateTableFiltersRO.id, createTableFiltersRO.id); t.deepEqual(updateTableFiltersRO.filters, updatedFiltersDTO.filters); + + // should return updated table filters + const getUpdatedTableFiltersResponse = await request(app.getHttpServer()) + .get(`/table-filters/${createConnectionRO.id}/all/?tableName=${testTableName}`) + .set('Cookie', firstUserToken) + .set('Content-Type', 'application/json') + .set('Accept', 'application/json'); + const getUpdatedTableFiltersRO = JSON.parse(getUpdatedTableFiltersResponse.text); + t.is(Array.isArray(getUpdatedTableFiltersRO), true); + t.is(getUpdatedTableFiltersRO.length, 1); + getUpdatedTableFiltersRO.forEach((el) => { + t.is(el.hasOwnProperty('id'), true); + t.is(el.hasOwnProperty('name'), true); + t.is(el.hasOwnProperty('filters'), true); + t.is(el.hasOwnProperty('dynamic_column'), true); + t.is(el.hasOwnProperty('createdAt'), true); + t.is(el.hasOwnProperty('updatedAt'), true); + t.is(el.name, updatedFiltersDTO.name); + t.deepEqual(el.filters, updatedFiltersDTO.filters); + }); } catch (e) { console.error(e); t.fail();