feat(tickets): contrôle « Trier par… » dans la barre de facettes (#21)
Ajoute le sélecteur de tri dans TicketFacetsBar et propage le critère
via useTicketSearch jusqu'à TicketsPanel et TicketPicker, sur le contrat
de tri backend (e523f44). Couvre le tri par les tests tickets et
TicketPicker.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -267,6 +267,48 @@ describe("TicketsView", () => {
|
||||
expect(screen.getByText("Alpha")).toBeTruthy();
|
||||
});
|
||||
|
||||
it("sorts via the « Trier par… » control: relays sort + toggles direction (#21)", async () => {
|
||||
const listSpy = vi.spyOn(ticket, "list");
|
||||
await ticket.create(PROJECT_ID, { title: "Alpha" });
|
||||
await ticket.create(PROJECT_ID, { title: "Bravo" });
|
||||
|
||||
renderView(ticket, system, agent);
|
||||
await screen.findByText("Alpha");
|
||||
|
||||
// No sort chosen ⇒ the gateway sees no `sort` (historical order preserved).
|
||||
expect(listSpy.mock.calls.at(-1)?.[1]?.sort).toBeUndefined();
|
||||
|
||||
// Choose a field ⇒ ascending by default, relayed in the query.
|
||||
fireEvent.change(screen.getByLabelText("sort tickets by"), {
|
||||
target: { value: "title" },
|
||||
});
|
||||
await waitFor(() =>
|
||||
expect(listSpy.mock.calls.at(-1)?.[1]?.sort).toEqual({
|
||||
field: "title",
|
||||
direction: "asc",
|
||||
}),
|
||||
);
|
||||
|
||||
// The direction toggle flips asc → desc.
|
||||
fireEvent.click(
|
||||
screen.getByLabelText("sort direction ascending"),
|
||||
);
|
||||
await waitFor(() =>
|
||||
expect(listSpy.mock.calls.at(-1)?.[1]?.sort).toEqual({
|
||||
field: "title",
|
||||
direction: "desc",
|
||||
}),
|
||||
);
|
||||
|
||||
// Back to « Par défaut » ⇒ `sort` dropped from the query again.
|
||||
fireEvent.change(screen.getByLabelText("sort tickets by"), {
|
||||
target: { value: "" },
|
||||
});
|
||||
await waitFor(() =>
|
||||
expect(listSpy.mock.calls.at(-1)?.[1]?.sort).toBeUndefined(),
|
||||
);
|
||||
});
|
||||
|
||||
it("opens the detail and edits status with a version bump", async () => {
|
||||
const t = await ticket.create(PROJECT_ID, { title: "Editable" });
|
||||
renderView(ticket, system, agent);
|
||||
|
||||
Reference in New Issue
Block a user