Skip to content

Commit 0ff523a

Browse files
Add tests for for the add/remove model buttons
1 parent 1d0a1f5 commit 0ff523a

1 file changed

Lines changed: 63 additions & 0 deletions

File tree

extensions/ql-vscode/src/view/model-editor/__tests__/MethodRow.spec.tsx

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,4 +358,67 @@ describe(MethodRow.name, () => {
358358
expect(removeButton?.getElementsByTagName("input")[0]).toBeEnabled();
359359
}
360360
});
361+
362+
it("can add a new model", async () => {
363+
render({
364+
modeledMethods: [modeledMethod],
365+
viewState: {
366+
...viewState,
367+
showMultipleModels: true,
368+
},
369+
});
370+
371+
await userEvent.click(screen.getByLabelText("Add new model"));
372+
373+
const kindInputs = screen.getAllByRole("combobox", { name: "Model type" });
374+
expect(kindInputs).toHaveLength(2);
375+
expect(kindInputs[0]).toHaveValue(modeledMethod.type);
376+
expect(kindInputs[1]).toHaveValue("none");
377+
});
378+
379+
it("can delete the first modeled method", async () => {
380+
render({
381+
modeledMethods: [
382+
{ ...modeledMethod, type: "source" },
383+
{ ...modeledMethod, type: "sink" },
384+
{ ...modeledMethod, type: "none" },
385+
{ ...modeledMethod, type: "summary" },
386+
],
387+
viewState: {
388+
...viewState,
389+
showMultipleModels: true,
390+
},
391+
});
392+
393+
await userEvent.click(screen.getAllByLabelText("Remove model")[0]);
394+
395+
const kindInputs = screen.getAllByRole("combobox", { name: "Model type" });
396+
expect(kindInputs).toHaveLength(3);
397+
expect(kindInputs[0]).toHaveValue("sink");
398+
expect(kindInputs[1]).toHaveValue("none");
399+
expect(kindInputs[2]).toHaveValue("summary");
400+
});
401+
402+
it("can delete a modeled method in the middle", async () => {
403+
render({
404+
modeledMethods: [
405+
{ ...modeledMethod, type: "source" },
406+
{ ...modeledMethod, type: "sink" },
407+
{ ...modeledMethod, type: "none" },
408+
{ ...modeledMethod, type: "summary" },
409+
],
410+
viewState: {
411+
...viewState,
412+
showMultipleModels: true,
413+
},
414+
});
415+
416+
await userEvent.click(screen.getAllByLabelText("Remove model")[2]);
417+
418+
const kindInputs = screen.getAllByRole("combobox", { name: "Model type" });
419+
expect(kindInputs).toHaveLength(3);
420+
expect(kindInputs[0]).toHaveValue("source");
421+
expect(kindInputs[1]).toHaveValue("sink");
422+
expect(kindInputs[2]).toHaveValue("summary");
423+
});
361424
});

0 commit comments

Comments
 (0)