Skip to content

Commit 55b9b2e

Browse files
Use mocks instead of spies in tests
1 parent ec42728 commit 55b9b2e

File tree

3 files changed

+46
-72
lines changed

3 files changed

+46
-72
lines changed

extensions/ql-vscode/test/vscode-tests/cli-integration/local-queries/skeleton-query-wizard.test.ts

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import type {
2323
DatabaseManager,
2424
FullDatabaseOptions,
2525
} from "../../../../src/databases/local-databases";
26-
import { DatabaseFetcher } from "../../../../src/databases/database-fetcher";
26+
import type { DatabaseFetcher } from "../../../../src/databases/database-fetcher";
2727
import { createMockDB } from "../../../factories/databases/databases";
2828
import { asError } from "../../../../src/common/helpers-pure";
2929
import { Setting } from "../../../../src/config";
@@ -56,9 +56,7 @@ describe("SkeletonQueryWizard", () => {
5656
let createExampleQlFileSpy: jest.SpiedFunction<
5757
typeof QlPackGenerator.prototype.createExampleQlFile
5858
>;
59-
let promptImportGithubDatabaseSpy: jest.SpiedFunction<
60-
DatabaseFetcher["promptImportGithubDatabase"]
61-
>;
59+
let promptImportGithubDatabaseMock: jest.Mock<DatabaseItem | undefined>;
6260
let openTextDocumentSpy: jest.SpiedFunction<
6361
typeof workspace.openTextDocument
6462
>;
@@ -113,12 +111,10 @@ describe("SkeletonQueryWizard", () => {
113111
},
114112
] as WorkspaceFolder[]);
115113

116-
databaseFetcher = new DatabaseFetcher(
117-
mockApp,
118-
mockDatabaseManager,
119-
storagePath,
120-
mockCli,
121-
);
114+
promptImportGithubDatabaseMock = jest.fn().mockReturnValue(undefined);
115+
databaseFetcher = mockedObject<DatabaseFetcher>({
116+
promptImportGithubDatabase: promptImportGithubDatabaseMock,
117+
});
122118

123119
quickPickSpy = jest.spyOn(window, "showQuickPick").mockResolvedValueOnce(
124120
mockedQuickPickItem({
@@ -138,9 +134,6 @@ describe("SkeletonQueryWizard", () => {
138134
createExampleQlFileSpy = jest
139135
.spyOn(QlPackGenerator.prototype, "createExampleQlFile")
140136
.mockResolvedValue(undefined);
141-
promptImportGithubDatabaseSpy = jest
142-
.spyOn(databaseFetcher, "promptImportGithubDatabase")
143-
.mockResolvedValue(undefined);
144137
openTextDocumentSpy = jest
145138
.spyOn(workspace, "openTextDocument")
146139
.mockResolvedValue({} as TextDocument);
@@ -203,7 +196,7 @@ describe("SkeletonQueryWizard", () => {
203196
title: "Download database",
204197
}),
205198
);
206-
expect(promptImportGithubDatabaseSpy).not.toHaveBeenCalled();
199+
expect(promptImportGithubDatabaseMock).not.toHaveBeenCalled();
207200
});
208201

209202
it("should download database for selected language when selecting download in prompt", async () => {
@@ -220,7 +213,7 @@ describe("SkeletonQueryWizard", () => {
220213
await wizard.execute();
221214
await wizard.waitForDownload();
222215

223-
expect(promptImportGithubDatabaseSpy).toHaveBeenCalled();
216+
expect(promptImportGithubDatabaseMock).toHaveBeenCalled();
224217
});
225218

226219
it("should open the query file", async () => {
@@ -329,7 +322,7 @@ describe("SkeletonQueryWizard", () => {
329322
it("should not download a new database for language", async () => {
330323
await wizard.execute();
331324

332-
expect(promptImportGithubDatabaseSpy).not.toHaveBeenCalled();
325+
expect(promptImportGithubDatabaseMock).not.toHaveBeenCalled();
333326
});
334327

335328
it("should not select the database", async () => {
@@ -378,7 +371,7 @@ describe("SkeletonQueryWizard", () => {
378371
it("should not download a new database for language", async () => {
379372
await wizard.execute();
380373

381-
expect(promptImportGithubDatabaseSpy).not.toHaveBeenCalled();
374+
expect(promptImportGithubDatabaseMock).not.toHaveBeenCalled();
382375
});
383376

384377
it("should select an existing database", async () => {
@@ -426,7 +419,7 @@ describe("SkeletonQueryWizard", () => {
426419
await wizard.execute();
427420
await wizard.waitForDownload();
428421

429-
expect(promptImportGithubDatabaseSpy).toHaveBeenCalled();
422+
expect(promptImportGithubDatabaseMock).toHaveBeenCalled();
430423
});
431424
});
432425
});

extensions/ql-vscode/test/vscode-tests/no-workspace/databases/github-databases/download.test.ts

Lines changed: 16 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,9 @@ import {
1010
askForGitHubDatabaseDownload,
1111
downloadDatabaseFromGitHub,
1212
} from "../../../../../src/databases/github-databases/download";
13-
import type { DatabaseManager } from "../../../../../src/databases/local-databases";
13+
import type { DatabaseItem } from "../../../../../src/databases/local-databases";
1414
import type { GitHubDatabaseConfig } from "../../../../../src/config";
15-
import type { CodeQLCliServer } from "../../../../../src/codeql-cli/cli";
16-
import { DatabaseFetcher } from "../../../../../src/databases/database-fetcher";
15+
import type { DatabaseFetcher } from "../../../../../src/databases/database-fetcher";
1716
import * as dialog from "../../../../../src/common/vscode/dialog";
1817
import type { CodeqlDatabase } from "../../../../../src/databases/github-databases/api";
1918
import { createMockApp } from "../../../../__mocks__/appMock";
@@ -96,11 +95,8 @@ describe("downloadDatabaseFromGitHub", () => {
9695
let octokit: Octokit;
9796
const owner = "github";
9897
const repo = "codeql";
99-
let databaseManager: DatabaseManager;
10098
let databaseFetcher: DatabaseFetcher;
10199

102-
const storagePath = "/a/b/c/d";
103-
let cliServer: CodeQLCliServer;
104100
const app = createMockApp();
105101

106102
let databases = [
@@ -117,20 +113,15 @@ describe("downloadDatabaseFromGitHub", () => {
117113
];
118114

119115
let showQuickPickSpy: jest.SpiedFunction<typeof window.showQuickPick>;
120-
let downloadGitHubDatabaseFromUrlSpy: jest.SpiedFunction<
121-
DatabaseFetcher["downloadGitHubDatabaseFromUrl"]
122-
>;
116+
let downloadGitHubDatabaseFromUrlMock: jest.Mock<DatabaseItem | undefined>;
123117

124118
beforeEach(() => {
125119
octokit = mockedObject<Octokit>({});
126-
databaseManager = mockedObject<DatabaseManager>({});
127-
cliServer = mockedObject<CodeQLCliServer>({});
128-
databaseFetcher = new DatabaseFetcher(
129-
app,
130-
databaseManager,
131-
storagePath,
132-
cliServer,
133-
);
120+
121+
downloadGitHubDatabaseFromUrlMock = jest.fn().mockReturnValue(undefined);
122+
databaseFetcher = mockedObject<DatabaseFetcher>({
123+
downloadGitHubDatabaseFromUrl: downloadGitHubDatabaseFromUrlMock,
124+
});
134125

135126
showQuickPickSpy = jest.spyOn(window, "showQuickPick").mockResolvedValue(
136127
mockedQuickPickItem([
@@ -139,9 +130,6 @@ describe("downloadDatabaseFromGitHub", () => {
139130
}),
140131
]),
141132
);
142-
downloadGitHubDatabaseFromUrlSpy = jest
143-
.spyOn(databaseFetcher, "downloadGitHubDatabaseFromUrl")
144-
.mockResolvedValue(undefined);
145133
});
146134

147135
it("downloads the database", async () => {
@@ -154,8 +142,8 @@ describe("downloadDatabaseFromGitHub", () => {
154142
app.commands,
155143
);
156144

157-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledTimes(1);
158-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledWith(
145+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledTimes(1);
146+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledWith(
159147
databases[0].url,
160148
databases[0].id,
161149
databases[0].created_at,
@@ -213,8 +201,8 @@ describe("downloadDatabaseFromGitHub", () => {
213201
app.commands,
214202
);
215203

216-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledTimes(1);
217-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledWith(
204+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledTimes(1);
205+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledWith(
218206
databases[1].url,
219207
databases[1].id,
220208
databases[1].created_at,
@@ -264,8 +252,8 @@ describe("downloadDatabaseFromGitHub", () => {
264252
app.commands,
265253
);
266254

267-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledTimes(2);
268-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledWith(
255+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledTimes(2);
256+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledWith(
269257
databases[0].url,
270258
databases[0].id,
271259
databases[0].created_at,
@@ -277,7 +265,7 @@ describe("downloadDatabaseFromGitHub", () => {
277265
true,
278266
false,
279267
);
280-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledWith(
268+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledWith(
281269
databases[1].url,
282270
databases[1].id,
283271
databases[1].created_at,
@@ -321,7 +309,7 @@ describe("downloadDatabaseFromGitHub", () => {
321309
app.commands,
322310
);
323311

324-
expect(downloadGitHubDatabaseFromUrlSpy).not.toHaveBeenCalled();
312+
expect(downloadGitHubDatabaseFromUrlMock).not.toHaveBeenCalled();
325313
});
326314
});
327315
});

extensions/ql-vscode/test/vscode-tests/no-workspace/databases/github-databases/updates.test.ts

Lines changed: 19 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@ import {
88
mockedQuickPickItem,
99
} from "../../../utils/mocking.helpers";
1010
import type { CodeqlDatabase } from "../../../../../src/databases/github-databases/api";
11-
import type { DatabaseManager } from "../../../../../src/databases/local-databases";
11+
import type {
12+
DatabaseItem,
13+
DatabaseManager,
14+
} from "../../../../../src/databases/local-databases";
1215
import type { GitHubDatabaseConfig } from "../../../../../src/config";
13-
import type { CodeQLCliServer } from "../../../../../src/codeql-cli/cli";
14-
import { DatabaseFetcher } from "../../../../../src/databases/database-fetcher";
16+
import type { DatabaseFetcher } from "../../../../../src/databases/database-fetcher";
1517
import * as dialog from "../../../../../src/common/vscode/dialog";
1618
import type { DatabaseUpdate } from "../../../../../src/databases/github-databases/updates";
1719
import {
@@ -345,8 +347,6 @@ describe("downloadDatabaseUpdateFromGitHub", () => {
345347
const repo = "codeql";
346348
let databaseManager: DatabaseManager;
347349
let databaseFetcher: DatabaseFetcher;
348-
const storagePath = "/a/b/c/d";
349-
let cliServer: CodeQLCliServer;
350350
const app = createMockApp();
351351

352352
let updates: DatabaseUpdate[] = [
@@ -368,22 +368,18 @@ describe("downloadDatabaseUpdateFromGitHub", () => {
368368
];
369369

370370
let showQuickPickSpy: jest.SpiedFunction<typeof window.showQuickPick>;
371-
let downloadGitHubDatabaseFromUrlSpy: jest.SpiedFunction<
372-
DatabaseFetcher["downloadGitHubDatabaseFromUrl"]
373-
>;
371+
let downloadGitHubDatabaseFromUrlMock: jest.Mock<DatabaseItem | undefined>;
374372

375373
beforeEach(() => {
376374
octokit = mockedObject<Octokit>({});
377375
databaseManager = mockedObject<DatabaseManager>({
378376
currentDatabaseItem: mockDatabaseItem(),
379377
});
380-
cliServer = mockedObject<CodeQLCliServer>({});
381-
databaseFetcher = new DatabaseFetcher(
382-
app,
383-
databaseManager,
384-
storagePath,
385-
cliServer,
386-
);
378+
379+
downloadGitHubDatabaseFromUrlMock = jest.fn().mockReturnValue(undefined);
380+
databaseFetcher = mockedObject<DatabaseFetcher>({
381+
downloadGitHubDatabaseFromUrl: downloadGitHubDatabaseFromUrlMock,
382+
});
387383

388384
showQuickPickSpy = jest.spyOn(window, "showQuickPick").mockResolvedValue(
389385
mockedQuickPickItem([
@@ -392,9 +388,6 @@ describe("downloadDatabaseUpdateFromGitHub", () => {
392388
}),
393389
]),
394390
);
395-
downloadGitHubDatabaseFromUrlSpy = jest
396-
.spyOn(databaseFetcher, "downloadGitHubDatabaseFromUrl")
397-
.mockResolvedValue(undefined);
398391
});
399392

400393
it("downloads the database", async () => {
@@ -408,8 +401,8 @@ describe("downloadDatabaseUpdateFromGitHub", () => {
408401
app.commands,
409402
);
410403

411-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledTimes(1);
412-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledWith(
404+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledTimes(1);
405+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledWith(
413406
updates[0].database.url,
414407
updates[0].database.id,
415408
updates[0].database.created_at,
@@ -483,8 +476,8 @@ describe("downloadDatabaseUpdateFromGitHub", () => {
483476
app.commands,
484477
);
485478

486-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledTimes(1);
487-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledWith(
479+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledTimes(1);
480+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledWith(
488481
updates[1].database.url,
489482
updates[1].database.id,
490483
updates[1].database.created_at,
@@ -535,8 +528,8 @@ describe("downloadDatabaseUpdateFromGitHub", () => {
535528
app.commands,
536529
);
537530

538-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledTimes(2);
539-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledWith(
531+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledTimes(2);
532+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledWith(
540533
updates[0].database.url,
541534
updates[0].database.id,
542535
updates[0].database.created_at,
@@ -548,7 +541,7 @@ describe("downloadDatabaseUpdateFromGitHub", () => {
548541
false,
549542
false,
550543
);
551-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledWith(
544+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledWith(
552545
updates[1].database.url,
553546
updates[1].database.id,
554547
updates[1].database.created_at,
@@ -593,7 +586,7 @@ describe("downloadDatabaseUpdateFromGitHub", () => {
593586
app.commands,
594587
);
595588

596-
expect(downloadGitHubDatabaseFromUrlSpy).not.toHaveBeenCalled();
589+
expect(downloadGitHubDatabaseFromUrlMock).not.toHaveBeenCalled();
597590
});
598591
});
599592
});

0 commit comments

Comments
 (0)