Fix tests mocking showAndLog functions
This commit is contained in:
@@ -8,6 +8,7 @@ import { testCredentialsWithStub } from "../factories/authentication";
|
||||
import { Credentials } from "../../src/common/authentication";
|
||||
import { AppCommandManager } from "../../src/common/commands";
|
||||
import { createMockCommandManager } from "./commandsMock";
|
||||
import { NotificationLogger } from "../../src/common";
|
||||
|
||||
export function createMockApp({
|
||||
extensionPath = "/mock/extension/path",
|
||||
@@ -18,6 +19,7 @@ export function createMockApp({
|
||||
credentials = testCredentialsWithStub(),
|
||||
commands = createMockCommandManager(),
|
||||
environment = createMockEnvironmentContext(),
|
||||
logger = createMockLogger(),
|
||||
}: {
|
||||
extensionPath?: string;
|
||||
workspaceStoragePath?: string;
|
||||
@@ -27,10 +29,11 @@ export function createMockApp({
|
||||
credentials?: Credentials;
|
||||
commands?: AppCommandManager;
|
||||
environment?: EnvironmentContext;
|
||||
logger?: NotificationLogger;
|
||||
}): App {
|
||||
return {
|
||||
mode: AppMode.Test,
|
||||
logger: createMockLogger(),
|
||||
logger,
|
||||
subscriptions: [],
|
||||
extensionPath,
|
||||
workspaceStoragePath,
|
||||
|
||||
@@ -23,8 +23,8 @@ import {
|
||||
import { createMockVariantAnalysis } from "../../../factories/variant-analysis/shared/variant-analysis";
|
||||
import { createMockApp } from "../../../__mocks__/appMock";
|
||||
import { createMockCommandManager } from "../../../__mocks__/commandsMock";
|
||||
import * as log from "../../../../src/common/logging";
|
||||
import { showAndLogWarningMessage } from "../../../../src/common/logging";
|
||||
import { NotificationLogger } from "../../../../src/common/logging";
|
||||
import { createMockLogger } from "../../../__mocks__/loggerMock";
|
||||
|
||||
jest.setTimeout(60_000);
|
||||
|
||||
@@ -39,16 +39,21 @@ describe("Variant Analysis Monitor", () => {
|
||||
const onVariantAnalysisChangeSpy = jest.fn();
|
||||
const mockEecuteCommand = jest.fn();
|
||||
|
||||
let logger: NotificationLogger;
|
||||
|
||||
beforeEach(async () => {
|
||||
variantAnalysis = createMockVariantAnalysis({});
|
||||
|
||||
shouldCancelMonitor = jest.fn();
|
||||
|
||||
logger = createMockLogger();
|
||||
|
||||
variantAnalysisMonitor = new VariantAnalysisMonitor(
|
||||
createMockApp({
|
||||
commands: createMockCommandManager({
|
||||
executeCommand: mockEecuteCommand,
|
||||
}),
|
||||
logger,
|
||||
}),
|
||||
shouldCancelMonitor,
|
||||
);
|
||||
@@ -200,17 +205,9 @@ describe("Variant Analysis Monitor", () => {
|
||||
});
|
||||
|
||||
describe("when some responses fail", () => {
|
||||
let showAndLogWarningMessageSpy: jest.SpiedFunction<
|
||||
typeof showAndLogWarningMessage
|
||||
>;
|
||||
|
||||
let scannedRepos: ApiVariantAnalysisScannedRepository[];
|
||||
|
||||
beforeEach(async () => {
|
||||
showAndLogWarningMessageSpy = jest
|
||||
.spyOn(log, "showAndLogWarningMessage")
|
||||
.mockResolvedValue(undefined);
|
||||
|
||||
scannedRepos = createMockScannedRepos([
|
||||
"pending",
|
||||
"in_progress",
|
||||
@@ -266,20 +263,20 @@ describe("Variant Analysis Monitor", () => {
|
||||
it("should only trigger the warning once per error", async () => {
|
||||
await variantAnalysisMonitor.monitorVariantAnalysis(variantAnalysis);
|
||||
|
||||
expect(showAndLogWarningMessageSpy).toBeCalledTimes(4);
|
||||
expect(showAndLogWarningMessageSpy).toHaveBeenNthCalledWith(
|
||||
expect(logger.showWarningMessage).toBeCalledTimes(4);
|
||||
expect(logger.showWarningMessage).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
expect.stringMatching(/No internet connection/),
|
||||
);
|
||||
expect(showAndLogWarningMessageSpy).toHaveBeenNthCalledWith(
|
||||
expect(logger.showWarningMessage).toHaveBeenNthCalledWith(
|
||||
2,
|
||||
expect.stringMatching(/My different error/),
|
||||
);
|
||||
expect(showAndLogWarningMessageSpy).toHaveBeenNthCalledWith(
|
||||
expect(logger.showWarningMessage).toHaveBeenNthCalledWith(
|
||||
3,
|
||||
expect.stringMatching(/My different error/),
|
||||
);
|
||||
expect(showAndLogWarningMessageSpy).toHaveBeenNthCalledWith(
|
||||
expect(logger.showWarningMessage).toHaveBeenNthCalledWith(
|
||||
4,
|
||||
expect.stringMatching(/Another different error/),
|
||||
);
|
||||
@@ -301,15 +298,7 @@ describe("Variant Analysis Monitor", () => {
|
||||
});
|
||||
|
||||
describe("when a 404 is returned", () => {
|
||||
let showAndLogWarningMessageSpy: jest.SpiedFunction<
|
||||
typeof showAndLogWarningMessage
|
||||
>;
|
||||
|
||||
beforeEach(async () => {
|
||||
showAndLogWarningMessageSpy = jest
|
||||
.spyOn(log, "showAndLogWarningMessage")
|
||||
.mockResolvedValue(undefined);
|
||||
|
||||
const scannedRepos = createMockScannedRepos([
|
||||
"pending",
|
||||
"in_progress",
|
||||
@@ -342,8 +331,8 @@ describe("Variant Analysis Monitor", () => {
|
||||
await variantAnalysisMonitor.monitorVariantAnalysis(variantAnalysis);
|
||||
|
||||
expect(mockGetVariantAnalysis).toHaveBeenCalledTimes(2);
|
||||
expect(showAndLogWarningMessageSpy).toHaveBeenCalledTimes(1);
|
||||
expect(showAndLogWarningMessageSpy).toHaveBeenCalledWith(
|
||||
expect(logger.showWarningMessage).toHaveBeenCalledTimes(1);
|
||||
expect(logger.showWarningMessage).toHaveBeenCalledWith(
|
||||
expect.stringMatching(/not found/i),
|
||||
);
|
||||
});
|
||||
|
||||
@@ -4,7 +4,7 @@ import { join } from "path";
|
||||
import { CodeQLCliServer } from "../../../../src/codeql-cli/cli";
|
||||
import { getErrorMessage } from "../../../../src/pure/helpers-pure";
|
||||
|
||||
import * as log from "../../../../src/common/logging";
|
||||
import * as log from "../../../../src/common/logging/notifications";
|
||||
import * as vscodeLog from "../../../../src/common/vscode/logging";
|
||||
import {
|
||||
handleDownloadPacks,
|
||||
@@ -53,6 +53,7 @@ describe("Packaging commands", () => {
|
||||
await handleDownloadPacks(cli, progress);
|
||||
expect(showAndLogExceptionWithTelemetrySpy).not.toHaveBeenCalled();
|
||||
expect(showAndLogInformationMessageSpy).toHaveBeenCalledWith(
|
||||
expect.anything(),
|
||||
expect.stringContaining("Finished downloading packs."),
|
||||
);
|
||||
});
|
||||
@@ -66,6 +67,7 @@ describe("Packaging commands", () => {
|
||||
await handleDownloadPacks(cli, progress);
|
||||
expect(showAndLogExceptionWithTelemetrySpy).not.toHaveBeenCalled();
|
||||
expect(showAndLogInformationMessageSpy).toHaveBeenCalledWith(
|
||||
expect.anything(),
|
||||
expect.stringContaining("Finished downloading packs."),
|
||||
);
|
||||
});
|
||||
@@ -97,6 +99,7 @@ describe("Packaging commands", () => {
|
||||
|
||||
await handleInstallPackDependencies(cli, progress);
|
||||
expect(showAndLogInformationMessageSpy).toHaveBeenCalledWith(
|
||||
expect.anything(),
|
||||
expect.stringContaining("Finished installing pack dependencies."),
|
||||
);
|
||||
});
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import * as fetch from "node-fetch";
|
||||
import { Range } from "semver";
|
||||
|
||||
import * as log from "../../../../src/common/logging";
|
||||
import * as log from "../../../../src/common/logging/notifications";
|
||||
import { extLogger } from "../../../../src/common";
|
||||
import * as fs from "fs-extra";
|
||||
import * as path from "path";
|
||||
|
||||
@@ -7,11 +7,9 @@ import {
|
||||
QlpacksInfo,
|
||||
ResolveExtensionsResult,
|
||||
} from "../../../../src/codeql-cli/cli";
|
||||
import * as log from "../../../../src/common/logging";
|
||||
|
||||
import { pickExtensionPackModelFile } from "../../../../src/data-extensions-editor/extension-pack-picker";
|
||||
import { ExtensionPack } from "../../../../src/data-extensions-editor/shared/extension-pack";
|
||||
import { showAndLogErrorMessage } from "../../../../src/common/logging";
|
||||
import { createMockLogger } from "../../../__mocks__/loggerMock";
|
||||
|
||||
describe("pickExtensionPackModelFile", () => {
|
||||
@@ -34,9 +32,6 @@ describe("pickExtensionPackModelFile", () => {
|
||||
const progress = jest.fn();
|
||||
let showQuickPickSpy: jest.SpiedFunction<typeof window.showQuickPick>;
|
||||
let showInputBoxSpy: jest.SpiedFunction<typeof window.showInputBox>;
|
||||
let showAndLogErrorMessageSpy: jest.SpiedFunction<
|
||||
typeof showAndLogErrorMessage
|
||||
>;
|
||||
|
||||
const logger = createMockLogger();
|
||||
|
||||
@@ -82,11 +77,6 @@ describe("pickExtensionPackModelFile", () => {
|
||||
showInputBoxSpy = jest
|
||||
.spyOn(window, "showInputBox")
|
||||
.mockRejectedValue(new Error("Unexpected call to showInputBox"));
|
||||
showAndLogErrorMessageSpy = jest
|
||||
.spyOn(log, "showAndLogErrorMessage")
|
||||
.mockImplementation((msg) => {
|
||||
throw new Error(`Unexpected call to showAndLogErrorMessage: ${msg}`);
|
||||
});
|
||||
});
|
||||
|
||||
it("allows choosing an existing extension pack and model file", async () => {
|
||||
@@ -418,8 +408,6 @@ describe("pickExtensionPackModelFile", () => {
|
||||
});
|
||||
|
||||
it("shows an error when an extension pack resolves to more than 1 location", async () => {
|
||||
showAndLogErrorMessageSpy.mockResolvedValue(undefined);
|
||||
|
||||
const cliServer = mockCliServer(
|
||||
{
|
||||
"my-extension-pack": [
|
||||
@@ -441,10 +429,9 @@ describe("pickExtensionPackModelFile", () => {
|
||||
token,
|
||||
),
|
||||
).toEqual(undefined);
|
||||
expect(showAndLogErrorMessageSpy).toHaveBeenCalledTimes(1);
|
||||
expect(showAndLogErrorMessageSpy).toHaveBeenCalledWith(
|
||||
expect(logger.showErrorMessage).toHaveBeenCalledTimes(1);
|
||||
expect(logger.showErrorMessage).toHaveBeenCalledWith(
|
||||
expect.stringMatching(/resolves to multiple paths/),
|
||||
expect.anything(),
|
||||
);
|
||||
expect(showQuickPickSpy).toHaveBeenCalledTimes(1);
|
||||
expect(showQuickPickSpy).toHaveBeenCalledWith(
|
||||
@@ -547,7 +534,6 @@ describe("pickExtensionPackModelFile", () => {
|
||||
);
|
||||
|
||||
showQuickPickSpy.mockResolvedValueOnce(undefined);
|
||||
showAndLogErrorMessageSpy.mockResolvedValue(undefined);
|
||||
|
||||
expect(
|
||||
await pickExtensionPackModelFile(
|
||||
@@ -572,10 +558,9 @@ describe("pickExtensionPackModelFile", () => {
|
||||
token,
|
||||
);
|
||||
expect(showInputBoxSpy).not.toHaveBeenCalled();
|
||||
expect(showAndLogErrorMessageSpy).toHaveBeenCalledTimes(1);
|
||||
expect(showAndLogErrorMessageSpy).toHaveBeenCalledWith(
|
||||
expect(logger.showErrorMessage).toHaveBeenCalledTimes(1);
|
||||
expect(logger.showErrorMessage).toHaveBeenCalledWith(
|
||||
expect.stringMatching(/my-extension-pack/),
|
||||
expect.anything(),
|
||||
);
|
||||
expect(cliServer.resolveQlpacks).toHaveBeenCalled();
|
||||
expect(cliServer.resolveExtensions).not.toHaveBeenCalled();
|
||||
@@ -596,7 +581,6 @@ describe("pickExtensionPackModelFile", () => {
|
||||
await outputFile(join(tmpDir.path, "codeql-pack.yml"), dumpYaml("java"));
|
||||
|
||||
showQuickPickSpy.mockResolvedValueOnce(undefined);
|
||||
showAndLogErrorMessageSpy.mockResolvedValue(undefined);
|
||||
|
||||
expect(
|
||||
await pickExtensionPackModelFile(
|
||||
@@ -621,10 +605,9 @@ describe("pickExtensionPackModelFile", () => {
|
||||
token,
|
||||
);
|
||||
expect(showInputBoxSpy).not.toHaveBeenCalled();
|
||||
expect(showAndLogErrorMessageSpy).toHaveBeenCalledTimes(1);
|
||||
expect(showAndLogErrorMessageSpy).toHaveBeenCalledWith(
|
||||
expect(logger.showErrorMessage).toHaveBeenCalledTimes(1);
|
||||
expect(logger.showErrorMessage).toHaveBeenCalledWith(
|
||||
expect.stringMatching(/my-extension-pack/),
|
||||
expect.anything(),
|
||||
);
|
||||
expect(cliServer.resolveQlpacks).toHaveBeenCalled();
|
||||
expect(cliServer.resolveExtensions).not.toHaveBeenCalled();
|
||||
@@ -655,7 +638,6 @@ describe("pickExtensionPackModelFile", () => {
|
||||
);
|
||||
|
||||
showQuickPickSpy.mockResolvedValueOnce(undefined);
|
||||
showAndLogErrorMessageSpy.mockResolvedValue(undefined);
|
||||
|
||||
expect(
|
||||
await pickExtensionPackModelFile(
|
||||
@@ -680,10 +662,9 @@ describe("pickExtensionPackModelFile", () => {
|
||||
token,
|
||||
);
|
||||
expect(showInputBoxSpy).not.toHaveBeenCalled();
|
||||
expect(showAndLogErrorMessageSpy).toHaveBeenCalledTimes(1);
|
||||
expect(showAndLogErrorMessageSpy).toHaveBeenCalledWith(
|
||||
expect(logger.showErrorMessage).toHaveBeenCalledTimes(1);
|
||||
expect(logger.showErrorMessage).toHaveBeenCalledWith(
|
||||
expect.stringMatching(/my-extension-pack/),
|
||||
expect.anything(),
|
||||
);
|
||||
expect(cliServer.resolveQlpacks).toHaveBeenCalled();
|
||||
expect(cliServer.resolveExtensions).not.toHaveBeenCalled();
|
||||
@@ -717,7 +698,6 @@ describe("pickExtensionPackModelFile", () => {
|
||||
);
|
||||
|
||||
showQuickPickSpy.mockResolvedValueOnce(undefined);
|
||||
showAndLogErrorMessageSpy.mockResolvedValue(undefined);
|
||||
|
||||
expect(
|
||||
await pickExtensionPackModelFile(
|
||||
@@ -742,10 +722,9 @@ describe("pickExtensionPackModelFile", () => {
|
||||
token,
|
||||
);
|
||||
expect(showInputBoxSpy).not.toHaveBeenCalled();
|
||||
expect(showAndLogErrorMessageSpy).toHaveBeenCalledTimes(1);
|
||||
expect(showAndLogErrorMessageSpy).toHaveBeenCalledWith(
|
||||
expect(logger.showErrorMessage).toHaveBeenCalledTimes(1);
|
||||
expect(logger.showErrorMessage).toHaveBeenCalledWith(
|
||||
expect.stringMatching(/my-extension-pack/),
|
||||
expect.anything(),
|
||||
);
|
||||
expect(cliServer.resolveQlpacks).toHaveBeenCalled();
|
||||
expect(cliServer.resolveExtensions).not.toHaveBeenCalled();
|
||||
|
||||
@@ -152,6 +152,7 @@ describe("readQueryResults", () => {
|
||||
|
||||
expect(await readQueryResults(options)).toBeUndefined();
|
||||
expect(showAndLogExceptionWithTelemetrySpy).toHaveBeenCalledWith(
|
||||
expect.anything(),
|
||||
expect.any(RedactableError),
|
||||
);
|
||||
});
|
||||
@@ -184,6 +185,7 @@ describe("readQueryResults", () => {
|
||||
|
||||
expect(await readQueryResults(options)).toBeUndefined();
|
||||
expect(showAndLogExceptionWithTelemetrySpy).toHaveBeenCalledWith(
|
||||
expect.anything(),
|
||||
expect.any(RedactableError),
|
||||
);
|
||||
});
|
||||
|
||||
@@ -3,7 +3,7 @@ import * as fs from "fs-extra";
|
||||
|
||||
import { getErrorMessage } from "../../../../../src/pure/helpers-pure";
|
||||
|
||||
import * as log from "../../../../../src/common/logging";
|
||||
import * as log from "../../../../../src/common/logging/notifications";
|
||||
import * as workspaceFolders from "../../../../../src/common/vscode/workspace-folders";
|
||||
import * as qlpack from "../../../../../src/databases/qlpack";
|
||||
import {
|
||||
|
||||
Reference in New Issue
Block a user