Use mocks instead of spies in tests
This commit is contained in:
@@ -23,7 +23,7 @@ import type {
|
||||
DatabaseManager,
|
||||
FullDatabaseOptions,
|
||||
} from "../../../../src/databases/local-databases";
|
||||
import { DatabaseFetcher } from "../../../../src/databases/database-fetcher";
|
||||
import type { DatabaseFetcher } from "../../../../src/databases/database-fetcher";
|
||||
import { createMockDB } from "../../../factories/databases/databases";
|
||||
import { asError } from "../../../../src/common/helpers-pure";
|
||||
import { Setting } from "../../../../src/config";
|
||||
@@ -56,9 +56,7 @@ describe("SkeletonQueryWizard", () => {
|
||||
let createExampleQlFileSpy: jest.SpiedFunction<
|
||||
typeof QlPackGenerator.prototype.createExampleQlFile
|
||||
>;
|
||||
let promptImportGithubDatabaseSpy: jest.SpiedFunction<
|
||||
DatabaseFetcher["promptImportGithubDatabase"]
|
||||
>;
|
||||
let promptImportGithubDatabaseMock: jest.Mock<DatabaseItem | undefined>;
|
||||
let openTextDocumentSpy: jest.SpiedFunction<
|
||||
typeof workspace.openTextDocument
|
||||
>;
|
||||
@@ -113,12 +111,10 @@ describe("SkeletonQueryWizard", () => {
|
||||
},
|
||||
] as WorkspaceFolder[]);
|
||||
|
||||
databaseFetcher = new DatabaseFetcher(
|
||||
mockApp,
|
||||
mockDatabaseManager,
|
||||
storagePath,
|
||||
mockCli,
|
||||
);
|
||||
promptImportGithubDatabaseMock = jest.fn().mockReturnValue(undefined);
|
||||
databaseFetcher = mockedObject<DatabaseFetcher>({
|
||||
promptImportGithubDatabase: promptImportGithubDatabaseMock,
|
||||
});
|
||||
|
||||
quickPickSpy = jest.spyOn(window, "showQuickPick").mockResolvedValueOnce(
|
||||
mockedQuickPickItem({
|
||||
@@ -138,9 +134,6 @@ describe("SkeletonQueryWizard", () => {
|
||||
createExampleQlFileSpy = jest
|
||||
.spyOn(QlPackGenerator.prototype, "createExampleQlFile")
|
||||
.mockResolvedValue(undefined);
|
||||
promptImportGithubDatabaseSpy = jest
|
||||
.spyOn(databaseFetcher, "promptImportGithubDatabase")
|
||||
.mockResolvedValue(undefined);
|
||||
openTextDocumentSpy = jest
|
||||
.spyOn(workspace, "openTextDocument")
|
||||
.mockResolvedValue({} as TextDocument);
|
||||
@@ -203,7 +196,7 @@ describe("SkeletonQueryWizard", () => {
|
||||
title: "Download database",
|
||||
}),
|
||||
);
|
||||
expect(promptImportGithubDatabaseSpy).not.toHaveBeenCalled();
|
||||
expect(promptImportGithubDatabaseMock).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("should download database for selected language when selecting download in prompt", async () => {
|
||||
@@ -220,7 +213,7 @@ describe("SkeletonQueryWizard", () => {
|
||||
await wizard.execute();
|
||||
await wizard.waitForDownload();
|
||||
|
||||
expect(promptImportGithubDatabaseSpy).toHaveBeenCalled();
|
||||
expect(promptImportGithubDatabaseMock).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("should open the query file", async () => {
|
||||
@@ -329,7 +322,7 @@ describe("SkeletonQueryWizard", () => {
|
||||
it("should not download a new database for language", async () => {
|
||||
await wizard.execute();
|
||||
|
||||
expect(promptImportGithubDatabaseSpy).not.toHaveBeenCalled();
|
||||
expect(promptImportGithubDatabaseMock).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("should not select the database", async () => {
|
||||
@@ -378,7 +371,7 @@ describe("SkeletonQueryWizard", () => {
|
||||
it("should not download a new database for language", async () => {
|
||||
await wizard.execute();
|
||||
|
||||
expect(promptImportGithubDatabaseSpy).not.toHaveBeenCalled();
|
||||
expect(promptImportGithubDatabaseMock).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("should select an existing database", async () => {
|
||||
@@ -426,7 +419,7 @@ describe("SkeletonQueryWizard", () => {
|
||||
await wizard.execute();
|
||||
await wizard.waitForDownload();
|
||||
|
||||
expect(promptImportGithubDatabaseSpy).toHaveBeenCalled();
|
||||
expect(promptImportGithubDatabaseMock).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -10,10 +10,9 @@ import {
|
||||
askForGitHubDatabaseDownload,
|
||||
downloadDatabaseFromGitHub,
|
||||
} from "../../../../../src/databases/github-databases/download";
|
||||
import type { DatabaseManager } from "../../../../../src/databases/local-databases";
|
||||
import type { DatabaseItem } from "../../../../../src/databases/local-databases";
|
||||
import type { GitHubDatabaseConfig } from "../../../../../src/config";
|
||||
import type { CodeQLCliServer } from "../../../../../src/codeql-cli/cli";
|
||||
import { DatabaseFetcher } from "../../../../../src/databases/database-fetcher";
|
||||
import type { DatabaseFetcher } from "../../../../../src/databases/database-fetcher";
|
||||
import * as dialog from "../../../../../src/common/vscode/dialog";
|
||||
import type { CodeqlDatabase } from "../../../../../src/databases/github-databases/api";
|
||||
import { createMockApp } from "../../../../__mocks__/appMock";
|
||||
@@ -96,11 +95,8 @@ describe("downloadDatabaseFromGitHub", () => {
|
||||
let octokit: Octokit;
|
||||
const owner = "github";
|
||||
const repo = "codeql";
|
||||
let databaseManager: DatabaseManager;
|
||||
let databaseFetcher: DatabaseFetcher;
|
||||
|
||||
const storagePath = "/a/b/c/d";
|
||||
let cliServer: CodeQLCliServer;
|
||||
const app = createMockApp();
|
||||
|
||||
let databases = [
|
||||
@@ -117,20 +113,15 @@ describe("downloadDatabaseFromGitHub", () => {
|
||||
];
|
||||
|
||||
let showQuickPickSpy: jest.SpiedFunction<typeof window.showQuickPick>;
|
||||
let downloadGitHubDatabaseFromUrlSpy: jest.SpiedFunction<
|
||||
DatabaseFetcher["downloadGitHubDatabaseFromUrl"]
|
||||
>;
|
||||
let downloadGitHubDatabaseFromUrlMock: jest.Mock<DatabaseItem | undefined>;
|
||||
|
||||
beforeEach(() => {
|
||||
octokit = mockedObject<Octokit>({});
|
||||
databaseManager = mockedObject<DatabaseManager>({});
|
||||
cliServer = mockedObject<CodeQLCliServer>({});
|
||||
databaseFetcher = new DatabaseFetcher(
|
||||
app,
|
||||
databaseManager,
|
||||
storagePath,
|
||||
cliServer,
|
||||
);
|
||||
|
||||
downloadGitHubDatabaseFromUrlMock = jest.fn().mockReturnValue(undefined);
|
||||
databaseFetcher = mockedObject<DatabaseFetcher>({
|
||||
downloadGitHubDatabaseFromUrl: downloadGitHubDatabaseFromUrlMock,
|
||||
});
|
||||
|
||||
showQuickPickSpy = jest.spyOn(window, "showQuickPick").mockResolvedValue(
|
||||
mockedQuickPickItem([
|
||||
@@ -139,9 +130,6 @@ describe("downloadDatabaseFromGitHub", () => {
|
||||
}),
|
||||
]),
|
||||
);
|
||||
downloadGitHubDatabaseFromUrlSpy = jest
|
||||
.spyOn(databaseFetcher, "downloadGitHubDatabaseFromUrl")
|
||||
.mockResolvedValue(undefined);
|
||||
});
|
||||
|
||||
it("downloads the database", async () => {
|
||||
@@ -154,8 +142,8 @@ describe("downloadDatabaseFromGitHub", () => {
|
||||
app.commands,
|
||||
);
|
||||
|
||||
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledTimes(1);
|
||||
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledWith(
|
||||
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledTimes(1);
|
||||
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledWith(
|
||||
databases[0].url,
|
||||
databases[0].id,
|
||||
databases[0].created_at,
|
||||
@@ -213,8 +201,8 @@ describe("downloadDatabaseFromGitHub", () => {
|
||||
app.commands,
|
||||
);
|
||||
|
||||
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledTimes(1);
|
||||
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledWith(
|
||||
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledTimes(1);
|
||||
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledWith(
|
||||
databases[1].url,
|
||||
databases[1].id,
|
||||
databases[1].created_at,
|
||||
@@ -264,8 +252,8 @@ describe("downloadDatabaseFromGitHub", () => {
|
||||
app.commands,
|
||||
);
|
||||
|
||||
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledTimes(2);
|
||||
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledWith(
|
||||
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledTimes(2);
|
||||
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledWith(
|
||||
databases[0].url,
|
||||
databases[0].id,
|
||||
databases[0].created_at,
|
||||
@@ -277,7 +265,7 @@ describe("downloadDatabaseFromGitHub", () => {
|
||||
true,
|
||||
false,
|
||||
);
|
||||
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledWith(
|
||||
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledWith(
|
||||
databases[1].url,
|
||||
databases[1].id,
|
||||
databases[1].created_at,
|
||||
@@ -321,7 +309,7 @@ describe("downloadDatabaseFromGitHub", () => {
|
||||
app.commands,
|
||||
);
|
||||
|
||||
expect(downloadGitHubDatabaseFromUrlSpy).not.toHaveBeenCalled();
|
||||
expect(downloadGitHubDatabaseFromUrlMock).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -8,10 +8,12 @@ import {
|
||||
mockedQuickPickItem,
|
||||
} from "../../../utils/mocking.helpers";
|
||||
import type { CodeqlDatabase } from "../../../../../src/databases/github-databases/api";
|
||||
import type { DatabaseManager } from "../../../../../src/databases/local-databases";
|
||||
import type {
|
||||
DatabaseItem,
|
||||
DatabaseManager,
|
||||
} from "../../../../../src/databases/local-databases";
|
||||
import type { GitHubDatabaseConfig } from "../../../../../src/config";
|
||||
import type { CodeQLCliServer } from "../../../../../src/codeql-cli/cli";
|
||||
import { DatabaseFetcher } from "../../../../../src/databases/database-fetcher";
|
||||
import type { DatabaseFetcher } from "../../../../../src/databases/database-fetcher";
|
||||
import * as dialog from "../../../../../src/common/vscode/dialog";
|
||||
import type { DatabaseUpdate } from "../../../../../src/databases/github-databases/updates";
|
||||
import {
|
||||
@@ -345,8 +347,6 @@ describe("downloadDatabaseUpdateFromGitHub", () => {
|
||||
const repo = "codeql";
|
||||
let databaseManager: DatabaseManager;
|
||||
let databaseFetcher: DatabaseFetcher;
|
||||
const storagePath = "/a/b/c/d";
|
||||
let cliServer: CodeQLCliServer;
|
||||
const app = createMockApp();
|
||||
|
||||
let updates: DatabaseUpdate[] = [
|
||||
@@ -368,22 +368,18 @@ describe("downloadDatabaseUpdateFromGitHub", () => {
|
||||
];
|
||||
|
||||
let showQuickPickSpy: jest.SpiedFunction<typeof window.showQuickPick>;
|
||||
let downloadGitHubDatabaseFromUrlSpy: jest.SpiedFunction<
|
||||
DatabaseFetcher["downloadGitHubDatabaseFromUrl"]
|
||||
>;
|
||||
let downloadGitHubDatabaseFromUrlMock: jest.Mock<DatabaseItem | undefined>;
|
||||
|
||||
beforeEach(() => {
|
||||
octokit = mockedObject<Octokit>({});
|
||||
databaseManager = mockedObject<DatabaseManager>({
|
||||
currentDatabaseItem: mockDatabaseItem(),
|
||||
});
|
||||
cliServer = mockedObject<CodeQLCliServer>({});
|
||||
databaseFetcher = new DatabaseFetcher(
|
||||
app,
|
||||
databaseManager,
|
||||
storagePath,
|
||||
cliServer,
|
||||
);
|
||||
|
||||
downloadGitHubDatabaseFromUrlMock = jest.fn().mockReturnValue(undefined);
|
||||
databaseFetcher = mockedObject<DatabaseFetcher>({
|
||||
downloadGitHubDatabaseFromUrl: downloadGitHubDatabaseFromUrlMock,
|
||||
});
|
||||
|
||||
showQuickPickSpy = jest.spyOn(window, "showQuickPick").mockResolvedValue(
|
||||
mockedQuickPickItem([
|
||||
@@ -392,9 +388,6 @@ describe("downloadDatabaseUpdateFromGitHub", () => {
|
||||
}),
|
||||
]),
|
||||
);
|
||||
downloadGitHubDatabaseFromUrlSpy = jest
|
||||
.spyOn(databaseFetcher, "downloadGitHubDatabaseFromUrl")
|
||||
.mockResolvedValue(undefined);
|
||||
});
|
||||
|
||||
it("downloads the database", async () => {
|
||||
@@ -408,8 +401,8 @@ describe("downloadDatabaseUpdateFromGitHub", () => {
|
||||
app.commands,
|
||||
);
|
||||
|
||||
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledTimes(1);
|
||||
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledWith(
|
||||
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledTimes(1);
|
||||
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledWith(
|
||||
updates[0].database.url,
|
||||
updates[0].database.id,
|
||||
updates[0].database.created_at,
|
||||
@@ -483,8 +476,8 @@ describe("downloadDatabaseUpdateFromGitHub", () => {
|
||||
app.commands,
|
||||
);
|
||||
|
||||
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledTimes(1);
|
||||
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledWith(
|
||||
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledTimes(1);
|
||||
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledWith(
|
||||
updates[1].database.url,
|
||||
updates[1].database.id,
|
||||
updates[1].database.created_at,
|
||||
@@ -535,8 +528,8 @@ describe("downloadDatabaseUpdateFromGitHub", () => {
|
||||
app.commands,
|
||||
);
|
||||
|
||||
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledTimes(2);
|
||||
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledWith(
|
||||
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledTimes(2);
|
||||
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledWith(
|
||||
updates[0].database.url,
|
||||
updates[0].database.id,
|
||||
updates[0].database.created_at,
|
||||
@@ -548,7 +541,7 @@ describe("downloadDatabaseUpdateFromGitHub", () => {
|
||||
false,
|
||||
false,
|
||||
);
|
||||
expect(downloadGitHubDatabaseFromUrlSpy).toHaveBeenCalledWith(
|
||||
expect(downloadGitHubDatabaseFromUrlMock).toHaveBeenCalledWith(
|
||||
updates[1].database.url,
|
||||
updates[1].database.id,
|
||||
updates[1].database.created_at,
|
||||
@@ -593,7 +586,7 @@ describe("downloadDatabaseUpdateFromGitHub", () => {
|
||||
app.commands,
|
||||
);
|
||||
|
||||
expect(downloadGitHubDatabaseFromUrlSpy).not.toHaveBeenCalled();
|
||||
expect(downloadGitHubDatabaseFromUrlMock).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user