32f098a6fc
* fix: show question icon only for pending input * fix: address pending input review feedback * fix: reduce pending input sidebar complexity * fix: address clarification review comments * test: cover pending clarification hook
49 lines
1.8 KiB
TypeScript
49 lines
1.8 KiB
TypeScript
import { afterEach, describe, expect, it } from "vitest";
|
|
import { cleanup, render, screen } from "@testing-library/react";
|
|
import type { ComponentProps } from "react";
|
|
import { StateProvider } from "@/components/state-provider";
|
|
import { TaskItem } from "./task-item";
|
|
|
|
const REVIEW_ICON_TEST_ID = "task-state-review";
|
|
const WAITING_FOR_INPUT_ICON_TEST_ID = "task-state-waiting-for-input";
|
|
|
|
afterEach(() => cleanup());
|
|
|
|
function renderTaskItem(props: Partial<ComponentProps<typeof TaskItem>> = {}) {
|
|
return render(
|
|
<StateProvider>
|
|
<TaskItem title="Needs answer" state="REVIEW" {...props} />
|
|
</StateProvider>,
|
|
);
|
|
}
|
|
|
|
describe("TaskItem status icon", () => {
|
|
it("keeps the review check when the session is idle after a turn", () => {
|
|
renderTaskItem({ sessionState: "WAITING_FOR_INPUT" });
|
|
|
|
expect(screen.queryByTestId(REVIEW_ICON_TEST_ID)).not.toBeNull();
|
|
expect(screen.queryByTestId(WAITING_FOR_INPUT_ICON_TEST_ID)).toBeNull();
|
|
});
|
|
|
|
it("shows question icon when a clarification is pending", () => {
|
|
renderTaskItem({ sessionState: "WAITING_FOR_INPUT", hasPendingClarification: true });
|
|
|
|
expect(screen.queryByTestId(WAITING_FOR_INPUT_ICON_TEST_ID)).not.toBeNull();
|
|
expect(screen.queryByTestId(REVIEW_ICON_TEST_ID)).toBeNull();
|
|
});
|
|
|
|
it("shows question icon when task state is waiting for input", () => {
|
|
renderTaskItem({ state: "WAITING_FOR_INPUT", hasPendingClarification: false });
|
|
|
|
expect(screen.queryByTestId(WAITING_FOR_INPUT_ICON_TEST_ID)).not.toBeNull();
|
|
expect(screen.queryByTestId(REVIEW_ICON_TEST_ID)).toBeNull();
|
|
});
|
|
|
|
it("keeps the review check for completed review tasks", () => {
|
|
renderTaskItem({ sessionState: "COMPLETED" });
|
|
|
|
expect(screen.queryByTestId(REVIEW_ICON_TEST_ID)).not.toBeNull();
|
|
expect(screen.queryByTestId(WAITING_FOR_INPUT_ICON_TEST_ID)).toBeNull();
|
|
});
|
|
});
|