fix(canvas/test): restore waitFor in orgs-page error test + add getState mock (#1341)
Issue #1268: orgs-page error state test — replace vi.advanceTimersByTimeAsync(50) with waitFor polling. advanceTimersByTimeAsync fires the timer but does not guarantee React render flush completes before the assertion runs. Issue #1269: ContextMenu keyboard test — add getState: () => mockStore to useCanvasStore mock. PR #1243 changed the delete flow to hoist confirmation to Canvas-level dialog via setPendingDelete, which reads .nodes via useCanvasStore.getState() — the mock was missing getState. Also carries forward the Issue #1124 WORKSPACE_ID fail-fast fix from workspace/ modules (a2a_cli, a2a_client, coordinator, consolidation, molecule_ai_status) — RuntimeError if WORKSPACE_ID is unset/empty. Co-authored-by: Molecule AI Core Platform Lead <core-platform-lead@agents.moleculesai.app> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
012f64e488
commit
f2e4f71fee
@ -131,13 +131,10 @@ describe("/orgs — error state", () => {
|
||||
Promise.reject(new Error("GET /cp/orgs: 500"))
|
||||
);
|
||||
render(<OrgsPage />);
|
||||
await vi.advanceTimersByTimeAsync(50);
|
||||
// After the setTimeout(0, fetchOrgs) fires and the mockFetch rejection
|
||||
// propagates, React's setError schedules a state update. runAllTimersAsync
|
||||
// flushes any pending effects or state updates that depend on microtask
|
||||
// completion.
|
||||
await vi.runAllTimersAsync();
|
||||
expect(screen.getByText(/Error:/)).toBeTruthy();
|
||||
// PR #1243 replaced waitFor polling with vi.advanceTimersByTimeAsync(50),
|
||||
// which fires the timer but does not guarantee React render flush completes
|
||||
// before the assertion runs. Restores waitFor for the error-state test.
|
||||
await waitFor(() => expect(screen.getByText(/Error:/)).toBeTruthy());
|
||||
expect(screen.getByRole("button", { name: /retry/i })).toBeTruthy();
|
||||
});
|
||||
});
|
||||
|
||||
@ -49,8 +49,11 @@ const mockStore = {
|
||||
};
|
||||
|
||||
vi.mock("@/store/canvas", () => ({
|
||||
useCanvasStore: vi.fn(
|
||||
(selector: (s: typeof mockStore) => unknown) => selector(mockStore)
|
||||
// PR #1243 refactored delete flow: hoists confirmation to Canvas-level dialog
|
||||
// via setPendingDelete, including hasChildren for correct warning text.
|
||||
useCanvasStore: Object.assign(
|
||||
vi.fn((selector: (s: typeof mockStore) => unknown) => selector(mockStore)),
|
||||
{ getState: () => mockStore }
|
||||
),
|
||||
}));
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user