Skip to content

Commit 32f3d32

Browse files
committed
Add tests for opening query text/file
1 parent dd5da2b commit 32f3d32

2 files changed

Lines changed: 101 additions & 27 deletions

File tree

extensions/ql-vscode/src/vscode-tests/cli-integration/remote-queries/variant-analysis-manager.test.ts

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@ import {
44
env,
55
extensions,
66
QuickPickItem,
7+
TextDocument,
8+
TextEditor,
79
Uri,
810
window,
11+
workspace,
912
} from "vscode";
1013
import { CodeQLExtensionInterface } from "../../../extension";
1114
import { extLogger } from "../../../common";
@@ -1121,4 +1124,94 @@ describe("Variant Analysis Manager", () => {
11211124
});
11221125
});
11231126
});
1127+
1128+
describe("openQueryText", () => {
1129+
let variantAnalysis: VariantAnalysis;
1130+
let variantAnalysisStorageLocation: string;
1131+
1132+
let showTextDocumentSpy: jest.SpiedFunction<typeof window.showTextDocument>;
1133+
let openTextDocumentSpy: jest.SpiedFunction<
1134+
typeof workspace.openTextDocument
1135+
>;
1136+
1137+
beforeEach(async () => {
1138+
variantAnalysis = createMockVariantAnalysis({});
1139+
1140+
variantAnalysisStorageLocation =
1141+
variantAnalysisManager.getVariantAnalysisStorageLocation(
1142+
variantAnalysis.id,
1143+
);
1144+
await createTimestampFile(variantAnalysisStorageLocation);
1145+
await variantAnalysisManager.rehydrateVariantAnalysis(variantAnalysis);
1146+
1147+
showTextDocumentSpy = jest
1148+
.spyOn(window, "showTextDocument")
1149+
.mockResolvedValue(undefined as unknown as TextEditor);
1150+
openTextDocumentSpy = jest
1151+
.spyOn(workspace, "openTextDocument")
1152+
.mockResolvedValue(undefined as unknown as TextDocument);
1153+
});
1154+
1155+
afterEach(() => {
1156+
fs.rmSync(variantAnalysisStorageLocation, { recursive: true });
1157+
});
1158+
1159+
it("opens the query text", async () => {
1160+
await variantAnalysisManager.openQueryText(variantAnalysis.id);
1161+
1162+
expect(showTextDocumentSpy).toHaveBeenCalledTimes(1);
1163+
expect(openTextDocumentSpy).toHaveBeenCalledTimes(1);
1164+
1165+
const uri: Uri = openTextDocumentSpy.mock.calls[0][0] as Uri;
1166+
expect(uri.scheme).toEqual("codeql-variant-analysis");
1167+
expect(uri.path).toEqual(variantAnalysis.query.filePath);
1168+
const params = new URLSearchParams(uri.query);
1169+
expect(Array.from(params.keys())).toEqual(["variantAnalysisId"]);
1170+
expect(params.get("variantAnalysisId")).toEqual(
1171+
variantAnalysis.id.toString(),
1172+
);
1173+
});
1174+
});
1175+
1176+
describe("openQueryFile", () => {
1177+
let variantAnalysis: VariantAnalysis;
1178+
let variantAnalysisStorageLocation: string;
1179+
1180+
let showTextDocumentSpy: jest.SpiedFunction<typeof window.showTextDocument>;
1181+
let openTextDocumentSpy: jest.SpiedFunction<
1182+
typeof workspace.openTextDocument
1183+
>;
1184+
1185+
beforeEach(async () => {
1186+
variantAnalysis = createMockVariantAnalysis({});
1187+
1188+
variantAnalysisStorageLocation =
1189+
variantAnalysisManager.getVariantAnalysisStorageLocation(
1190+
variantAnalysis.id,
1191+
);
1192+
await createTimestampFile(variantAnalysisStorageLocation);
1193+
await variantAnalysisManager.rehydrateVariantAnalysis(variantAnalysis);
1194+
1195+
showTextDocumentSpy = jest
1196+
.spyOn(window, "showTextDocument")
1197+
.mockResolvedValue(undefined as unknown as TextEditor);
1198+
openTextDocumentSpy = jest
1199+
.spyOn(workspace, "openTextDocument")
1200+
.mockResolvedValue(undefined as unknown as TextDocument);
1201+
});
1202+
1203+
afterEach(() => {
1204+
fs.rmSync(variantAnalysisStorageLocation, { recursive: true });
1205+
});
1206+
1207+
it("opens the query file", async () => {
1208+
await variantAnalysisManager.openQueryFile(variantAnalysis.id);
1209+
1210+
expect(showTextDocumentSpy).toHaveBeenCalledTimes(1);
1211+
expect(openTextDocumentSpy).toHaveBeenCalledTimes(1);
1212+
1213+
const filename: string = openTextDocumentSpy.mock.calls[0][0] as string;
1214+
expect(filename).toEqual(variantAnalysis.query.filePath);
1215+
});
1216+
});
11241217
});

