Files
AFFiNE-Mirror/blocksuite/tests-legacy/database/statistics.spec.ts
2024-12-20 11:08:21 +00:00

104 lines
3.6 KiB
TypeScript

import { press } from '@inline/__tests__/utils.js';
import { expect, type Page } from '@playwright/test';
import { type } from '../utils/actions/index.js';
import {
enterPlaygroundRoom,
getAddRow,
initEmptyDatabaseState,
waitNextFrame,
} from '../utils/actions/misc.js';
import { test } from '../utils/playwright.js';
import { changeColumnType, moveToCenterOf, pressKey } from './actions.js';
const addRow = async (page: Page, count: number = 1) => {
await waitNextFrame(page);
const addRow = getAddRow(page);
for (let i = 0; i < count; i++) {
await addRow.click();
}
await press(page, 'Escape');
await waitNextFrame(page);
};
const insertRightColumn = async (page: Page, index = 0) => {
await waitNextFrame(page);
await page.locator('affine-database-header-column').nth(index).click();
await waitNextFrame(page, 200);
await pressKey(page, 'Escape');
const menu = page.locator('.affine-menu-button', {
hasText: new RegExp('Insert Right'),
});
await menu.click();
await waitNextFrame(page, 200);
await pressKey(page, 'Enter');
};
const menuSelect = async (page: Page, selectors: string[]) => {
await waitNextFrame(page);
for (const name of selectors) {
const menu = page.locator('.affine-menu-button', {
hasText: new RegExp(name),
});
await menu.click();
}
};
test.describe('title', () => {
test('empty count', async ({ page }) => {
await enterPlaygroundRoom(page);
await initEmptyDatabaseState(page);
await addRow(page, 3);
const statCell = page.locator('affine-database-column-stats-cell').nth(0);
await moveToCenterOf(page, statCell);
await statCell.click();
await menuSelect(page, ['Count', 'Count Empty']);
const value = statCell.locator('.value');
expect((await value.textContent())?.trim()).toBe('3');
await page.locator('affine-database-cell-container').nth(0).click();
await pressKey(page, 'Enter');
await type(page, 'asd');
await pressKey(page, 'Escape');
expect((await value.textContent())?.trim()).toBe('2');
});
});
test.describe('rich-text', () => {
test('empty count', async ({ page }) => {
await enterPlaygroundRoom(page);
await initEmptyDatabaseState(page);
await addRow(page, 3);
await insertRightColumn(page);
await changeColumnType(page, 1, 'text');
const statCell = page.locator('affine-database-column-stats-cell').nth(1);
await moveToCenterOf(page, statCell);
await statCell.click();
await menuSelect(page, ['Count', 'Count Empty']);
const value = statCell.locator('.value');
expect((await value.textContent())?.trim()).toBe('3');
await page.locator('affine-database-cell-container').nth(1).click();
await pressKey(page, 'Enter');
await type(page, 'asd');
await pressKey(page, 'Escape');
expect((await value.textContent())?.trim()).toBe('2');
});
});
test.describe('select', () => {
test('empty count', async ({ page }) => {
await enterPlaygroundRoom(page);
await initEmptyDatabaseState(page);
await addRow(page, 3);
await insertRightColumn(page);
await changeColumnType(page, 1, 'select');
const statCell = page.locator('affine-database-column-stats-cell').nth(1);
await moveToCenterOf(page, statCell);
await statCell.click();
await menuSelect(page, ['Count', 'Count Empty']);
const value = statCell.locator('.value');
expect((await value.textContent())?.trim()).toBe('3');
await page.locator('affine-database-cell-container').nth(1).click();
await pressKey(page, 'Enter');
await type(page, 'select');
await pressKey(page, 'Enter');
expect((await value.textContent())?.trim()).toBe('2');
});
});