Skip to content

Commit 51751a6

Browse files
Use mocks instead of spies in tests
1 parent 70bc2d9 commit 51751a6

3 files changed

Lines changed: 49 additions & 62 deletions

File tree

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: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,13 @@ import {
1010
askForGitHubDatabaseDownload,
1111
downloadDatabaseFromGitHub,
1212
} from "../../../../../src/databases/github-databases/download";
13-
import type { DatabaseManager } from "../../../../../src/databases/local-databases";
13+
import type {
14+
DatabaseItem,
15+
DatabaseManager,
16+
} from "../../../../../src/databases/local-databases";
1417
import type { GitHubDatabaseConfig } from "../../../../../src/config";
1518
import type { CodeQLCliServer } from "../../../../../src/codeql-cli/cli";
16-
import { DatabaseFetcher } from "../../../../../src/databases/database-fetcher";
19+
import type { DatabaseFetcher } from "../../../../../src/databases/database-fetcher";
1720
import * as dialog from "../../../../../src/common/vscode/dialog";
1821
import type { CodeqlDatabase } from "../../../../../src/databases/github-databases/api";
1922
import { createMockApp } from "../../../../__mocks__/appMock";
@@ -117,20 +120,17 @@ describe("downloadDatabaseFromGitHub", () => {
117120
];
118121

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

124125
beforeEach(() => {
125126
octokit = mockedObject<Octokit>({});
126127
databaseManager = mockedObject<DatabaseManager>({});
127128
cliServer = mockedObject<CodeQLCliServer>({});
128-
databaseFetcher = new DatabaseFetcher(
129-
app,
130-
databaseManager,
131-
storagePath,
132-
cliServer,
133-
);
129+
130+
downloadGitHubDatabaseFromUrlMock = jest.fn().mockReturnValue(undefined);
131+
databaseFetcher = mockedObject<DatabaseFetcher>({
132+
downloadGitHubDatabaseFromUrl: downloadGitHubDatabaseFromUrlMock,
133+
});
134134

135135
showQuickPickSpy = jest.spyOn(window, "showQuickPick").mockResolvedValue(
136136
mockedQuickPickItem([
@@ -139,9 +139,6 @@ describe("downloadDatabaseFromGitHub", () => {
139139
}),
140140
]),
141141
);
142-
downloadGitHubDatabaseFromUrlSpy = jest
143-
.spyOn(databaseFetcher, "downloadGitHubDatabaseFromUrl")
144-
.mockResolvedValue(undefined);
145142
});
146143

147144
it("downloads the database", async () => {
@@ -154,8 +151,8 @@ describe("downloadDatabaseFromGitHub", () => {
154151
app.commands,
155152
);
156153

157-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledTimes(1);
158-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledWith(
154+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledTimes(1);
155+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledWith(
159156
databases[0].url,
160157
databases[0].id,
161158
databases[0].created_at,
@@ -216,8 +213,8 @@ describe("downloadDatabaseFromGitHub", () => {
216213
app.commands,
217214
);
218215

219-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledTimes(1);
220-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledWith(
216+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledTimes(1);
217+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledWith(
221218
databases[1].url,
222219
databases[1].id,
223220
databases[1].created_at,
@@ -270,8 +267,8 @@ describe("downloadDatabaseFromGitHub", () => {
270267
app.commands,
271268
);
272269

273-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledTimes(2);
274-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledWith(
270+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledTimes(2);
271+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledWith(
275272
databases[0].url,
276273
databases[0].id,
277274
databases[0].created_at,
@@ -286,7 +283,7 @@ describe("downloadDatabaseFromGitHub", () => {
286283
true,
287284
false,
288285
);
289-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledWith(
286+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledWith(
290287
databases[1].url,
291288
databases[1].id,
292289
databases[1].created_at,
@@ -333,7 +330,7 @@ describe("downloadDatabaseFromGitHub", () => {
333330
app.commands,
334331
);
335332

336-
expect(downloadGitHubDatabaseFromUrlSpy).not.toHaveBeenCalled();
333+
expect(downloadGitHubDatabaseFromUrlMock).not.toHaveBeenCalled();
337334
});
338335
});
339336
});

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

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,13 @@ 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";
1316
import type { CodeQLCliServer } from "../../../../../src/codeql-cli/cli";
14-
import { DatabaseFetcher } from "../../../../../src/databases/database-fetcher";
17+
import type { DatabaseFetcher } from "../../../../../src/databases/database-fetcher";
1518
import * as dialog from "../../../../../src/common/vscode/dialog";
1619
import type { DatabaseUpdate } from "../../../../../src/databases/github-databases/updates";
1720
import {
@@ -368,22 +371,19 @@ describe("downloadDatabaseUpdateFromGitHub", () => {
368371
];
369372

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

375376
beforeEach(() => {
376377
octokit = mockedObject<Octokit>({});
377378
databaseManager = mockedObject<DatabaseManager>({
378379
currentDatabaseItem: mockDatabaseItem(),
379380
});
380381
cliServer = mockedObject<CodeQLCliServer>({});
381-
databaseFetcher = new DatabaseFetcher(
382-
app,
383-
databaseManager,
384-
storagePath,
385-
cliServer,
386-
);
382+
383+
downloadGitHubDatabaseFromUrlMock = jest.fn().mockReturnValue(undefined);
384+
databaseFetcher = mockedObject<DatabaseFetcher>({
385+
downloadGitHubDatabaseFromUrl: downloadGitHubDatabaseFromUrlMock,
386+
});
387387

388388
showQuickPickSpy = jest.spyOn(window, "showQuickPick").mockResolvedValue(
389389
mockedQuickPickItem([
@@ -392,9 +392,6 @@ describe("downloadDatabaseUpdateFromGitHub", () => {
392392
}),
393393
]),
394394
);
395-
downloadGitHubDatabaseFromUrlSpy = jest
396-
.spyOn(databaseFetcher, "downloadGitHubDatabaseFromUrl")
397-
.mockResolvedValue(undefined);
398395
});
399396

400397
it("downloads the database", async () => {
@@ -408,8 +405,8 @@ describe("downloadDatabaseUpdateFromGitHub", () => {
408405
app.commands,
409406
);
410407

411-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledTimes(1);
412-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledWith(
408+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledTimes(1);
409+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledWith(
413410
updates[0].database.url,
414411
updates[0].database.id,
415412
updates[0].database.created_at,
@@ -486,8 +483,8 @@ describe("downloadDatabaseUpdateFromGitHub", () => {
486483
app.commands,
487484
);
488485

489-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledTimes(1);
490-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledWith(
486+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledTimes(1);
487+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledWith(
491488
updates[1].database.url,
492489
updates[1].database.id,
493490
updates[1].database.created_at,
@@ -541,8 +538,8 @@ describe("downloadDatabaseUpdateFromGitHub", () => {
541538
app.commands,
542539
);
543540

544-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledTimes(2);
545-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledWith(
541+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledTimes(2);
542+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledWith(
546543
updates[0].database.url,
547544
updates[0].database.id,
548545
updates[0].database.created_at,
@@ -557,7 +554,7 @@ describe("downloadDatabaseUpdateFromGitHub", () => {
557554
false,
558555
false,
559556
);
560-
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledWith(
557+
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledWith(
561558
updates[1].database.url,
562559
updates[1].database.id,
563560
updates[1].database.created_at,
@@ -605,7 +602,7 @@ describe("downloadDatabaseUpdateFromGitHub", () => {
605602
app.commands,
606603
);
607604

608-
expect(downloadGitHubDatabaseFromUrlSpy).not.toHaveBeenCalled();
605+
expect(downloadGitHubDatabaseFromUrlMock).not.toHaveBeenCalled();
609606
});
610607
});
611608
});

0 commit comments

Comments
 (0)