The GitHub Actions job "Required Checks" on texera.git/gh-readonly-queue/main/pr-6830-7223c5b75c024c63ccf228a398db78ee5e53d8bd has succeeded. Run started by GitHub user aglinxinyuan (triggered by aglinxinyuan).
Head commit for run: 826eb2183d1da8b82852818e0b9f819c872691aa / Meng Wang <[email protected]> test(frontend): cover JointGraphWrapper highlighting, flags, zoom and coeditor paths (#6830) ### What changes were proposed in this PR? Extends the existing `JointGraphWrapper` spec to cover the remaining unit-testable (non-rendering) methods (`frontend/src/app/workspace/service/workflow-graph/model/joint-graph-wrapper.ts`). The wrapper is built over a headless `new joint.dia.Graph()` with no `dia.Paper`, matching the spec's existing setup. No production code was changed. 19 tests, grouped by the families the issue lists: **Highlighting** — `highlightLinks` / `unhighlightLinks`, `highlightCommentBoxes` / `unhighlightCommentBoxes`, `highlightPorts` / `unhighlightPorts`, each asserted through the matching `getCurrentHighlighted*IDs` getter *and* its highlight/unhighlight stream; single-select (the default) dropping the previous highlight vs `setMultiSelectMode(true)` keeping it; `getCurrentHighlights` / `getCurrentHighlightedIDs` aggregation (ports are deliberately excluded from the latter); `unhighlightElements` clearing all four families; and the group highlight streams, which operator highlighting does not touch. **Flags** — `setReloadingWorkflow` / `getReloadingWorkflow` and `setListenPositionChange` / `getListenPositionChange` round-trips. **Zoom** — `setZoomProperty` updating the ratio and emitting on the zoom stream, `isZoomRatioMin` / `isZoomRatioMax` at the configured bounds, and `restoreDefaultZoomAndOffset` resetting to `INIT_ZOOM_VALUE` while signalling a paper-offset restore. **Cell layer / breakpoints / position** — `getCellLayer` (z index, and the throw for an unknown cell), `getLinkIDsWithBreakpoint`, and `getElementPositionChangeEvent` reporting a moved element's old/new position. **Coeditor presence** — `addCoeditorOperatorHighlight` / `deleteCoeditorOperatorHighlight`, `setCurrentEditing` / `removeCurrentEditing`, and `setPropertyChanged` / `removePropertyChanged`. These reach the canvas through `getMainJointPaper()?.`, so with no paper attached they must degrade to a safe no-op; `setCurrentEditing` additionally returns a 300 ms interval, so the test drives it under `vi.useFakeTimers()` and asserts `removeCurrentEditing` clears it (real timers restored in a `finally`). Two behaviours are asserted as the code actually behaves rather than as the issue describes them, and are commented in the spec: - `setZoomProperty` does **not** clamp — `isZoomRatioMin/Max` only *report* where the ratio sits relative to `ZOOM_MINIMUM` / `ZOOM_MAXIMUM`; clamping is the caller's job. - the port streams emit **unconditionally**, so single-select's "clear the previous ports first" step surfaces as an extra empty batch on the unhighlight stream. Out of scope per the issue (they need a real `dia.Paper` / geometry): `attachMainJointPaper` / `getMainJointPaper`, `autoLayoutJoint`, `getElementPosition` / `setElementPosition` / `setAbsolutePosition`, `restorePaperOffset`. ### Any related issues, documentation, discussions? Closes #6825 ### How was this PR tested? Extended unit tests, run locally in `frontend/` (all green; the failure path was verified by breaking an assertion to confirm the suite goes red): ``` ng test --watch=false --include src/app/workspace/service/workflow-graph/model/joint-graph-wrapper.spec.ts # Test Files 1 passed (1) | Tests 47 passed (47) prettier --write <spec> # clean eslint <spec> # clean ``` ### Was this PR authored or co-authored using generative AI tooling? Generated-by: Claude Code (Opus 4.8 [1M context]) --------- Co-authored-by: Xinyuan Lin <[email protected]> Report URL: https://github.com/apache/texera/actions/runs/30065410369 With regards, GitHub Actions via GitBox
