diff --git a/packages/nocodb/tests/unit/rest/tests/viewRow.test.ts b/packages/nocodb/tests/unit/rest/tests/viewRow.test.ts index 273bb405bc..908581556b 100644 --- a/packages/nocodb/tests/unit/rest/tests/viewRow.test.ts +++ b/packages/nocodb/tests/unit/rest/tests/viewRow.test.ts @@ -540,6 +540,74 @@ function viewRowTests() { it('Create table row wrong form id', async function () { await testCreateRowViewWithWrongView(ViewTypes.FORM); }); + + // todo: Test that all the columns needed to be shown in the view are returned + + const testFindOneSortedDataWithRequiredColumns = async (viewType: ViewTypes) => { + const view = await createView(context, { + title: 'View', + table: customerTable, + type: viewType + }); + const firstNameColumn = customerColumns.find( + (col) => col.title === 'FirstName' + ); + const visibleColumns = [firstNameColumn]; + + let response = await request(context.app) + .get( + `/api/v1/db/data/noco/${sakilaProject.id}/${customerTable.id}/views/${view.id}/find-one` + ) + .set('xc-auth', context.token) + .query({ + fields: visibleColumns.map((c) => c.title), + sort: '-FirstName', + }) + .expect(200); + + if (!isColumnsCorrectInResponse(response.body, visibleColumns)) { + console.log(response.body.list); + throw new Error('Wrong columns'); + } + + if (response.body[firstNameColumn.title] !== 'ZACHARY') { + console.log(response.body); + throw new Error('Wrong sort'); + } + + response = await request(context.app) + .get( + `/api/v1/db/data/noco/${sakilaProject.id}/${customerTable.id}/views/${view.id}/find-one` + ) + .set('xc-auth', context.token) + .query({ + fields: visibleColumns.map((c) => c.title), + sort: 'FirstName', + }) + .expect(200); + + if (!isColumnsCorrectInResponse(response.body, visibleColumns)) { + console.log(response.body.list); + throw new Error('Wrong columns'); + } + + if (response.body[firstNameColumn.title] !== 'AARON') { + console.log(response.body); + throw new Error('Wrong sort'); + } + } + + it('Find one sorted data list with required columns gallery', async function () { + await testFindOneSortedDataWithRequiredColumns(ViewTypes.GALLERY); + }); + + it('Find one sorted data list with required columns form', async function () { + await testFindOneSortedDataWithRequiredColumns(ViewTypes.FORM); + }); + + it('Find one sorted data list with required columns grid', async function () { + await testFindOneSortedDataWithRequiredColumns(ViewTypes.GRID); + }); } export default function () {