Pass VariantAnalysisConfig into DbManager to avoid vscode dependency

This commit is contained in:
Robert
2024-04-18 09:55:21 +01:00
parent 17ff592a60
commit 58de4864c0
10 changed files with 58 additions and 16 deletions

View File

@@ -16,18 +16,17 @@ import {
} from "./db-item-selection"; } from "./db-item-selection";
import { createRemoteTree } from "./db-tree-creator"; import { createRemoteTree } from "./db-tree-creator";
import type { DbConfigValidationError } from "./db-validation-errors"; import type { DbConfigValidationError } from "./db-validation-errors";
import { VariantAnalysisConfigListener } from "../config"; import type { VariantAnalysisConfig } from "../config";
export class DbManager extends DisposableObject { export class DbManager extends DisposableObject {
public readonly onDbItemsChanged: AppEvent<void>; public readonly onDbItemsChanged: AppEvent<void>;
public static readonly DB_EXPANDED_STATE_KEY = "db_expanded"; public static readonly DB_EXPANDED_STATE_KEY = "db_expanded";
private readonly onDbItemsChangesEventEmitter: AppEventEmitter<void>; private readonly onDbItemsChangesEventEmitter: AppEventEmitter<void>;
private readonly variantAnalysisConfigListener =
new VariantAnalysisConfigListener();
constructor( constructor(
private readonly app: App, private readonly app: App,
private readonly dbConfigStore: DbConfigStore, private readonly dbConfigStore: DbConfigStore,
private readonly variantAnalysisConfigListener: VariantAnalysisConfig,
) { ) {
super(); super();
@@ -40,7 +39,7 @@ export class DbManager extends DisposableObject {
this.onDbItemsChangesEventEmitter.fire(); this.onDbItemsChangesEventEmitter.fire();
}); });
this.variantAnalysisConfigListener.onDidChangeConfiguration(() => { this.variantAnalysisConfigListener.onDidChangeConfiguration?.(() => {
this.onDbItemsChangesEventEmitter.fire(); this.onDbItemsChangesEventEmitter.fire();
}); });
} }

View File

