Browse Source

fix: add context in response and test correction

pull/8281/head
Pranav C 6 months ago
parent
commit
388e2505eb
  1. 6
      packages/nocodb-sdk/src/lib/enums.ts
  2. 14
      packages/nocodb/src/controllers/view-columns.controller.ts
  3. 2025
      packages/nocodb/src/schema/swagger-v3.json
  4. 14
      packages/nocodb/src/services/view-columns.service.ts
  5. 3
      packages/nocodb/tests/unit/factory/viewColumns.ts
  6. 16
      packages/nocodb/tests/unit/rest/tests/viewRow.test.ts

6
packages/nocodb-sdk/src/lib/enums.ts

@ -296,3 +296,9 @@ export enum PlanLimitTypes {
FILTER_LIMIT = 'FILTER_LIMIT', FILTER_LIMIT = 'FILTER_LIMIT',
SORT_LIMIT = 'SORT_LIMIT', SORT_LIMIT = 'SORT_LIMIT',
} }
export enum APIContext {
VIEW_COLUMNS = 'fields',
FILTERS = 'filters',
SORTS = 'sorts',
}

14
packages/nocodb/src/controllers/view-columns.controller.ts

@ -9,7 +9,7 @@ import {
Req, Req,
UseGuards, UseGuards,
} from '@nestjs/common'; } from '@nestjs/common';
import { ViewColumnReqType } from 'nocodb-sdk'; import { APIContext, ViewColumnReqType } from 'nocodb-sdk'
import { GlobalGuard } from '~/guards/global/global.guard'; import { GlobalGuard } from '~/guards/global/global.guard';
import { PagedResponseImpl } from '~/helpers/PagedResponse'; import { PagedResponseImpl } from '~/helpers/PagedResponse';
import { ViewColumnsService } from '~/services/view-columns.service'; import { ViewColumnsService } from '~/services/view-columns.service';
@ -79,7 +79,7 @@ export class ViewColumnsController {
async viewColumnUpdate( async viewColumnUpdate(
@Req() req, @Req() req,
@Param('viewId') viewId: string, @Param('viewId') viewId: string,
@Body() body: ViewColumnReqType[] | Record<string, ViewColumnReqType>, @Body() body: ViewColumnReqType[] | Record<APIContext.VIEW_COLUMNS, Record<string, ViewColumnReqType>>,
) { ) {
return new PagedResponseImpl( return new PagedResponseImpl(
await this.viewColumnsService.columnsUpdate({ await this.viewColumnsService.columnsUpdate({
@ -93,9 +93,11 @@ export class ViewColumnsController {
@Get('/api/v3/meta/views/:viewId/columns') @Get('/api/v3/meta/views/:viewId/columns')
@Acl('columnList') @Acl('columnList')
async viewColumnList(@Req() req, @Param('viewId') viewId: string) { async viewColumnList(@Req() req, @Param('viewId') viewId: string) {
return await this.viewColumnsService.viewColumnList({ return {
viewId, [APIContext.VIEW_COLUMNS]: await this.viewColumnsService.viewColumnList({
req, viewId,
}); req,
})
};
} }
} }

2025
packages/nocodb/src/schema/swagger-v3.json

File diff suppressed because it is too large Load Diff

14
packages/nocodb/src/services/view-columns.service.ts

@ -1,5 +1,5 @@
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
import { AppEvents, ViewTypes } from 'nocodb-sdk'; import { APIContext, AppEvents, ViewTypes } from 'nocodb-sdk';
import GridViewColumn from '../models/GridViewColumn'; import GridViewColumn from '../models/GridViewColumn';
import GalleryViewColumn from '../models/GalleryViewColumn'; import GalleryViewColumn from '../models/GalleryViewColumn';
import KanbanViewColumn from '../models/KanbanViewColumn'; import KanbanViewColumn from '../models/KanbanViewColumn';
@ -74,10 +74,16 @@ export class ViewColumnsService {
async columnsUpdate(param: { async columnsUpdate(param: {
viewId: string; viewId: string;
columns: ViewColumnReqType[] | Record<string, ViewColumnReqType>; columns:
| ViewColumnReqType[]
| Record<APIContext.VIEW_COLUMNS, Record<string, ViewColumnReqType>>;
req: any; req: any;
}) { }) {
const { viewId, columns } = param; const { viewId } = param;
const columns = Array.isArray(param.columns)
? param.columns
: param.columns[APIContext.VIEW_COLUMNS];
const view = await View.get(viewId); const view = await View.get(viewId);
@ -120,7 +126,7 @@ export class ViewColumnsService {
), ),
); );
} }
break break;
case ViewTypes.GALLERY: case ViewTypes.GALLERY:
if (existingCol) { if (existingCol) {
updateOrInsertOptions.push( updateOrInsertOptions.push(

3
packages/nocodb/tests/unit/factory/viewColumns.ts

@ -1,5 +1,6 @@
import request from 'supertest'; import request from 'supertest';
import type View from '../../../src/models/View'; import type View from '../../../src/models/View';
import { APIContext } from 'nocodb-sdk'
const updateViewColumns = async ( const updateViewColumns = async (
context, context,
@ -23,7 +24,7 @@ const updateViewColumns = async (
await request(context.app) await request(context.app)
.patch(`/api/v3/meta/views/${view.id}/columns`) .patch(`/api/v3/meta/views/${view.id}/columns`)
.set('xc-auth', context.token) .set('xc-auth', context.token)
.send(fields) .send({ [APIContext.VIEW_COLUMNS]: fields })
.expect(200); .expect(200);
}; };

16
packages/nocodb/tests/unit/rest/tests/viewRow.test.ts

@ -2,7 +2,7 @@ import 'mocha';
// @ts-ignore // @ts-ignore
import assert from 'assert'; import assert from 'assert';
import request from 'supertest'; import request from 'supertest';
import { UITypes, ViewTypes } from 'nocodb-sdk'; import { APIContext, UITypes, ViewTypes } from 'nocodb-sdk';
import { expect } from 'chai'; import { expect } from 'chai';
import init from '../../init'; import init from '../../init';
import { createProject, createSakilaProject } from '../../factory/base'; import { createProject, createSakilaProject } from '../../factory/base';
@ -1766,14 +1766,20 @@ function viewRowTests() {
} }
// get view columns and verify hidden columns // get view columns and verify hidden columns
const viewColumnsViaApi: any = await getViewColumns(context, { const viewColApiRes: any = await getViewColumns(context, {
view, view,
}); });
for (const colId of Object.keys(viewColumnsViaApi)) { for (const colId of Object.keys(viewColApiRes[APIContext.VIEW_COLUMNS])) {
const column = columns.find((c) => c.id === colId); const column = columns.find((c) => c.id === colId);
if (columnsToHide.includes(column.title)) if (columnsToHide.includes(column.title)) {
expect(!!viewColumnsViaApi[colId]).to.have.property('show', false); expect(viewColApiRes[APIContext.VIEW_COLUMNS][colId]).to.have.property(
'show',
);
expect(!!viewColApiRes[APIContext.VIEW_COLUMNS][colId].show).to.be.eq(
false,
);
}
} }
}); });
} }

Loading…
Cancel
Save