Skip to content

Commit 539ce24

Browse files
Add more tests covering MethodRow
1 parent b881a38 commit 539ce24

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

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

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,33 @@ describe(MethodRow.name, () => {
7272
expect(screen.queryByLabelText("Loading")).not.toBeInTheDocument();
7373
});
7474

75+
it("can change the type when there is no modeled method", async () => {
76+
render({ modeledMethods: [] });
77+
78+
onChange.mockReset();
79+
80+
await userEvent.selectOptions(
81+
screen.getByRole("combobox", { name: "Model type" }),
82+
"source",
83+
);
84+
85+
expect(onChange).toHaveBeenCalledTimes(1);
86+
expect(onChange).toHaveBeenCalledWith(method.signature, [
87+
{
88+
type: "source",
89+
input: "Argument[0]",
90+
output: "ReturnValue",
91+
kind: "value",
92+
provenance: "manual",
93+
signature: method.signature,
94+
packageName: method.packageName,
95+
typeName: method.typeName,
96+
methodName: method.methodName,
97+
methodParameters: method.methodParameters,
98+
},
99+
]);
100+
});
101+
75102
it("can change the kind", async () => {
76103
render();
77104

@@ -182,6 +209,38 @@ describe(MethodRow.name, () => {
182209
expect(kindInputs[0]).toHaveValue("source");
183210
});
184211

212+
it("can update fields when there are multiple models", async () => {
213+
render({
214+
modeledMethods: [
215+
{ ...modeledMethod, type: "source" },
216+
{ ...modeledMethod, type: "sink", kind: "code-injection" },
217+
{ ...modeledMethod, type: "summary" },
218+
],
219+
viewState: {
220+
...viewState,
221+
showMultipleModels: true,
222+
},
223+
});
224+
225+
onChange.mockReset();
226+
227+
expect(screen.getAllByRole("combobox", { name: "Kind" })[1]).toHaveValue(
228+
"code-injection",
229+
);
230+
231+
await userEvent.selectOptions(
232+
screen.getAllByRole("combobox", { name: "Kind" })[1],
233+
"sql-injection",
234+
);
235+
236+
expect(onChange).toHaveBeenCalledTimes(1);
237+
expect(onChange).toHaveBeenCalledWith(method.signature, [
238+
{ ...modeledMethod, type: "source" },
239+
{ ...modeledMethod, type: "sink", kind: "sql-injection" },
240+
{ ...modeledMethod, type: "summary" },
241+
]);
242+
});
243+
185244
it("renders an unmodelable method", () => {
186245
render({
187246
methodCanBeModeled: false,

0 commit comments

Comments
 (0)