aglinxinyuan opened a new pull request, #7696:
URL: https://github.com/apache/texera/pull/7696

   ### What changes were proposed in this PR?
   
   Three frontend files that sat below their neighbours, all with untested 
behaviour rather than tooling problems (these are `.ts` files, so #7458's 
template attribution does not apply).
   
   | File | Before | After |
   |---|---|---|
   | `user-quota.component.ts` | 90.1% | **140/140 lines, 34/34 branches, 36/36 
functions** |
   | `port-property-edit-frame.component.ts` | 86.5% | **72/74 (97.3%)** |
   | `workflow-websocket.service.ts` | 76.0% | **45/48 (93.8%)**, 15/15 
branches |
   
   Tests **47 -> 70**.
   
   Covered: the handshake URL's query construction and the heartbeat interval; 
the Yjs/Quill shared binding, its awareness and cursors module, and the three 
DOM triggers that drive it; and the quota component's per-day aggregation, its 
chart wiring, and the accumulator reset that makes a reload idempotent.
   
   ### Verification
   
   The build applied 26 mutations. Review then proposed 23 more, and **every 
one of the 23 was real -- none was refutable.** 33 distinct mutations were run 
in total (~54 runs), one at a time, anchor uniqueness asserted, reverted 
between each, with `git diff` on the production files confirmed empty after 
every revert.
   
   The recurring failure was **degenerate fixtures**, where two different 
inputs produce identical output so a swap cannot be seen:
   
   | Surviving mutation | Why nothing noticed |
   |---|---|
   | chart the workflow series into `datasetLineChart` | both divs received 
identical-looking data |
   | exchange the two chart div ids | same |
   | `sizePieChart` -> `datasetLineChart`, and `dataset.size` -> `dataset.did` 
| the pie series was unpinned entirely |
   | `getSharedModelAwareness()` -> `undefined`, and `cursors: true` -> `false` 
| nothing read the binding's arguments back |
   | the descriptor read for a different port id | only one port existed in the 
fixture |
   | `(click)` loses `connectQuillToText()`; `(focusout)` and `(keyup.enter)` 
dropped | handlers were called directly, never through the DOM |
   
   **One error I caught in my own repair, and only because mutations were run 
individually.** The first idempotence test asserted `workflows.length`, which 
is *unchanged* when `this.workflows = []` is dropped -- executions simply get 
re-filed under the existing panels. Running the two resets as separate 
mutations exposed it; the test now pins the per-workflow execution ids.
   
   ### Deliberately not included
   
   Two defects are reported rather than pinned, so neither is cemented as a 
contract:
   
   - **The handshake drops `cuid` on a live path.** 
`WorkflowWebsocketResource.myOnOpen` does 
`session.getRequestParameterMap.get("cuid").get(0).toInt` with no `Option` 
guard, while `admin-execution.component.ts:327, :340, :353` all call 
`socket.openWebsocket(wid)` with no computing-unit id -- so admin 
kill/pause/resume dial a URL the server cannot accept. The test that observes 
today's URL is named descriptively rather than approvingly and carries a note 
pointing at the gap.
   - **`sortBySize` is inverted relative to the `NzTableSortFn` contract.** 
`user-quota.component.ts:344-345` returns `b - a`, but ng-zorro applies 
`sortOrder === 'ascend' ? compareResult : -compareResult` and 
`nzSortDirections` defaults to `['ascend','descend',null]`, which the `<th>` 
does not override -- so the first click lights the up-caret while rendering 
largest-first. `admin-user.component.ts:268` uses the contract-correct form, so 
this is not a house convention. The test clicks twice and asserts row order 
*and* which caret is active in both directions, with a comment stating the 
mismatch.
   
   No production file is touched.
   
   ### Any related issues, documentation, discussions?
   
   Closes #7695
   
   ### How was this PR tested?
   
   ```
   npx ng test --watch=false --include="**/user-quota.component.spec.ts" 
--include="**/port-property-edit-frame.component.spec.ts" 
--include="**/workflow-websocket.service.spec.ts"
   ```
   
   ```
    Test Files  3 passed (3)
         Tests  70 passed (70)
   ```
   
   Coverage measured with `--coverage` on the same run. `yarn format:ci` passes.
   
   ### Was this PR authored or co-authored using generative AI tooling?
   
   Generated-by: Claude Code (Opus 5)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to