mirror of
https://github.com/nocodb/nocodb.git
synced 2026-05-05 17:07:45 +00:00
Merge branch 'develop' into nc-fix/link-creation
This commit is contained in:
@@ -5,10 +5,18 @@ import setup, { unsetup } from '../../../setup';
|
||||
import { ToolbarPage } from '../../../pages/Dashboard/common/Toolbar';
|
||||
import { Api } from 'nocodb-sdk';
|
||||
let api: Api<any>;
|
||||
const addRecordUsingAPI = async (context: any, tableId: string, rowAttributes: any) => {
|
||||
try {
|
||||
await api.dbTableRow.bulkCreate('noco', context.base.id, tableId, rowAttributes);
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
};
|
||||
|
||||
test.describe('Multi select', () => {
|
||||
let dashboard: DashboardPage, grid: GridPage;
|
||||
let context: any;
|
||||
let tableId: string;
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
context = await setup({ page, isEmptyProject: true });
|
||||
@@ -22,7 +30,13 @@ test.describe('Multi select', () => {
|
||||
columnTitle: 'MultiSelect',
|
||||
options: ['Option 1', 'Option 2'],
|
||||
});
|
||||
await grid.addNewRow({ index: 0, value: 'Row 0' });
|
||||
|
||||
api = context.api;
|
||||
|
||||
const tables = await api.dbTable.list(context.base.id);
|
||||
tableId = tables.list.find((table: any) => table.title === 'sheet1').id;
|
||||
await addRecordUsingAPI(context, tableId, [{ Id: 1, Title: `Row 0` }]);
|
||||
await page.reload();
|
||||
});
|
||||
|
||||
test.afterEach(async () => {
|
||||
@@ -56,7 +70,14 @@ test.describe('Multi select', () => {
|
||||
multiSelect: true,
|
||||
});
|
||||
|
||||
await grid.addNewRow({ index: 1, value: 'Row 1' });
|
||||
await addRecordUsingAPI(context, tableId, [
|
||||
{
|
||||
Id: 2,
|
||||
Title: `Row 1`,
|
||||
},
|
||||
]);
|
||||
await grid.rootPage.reload();
|
||||
|
||||
await grid.cell.selectOption.select({
|
||||
index: 1,
|
||||
columnHeader: 'MultiSelect',
|
||||
|
||||
@@ -3,15 +3,19 @@ import { DashboardPage } from '../../../pages/Dashboard';
|
||||
import { GridPage } from '../../../pages/Dashboard/Grid';
|
||||
import setup, { unsetup } from '../../../setup';
|
||||
import { ToolbarPage } from '../../../pages/Dashboard/common/Toolbar';
|
||||
import { Api } from 'nocodb-sdk';
|
||||
|
||||
test.describe('Single select', () => {
|
||||
let dashboard: DashboardPage, grid: GridPage;
|
||||
let context: any;
|
||||
let api: Api<any>;
|
||||
let tableId: string;
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
context = await setup({ page, isEmptyProject: true });
|
||||
dashboard = new DashboardPage(page, context.base);
|
||||
grid = dashboard.grid;
|
||||
api = context.api;
|
||||
|
||||
await dashboard.treeView.createTable({ title: 'sheet1', baseTitle: context.base.title });
|
||||
|
||||
@@ -20,7 +24,11 @@ test.describe('Single select', () => {
|
||||
columnTitle: 'SingleSelect',
|
||||
options: ['Option 1', 'Option 2'],
|
||||
});
|
||||
await grid.addNewRow({ index: 0, value: 'Row 0' });
|
||||
|
||||
const tables = await api.dbTable.list(context.base.id);
|
||||
tableId = tables.list.find((table: any) => table.title === 'sheet1').id;
|
||||
await api.dbTableRow.bulkCreate('noco', context.base.id, tableId, [{ Id: 1, Title: `Row 0` }]);
|
||||
await page.reload();
|
||||
});
|
||||
|
||||
test.afterEach(async () => {
|
||||
@@ -120,12 +128,15 @@ test.describe('Single select - filter & sort', () => {
|
||||
|
||||
let dashboard: DashboardPage, grid: GridPage, toolbar: ToolbarPage;
|
||||
let context: any;
|
||||
let api: Api<any>;
|
||||
let tableId: string;
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
context = await setup({ page });
|
||||
dashboard = new DashboardPage(page, context.base);
|
||||
toolbar = dashboard.grid.toolbar;
|
||||
grid = dashboard.grid;
|
||||
api = context.api;
|
||||
|
||||
await dashboard.treeView.createTable({ title: 'sheet1', baseTitle: context.base.title });
|
||||
|
||||
@@ -134,10 +145,16 @@ test.describe('Single select - filter & sort', () => {
|
||||
columnTitle: 'SingleSelect',
|
||||
options: ['foo', 'bar', 'baz'],
|
||||
});
|
||||
await grid.addNewRow({ index: 0, value: '1' });
|
||||
await grid.addNewRow({ index: 1, value: '2' });
|
||||
await grid.addNewRow({ index: 2, value: '3' });
|
||||
await grid.addNewRow({ index: 3, value: '4' });
|
||||
|
||||
const tables = await api.dbTable.list(context.base.id);
|
||||
tableId = tables.list.find((table: any) => table.title === 'sheet1').id;
|
||||
await api.dbTableRow.bulkCreate('noco', context.base.id, tableId, [
|
||||
{ Id: 1, Title: '1' },
|
||||
{ Id: 2, Title: '2' },
|
||||
{ Id: 3, Title: '3' },
|
||||
{ Id: 4, Title: '4' },
|
||||
]);
|
||||
await page.reload();
|
||||
|
||||
await grid.cell.selectOption.select({ index: 1, columnHeader: 'SingleSelect', option: 'foo', multiSelect: false });
|
||||
await grid.cell.selectOption.select({ index: 2, columnHeader: 'SingleSelect', option: 'bar', multiSelect: false });
|
||||
|
||||
@@ -25,22 +25,15 @@ const roleDb = [
|
||||
async function beforeEachInit({ page }: { page: any }) {
|
||||
let workspacePage: WorkspacePage;
|
||||
let collaborationPage: CollaborationPage;
|
||||
let api: Api<any>;
|
||||
|
||||
const context: any = await setup({ page, isEmptyProject: true });
|
||||
const dashboard: DashboardPage = new DashboardPage(page, context.base);
|
||||
const api = context.api;
|
||||
|
||||
if (isEE()) {
|
||||
workspacePage = new WorkspacePage(page);
|
||||
collaborationPage = workspacePage.collaboration;
|
||||
|
||||
api = new Api({
|
||||
baseURL: `http://localhost:8080/`,
|
||||
headers: {
|
||||
'xc-auth': context.token,
|
||||
},
|
||||
});
|
||||
|
||||
for (let i = 0; i < roleDb.length; i++) {
|
||||
try {
|
||||
await api.auth.signup({
|
||||
@@ -59,25 +52,36 @@ async function beforeEachInit({ page }: { page: any }) {
|
||||
}
|
||||
}
|
||||
|
||||
return { dashboard, context };
|
||||
return { dashboard, context, api };
|
||||
}
|
||||
|
||||
test.describe('User single select', () => {
|
||||
let dashboard: DashboardPage, grid: GridPage, topbar: TopbarPage;
|
||||
let context: any;
|
||||
let api: Api<any>;
|
||||
let tableId: string;
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
const initRsp = await beforeEachInit({ page: page });
|
||||
context = initRsp.context;
|
||||
dashboard = initRsp.dashboard;
|
||||
api = initRsp.api;
|
||||
grid = dashboard.grid;
|
||||
topbar = dashboard.grid.topbar;
|
||||
|
||||
await dashboard.treeView.createTable({ title: 'Sheet1', baseTitle: context.base.title });
|
||||
await dashboard.treeView.createTable({ title: 'sheet1', baseTitle: context.base.title });
|
||||
|
||||
await grid.column.create({ title: 'User', type: 'User' });
|
||||
|
||||
await grid.addNewRow({ index: 0, value: 'Row 0' });
|
||||
const tables = await api.dbTable.list(context.base.id);
|
||||
tableId = tables.list.find((table: any) => table.title === 'sheet1').id;
|
||||
await api.dbTableRow.bulkCreate('noco', context.base.id, tableId, [
|
||||
{
|
||||
Id: 1,
|
||||
Title: `Row 0`,
|
||||
},
|
||||
]);
|
||||
await page.reload();
|
||||
});
|
||||
|
||||
test.afterEach(async () => {
|
||||
@@ -102,7 +106,14 @@ test.describe('User single select', () => {
|
||||
});
|
||||
|
||||
// Add new row and verify default value is added in new cell
|
||||
await grid.addNewRow({ index: 1, value: 'Row 1' });
|
||||
await api.dbTableRow.bulkCreate('noco', context.base.id, tableId, [
|
||||
{
|
||||
Id: 2,
|
||||
Title: `Row 1`,
|
||||
},
|
||||
]);
|
||||
await grid.rootPage.reload();
|
||||
|
||||
await grid.cell.userOption.verify({
|
||||
index: 1,
|
||||
columnHeader: 'User',
|
||||
@@ -130,9 +141,17 @@ test.describe('User single select', () => {
|
||||
});
|
||||
|
||||
test('Field operations - duplicate column, convert to SingleLineText', async () => {
|
||||
await api.dbTableRow.bulkCreate('noco', context.base.id, tableId, [
|
||||
{ Id: 2, Title: `Row 1` },
|
||||
{ Id: 3, Title: `Row 2` },
|
||||
{ Id: 4, Title: `Row 3` },
|
||||
{ Id: 5, Title: `Row 4` },
|
||||
{ Id: 6, Title: `Row 5` },
|
||||
]);
|
||||
await grid.rootPage.reload();
|
||||
|
||||
for (let i = 0; i <= 4; i++) {
|
||||
await grid.cell.userOption.select({ index: i, columnHeader: 'User', option: users[i], multiSelect: false });
|
||||
await grid.addNewRow({ index: i + 1, value: `Row ${i + 1}` });
|
||||
}
|
||||
|
||||
await grid.column.duplicateColumn({
|
||||
@@ -164,10 +183,19 @@ test.describe('User single select', () => {
|
||||
multiSelect: false,
|
||||
});
|
||||
|
||||
// add 5 rows
|
||||
await api.dbTableRow.bulkCreate('noco', context.base.id, tableId, [
|
||||
{ Id: 2, Title: `Row 1` },
|
||||
{ Id: 3, Title: `Row 2` },
|
||||
{ Id: 4, Title: `Row 3` },
|
||||
{ Id: 5, Title: `Row 4` },
|
||||
{ Id: 6, Title: `Row 5` },
|
||||
]);
|
||||
await grid.rootPage.reload();
|
||||
|
||||
// Edit, refresh and verify
|
||||
for (let i = 0; i <= 4; i++) {
|
||||
await grid.cell.userOption.select({ index: i, columnHeader: 'User', option: users[i], multiSelect: false });
|
||||
await grid.addNewRow({ index: i + 1, value: `Row ${i + 1}` });
|
||||
}
|
||||
|
||||
// refresh page
|
||||
@@ -275,11 +303,14 @@ test.describe('User single select - filter, sort & GroupBy', () => {
|
||||
|
||||
let dashboard: DashboardPage, grid: GridPage, toolbar: ToolbarPage;
|
||||
let context: any;
|
||||
let api: Api<any>;
|
||||
let tableId: string;
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
const initRsp = await beforeEachInit({ page: page });
|
||||
context = initRsp.context;
|
||||
dashboard = initRsp.dashboard;
|
||||
api = initRsp.api;
|
||||
grid = dashboard.grid;
|
||||
toolbar = dashboard.grid.toolbar;
|
||||
|
||||
@@ -287,8 +318,18 @@ test.describe('User single select - filter, sort & GroupBy', () => {
|
||||
|
||||
await grid.column.create({ title: 'User', type: 'User' });
|
||||
|
||||
const tables = await api.dbTable.list(context.base.id);
|
||||
tableId = tables.list.find((table: any) => table.title === 'sheet1').id;
|
||||
await api.dbTableRow.bulkCreate('noco', context.base.id, tableId, [
|
||||
{ Id: 1, Title: `0` },
|
||||
{ Id: 2, Title: `1` },
|
||||
{ Id: 3, Title: `2` },
|
||||
{ Id: 4, Title: `3` },
|
||||
{ Id: 5, Title: `4` },
|
||||
]);
|
||||
await page.reload();
|
||||
|
||||
for (let i = 0; i <= 4; i++) {
|
||||
await grid.addNewRow({ index: i, value: `${i}` });
|
||||
await grid.cell.userOption.select({ index: i, columnHeader: 'User', option: users[i], multiSelect: false });
|
||||
}
|
||||
});
|
||||
@@ -398,11 +439,14 @@ test.describe('User single select - filter, sort & GroupBy', () => {
|
||||
test.describe('User multiple select', () => {
|
||||
let dashboard: DashboardPage, grid: GridPage, topbar: TopbarPage;
|
||||
let context: any;
|
||||
let api: Api<any>;
|
||||
let tableId: string;
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
const initRsp = await beforeEachInit({ page: page });
|
||||
context = initRsp.context;
|
||||
dashboard = initRsp.dashboard;
|
||||
api = initRsp.api;
|
||||
grid = dashboard.grid;
|
||||
topbar = dashboard.grid.topbar;
|
||||
|
||||
@@ -410,6 +454,9 @@ test.describe('User multiple select', () => {
|
||||
|
||||
await grid.column.create({ title: 'User', type: 'User' });
|
||||
await grid.column.userOption.allowMultipleUser({ columnTitle: 'User', allowMultiple: true });
|
||||
|
||||
const tables = await api.dbTable.list(context.base.id);
|
||||
tableId = tables.list.find((table: any) => table.title === 'Sheet1').id;
|
||||
});
|
||||
|
||||
test.afterEach(async () => {
|
||||
@@ -417,7 +464,8 @@ test.describe('User multiple select', () => {
|
||||
});
|
||||
|
||||
test('Verify the default option count, select default value and verify', async () => {
|
||||
await grid.addNewRow({ index: 0, value: 'Row 0' });
|
||||
await api.dbTableRow.bulkCreate('noco', context.base.id, tableId, [{ Id: 1, Title: `Row 0` }]);
|
||||
await grid.rootPage.reload();
|
||||
|
||||
if (!isEE()) {
|
||||
await grid.column.userOption.verifyDefaultValueOptionCount({ columnTitle: 'User', totalCount: 5 });
|
||||
@@ -436,7 +484,9 @@ test.describe('User multiple select', () => {
|
||||
});
|
||||
|
||||
// Add new row and verify default value is added in new cell
|
||||
await grid.addNewRow({ index: 1, value: 'Row 1' });
|
||||
await api.dbTableRow.bulkCreate('noco', context.base.id, tableId, [{ Id: 2, Title: `Row 1` }]);
|
||||
await grid.rootPage.reload();
|
||||
|
||||
await grid.cell.userOption.verify({
|
||||
index: 1,
|
||||
columnHeader: 'User',
|
||||
@@ -452,10 +502,17 @@ test.describe('User multiple select', () => {
|
||||
});
|
||||
|
||||
test('Field operations - duplicate column, convert to SingleLineText', async () => {
|
||||
await api.dbTableRow.bulkCreate('noco', context.base.id, tableId, [
|
||||
{ Id: 1, Title: `Row 0` },
|
||||
{ Id: 2, Title: `Row 1` },
|
||||
{ Id: 3, Title: `Row 2` },
|
||||
{ Id: 4, Title: `Row 3` },
|
||||
{ Id: 5, Title: `Row 4` },
|
||||
]);
|
||||
await grid.rootPage.reload();
|
||||
|
||||
let counter = 1;
|
||||
for (let i = 0; i <= 4; i++) {
|
||||
await grid.addNewRow({ index: i, value: `Row ${i}` });
|
||||
|
||||
await grid.cell.userOption.select({ index: i, columnHeader: 'User', option: users[i], multiSelect: true });
|
||||
await grid.cell.userOption.select({ index: i, columnHeader: 'User', option: users[counter], multiSelect: true });
|
||||
|
||||
@@ -497,11 +554,18 @@ test.describe('User multiple select', () => {
|
||||
});
|
||||
|
||||
test('Cell Operation - edit, copy-paste and delete', async () => {
|
||||
await api.dbTableRow.bulkCreate('noco', context.base.id, tableId, [
|
||||
{ Id: 1, Title: `Row 0` },
|
||||
{ Id: 2, Title: `Row 1` },
|
||||
{ Id: 3, Title: `Row 2` },
|
||||
{ Id: 4, Title: `Row 3` },
|
||||
{ Id: 5, Title: `Row 4` },
|
||||
]);
|
||||
await grid.rootPage.reload();
|
||||
|
||||
// Edit, refresh and verify
|
||||
let counter = 1;
|
||||
for (let i = 0; i <= 4; i++) {
|
||||
await grid.addNewRow({ index: i, value: `Row ${i}` });
|
||||
|
||||
await grid.cell.userOption.select({
|
||||
index: i,
|
||||
columnHeader: 'User',
|
||||
@@ -617,11 +681,14 @@ test.describe('User multiple select - filter, sort & GroupBy', () => {
|
||||
|
||||
let dashboard: DashboardPage, grid: GridPage, toolbar: ToolbarPage;
|
||||
let context: any;
|
||||
let api: Api<any>;
|
||||
let tableId: string;
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
const initRsp = await beforeEachInit({ page: page });
|
||||
context = initRsp.context;
|
||||
dashboard = initRsp.dashboard;
|
||||
api = initRsp.api;
|
||||
grid = dashboard.grid;
|
||||
toolbar = dashboard.grid.toolbar;
|
||||
|
||||
@@ -630,9 +697,20 @@ test.describe('User multiple select - filter, sort & GroupBy', () => {
|
||||
await grid.column.create({ title: 'User', type: 'User' });
|
||||
await grid.column.userOption.allowMultipleUser({ columnTitle: 'User', allowMultiple: true });
|
||||
|
||||
const tables = await api.dbTable.list(context.base.id);
|
||||
tableId = tables.list.find((table: any) => table.title === 'sheet1').id;
|
||||
|
||||
await api.dbTableRow.bulkCreate('noco', context.base.id, tableId, [
|
||||
{ Id: 1, Title: `0` },
|
||||
{ Id: 2, Title: `1` },
|
||||
{ Id: 3, Title: `2` },
|
||||
{ Id: 4, Title: `3` },
|
||||
{ Id: 5, Title: `4` },
|
||||
]);
|
||||
await grid.rootPage.reload();
|
||||
|
||||
let counter = 2;
|
||||
for (let i = 0; i <= 4; i++) {
|
||||
await grid.addNewRow({ index: i, value: `${i}` });
|
||||
await grid.cell.userOption.select({ index: i, columnHeader: 'User', option: users[i], multiSelect: true });
|
||||
if (i !== 0) {
|
||||
await grid.cell.userOption.select({
|
||||
|
||||
Reference in New Issue
Block a user