Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { extensions, QuickPickItem, window } from "vscode";
import { extensions, window } from "vscode";
import { join } from "path";

import { CodeQLCliServer } from "../../../src/cli";
Expand All @@ -10,6 +10,7 @@ import {
handleDownloadPacks,
handleInstallPackDependencies,
} from "../../../src/packaging";
import { mockedQuickPickItem } from "../utils/mocking.helpers";

// up to 3 minutes per test
jest.setTimeout(3 * 60 * 1000);
Expand Down Expand Up @@ -56,7 +57,7 @@ describe("Packaging commands", () => {

it("should download all core query packs", async () => {
quickPickSpy.mockResolvedValue(
"Download all core query packs" as unknown as QuickPickItem,
mockedQuickPickItem("Download all core query packs"),
);

await handleDownloadPacks(cli, progress);
Expand All @@ -67,7 +68,7 @@ describe("Packaging commands", () => {

it("should download valid user-specified pack", async () => {
quickPickSpy.mockResolvedValue(
"Download custom specified pack" as unknown as QuickPickItem,
mockedQuickPickItem("Download custom specified pack"),
);
inputBoxSpy.mockResolvedValue("codeql/csharp-solorigate-queries");

Expand All @@ -79,7 +80,7 @@ describe("Packaging commands", () => {

it("should show error when downloading invalid user-specified pack", async () => {
quickPickSpy.mockResolvedValue(
"Download custom specified pack" as unknown as QuickPickItem,
mockedQuickPickItem("Download custom specified pack"),
);
inputBoxSpy.mockResolvedValue("foo/not-a-real-pack@0.0.1");

Expand All @@ -93,12 +94,14 @@ describe("Packaging commands", () => {

it("should install valid workspace pack", async () => {
const rootDir = join(__dirname, "./data");
quickPickSpy.mockResolvedValue([
{
label: "integration-test-queries-javascript",
packRootDir: [rootDir],
},
] as unknown as QuickPickItem);
quickPickSpy.mockResolvedValue(
mockedQuickPickItem([
{
label: "integration-test-queries-javascript",
packRootDir: [rootDir],
},
]),
);

await handleInstallPackDependencies(cli, progress);
expect(showAndLogInformationMessageSpy).toHaveBeenCalledWith(
Expand All @@ -108,12 +111,14 @@ describe("Packaging commands", () => {

it("should throw an error when installing invalid workspace pack", async () => {
const rootDir = join(__dirname, "../data-invalid-pack");
quickPickSpy.mockResolvedValue([
{
label: "foo/bar",
packRootDir: [rootDir],
},
] as unknown as QuickPickItem);
quickPickSpy.mockResolvedValue(
mockedQuickPickItem([
{
label: "foo/bar",
packRootDir: [rootDir],
},
]),
);

try {
// expect this to throw an error
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import {
CancellationTokenSource,
commands,
extensions,
QuickPickItem,
Uri,
window,
} from "vscode";
Expand All @@ -28,6 +27,7 @@ import { Repository } from "../../../../src/variant-analysis/gh-api/repository";
import { DbManager } from "../../../../src/databases/db-manager";
import { ExtensionApp } from "../../../../src/common/vscode/vscode-app";
import { DbConfigStore } from "../../../../src/databases/config/db-config-store";
import { mockedQuickPickItem } from "../../utils/mocking.helpers";

// up to 3 minutes per test
jest.setTimeout(3 * 60 * 1000);
Expand Down Expand Up @@ -88,7 +88,7 @@ describe("Variant Analysis Manager", () => {
beforeEach(async () => {
jest
.spyOn(window, "showQuickPick")
.mockResolvedValueOnce("javascript" as unknown as QuickPickItem);
.mockResolvedValueOnce(mockedQuickPickItem("javascript"));

cancellationTokenSource = new CancellationTokenSource();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@ import {
commands,
ConfigurationTarget,
extensions,
QuickPickItem,
TextDocument,
window,
workspace,
} from "vscode";

import { CodeQLExtensionInterface } from "../../../../src/extension";
import { MockGitHubApiServer } from "../../../../src/mocks/mock-gh-api-server";
import { mockedQuickPickItem } from "../../utils/mocking.helpers";
import {
CANARY_FEATURES,
setRemoteControllerRepo,
Expand Down Expand Up @@ -76,9 +76,7 @@ describe("Variant Analysis Submission Integration", () => {
await showQlDocument("query.ql");

// Select target language for your query
quickPickSpy.mockResolvedValueOnce(
"javascript" as unknown as QuickPickItem,
);
quickPickSpy.mockResolvedValueOnce(mockedQuickPickItem("javascript"));

await commands.executeCommand("codeQL.runVariantAnalysis");

Expand Down Expand Up @@ -117,9 +115,7 @@ describe("Variant Analysis Submission Integration", () => {
await showQlDocument("query.ql");

// Select target language for your query
quickPickSpy.mockResolvedValueOnce(
"javascript" as unknown as QuickPickItem,
);
quickPickSpy.mockResolvedValueOnce(mockedQuickPickItem("javascript"));

await commands.executeCommand("codeQL.runVariantAnalysis");

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import { join } from "path";
import { createFileSync, mkdirSync } from "fs-extra";
import * as tmp from "tmp";
import { QuickPickItem, window } from "vscode";
import { window } from "vscode";

import {
convertGithubNwoToDatabaseUrl,
findDirWithFile,
} from "../../../src/databaseFetcher";
import * as Octokit from "@octokit/rest";
import { mockedQuickPickItem } from "../utils/mocking.helpers";

// These tests make API calls and may need extra time to complete.
jest.setTimeout(10000);
Expand Down Expand Up @@ -71,7 +72,7 @@ describe("databaseFetcher", () => {
],
};
mockRequest.mockResolvedValue(mockApiResponse);
quickPickSpy.mockResolvedValue("javascript" as unknown as QuickPickItem);
quickPickSpy.mockResolvedValue(mockedQuickPickItem("javascript"));
const githubRepo = "github/codeql";
const result = await convertGithubNwoToDatabaseUrl(
githubRepo,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ import { createMockVariantAnalysisHistoryItem } from "../../../factories/query-h
import { VariantAnalysisHistoryItem } from "../../../../src/query-history/variant-analysis-history-item";
import { QueryStatus } from "../../../../src/query-status";
import { VariantAnalysisStatus } from "../../../../src/variant-analysis/shared/variant-analysis";
import { QuickPickItem, TextEditor } from "vscode";
import { TextEditor } from "vscode";
import { WebviewReveal } from "../../../../src/interface-utils";
import * as helpers from "../../../../src/helpers";
import { mockedObject } from "../../utils/mocking.helpers";
import { mockedObject, mockedQuickPickItem } from "../../utils/mocking.helpers";
import { createMockQueryHistoryDirs } from "../../../factories/query-history/query-history-dirs";

describe("QueryHistoryManager", () => {
Expand Down Expand Up @@ -978,9 +978,12 @@ describe("QueryHistoryManager", () => {
it("should find the second query to compare when one is selected", async () => {
const thisQuery = localQueryHistory[3];
queryHistoryManager = await createMockQueryHistory(allHistory);
showQuickPickSpy.mockResolvedValue({
query: localQueryHistory[0],
} as unknown as QuickPickItem);
showQuickPickSpy.mockResolvedValue(
mockedQuickPickItem({
label: "Query 1",
query: localQueryHistory[0],
}),
);

const otherQuery = await (
queryHistoryManager as any
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { QuickPickItem, window, Uri } from "vscode";
import { DatabaseItem } from "../../../src/local-databases";
import { Uri } from "vscode";

export type DeepPartial<T> = T extends object
? {
Expand Down Expand Up @@ -57,3 +57,9 @@ export function mockDatabaseItem(
...props,
});
}

export function mockedQuickPickItem<T extends QuickPickItem | string>(
value: T | T[],
): Awaited<ReturnType<typeof window.showQuickPick>> {
return value as Awaited<ReturnType<typeof window.showQuickPick>>;
}