Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ vi.mock("../../queue/queueService", async (importOriginal) => {
await importOriginal<typeof import("../../queue/queueService")>();
return {
...actual,
useSumbitQueueTask: vi.fn(),
useSumbitQueueTasks: vi.fn(),
};
});

Expand All @@ -31,7 +31,7 @@ vi.mock("@atlas/app-shell", async (importOriginal) => {
};
});

const mockedUseSubmitTask = queueService.useSumbitQueueTask as unknown as Mock;
const mockedUseSubmitTask = queueService.useSumbitQueueTasks as unknown as Mock;
const mockedUseQuery = apollo.useQuery as unknown as Mock;
const mockedUseInstrumentSession =
appShell.useInstrumentSession as unknown as Mock;
Expand Down Expand Up @@ -204,18 +204,20 @@ describe("ExperimentList", () => {
await waitFor(() => {
expect(mutateAsync).toHaveBeenCalledTimes(1);
expect(mutateAsync).toHaveBeenCalledWith({
experiment: {
name: "Exp 1",
instrument_session: "",
experiment_definition: {
data: { beam_energy: 20, focused_beam_size: 5, time_per_pdf: 10 },
name: "Def 1",
},
sample: {
data: { composition: "H2O", density: 1.2 },
name: "Sample A",
experiments: [
{
name: "Exp 1",
instrument_session: "",
experiment_definition: {
data: { beam_energy: 20, focused_beam_size: 5, time_per_pdf: 10 },
name: "Def 1",
},
sample: {
data: { composition: "H2O", density: 1.2 },
name: "Sample A",
},
},
},
],
});
});
});
Expand All @@ -238,34 +240,34 @@ describe("ExperimentList", () => {
fireEvent.click(screen.getByRole("button", { name: /add all to queue/i }));

await waitFor(() => {
expect(mutateAsync).toHaveBeenCalledTimes(2);
expect(mutateAsync).toHaveBeenCalledTimes(1);
expect(mutateAsync).toHaveBeenNthCalledWith(1, {
experiment: {
name: "Exp 1",
instrument_session: "",
experiment_definition: {
data: { beam_energy: 20, focused_beam_size: 5, time_per_pdf: 10 },
name: "Def 1",
},
sample: {
data: { composition: "H2O", density: 1.2 },
name: "Sample A",
},
},
});
expect(mutateAsync).toHaveBeenNthCalledWith(2, {
experiment: {
name: "Exp 2",
instrument_session: "",
experiment_definition: {
data: { beam_energy: 20, focused_beam_size: 5, time_per_pdf: 10 },
name: "Def 2",
experiments: [
{
name: "Exp 1",
instrument_session: "",
experiment_definition: {
data: { beam_energy: 20, focused_beam_size: 5, time_per_pdf: 10 },
name: "Def 1",
},
sample: {
data: { composition: "H2O", density: 1.2 },
name: "Sample A",
},
},
sample: {
data: { composition: "CO2", density: 1.2 },
name: "Sample B",
{
name: "Exp 2",
instrument_session: "",
experiment_definition: {
data: { beam_energy: 20, focused_beam_size: 5, time_per_pdf: 10 },
name: "Def 2",
},
sample: {
data: { composition: "CO2", density: 1.2 },
name: "Sample B",
},
},
},
],
});
});
});
Expand Down
30 changes: 13 additions & 17 deletions apps/i15-1/src/components/ExperimentTable/ULIMSExperimentsTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { columns, type ExperimentTableData } from "./columns";
import { useLocation } from "react-router-dom";
import { useMemo } from "react";
import QueueIcon from "@mui/icons-material/Queue";
import { useSumbitQueueTask } from "../../queue/queueService";
import { useSumbitQueueTasks } from "../../queue/queueService";
import { getSessionPlaylistQuery } from "../../graphql/getSessionPlaylistQuery";
import { type ExperimentNode } from "../../graphql/getSessionPlaylistQueryTyped";
import type {
Expand Down Expand Up @@ -56,24 +56,20 @@ const GET_EXPERIMENTS: TypedDocumentNode<
export function ExperimentList() {
const location = useLocation();
const { instrumentSession } = useInstrumentSession();
const { mutateAsync: submitTaskAsync } = useSumbitQueueTask();
const { mutateAsync: submitTasksAsync } = useSumbitQueueTasks();

async function submitQueueTasks(selected: ExperimentTableData[]) {
await Promise.all(
selected.map((exp) =>
submitTaskAsync({
experiment: {
name: exp.experiment.name,
experiment_definition: exp.experiment
.experimentDefinition as ExperimentDefinition,
sample: exp.experiment.sample as Sample,
instrument_session:
exp.experiment.sample.instrumentSessions?.[0]?.instrumentSessionReference?.toLowerCase() ??
"",
},
}),
),
);
await submitTasksAsync({
experiments: selected.map((exp) => ({
name: exp.experiment.name,
experiment_definition: exp.experiment
.experimentDefinition as ExperimentDefinition,
sample: exp.experiment.sample as Sample,
instrument_session:
exp.experiment.sample.instrumentSessions?.[0]?.instrumentSessionReference?.toLowerCase() ??
"",
})),
});
}

const visit = visitTextToVisit(instrumentSession);
Expand Down
12 changes: 6 additions & 6 deletions apps/i15-1/src/queue/queueService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -270,16 +270,16 @@ export const clearHistory = async (): Promise<number> => {
return response.data;
};

export const submitQueueTask = async ({
experiment,
export const submitQueueTasks = async ({
experiments,
taskPosition,
}: {
experiment: Experiment | TaskRequest;
experiments: (Experiment | TaskRequest)[];
taskPosition?: number;
}) => {
const data: AddTasksToQueueQueuePostData = {
url: `/queue`,
body: [experiment],
body: experiments,
query: {
position: taskPosition,
},
Expand All @@ -288,10 +288,10 @@ export const submitQueueTask = async ({
return await addTasksToQueueQueuePost(data);
};

export function useSumbitQueueTask() {
export function useSumbitQueueTasks() {
const client = useQueryClient();
return useMutation({
mutationFn: submitQueueTask,
mutationFn: submitQueueTasks,
onSuccess: async () => {
await Promise.all([
client.invalidateQueries({ queryKey: ["queue"] }),
Expand Down
Loading