Skip to content

Commit fca68ed

Browse files
authored
Merge pull request #2969 from github/koesie10/fix-unmodeled-unsaved
Fix unmodeled methods always being marked as unsaved
2 parents b9279dc + 00b6ccd commit fca68ed

File tree

2 files changed

+45
-5
lines changed

2 files changed

+45
-5
lines changed

extensions/ql-vscode/src/view/model-editor/ModelKindDropdown.tsx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,11 @@ export const ModelKindDropdown = ({
6262
);
6363

6464
useEffect(() => {
65-
const value = modeledMethod?.kind;
66-
if (value === undefined && kinds.length > 0) {
67-
onChangeKind(kinds[0]);
68-
}
65+
const value = modeledMethod?.kind ?? "";
6966

70-
if (value !== undefined && !kinds.includes(value)) {
67+
if (kinds.length === 0 && value !== "") {
68+
onChangeKind("");
69+
} else if (kinds.length > 0 && !kinds.includes(value)) {
7170
onChangeKind(kinds[0]);
7271
}
7372
}, [modeledMethod?.kind, kinds, onChangeKind]);

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

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,45 @@ describe(ModelKindDropdown.name, () => {
9292
}),
9393
);
9494
});
95+
96+
it("does not call onChange when unmodeled and the kind is valid", () => {
97+
const method = createMethod();
98+
const modeledMethod = createModeledMethod({
99+
type: "none",
100+
kind: "",
101+
});
102+
103+
render(
104+
<ModelKindDropdown
105+
method={method}
106+
modeledMethod={modeledMethod}
107+
onChange={onChange}
108+
/>,
109+
);
110+
111+
expect(onChange).not.toHaveBeenCalled();
112+
});
113+
114+
it("calls onChange when unmodeled and the kind is valid", () => {
115+
const method = createMethod();
116+
const modeledMethod = createModeledMethod({
117+
type: "none",
118+
kind: "local",
119+
});
120+
121+
render(
122+
<ModelKindDropdown
123+
method={method}
124+
modeledMethod={modeledMethod}
125+
onChange={onChange}
126+
/>,
127+
);
128+
129+
expect(onChange).toHaveBeenCalledTimes(1);
130+
expect(onChange).toHaveBeenCalledWith(
131+
expect.objectContaining({
132+
kind: "",
133+
}),
134+
);
135+
});
95136
});

0 commit comments

Comments
 (0)