@@ -7,6 +7,7 @@ import { DbManager } from "./db-manager";
import { DbPanel } from "./ui/db-panel"; import { DbPanel } from "./ui/db-panel";
import { DbSelectionDecorationProvider } from "./ui/db-selection-decoration-provider"; import { DbSelectionDecorationProvider } from "./ui/db-selection-decoration-provider";
import type { DatabasePanelCommands } from "../common/commands"; import type { DatabasePanelCommands } from "../common/commands";
import { VariantAnalysisConfigListener } from "../config";
export class DbModule extends DisposableObject { export class DbModule extends DisposableObject {
public readonly dbManager: DbManager; public readonly dbManager: DbManager;
@@ -17,7 +18,13 @@ export class DbModule extends DisposableObject {
super(); super();
this.dbConfigStore = new DbConfigStore(app); 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<DbModule> { public static async initialize(app: App): Promise<DbModule> {

View File

@@ -0,0 +1,9 @@
import type { VariantAnalysisConfig } from "../../src/config";
export function createMockVariantAnalysisConfig(): VariantAnalysisConfig {
return {
controllerRepo: "foo/bar",
showSystemDefinedRepositoryLists: true,
onDidChangeConfiguration: jest.fn(),
};
}

View File

@@ -24,6 +24,7 @@ import { DbManager } from "../../../src/databases/db-manager";
import { createDbConfig } from "../../factories/db-config-factories"; import { createDbConfig } from "../../factories/db-config-factories";
import { createRemoteUserDefinedListDbItem } from "../../factories/db-item-factories"; import { createRemoteUserDefinedListDbItem } from "../../factories/db-item-factories";
import { createMockApp } from "../../__mocks__/appMock"; 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 // 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. // 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 // We don't need to watch changes to the config file in these tests, so we
// pass `false` to the dbConfigStore constructor. // pass `false` to the dbConfigStore constructor.
dbConfigStore = new DbConfigStore(app, false); dbConfigStore = new DbConfigStore(app, false);
dbManager = new DbManager(app, dbConfigStore); dbManager = new DbManager(
app,
dbConfigStore,
createMockVariantAnalysisConfig(),
);
await ensureDir(tempWorkspaceStoragePath); await ensureDir(tempWorkspaceStoragePath);
dbConfigFilePath = join( dbConfigFilePath = join(

View File

@@ -1,4 +1,3 @@
import type { VariantAnalysisConfig } from "../../../src/config";
import type { DbConfig } from "../../../src/databases/config/db-config"; import type { DbConfig } from "../../../src/databases/config/db-config";
import { SelectedDbItemKind } from "../../../src/databases/config/db-config"; import { SelectedDbItemKind } from "../../../src/databases/config/db-config";
import { import {
@@ -11,12 +10,10 @@ import type { ExpandedDbItem } from "../../../src/databases/db-item-expansion";
import { ExpandedDbItemKind } from "../../../src/databases/db-item-expansion"; import { ExpandedDbItemKind } from "../../../src/databases/db-item-expansion";
import { createRemoteTree } from "../../../src/databases/db-tree-creator"; import { createRemoteTree } from "../../../src/databases/db-tree-creator";
import { createDbConfig } from "../../factories/db-config-factories"; import { createDbConfig } from "../../factories/db-config-factories";
import { createMockVariantAnalysisConfig } from "../../factories/config";
describe("db tree creator", () => { describe("db tree creator", () => {
const defaultVariantAnalysisConfig: VariantAnalysisConfig = { const defaultVariantAnalysisConfig = createMockVariantAnalysisConfig();
controllerRepo: "foo/bar",
showSystemDefinedRepositoryLists: true,
};
describe("createRemoteTree", () => { describe("createRemoteTree", () => {
it("should build root node and system defined lists", () => { it("should build root node and system defined lists", () => {

View File

@@ -49,6 +49,7 @@ import {
writeRepoStates, writeRepoStates,
} from "../../../../src/variant-analysis/repo-states-store"; } from "../../../../src/variant-analysis/repo-states-store";
import { permissiveFilterSortState } from "../../../unit-tests/variant-analysis-filter-sort.test"; import { permissiveFilterSortState } from "../../../unit-tests/variant-analysis-filter-sort.test";
import { createMockVariantAnalysisConfig } from "../../../factories/config";
// up to 3 minutes per test // up to 3 minutes per test
jest.setTimeout(3 * 60 * 1000); jest.setTimeout(3 * 60 * 1000);
@@ -72,7 +73,11 @@ describe("Variant Analysis Manager", () => {
const extension = await getActivatedExtension(); const extension = await getActivatedExtension();
const cli = mockedObject<CodeQLCliServer>({}); const cli = mockedObject<CodeQLCliServer>({});
app = new ExtensionApp(extension.ctx); 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( variantAnalysisResultsManager = new VariantAnalysisResultsManager(
cli, cli,
extLogger, extLogger,

View File

@@ -36,6 +36,7 @@ import type { QlPackLockFile } from "../../../../src/packaging/qlpack-lock-file"
//import { expect } from "@jest/globals"; //import { expect } from "@jest/globals";
import "../../../matchers/toExistInCodeQLPack"; import "../../../matchers/toExistInCodeQLPack";
import type { QlPackDetails } from "../../../../src/variant-analysis/ql-pack-details"; import type { QlPackDetails } from "../../../../src/variant-analysis/ql-pack-details";
import { createMockVariantAnalysisConfig } from "../../../factories/config";
describe("Variant Analysis Manager", () => { describe("Variant Analysis Manager", () => {
let cli: CodeQLCliServer; let cli: CodeQLCliServer;
@@ -50,7 +51,11 @@ describe("Variant Analysis Manager", () => {
const extension = await getActivatedExtension(); const extension = await getActivatedExtension();
cli = extension.cliServer; cli = extension.cliServer;
const app = new ExtensionApp(extension.ctx); 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( const variantAnalysisResultsManager = new VariantAnalysisResultsManager(
cli, cli,
extLogger, extLogger,

View File

@@ -11,6 +11,7 @@ import { ExtensionApp } from "../../../../src/common/vscode/extension-app";
import { createMockExtensionContext } from "../../../factories/extension-context"; import { createMockExtensionContext } from "../../../factories/extension-context";
import { createDbConfig } from "../../../factories/db-config-factories"; import { createDbConfig } from "../../../factories/db-config-factories";
import { setRemoteControllerRepo } from "../../../../src/config"; import { setRemoteControllerRepo } from "../../../../src/config";
import { createMockVariantAnalysisConfig } from "../../../factories/config";
describe("db panel rendering nodes", () => { describe("db panel rendering nodes", () => {
const workspaceStoragePath = join(__dirname, "test-workspace-storage"); const workspaceStoragePath = join(__dirname, "test-workspace-storage");
@@ -35,7 +36,11 @@ describe("db panel rendering nodes", () => {
const app = new ExtensionApp(extensionContext); const app = new ExtensionApp(extensionContext);
dbConfigStore = new DbConfigStore(app, false); dbConfigStore = new DbConfigStore(app, false);
dbManager = new DbManager(app, dbConfigStore); dbManager = new DbManager(
app,
dbConfigStore,
createMockVariantAnalysisConfig(),
);
}); });
beforeEach(async () => { beforeEach(async () => {

View File

@@ -10,6 +10,7 @@ import { ExtensionApp } from "../../../../src/common/vscode/extension-app";
import { createMockExtensionContext } from "../../../factories/extension-context"; import { createMockExtensionContext } from "../../../factories/extension-context";
import { createDbConfig } from "../../../factories/db-config-factories"; import { createDbConfig } from "../../../factories/db-config-factories";
import { setRemoteControllerRepo } from "../../../../src/config"; import { setRemoteControllerRepo } from "../../../../src/config";
import { createMockVariantAnalysisConfig } from "../../../factories/config";
describe("db panel", () => { describe("db panel", () => {
const workspaceStoragePath = join(__dirname, "test-workspace-storage"); const workspaceStoragePath = join(__dirname, "test-workspace-storage");
@@ -34,7 +35,11 @@ describe("db panel", () => {
const app = new ExtensionApp(extensionContext); const app = new ExtensionApp(extensionContext);
dbConfigStore = new DbConfigStore(app, false); dbConfigStore = new DbConfigStore(app, false);
dbManager = new DbManager(app, dbConfigStore); dbManager = new DbManager(
app,
dbConfigStore,
createMockVariantAnalysisConfig(),
);
}); });
beforeEach(async () => { beforeEach(async () => {

View File

@@ -12,6 +12,7 @@ import { ExtensionApp } from "../../../../src/common/vscode/extension-app";
import { createMockExtensionContext } from "../../../factories/extension-context"; import { createMockExtensionContext } from "../../../factories/extension-context";
import { createDbConfig } from "../../../factories/db-config-factories"; import { createDbConfig } from "../../../factories/db-config-factories";
import { setRemoteControllerRepo } from "../../../../src/config"; import { setRemoteControllerRepo } from "../../../../src/config";
import { createMockVariantAnalysisConfig } from "../../../factories/config";
describe("db panel selection", () => { describe("db panel selection", () => {
const workspaceStoragePath = join(__dirname, "test-workspace-storage"); const workspaceStoragePath = join(__dirname, "test-workspace-storage");
@@ -36,7 +37,11 @@ describe("db panel selection", () => {
const app = new ExtensionApp(extensionContext); const app = new ExtensionApp(extensionContext);
dbConfigStore = new DbConfigStore(app, false); dbConfigStore = new DbConfigStore(app, false);
dbManager = new DbManager(app, dbConfigStore); dbManager = new DbManager(
app,
dbConfigStore,
createMockVariantAnalysisConfig(),
);
}); });
beforeEach(async () => { beforeEach(async () => {