Pass VariantAnalysisConfig into DbManager to avoid vscode dependency
This commit is contained in:
@@ -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();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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> {
|
||||||
|
|||||||
9
extensions/ql-vscode/test/factories/config.ts
Normal file
9
extensions/ql-vscode/test/factories/config.ts
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
import type { VariantAnalysisConfig } from "../../src/config";
|
||||||
|
|
||||||
|
export function createMockVariantAnalysisConfig(): VariantAnalysisConfig {
|
||||||
|
return {
|
||||||
|
controllerRepo: "foo/bar",
|
||||||
|
showSystemDefinedRepositoryLists: true,
|
||||||
|
onDidChangeConfiguration: jest.fn(),
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -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(
|
||||||
|
|||||||
@@ -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", () => {
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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 () => {
|
||||||
|
|||||||
@@ -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 () => {
|
||||||
|
|||||||
@@ -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 () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user