From 07f62a5e90db39b52eca8643a4737d0691a38f5a Mon Sep 17 00:00:00 2001 From: L-Sun Date: Mon, 14 Oct 2024 20:13:38 +0800 Subject: [PATCH] refactor: update group test utils using container interface --- .../src/gfx/surface/surface-model.ts | 22 +++++++++ packages/framework/block-std/src/gfx/tree.ts | 16 +++---- tests/edgeless/group/clipboard.spec.ts | 27 ++++++----- .../edgeless/group/group-and-ungroup.spec.ts | 44 +++++++++--------- tests/edgeless/group/group.spec.ts | 44 +++++++++--------- tests/edgeless/group/release.spec.ts | 46 +++++++++---------- tests/edgeless/reordering.spec.ts | 6 +-- tests/utils/actions/edgeless.ts | 26 ++++++----- tests/utils/asserts.ts | 36 +++++++-------- 9 files changed, 147 insertions(+), 120 deletions(-) diff --git a/packages/framework/block-std/src/gfx/surface/surface-model.ts b/packages/framework/block-std/src/gfx/surface/surface-model.ts index 6e4f7da7c53cc..3d7108cf09e8b 100644 --- a/packages/framework/block-std/src/gfx/surface/surface-model.ts +++ b/packages/framework/block-std/src/gfx/surface/surface-model.ts @@ -3,7 +3,13 @@ import type { Boxed, Y } from '@blocksuite/store'; import { type Constructor, Slot } from '@blocksuite/global/utils'; import { BlockModel, DocCollection, nanoid } from '@blocksuite/store'; +import type { GfxModel } from '../gfx-block-model.js'; + import { TreeManager } from '../tree.js'; +import { + type GfxContainerElement, + isGfxContainerElm, +} from './container-element.js'; import { createDecoratorState } from './decorators/common.js'; import { initializeObservers, initializeWatchers } from './decorators/index.js'; import { @@ -451,6 +457,22 @@ export class SurfaceBlockModel extends BlockModel { return this._elementModels.has(id); } + isContainer(element: GfxModel): element is GfxModel & GfxContainerElement; + isContainer(id: string): boolean; + isContainer(element: string | GfxModel): boolean { + if (typeof element === 'string') { + const el = this.getElementById(element); + if (el) return isGfxContainerElm(el); + + const blockModel = this.doc.getBlock(element)?.model; + if (blockModel) return isGfxContainerElm(blockModel); + + return false; + } else { + return isGfxContainerElm(element); + } + } + isInMindmap(id: string) { const group = this.getGroup(id); diff --git a/packages/framework/block-std/src/gfx/tree.ts b/packages/framework/block-std/src/gfx/tree.ts index b52778651a970..bc7dde3d2e4d3 100644 --- a/packages/framework/block-std/src/gfx/tree.ts +++ b/packages/framework/block-std/src/gfx/tree.ts @@ -17,7 +17,7 @@ export class TreeManager { private _watched = false; - constructor(readonly surface: SurfaceBlockModel) {} + constructor(private readonly _surface: SurfaceBlockModel) {} getContainer(elementId: string): (GfxModel & GfxContainerElement) | null { const container = this._elementToContainer.get(elementId); @@ -82,7 +82,7 @@ export class TreeManager { // Graphic Block Elements - const { doc } = this.surface; + const { doc } = this._surface; const elements = doc .getBlocks() .filter(model => model instanceof GfxBlockElementModel) as GfxModel[]; @@ -132,7 +132,7 @@ export class TreeManager { // Canvas Elements - this.surface.elementModels.forEach(el => { + this._surface.elementModels.forEach(el => { if (isGfxContainerElm(el)) { // we use `childIds` here because some blocks in doc may not be ready el.childIds.forEach(childId => { @@ -142,21 +142,21 @@ export class TreeManager { }); disposable.add( - this.surface.elementAdded.on(({ id }) => { - const element = this.surface.getElementById(id); + this._surface.elementAdded.on(({ id }) => { + const element = this._surface.getElementById(id); element && onGfxModelAdded(element); }) ); disposable.add( - this.surface.elementRemoved.on(({ model }) => { + this._surface.elementRemoved.on(({ model }) => { onGfxModelDeleted(model); }) ); disposable.add( - this.surface.elementUpdated.on(({ id, oldValues }) => { - const element = this.surface.getElementById(id); + this._surface.elementUpdated.on(({ id, oldValues }) => { + const element = this._surface.getElementById(id); if (!isGfxContainerElm(element)) return; // Since the implement of GfxContainer may be different, diff --git a/tests/edgeless/group/clipboard.spec.ts b/tests/edgeless/group/clipboard.spec.ts index ca2c5bff31da2..c9ec97adcdbea 100644 --- a/tests/edgeless/group/clipboard.spec.ts +++ b/tests/edgeless/group/clipboard.spec.ts @@ -9,7 +9,7 @@ import { decreaseZoomLevel, edgelessCommonSetup, getAllSortedIds, - getFirstGroupId, + getFirstContainerId, pasteByKeyboard, selectAllByKeyboard, Shape, @@ -17,7 +17,10 @@ import { triggerComponentToolbarAction, waitNextFrame, } from '../../utils/actions/index.js'; -import { assertGroupChildren, assertGroupIds } from '../../utils/asserts.js'; +import { + assertContainerChildren, + assertContainerIds, +} from '../../utils/asserts.js'; import { test } from '../../utils/playwright.js'; test.describe('clipboard', () => { @@ -27,7 +30,7 @@ test.describe('clipboard', () => { await createShapeElement(page, [100, 0], [200, 100], Shape.Square); await selectAllByKeyboard(page); await triggerComponentToolbarAction(page, 'addGroup'); - const originGroupId = await getFirstGroupId(page); + const originGroupId = await getFirstContainerId(page); await copyByKeyboard(page); await waitNextFrame(page, 100); @@ -35,15 +38,15 @@ test.describe('clipboard', () => { await page.mouse.click(move[0], move[1]); await waitNextFrame(page, 1000); await pasteByKeyboard(page, false); - const copyedGroupId = await getFirstGroupId(page, [originGroupId]); + const copyedGroupId = await getFirstContainerId(page, [originGroupId]); - await assertGroupIds(page, { + await assertContainerIds(page, { [originGroupId]: 2, [copyedGroupId]: 2, null: 2, }); - await assertGroupChildren(page, originGroupId, 2); - await assertGroupChildren(page, copyedGroupId, 2); + await assertContainerChildren(page, originGroupId, 2); + await assertContainerChildren(page, copyedGroupId, 2); }); test('copy and paste group with connector', async ({ page }) => { @@ -53,7 +56,7 @@ test.describe('clipboard', () => { await createConnectorElement(page, [100, 50], [200, 50]); await selectAllByKeyboard(page); await triggerComponentToolbarAction(page, 'addGroup'); - const originGroupId = await getFirstGroupId(page); + const originGroupId = await getFirstContainerId(page); await copyByKeyboard(page); await waitNextFrame(page, 100); @@ -61,15 +64,15 @@ test.describe('clipboard', () => { await page.mouse.click(move[0], move[1]); await waitNextFrame(page, 1000); await pasteByKeyboard(page, false); - const copyedGroupId = await getFirstGroupId(page, [originGroupId]); + const copyedGroupId = await getFirstContainerId(page, [originGroupId]); - await assertGroupIds(page, { + await assertContainerIds(page, { [originGroupId]: 3, [copyedGroupId]: 3, null: 2, }); - await assertGroupChildren(page, originGroupId, 3); - await assertGroupChildren(page, copyedGroupId, 3); + await assertContainerChildren(page, originGroupId, 3); + await assertContainerChildren(page, copyedGroupId, 3); }); }); diff --git a/tests/edgeless/group/group-and-ungroup.spec.ts b/tests/edgeless/group/group-and-ungroup.spec.ts index 5d9c5e9dbe12c..65b4daf80f1bb 100644 --- a/tests/edgeless/group/group-and-ungroup.spec.ts +++ b/tests/edgeless/group/group-and-ungroup.spec.ts @@ -5,7 +5,7 @@ import { clickView, createShapeElement, edgelessCommonSetup, - getFirstGroupId, + getFirstContainerId, getIds, redoByKeyboard, selectAllByKeyboard, @@ -16,9 +16,9 @@ import { undoByKeyboard, } from '../../utils/actions/index.js'; import { - assertGroupChildren, - assertGroupChildrenIds, - assertGroupIds, + assertContainerChildIds, + assertContainerChildren, + assertContainerIds, assertSelectedBound, } from '../../utils/asserts.js'; import { test } from '../../utils/playwright.js'; @@ -43,7 +43,7 @@ test.describe('group and ungroup in group', () => { )[0]; await selectAllByKeyboard(page); await triggerComponentToolbarAction(page, 'addGroup'); - outterGroupId = await getFirstGroupId(page); + outterGroupId = await getFirstContainerId(page); }); test('group in group', async ({ page }) => { @@ -51,33 +51,33 @@ test.describe('group and ungroup in group', () => { await shiftClickView(page, [150, 50]); await captureHistory(page); await triggerComponentToolbarAction(page, 'addGroup'); - const groupId = await getFirstGroupId(page, [outterGroupId]); + const groupId = await getFirstContainerId(page, [outterGroupId]); await assertSelectedBound(page, [0, 0, 200, 100]); - await assertGroupIds(page, { + await assertContainerIds(page, { [groupId]: 2, [outterGroupId]: 2, null: 1, }); - await assertGroupChildren(page, groupId, 2); - await assertGroupChildren(page, outterGroupId, 2); + await assertContainerChildren(page, groupId, 2); + await assertContainerChildren(page, outterGroupId, 2); // undo the creation await undoByKeyboard(page); - await assertGroupIds(page, { + await assertContainerIds(page, { [outterGroupId]: 3, null: 1, }); - await assertGroupChildren(page, outterGroupId, 3); + await assertContainerChildren(page, outterGroupId, 3); // redo the creation await redoByKeyboard(page); - await assertGroupIds(page, { + await assertContainerIds(page, { [groupId]: 2, [outterGroupId]: 2, null: 1, }); - await assertGroupChildren(page, groupId, 2); - await assertGroupChildren(page, outterGroupId, 2); + await assertContainerChildren(page, groupId, 2); + await assertContainerChildren(page, outterGroupId, 2); }); test('ungroup in group', async ({ page }) => { @@ -85,10 +85,10 @@ test.describe('group and ungroup in group', () => { await shiftClickView(page, [150, 50]); await triggerComponentToolbarAction(page, 'addGroup'); await captureHistory(page); - const groupId = await getFirstGroupId(page, [outterGroupId]); + const groupId = await getFirstContainerId(page, [outterGroupId]); await triggerComponentToolbarAction(page, 'ungroup'); - await assertGroupIds(page, { [outterGroupId]: 3, null: 1 }); - await assertGroupChildrenIds( + await assertContainerIds(page, { [outterGroupId]: 3, null: 1 }); + await assertContainerChildIds( page, toIdCountMap(await getIds(page, true)), outterGroupId @@ -96,13 +96,13 @@ test.describe('group and ungroup in group', () => { // undo, group should in group again await undoByKeyboard(page); - await assertGroupIds(page, { + await assertContainerIds(page, { [outterGroupId]: 2, [groupId]: 2, null: 1, }); - await assertGroupChildrenIds(page, toIdCountMap(initShapes), groupId); - await assertGroupChildrenIds( + await assertContainerChildIds(page, toIdCountMap(initShapes), groupId); + await assertContainerChildIds( page, { [groupId]: 1, @@ -113,8 +113,8 @@ test.describe('group and ungroup in group', () => { // redo, group should be ungroup again await redoByKeyboard(page); - await assertGroupIds(page, { [outterGroupId]: 3, null: 1 }); - await assertGroupChildrenIds( + await assertContainerIds(page, { [outterGroupId]: 3, null: 1 }); + await assertContainerChildIds( page, toIdCountMap(await getIds(page, true)), outterGroupId diff --git a/tests/edgeless/group/group.spec.ts b/tests/edgeless/group/group.spec.ts index 6b413debe598b..fc44655c229f9 100644 --- a/tests/edgeless/group/group.spec.ts +++ b/tests/edgeless/group/group.spec.ts @@ -5,7 +5,7 @@ import { createShapeElement, dragBetweenViewCoords, edgelessCommonSetup, - getFirstGroupId, + getFirstContainerId, Shape, shiftClickView, triggerComponentToolbarAction, @@ -20,9 +20,9 @@ import { import { captureHistory } from '../../utils/actions/misc.js'; import { assertCanvasElementsCount, + assertContainerChildren, + assertContainerIds, assertEdgelessNonSelectedRect, - assertGroupChildren, - assertGroupIds, assertSelectedBound, } from '../../utils/asserts.js'; import { test } from '../../utils/playwright.js'; @@ -163,7 +163,7 @@ test.describe('group', () => { test('delete root group', async ({ page }) => { await selectAllByKeyboard(page); await triggerComponentToolbarAction(page, 'addGroup'); - const groupId = await getFirstGroupId(page); + const groupId = await getFirstContainerId(page); await captureHistory(page); await pressBackspace(page); await assertCanvasElementsCount(page, 0); @@ -171,11 +171,11 @@ test.describe('group', () => { // undo the delete await undoByKeyboard(page); await assertCanvasElementsCount(page, 3); - await assertGroupIds(page, { + await assertContainerIds(page, { [groupId]: 2, null: 1, }); - await assertGroupChildren(page, groupId, 2); + await assertContainerChildren(page, groupId, 2); // redo the delete await redoByKeyboard(page); @@ -185,76 +185,76 @@ test.describe('group', () => { test('delete sub-element in group', async ({ page }) => { await selectAllByKeyboard(page); await triggerComponentToolbarAction(page, 'addGroup'); - const groupId = await getFirstGroupId(page); + const groupId = await getFirstContainerId(page); await captureHistory(page); await clickView(page, [50, 50]); await pressBackspace(page); await assertCanvasElementsCount(page, 2); - await assertGroupIds(page, { + await assertContainerIds(page, { [groupId]: 1, null: 1, }); - await assertGroupChildren(page, groupId, 1); + await assertContainerChildren(page, groupId, 1); // undo the delete await undoByKeyboard(page); await assertCanvasElementsCount(page, 3); - await assertGroupIds(page, { + await assertContainerIds(page, { [groupId]: 2, null: 1, }); - await assertGroupChildren(page, groupId, 2); + await assertContainerChildren(page, groupId, 2); // redo the delete await redoByKeyboard(page); await assertCanvasElementsCount(page, 2); - await assertGroupIds(page, { + await assertContainerIds(page, { [groupId]: 1, null: 1, }); - await assertGroupChildren(page, groupId, 1); + await assertContainerChildren(page, groupId, 1); }); test('delete group in group', async ({ page }) => { await createShapeElement(page, [200, 0], [300, 100], Shape.Square); await selectAllByKeyboard(page); await triggerComponentToolbarAction(page, 'addGroup'); - const firstGroup = await getFirstGroupId(page); + const firstGroup = await getFirstContainerId(page); await clickView(page, [50, 50]); await shiftClickView(page, [150, 50]); await triggerComponentToolbarAction(page, 'addGroup'); - const secondGroup = await getFirstGroupId(page, [firstGroup]); + const secondGroup = await getFirstContainerId(page, [firstGroup]); await captureHistory(page); // delete group in group await pressBackspace(page); await assertCanvasElementsCount(page, 2); - await assertGroupIds(page, { + await assertContainerIds(page, { [firstGroup]: 1, null: 1, }); - await assertGroupChildren(page, firstGroup, 1); + await assertContainerChildren(page, firstGroup, 1); // undo the delete await undoByKeyboard(page); await assertCanvasElementsCount(page, 5); - await assertGroupIds(page, { + await assertContainerIds(page, { [firstGroup]: 2, [secondGroup]: 2, null: 1, }); - await assertGroupChildren(page, firstGroup, 2); - await assertGroupChildren(page, secondGroup, 2); + await assertContainerChildren(page, firstGroup, 2); + await assertContainerChildren(page, secondGroup, 2); // redo the delete await redoByKeyboard(page); await assertCanvasElementsCount(page, 2); - await assertGroupIds(page, { + await assertContainerIds(page, { [firstGroup]: 1, null: 1, }); - await assertGroupChildren(page, firstGroup, 1); + await assertContainerChildren(page, firstGroup, 1); }); }); }); diff --git a/tests/edgeless/group/release.spec.ts b/tests/edgeless/group/release.spec.ts index 729113cbf8c28..f137558d325e5 100644 --- a/tests/edgeless/group/release.spec.ts +++ b/tests/edgeless/group/release.spec.ts @@ -5,7 +5,7 @@ import { clickView, createShapeElement, edgelessCommonSetup, - getFirstGroupId, + getFirstContainerId, redoByKeyboard, selectAllByKeyboard, Shape, @@ -14,8 +14,8 @@ import { undoByKeyboard, } from '../../utils/actions/index.js'; import { - assertGroupChildren, - assertGroupIds, + assertContainerChildren, + assertContainerIds, assertSelectedBound, } from '../../utils/asserts.js'; import { test } from '../../utils/playwright.js'; @@ -35,36 +35,36 @@ test.describe('release from group', () => { await selectAllByKeyboard(page); await triggerComponentToolbarAction(page, 'addGroup'); - outterGroupId = await getFirstGroupId(page); + outterGroupId = await getFirstContainerId(page); }); test('release element from group', async ({ page }) => { await clickView(page, [50, 50]); await captureHistory(page); await triggerComponentToolbarAction(page, 'releaseFromGroup'); - await assertGroupIds(page, { + await assertContainerIds(page, { [outterGroupId]: 2, null: 2, }); - await assertGroupChildren(page, outterGroupId, 2); + await assertContainerChildren(page, outterGroupId, 2); await assertSelectedBound(page, [0, 0, 100, 100]); // undo the release await undoByKeyboard(page); - await assertGroupIds(page, { + await assertContainerIds(page, { [outterGroupId]: 3, null: 1, }); - await assertGroupChildren(page, outterGroupId, 3); + await assertContainerChildren(page, outterGroupId, 3); await assertSelectedBound(page, [0, 0, 100, 100]); // redo the release await redoByKeyboard(page); - await assertGroupIds(page, { + await assertContainerIds(page, { [outterGroupId]: 2, null: 2, }); - await assertGroupChildren(page, outterGroupId, 2); + await assertContainerChildren(page, outterGroupId, 2); await assertSelectedBound(page, [0, 0, 100, 100]); }); @@ -73,44 +73,44 @@ test.describe('release from group', () => { await shiftClickView(page, [150, 50]); await triggerComponentToolbarAction(page, 'addGroup'); await captureHistory(page); - const groupId = await getFirstGroupId(page, [outterGroupId]); + const groupId = await getFirstContainerId(page, [outterGroupId]); - await assertGroupIds(page, { + await assertContainerIds(page, { [groupId]: 2, [outterGroupId]: 2, null: 1, }); - await assertGroupChildren(page, groupId, 2); - await assertGroupChildren(page, outterGroupId, 2); + await assertContainerChildren(page, groupId, 2); + await assertContainerChildren(page, outterGroupId, 2); // release group from group await triggerComponentToolbarAction(page, 'releaseFromGroup'); - await assertGroupIds(page, { + await assertContainerIds(page, { [groupId]: 2, [outterGroupId]: 1, null: 2, }); - await assertGroupChildren(page, outterGroupId, 1); - await assertGroupChildren(page, groupId, 2); + await assertContainerChildren(page, outterGroupId, 1); + await assertContainerChildren(page, groupId, 2); // undo the release await undoByKeyboard(page); - await assertGroupIds(page, { + await assertContainerIds(page, { [groupId]: 2, [outterGroupId]: 2, null: 1, }); - await assertGroupChildren(page, groupId, 2); - await assertGroupChildren(page, outterGroupId, 2); + await assertContainerChildren(page, groupId, 2); + await assertContainerChildren(page, outterGroupId, 2); // redo the release await redoByKeyboard(page); - await assertGroupIds(page, { + await assertContainerIds(page, { [groupId]: 2, [outterGroupId]: 1, null: 2, }); - await assertGroupChildren(page, outterGroupId, 1); - await assertGroupChildren(page, groupId, 2); + await assertContainerChildren(page, outterGroupId, 1); + await assertContainerChildren(page, groupId, 2); }); }); diff --git a/tests/edgeless/reordering.spec.ts b/tests/edgeless/reordering.spec.ts index 9e35bb3af9b8a..b72552e183920 100644 --- a/tests/edgeless/reordering.spec.ts +++ b/tests/edgeless/reordering.spec.ts @@ -3,7 +3,7 @@ import { expect, type Page } from '@playwright/test'; import { createShapeElement, edgelessCommonSetup, - getFirstGroupId, + getFirstContainerId, getSelectedBound, getSortedIds, initThreeOverlapFilledShapes, @@ -47,7 +47,7 @@ test.describe('reordering', () => { await clickView(page, [50, 50]); await shiftClickView(page, [150, 50]); await triggerComponentToolbarAction(page, 'addGroup'); - const groupId = await getFirstGroupId(page); + const groupId = await getFirstContainerId(page); const currentSortedIds = await getSortedIds(page); expect(currentSortedIds).toEqual([ @@ -62,7 +62,7 @@ test.describe('reordering', () => { await clickView(page, [50, 50]); await shiftClickView(page, [150, 50]); await triggerComponentToolbarAction(page, 'addGroup'); - const groupId = await getFirstGroupId(page); + const groupId = await getFirstContainerId(page); await clickView(page, [50, 50]); await triggerComponentToolbarAction(page, 'releaseFromGroup'); const currentSortedIds = await getSortedIds(page); diff --git a/tests/utils/actions/edgeless.ts b/tests/utils/actions/edgeless.ts index bd1d238edd3ac..7469e9e9a0d89 100644 --- a/tests/utils/actions/edgeless.ts +++ b/tests/utils/actions/edgeless.ts @@ -1589,36 +1589,37 @@ export async function getSelectedBound( ); } -export async function getGroupOfElements(page: Page, ids: string[]) { +export async function getContainerOfElements(page: Page, ids: string[]) { return page.evaluate( ([ids]) => { const container = document.querySelector('affine-edgeless-root'); if (!container) throw new Error('container not found'); - return ids.map(id => container.service.surface.getGroup(id)?.id ?? null); + return ids.map( + id => container.service.surface.getContainer(id)?.id ?? null + ); }, [ids] ); } -export async function getGroupIds(page: Page) { +export async function getContainerIds(page: Page) { return page.evaluate(() => { const container = document.querySelector('affine-edgeless-root'); if (!container) throw new Error('container not found'); - return container.service.elements.map(el => el.group?.id ?? 'null'); + return container.service.elements.map(el => el.container?.id ?? 'null'); }); } -export async function getGroupChildrenIds(page: Page, id: string) { +export async function getContainerChildIds(page: Page, id: string) { return page.evaluate( ([id]) => { const container = document.querySelector('affine-edgeless-root'); if (!container) throw new Error('container not found'); - return Array.from( - container.service - .getElementsByType('group') - .find(group => group.id === id)?.childIds ?? [] - ); + const gfxModel = container.service.getElementById(id); + return gfxModel && container.service.surface.isContainer(gfxModel) + ? gfxModel.childIds + : []; }, [id] ); @@ -1673,14 +1674,15 @@ export async function getIds(page: Page, filterGroup = false) { ); } -export async function getFirstGroupId(page: Page, exclude: string[] = []) { +export async function getFirstContainerId(page: Page, exclude: string[] = []) { return page.evaluate( ([exclude]) => { const container = document.querySelector('affine-edgeless-root'); if (!container) throw new Error('container not found'); return ( container.service.elements.find( - e => e.type === 'group' && !exclude.includes(e.id) + e => + container.service.surface.isContainer(e) && !exclude.includes(e.id) )?.id ?? '' ); }, diff --git a/tests/utils/asserts.ts b/tests/utils/asserts.ts index 8c5dbdfdbbe6f..0cce5c2ad020a 100644 --- a/tests/utils/asserts.ts +++ b/tests/utils/asserts.ts @@ -22,10 +22,10 @@ import { import { getCanvasElementsCount, getConnectorPath, + getContainerChildIds, + getContainerIds, + getContainerOfElements, getEdgelessSelectedRectModel, - getGroupChildrenIds, - getGroupIds, - getGroupOfElements, getNoteRect, getSelectedBound, getSortedIdsInViewport, @@ -1123,11 +1123,11 @@ export async function assertSelectedBound( * @param page * @param expected the expected group id and the count of of its children */ -export async function assertGroupIds( +export async function assertContainerIds( page: Page, expected: Record ) { - const ids = await getGroupIds(page); + const ids = await getContainerIds(page); const result = toIdCountMap(ids); expect(result).toEqual(expected); @@ -1138,44 +1138,44 @@ export async function assertSortedIds(page: Page, expected: string[]) { expect(ids).toEqual(expected); } -export async function assertGroupChildrenIds( +export async function assertContainerChildIds( page: Page, expected: Record, id: string ) { - const ids = await getGroupChildrenIds(page, id); + const ids = await getContainerChildIds(page, id); const result = toIdCountMap(ids); expect(result).toEqual(expected); } -export async function assertGroupOfElements( +export async function assertContainerOfElements( page: Page, elements: string[], - groupId: string + containerId: string ) { - const elementGroups = await getGroupOfElements(page, elements); + const elementGroups = await getContainerOfElements(page, elements); elementGroups.forEach(elementGroup => { - expect(elementGroup).toEqual(groupId); + expect(elementGroup).toEqual(containerId); }); } /** - * Assert the given group has the expected children count. - * And the children's group id should equal to the given group id. + * Assert the given container has the expected children count. + * And the children's container id should equal to the given container id. * @param page - * @param groupId + * @param containerId * @param childrenCount */ -export async function assertGroupChildren( +export async function assertContainerChildren( page: Page, - groupId: string, + containerId: string, childrenCount: number ) { - const ids = await getGroupChildrenIds(page, groupId); + const ids = await getContainerChildIds(page, containerId); - await assertGroupOfElements(page, ids, groupId); + await assertContainerOfElements(page, ids, containerId); expect(new Set(ids).size).toBe(childrenCount); }