|
|
|
import BasePage from '../../../Base';
|
|
|
|
import { SidebarPage } from '..';
|
|
|
|
import { expect } from '@playwright/test';
|
|
|
|
|
|
|
|
export class SidebarTableNodeObject extends BasePage {
|
|
|
|
readonly sidebar: SidebarPage;
|
|
|
|
|
|
|
|
constructor(parent: SidebarPage) {
|
|
|
|
super(parent.rootPage);
|
|
|
|
|
|
|
|
this.sidebar = parent;
|
|
|
|
}
|
|
|
|
|
|
|
|
get({ tableTitle }: { tableTitle: string }) {
|
|
|
|
return this.sidebar.get().getByTestId(`nc-tbl-side-node-${tableTitle}`);
|
|
|
|
}
|
|
|
|
|
|
|
|
async click({ tableTitle }: { tableTitle: string }) {
|
|
|
|
await this.get({
|
|
|
|
tableTitle,
|
|
|
|
}).click();
|
|
|
|
}
|
|
|
|
|
|
|
|
async clickOptions({ tableTitle }: { tableTitle: string }) {
|
|
|
|
await this.get({
|
|
|
|
tableTitle,
|
|
|
|
}).hover();
|
|
|
|
|
|
|
|
await this.get({
|
|
|
|
tableTitle,
|
|
|
|
})
|
|
|
|
.getByTestId(`nc-sidebar-table-context-menu`)
|
|
|
|
.click();
|
|
|
|
}
|
|
|
|
|
|
|
|
async verifyTableOptions({
|
|
|
|
tableTitle,
|
|
|
|
isVisible,
|
|
|
|
checkMenuOptions = true,
|
|
|
|
renameVisible,
|
|
|
|
duplicateVisible,
|
|
|
|
deleteVisible,
|
|
|
|
}: {
|
|
|
|
tableTitle: string;
|
|
|
|
isVisible: boolean;
|
|
|
|
checkMenuOptions?: boolean;
|
|
|
|
renameVisible?: boolean;
|
|
|
|
duplicateVisible?: boolean;
|
|
|
|
deleteVisible?: boolean;
|
|
|
|
}) {
|
|
|
|
if (isVisible) {
|
|
|
|
await this.clickOptions({ tableTitle });
|
|
|
|
await this.rootPage.getByTestId(`sidebar-table-context-menu-list-${tableTitle}`).waitFor({ state: 'visible' });
|
|
|
|
|
|
|
|
await expect(
|
|
|
|
this.rootPage.getByTestId(`sidebar-table-context-menu-list-${tableTitle}`).locator('li.ant-dropdown-menu-item')
|
|
|
|
).not.toHaveCount(0);
|
|
|
|
if (!checkMenuOptions) {
|
|
|
|
// close table options context menu
|
|
|
|
await this.clickOptions({ tableTitle });
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
await this.clickOptions({ tableTitle });
|
|
|
|
await this.rootPage.getByTestId(`sidebar-table-context-menu-list-${tableTitle}`).waitFor({ state: 'visible' });
|
|
|
|
|
|
|
|
await expect(
|
|
|
|
this.rootPage.getByTestId(`sidebar-table-context-menu-list-${tableTitle}`).locator('li.ant-dropdown-menu-item')
|
|
|
|
).toHaveCount(0);
|
|
|
|
|
|
|
|
await this.clickOptions({ tableTitle });
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
const renameLocator = await this.rootPage.getByTestId(`sidebar-table-rename-${tableTitle}`);
|
|
|
|
|
|
|
|
if (renameVisible) await renameLocator.isVisible();
|
|
|
|
else await expect(renameLocator).toHaveCount(0);
|
|
|
|
|
|
|
|
const duplicateLocator = await this.rootPage.getByTestId(`sidebar-table-duplicate-${tableTitle}`);
|
|
|
|
|
|
|
|
if (duplicateVisible) await expect(duplicateLocator).toBeVisible();
|
|
|
|
else await expect(duplicateLocator).toHaveCount(0);
|
|
|
|
|
|
|
|
const deleteLocator = await this.rootPage.getByTestId(`sidebar-table-delete-${tableTitle}`);
|
|
|
|
|
|
|
|
if (deleteVisible) await expect(deleteLocator).toBeVisible();
|
|
|
|
else await expect(deleteLocator).toHaveCount(0);
|
|
|
|
|
|
|
|
// close table options context menu
|
|
|
|
await this.clickOptions({ tableTitle });
|
|
|
|
}
|
|
|
|
}
|