2
0

flow-select-config-entity.test.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /**
  2. * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
  3. * SPDX-License-Identifier: MIT
  4. */
  5. import { Rectangle } from '@flowgram.ai/utils';
  6. import { FlowDocument, FlowNodeTransformData } from '@flowgram.ai/document';
  7. import { EntityManager } from '@flowgram.ai/core';
  8. import { FlowSelectConfigEntity } from '../../src/entities/flow-select-config-entity';
  9. import { FLOW_SELECTED_NODES } from '../../__mocks__/flow-selected-nodes.mock';
  10. import { createDocumentContainer } from '../../__mocks__/flow-document-container.mock';
  11. describe('flow-select-config-entity', () => {
  12. let document: FlowDocument;
  13. let configEntity: FlowSelectConfigEntity;
  14. let transformVisibles: FlowNodeTransformData[] = [];
  15. beforeEach(() => {
  16. const container = createDocumentContainer();
  17. document = container.get(FlowDocument);
  18. configEntity = container.get(EntityManager).getEntity(FlowSelectConfigEntity, true)!;
  19. document.fromJSON(FLOW_SELECTED_NODES);
  20. document.transformer.refresh();
  21. transformVisibles = document
  22. .getRenderDatas(FlowNodeTransformData, false)
  23. .filter((transform) => {
  24. const { entity } = transform;
  25. if (entity.originParent) {
  26. return entity.getNodeMeta().selectable && entity.originParent.getNodeMeta().selectable;
  27. }
  28. return entity.getNodeMeta().selectable;
  29. });
  30. });
  31. it('base', () => {
  32. expect(configEntity.selectedNodes.length).toEqual(0);
  33. expect(configEntity.getSelectedBounds().width).toEqual(0);
  34. const node = document.getNode('createRecord_47e8fe1dfc3')!;
  35. configEntity.selectedNodes = [node];
  36. expect(configEntity.selectedNodes.map((n) => n.id)).toEqual(['createRecord_47e8fe1dfc3']);
  37. expect(configEntity.getSelectedBounds().width).toEqual(300);
  38. configEntity.clearSelectedNodes();
  39. expect(configEntity.getSelectedBounds().width).toEqual(0);
  40. });
  41. it('select from bounds', () => {
  42. const bounds = new Rectangle(-150, 630, 300, 80);
  43. configEntity.selectFromBounds(bounds, transformVisibles);
  44. expect(configEntity.selectedNodes.map((n) => n.id)).toEqual(['exclusiveSplit_30baf8b1da0']);
  45. });
  46. });