extensions/ql-vscode/src/vscode-tests/no-workspace/remote-queries/variant-analysis-history.test.ts

Lines changed: 8 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,7 @@ import {
88
} from "fs-extra";
99
import { join } from "path";
1010

11-
import {
12-
ExtensionContext,
13-
TextDocument,
14-
TextEditor,
15-
Uri,
16-
window,
17-
workspace,
18-
} from "vscode";
11+
import { commands, ExtensionContext, Uri } from "vscode";
1912
import { QueryHistoryConfig } from "../../../config";
2013
import { DatabaseManager } from "../../../databases";
2114
import { tmpDir, walkDirectory } from "../../../helpers";
@@ -71,10 +64,7 @@ describe("Variant Analyses and QueryHistoryManager", () => {
7164
showView: showViewStub,
7265
} as any as VariantAnalysisManager;
7366

74-
let showTextDocumentSpy: jest.SpiedFunction<typeof window.showTextDocument>;
75-
let openTextDocumentSpy: jest.SpiedFunction<
76-
typeof workspace.openTextDocument
77-
>;
67+
let executeCommandSpy: jest.SpiedFunction<typeof commands.executeCommand>;
7868

7969
beforeEach(async () => {
8070
// Since these tests change the state of the query history manager, we need to copy the original
@@ -107,12 +97,9 @@ describe("Variant Analyses and QueryHistoryManager", () => {
10797
);
10898
disposables.push(qhm);
10999

110-
showTextDocumentSpy = jest
111-
.spyOn(window, "showTextDocument")
112-
.mockResolvedValue(undefined as unknown as TextEditor);
113-
openTextDocumentSpy = jest
114-
.spyOn(workspace, "openTextDocument")
115-
.mockResolvedValue(undefined as unknown as TextDocument);
100+
executeCommandSpy = jest
101+
.spyOn(commands, "executeCommand")
102+
.mockResolvedValue(undefined);
116103
});
117104

118105
afterEach(() => {
@@ -195,15 +182,9 @@ describe("Variant Analyses and QueryHistoryManager", () => {
195182
await qhm.readQueryHistory();
196183
await qhm.handleShowQueryText(qhm.treeDataProvider.allHistory[0], []);
197184

198-
expect(showTextDocumentSpy).toBeCalledTimes(1);
199-
expect(openTextDocumentSpy).toBeCalledTimes(1);
200-
201-
const uri: Uri = openTextDocumentSpy.mock.calls[0][0] as Uri;
202-
expect(uri.scheme).toBe("codeql");
203-
const params = new URLSearchParams(uri.query);
204-
expect(params.get("isQuickEval")).toBe("false");
205-
expect(params.get("queryText")).toBe(
206-
rawQueryHistory[0].variantAnalysis.query.text,
185+
expect(executeCommandSpy).toHaveBeenCalledWith(
186+
"codeQL.openVariantAnalysisQueryText",
187+
rawQueryHistory[0].variantAnalysis.id,
207188
);
208189
});
209190

0 commit comments

Comments
 (0)