flow-node-render-data.spec.ts 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
  2. import { baseMock } from '../flow.mock';
  3. import { createDocumentContainer } from '../flow-document-container.mock';
  4. import { FlowDocument } from '../../src/flow-document';
  5. import { FlowNodeRenderData } from '../../src/datas';
  6. describe('flow-node-render-data', () => {
  7. let container = createDocumentContainer();
  8. let document: FlowDocument;
  9. const originSetTimeout = setTimeout;
  10. beforeEach(() => {
  11. vi.stubGlobal('setTimeout', (fn: any) => {
  12. fn();
  13. return 1;
  14. });
  15. container = createDocumentContainer();
  16. document = container.get<FlowDocument>(FlowDocument);
  17. document.fromJSON(baseMock, true);
  18. document.transformer.refresh();
  19. });
  20. afterEach(() => {
  21. vi.stubGlobal('setTimeout', originSetTimeout);
  22. document.dispose();
  23. });
  24. it('expanded and adable', () => {
  25. const renderData = document.getNode('end_0')!.getData(FlowNodeRenderData)!;
  26. expect(!!renderData.addable).toEqual(false);
  27. expect(renderData.expandable).toEqual(true);
  28. renderData.toggleExpand();
  29. expect(renderData.expanded).toEqual(true);
  30. });
  31. it('get dom node', () => {
  32. const renderData = document.getNode('end_0')!.getData<FlowNodeRenderData>(FlowNodeRenderData)!;
  33. expect(renderData.node).toEqual(renderData.node);
  34. const parentDomNode = window.document.createElement('div');
  35. parentDomNode.appendChild(renderData.node);
  36. expect(renderData.node.parentElement).toEqual(parentDomNode);
  37. expect(typeof renderData.node.addEventListener).toEqual('function');
  38. renderData.dispose();
  39. expect(renderData.node.parentElement).toEqual(null);
  40. });
  41. it('hover node visible', () => {
  42. const renderData = document.getNode('end_0')!.getData(FlowNodeRenderData)!;
  43. renderData.toggleMouseEnter();
  44. expect(renderData.hovered).toEqual(true);
  45. expect(renderData.activated).toEqual(true);
  46. expect(document.renderState.getNodeHovered()).toEqual(renderData.entity);
  47. renderData.toggleMouseLeave();
  48. expect(renderData.hovered).toEqual(false);
  49. expect(renderData.activated).toEqual(false);
  50. expect(document.renderState.getNodeHovered()).toEqual(undefined);
  51. });
  52. it('hover node hidden', () => {
  53. const renderData = document
  54. .getNode('$inlineBlocks$dynamicSplit_0')!
  55. .getData(FlowNodeRenderData)!;
  56. renderData.toggleMouseEnter();
  57. expect(renderData.hovered).toEqual(false); // 是隐藏节点
  58. expect(document.renderState.getNodeHovered()).toEqual(renderData.entity);
  59. renderData.toggleMouseLeave();
  60. expect(document.renderState.getNodeHovered()).toEqual(undefined);
  61. });
  62. it('hover node silent', () => {
  63. const renderData = document.getNode('end_0')!.getData(FlowNodeRenderData)!;
  64. renderData.toggleMouseEnter(true);
  65. expect(renderData.hovered).toEqual(false);
  66. expect(document.renderState.getNodeHovered()).toEqual(renderData.entity);
  67. renderData.toggleMouseLeave(true);
  68. expect(renderData.hovered).toEqual(false);
  69. expect(document.renderState.getNodeHovered()).toEqual(undefined);
  70. });
  71. it('activated', () => {
  72. const renderData = document.getNode('$blockIcon$dynamicSplit_0')!.getData(FlowNodeRenderData)!;
  73. renderData.activated = true;
  74. expect(renderData.activated).toEqual(true);
  75. expect(renderData.entity.parent!.getData(FlowNodeRenderData)!.activated).toEqual(true);
  76. expect(renderData.lineActivated).toEqual(true);
  77. });
  78. });