Skip to content

Commit cb7bace

Browse files
committed
chore: refresh button
1 parent 04032d4 commit cb7bace

File tree

3 files changed

+40
-2
lines changed

3 files changed

+40
-2
lines changed

src/containers/Tenant/ObjectSummary/SchemaTree/RefreshTreeButton.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ import {ActionTooltip, Button, Icon} from '@gravity-ui/uikit';
33
import {nanoid} from '@reduxjs/toolkit';
44

55
import {useDispatchTreeKey} from '../UpdateTreeContext';
6+
import {b} from '../shared';
67

78
export function RefreshTreeButton() {
89
const updateTreeKey = useDispatchTreeKey();
910
return (
1011
<ActionTooltip title="Refresh">
1112
<Button
13+
className={b('refresh-button')}
1214
view="flat-secondary"
1315
onClick={() => {
1416
updateTreeKey(nanoid());

tests/suites/tenant/summary/ObjectSummary.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ export enum ObjectSummaryTab {
1010
ACL = 'ACL',
1111
Schema = 'Schema',
1212
}
13-
1413
export class ObjectSummary {
1514
private tabs: Locator;
1615
private schemaViewer: Locator;
@@ -24,6 +23,7 @@ export class ObjectSummary {
2423
private createDirectoryModal: Locator;
2524
private createDirectoryInput: Locator;
2625
private createDirectoryButton: Locator;
26+
private refreshButton: Locator;
2727

2828
constructor(page: Page) {
2929
this.tree = page.locator('.ydb-object-summary__tree');
@@ -40,6 +40,7 @@ export class ObjectSummary {
4040
'.g-text-input__control[placeholder="Relative path"]',
4141
);
4242
this.createDirectoryButton = page.locator('button.g-button_view_action:has-text("Create")');
43+
this.refreshButton = page.locator('.ydb-object-summary__refresh-button');
4344
}
4445

4546
async isCreateDirectoryModalVisible(): Promise<boolean> {
@@ -192,9 +193,12 @@ export class ObjectSummary {
192193
async getTableTemplates(): Promise<RowTableAction[]> {
193194
return this.actionsMenu.getTableTemplates();
194195
}
195-
196196
async clickActionMenuItem(treeItemText: string, menuItemText: string): Promise<void> {
197197
await this.clickActionsButton(treeItemText);
198198
await this.clickActionsMenuItem(menuItemText);
199199
}
200+
201+
async clickRefreshButton(): Promise<void> {
202+
await this.refreshButton.click();
203+
}
200204
}

tests/suites/tenant/summary/objectSummary.test.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,4 +244,36 @@ test.describe('Object Summary', async () => {
244244
const treeItem = page.locator('.ydb-tree-view').filter({hasText: directoryName});
245245
await expect(treeItem).toBeVisible();
246246
});
247+
248+
test.only('Refresh button updates tree view after creating table', async ({page}) => {
249+
const pageQueryParams = {
250+
schema: tenantName,
251+
database: tenantName,
252+
general: 'query',
253+
};
254+
const tenantPage = new TenantPage(page);
255+
await tenantPage.goto(pageQueryParams);
256+
257+
const objectSummary = new ObjectSummary(page);
258+
const queryEditor = new QueryEditor(page);
259+
await expect(objectSummary.isTreeVisible()).resolves.toBe(true);
260+
261+
const tableName = `a_test_table_${Date.now()}`;
262+
263+
// Create table by executing query
264+
await queryEditor.setQuery(`CREATE TABLE \`${tableName}\` (id Int32, PRIMARY KEY(id));`);
265+
await queryEditor.clickRunButton();
266+
await queryEditor.waitForStatus('Completed');
267+
268+
// Verify table is not visible before refresh
269+
const treeItemBeforeRefresh = page.locator('.ydb-tree-view').filter({hasText: tableName});
270+
await expect(treeItemBeforeRefresh).not.toBeVisible();
271+
272+
// Click refresh button to update tree view
273+
await objectSummary.clickRefreshButton();
274+
275+
// Verify table appears in tree
276+
const treeItemAfterRefresh = page.locator('.ydb-tree-view').filter({hasText: tableName});
277+
await expect(treeItemAfterRefresh).toBeVisible();
278+
});
247279
});

0 commit comments

Comments
 (0)