From 58de4864c05687640b0cf75816512ea6e7e28d65 Mon Sep 17 00:00:00 2001 From: Robert Date: Thu, 18 Apr 2024 09:55:21 +0100 Subject: [PATCH] Pass VariantAnalysisConfig into DbManager to avoid vscode dependency --- extensions/ql-vscode/src/databases/db-manager.ts | 7 +++---- extensions/ql-vscode/src/databases/db-module.ts | 9 ++++++++- extensions/ql-vscode/test/factories/config.ts | 9 +++++++++ .../test/unit-tests/databases/db-manager.test.ts | 7 ++++++- .../test/unit-tests/databases/db-tree-creator.test.ts | 7 ++----- .../variant-analysis/variant-analysis-manager.test.ts | 7 ++++++- .../variant-analysis/variant-analysis-manager.test.ts | 7 ++++++- .../databases/db-panel-rendering.test.ts | 7 ++++++- .../minimal-workspace/databases/db-panel.test.ts | 7 ++++++- .../no-workspace/databases/db-panel-selection.test.ts | 7 ++++++- 10 files changed, 58 insertions(+), 16 deletions(-) create mode 100644 extensions/ql-vscode/test/factories/config.ts diff --git a/extensions/ql-vscode/src/databases/db-manager.ts b/extensions/ql-vscode/src/databases/db-manager.ts index dff02a576..7d9013d31 100644 --- a/extensions/ql-vscode/src/databases/db-manager.ts +++ b/extensions/ql-vscode/src/databases/db-manager.ts @@ -16,18 +16,17 @@ import { } from "./db-item-selection"; import { createRemoteTree } from "./db-tree-creator"; import type { DbConfigValidationError } from "./db-validation-errors"; -import { VariantAnalysisConfigListener } from "../config"; +import type { VariantAnalysisConfig } from "../config"; export class DbManager extends DisposableObject { public readonly onDbItemsChanged: AppEvent; public static readonly DB_EXPANDED_STATE_KEY = "db_expanded"; private readonly onDbItemsChangesEventEmitter: AppEventEmitter; - private readonly variantAnalysisConfigListener = - new VariantAnalysisConfigListener(); constructor( private readonly app: App, private readonly dbConfigStore: DbConfigStore, + private readonly variantAnalysisConfigListener: VariantAnalysisConfig, ) { super(); @@ -40,7 +39,7 @@ export class DbManager extends DisposableObject { this.onDbItemsChangesEventEmitter.fire(); }); - this.variantAnalysisConfigListener.onDidChangeConfiguration(() => { + this.variantAnalysisConfigListener.onDidChangeConfiguration?.(() => { this.onDbItemsChangesEventEmitter.fire(); }); } diff --git a/extensions/ql-vscode/src/databases/db-module.ts b/extensions/ql-vscode/src/databases/db-module.ts index f8fb7ccd4..54cb2b976 100644 --- a/extensions/ql-vscode/src/databases/db-module.ts +++ b/extensions/ql-vscode/src/databases/db-module.ts @@ -7,6 +7,7 @@ import { DbManager } from "./db-manager"; import { DbPanel } from "./ui/db-panel"; import { DbSelectionDecorationProvider } from "./ui/db-selection-decoration-provider"; import type { DatabasePanelCommands } from "../common/commands"; +import { VariantAnalysisConfigListener } from "../config"; export class DbModule extends DisposableObject { public readonly dbManager: DbManager; @@ -17,7 +18,13 @@ export class DbModule extends DisposableObject { super(); this.dbConfigStore = new DbConfigStore(app); - this.dbManager = this.push(new DbManager(app, this.dbConfigStore)); + this.dbManager = this.push( + new DbManager( + app, + this.dbConfigStore, + new VariantAnalysisConfigListener(), + ), + ); } public static async initialize(app: App): Promise { diff --git a/extensions/ql-vscode/test/factories/config.ts b/extensions/ql-vscode/test/factories/config.ts new file mode 100644 index 000000000..9a7060871 --- /dev/null +++ b/extensions/ql-vscode/test/factories/config.ts @@ -0,0 +1,9 @@ +import type { VariantAnalysisConfig } from "../../src/config"; + +export function createMockVariantAnalysisConfig(): VariantAnalysisConfig { + return { + controllerRepo: "foo/bar", + showSystemDefinedRepositoryLists: true, + onDidChangeConfiguration: jest.fn(), + }; +} diff --git a/extensions/ql-vscode/test/unit-tests/databases/db-manager.test.ts b/extensions/ql-vscode/test/unit-tests/databases/db-manager.test.ts index e9fc6a41f..66aca44bc 100644 --- a/extensions/ql-vscode/test/unit-tests/databases/db-manager.test.ts +++ b/extensions/ql-vscode/test/unit-tests/databases/db-manager.test.ts @@ -24,6 +24,7 @@ import { DbManager } from "../../../src/databases/db-manager"; import { createDbConfig } from "../../factories/db-config-factories"; import { createRemoteUserDefinedListDbItem } from "../../factories/db-item-factories"; import { createMockApp } from "../../__mocks__/appMock"; +import { createMockVariantAnalysisConfig } from "../../factories/config"; // Note: Although these are "unit tests" (i.e. not integrating with VS Code), they do // test the interaction/"integration" between the DbManager and the DbConfigStore. @@ -46,7 +47,11 @@ describe("db manager", () => { // We don't need to watch changes to the config file in these tests, so we // pass `false` to the dbConfigStore constructor. dbConfigStore = new DbConfigStore(app, false); - dbManager = new DbManager(app, dbConfigStore); + dbManager = new DbManager( + app, + dbConfigStore, + createMockVariantAnalysisConfig(), + ); await ensureDir(tempWorkspaceStoragePath); dbConfigFilePath = join( diff --git a/extensions/ql-vscode/test/unit-tests/databases/db-tree-creator.test.ts b/extensions/ql-vscode/test/unit-tests/databases/db-tree-creator.test.ts index d84b3372e..6e4f0555b 100644 --- a/extensions/ql-vscode/test/unit-tests/databases/db-tree-creator.test.ts +++ b/extensions/ql-vscode/test/unit-tests/databases/db-tree-creator.test.ts @@ -1,4 +1,3 @@ -import type { VariantAnalysisConfig } from "../../../src/config"; import type { DbConfig } from "../../../src/databases/config/db-config"; import { SelectedDbItemKind } from "../../../src/databases/config/db-config"; import { @@ -11,12 +10,10 @@ import type { ExpandedDbItem } from "../../../src/databases/db-item-expansion"; import { ExpandedDbItemKind } from "../../../src/databases/db-item-expansion"; import { createRemoteTree } from "../../../src/databases/db-tree-creator"; import { createDbConfig } from "../../factories/db-config-factories"; +import { createMockVariantAnalysisConfig } from "../../factories/config"; describe("db tree creator", () => { - const defaultVariantAnalysisConfig: VariantAnalysisConfig = { - controllerRepo: "foo/bar", - showSystemDefinedRepositoryLists: true, - }; + const defaultVariantAnalysisConfig = createMockVariantAnalysisConfig(); describe("createRemoteTree", () => { it("should build root node and system defined lists", () => { diff --git a/extensions/ql-vscode/test/vscode-tests/activated-extension/variant-analysis/variant-analysis-manager.test.ts b/extensions/ql-vscode/test/vscode-tests/activated-extension/variant-analysis/variant-analysis-manager.test.ts index a38ab4c30..79a9c201b 100644 --- a/extensions/ql-vscode/test/vscode-tests/activated-extension/variant-analysis/variant-analysis-manager.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/activated-extension/variant-analysis/variant-analysis-manager.test.ts @@ -49,6 +49,7 @@ import { writeRepoStates, } from "../../../../src/variant-analysis/repo-states-store"; import { permissiveFilterSortState } from "../../../unit-tests/variant-analysis-filter-sort.test"; +import { createMockVariantAnalysisConfig } from "../../../factories/config"; // up to 3 minutes per test jest.setTimeout(3 * 60 * 1000); @@ -72,7 +73,11 @@ describe("Variant Analysis Manager", () => { const extension = await getActivatedExtension(); const cli = mockedObject({}); app = new ExtensionApp(extension.ctx); - const dbManager = new DbManager(app, new DbConfigStore(app)); + const dbManager = new DbManager( + app, + new DbConfigStore(app), + createMockVariantAnalysisConfig(), + ); variantAnalysisResultsManager = new VariantAnalysisResultsManager( cli, extLogger, diff --git a/extensions/ql-vscode/test/vscode-tests/cli-integration/variant-analysis/variant-analysis-manager.test.ts b/extensions/ql-vscode/test/vscode-tests/cli-integration/variant-analysis/variant-analysis-manager.test.ts index 7a7403275..dbbc60023 100644 --- a/extensions/ql-vscode/test/vscode-tests/cli-integration/variant-analysis/variant-analysis-manager.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/cli-integration/variant-analysis/variant-analysis-manager.test.ts @@ -36,6 +36,7 @@ import type { QlPackLockFile } from "../../../../src/packaging/qlpack-lock-file" //import { expect } from "@jest/globals"; import "../../../matchers/toExistInCodeQLPack"; import type { QlPackDetails } from "../../../../src/variant-analysis/ql-pack-details"; +import { createMockVariantAnalysisConfig } from "../../../factories/config"; describe("Variant Analysis Manager", () => { let cli: CodeQLCliServer; @@ -50,7 +51,11 @@ describe("Variant Analysis Manager", () => { const extension = await getActivatedExtension(); cli = extension.cliServer; const app = new ExtensionApp(extension.ctx); - const dbManager = new DbManager(app, new DbConfigStore(app)); + const dbManager = new DbManager( + app, + new DbConfigStore(app), + createMockVariantAnalysisConfig(), + ); const variantAnalysisResultsManager = new VariantAnalysisResultsManager( cli, extLogger, diff --git a/extensions/ql-vscode/test/vscode-tests/minimal-workspace/databases/db-panel-rendering.test.ts b/extensions/ql-vscode/test/vscode-tests/minimal-workspace/databases/db-panel-rendering.test.ts index 25b5728cd..c1dd5855e 100644 --- a/extensions/ql-vscode/test/vscode-tests/minimal-workspace/databases/db-panel-rendering.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/minimal-workspace/databases/db-panel-rendering.test.ts @@ -11,6 +11,7 @@ import { ExtensionApp } from "../../../../src/common/vscode/extension-app"; import { createMockExtensionContext } from "../../../factories/extension-context"; import { createDbConfig } from "../../../factories/db-config-factories"; import { setRemoteControllerRepo } from "../../../../src/config"; +import { createMockVariantAnalysisConfig } from "../../../factories/config"; describe("db panel rendering nodes", () => { const workspaceStoragePath = join(__dirname, "test-workspace-storage"); @@ -35,7 +36,11 @@ describe("db panel rendering nodes", () => { const app = new ExtensionApp(extensionContext); dbConfigStore = new DbConfigStore(app, false); - dbManager = new DbManager(app, dbConfigStore); + dbManager = new DbManager( + app, + dbConfigStore, + createMockVariantAnalysisConfig(), + ); }); beforeEach(async () => { diff --git a/extensions/ql-vscode/test/vscode-tests/minimal-workspace/databases/db-panel.test.ts b/extensions/ql-vscode/test/vscode-tests/minimal-workspace/databases/db-panel.test.ts index 92262220b..2670c70d6 100644 --- a/extensions/ql-vscode/test/vscode-tests/minimal-workspace/databases/db-panel.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/minimal-workspace/databases/db-panel.test.ts @@ -10,6 +10,7 @@ import { ExtensionApp } from "../../../../src/common/vscode/extension-app"; import { createMockExtensionContext } from "../../../factories/extension-context"; import { createDbConfig } from "../../../factories/db-config-factories"; import { setRemoteControllerRepo } from "../../../../src/config"; +import { createMockVariantAnalysisConfig } from "../../../factories/config"; describe("db panel", () => { const workspaceStoragePath = join(__dirname, "test-workspace-storage"); @@ -34,7 +35,11 @@ describe("db panel", () => { const app = new ExtensionApp(extensionContext); dbConfigStore = new DbConfigStore(app, false); - dbManager = new DbManager(app, dbConfigStore); + dbManager = new DbManager( + app, + dbConfigStore, + createMockVariantAnalysisConfig(), + ); }); beforeEach(async () => { diff --git a/extensions/ql-vscode/test/vscode-tests/no-workspace/databases/db-panel-selection.test.ts b/extensions/ql-vscode/test/vscode-tests/no-workspace/databases/db-panel-selection.test.ts index 53b987af0..e53900119 100644 --- a/extensions/ql-vscode/test/vscode-tests/no-workspace/databases/db-panel-selection.test.ts +++ b/extensions/ql-vscode/test/vscode-tests/no-workspace/databases/db-panel-selection.test.ts @@ -12,6 +12,7 @@ import { ExtensionApp } from "../../../../src/common/vscode/extension-app"; import { createMockExtensionContext } from "../../../factories/extension-context"; import { createDbConfig } from "../../../factories/db-config-factories"; import { setRemoteControllerRepo } from "../../../../src/config"; +import { createMockVariantAnalysisConfig } from "../../../factories/config"; describe("db panel selection", () => { const workspaceStoragePath = join(__dirname, "test-workspace-storage"); @@ -36,7 +37,11 @@ describe("db panel selection", () => { const app = new ExtensionApp(extensionContext); dbConfigStore = new DbConfigStore(app, false); - dbManager = new DbManager(app, dbConfigStore); + dbManager = new DbManager( + app, + dbConfigStore, + createMockVariantAnalysisConfig(), + ); }); beforeEach(async () => {