fix(workspace): skip queries for missing jobs

This commit is contained in:
Gabriel Brown
2026-07-10 17:24:32 -04:00
parent 2beeeb1732
commit 926008fd3a
2 changed files with 39 additions and 10 deletions
@@ -1,11 +1,12 @@
import { render, screen } from '@testing-library/react';
import { getFunctionName } from 'convex/server';
import { describe, expect, it, vi } from 'vitest';
import { AgentWorkspaceShell } from '../../src/components/agent-workspace/agent-workspace-shell';
const { mockUseMutation, mockUseQuery } = vi.hoisted(() => ({
mockUseMutation: vi.fn(() => vi.fn()),
mockUseQuery: vi.fn(() => null),
mockUseQuery: vi.fn(),
}));
vi.mock('convex/react', () => ({
@@ -21,11 +22,29 @@ vi.mock('sonner', () => ({
}));
describe('AgentWorkspaceShell', () => {
it('renders a missing state when the job query returns null', () => {
it('renders a missing state and skips dependent queries for a null job', () => {
mockUseQuery.mockImplementation((query) =>
getFunctionName(query) === 'agentJobs:get' ? null : undefined,
);
render(<AgentWorkspaceShell jobId={'job-1' as never} />);
expect(
screen.getByText('This workspace was not found.'),
).toBeInTheDocument();
expect(
mockUseQuery.mock.calls.map(([query]) => getFunctionName(query)),
).toEqual([
'agentJobs:get',
'agentJobs:listMessages',
'agentJobs:listEvents',
'agentJobs:listWorkspaceChanges',
'agentJobs:listInteractionRequests',
'agentJobs:getWorkspaceUiState',
]);
expect(mockUseQuery.mock.calls[0]?.[1]).toEqual({ jobId: 'job-1' });
for (let call = 2; call <= 6; call += 1) {
expect(mockUseQuery.mock.calls[call - 1]?.[1]).toBe('skip');
}
});
});