Make revealItem private by listening to onSelectedMethodChanged
This commit is contained in:
@@ -57,7 +57,7 @@ export class MethodsUsagePanel extends DisposableObject {
|
||||
};
|
||||
}
|
||||
|
||||
public async revealItem(
|
||||
private async revealItem(
|
||||
methodSignature: string,
|
||||
usage: Usage,
|
||||
): Promise<void> {
|
||||
@@ -108,6 +108,12 @@ export class MethodsUsagePanel extends DisposableObject {
|
||||
}
|
||||
}),
|
||||
);
|
||||
|
||||
this.push(
|
||||
this.modelingEvents.onSelectedMethodChanged(async (event) => {
|
||||
await this.revealItem(event.method.signature, event.usage);
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
private async handleStateChangeEvent(): Promise<void> {
|
||||
|
||||
@@ -37,7 +37,6 @@ export class ModelEditorModule extends DisposableObject {
|
||||
private readonly queryStorageDir: string;
|
||||
private readonly modelingStore: ModelingStore;
|
||||
private readonly modelingEvents: ModelingEvents;
|
||||
private readonly methodsUsagePanel: MethodsUsagePanel;
|
||||
private readonly modelConfig: ModelConfigListener;
|
||||
|
||||
private constructor(
|
||||
@@ -52,7 +51,7 @@ export class ModelEditorModule extends DisposableObject {
|
||||
this.queryStorageDir = join(baseQueryStorageDir, "model-editor-results");
|
||||
this.modelingEvents = new ModelingEvents(app);
|
||||
this.modelingStore = new ModelingStore(this.modelingEvents);
|
||||
this.methodsUsagePanel = this.push(
|
||||
this.push(
|
||||
new MethodsUsagePanel(this.modelingStore, this.modelingEvents, cliServer),
|
||||
);
|
||||
this.push(
|
||||
@@ -106,7 +105,7 @@ export class ModelEditorModule extends DisposableObject {
|
||||
private registerToModelingEvents(): void {
|
||||
this.push(
|
||||
this.modelingEvents.onSelectedMethodChanged(async (event) => {
|
||||
await this.showMethod(event.databaseItem, event.method, event.usage);
|
||||
await this.showMethod(event.databaseItem, event.usage);
|
||||
}),
|
||||
);
|
||||
|
||||
@@ -127,10 +126,8 @@ export class ModelEditorModule extends DisposableObject {
|
||||
|
||||
private async showMethod(
|
||||
databaseItem: DatabaseItem,
|
||||
method: Method,
|
||||
usage: Usage,
|
||||
): Promise<void> {
|
||||
await this.methodsUsagePanel.revealItem(method.signature, usage);
|
||||
await showResolvableLocation(usage.url, databaseItem, this.app.logger);
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import type { ModelingEvents } from "../../../src/model-editor/modeling-events";
|
||||
export function createMockModelingEvents({
|
||||
onActiveDbChanged = jest.fn(),
|
||||
onDbClosed = jest.fn(),
|
||||
onSelectedMethodChanged = jest.fn(),
|
||||
onMethodsChanged = jest.fn(),
|
||||
onHideModeledMethodsChanged = jest.fn(),
|
||||
onModeChanged = jest.fn(),
|
||||
@@ -16,6 +17,7 @@ export function createMockModelingEvents({
|
||||
}: {
|
||||
onActiveDbChanged?: ModelingEvents["onActiveDbChanged"];
|
||||
onDbClosed?: ModelingEvents["onDbClosed"];
|
||||
onSelectedMethodChanged?: ModelingEvents["onSelectedMethodChanged"];
|
||||
onMethodsChanged?: ModelingEvents["onMethodsChanged"];
|
||||
onHideModeledMethodsChanged?: ModelingEvents["onHideModeledMethodsChanged"];
|
||||
onModeChanged?: ModelingEvents["onModeChanged"];
|
||||
@@ -29,6 +31,7 @@ export function createMockModelingEvents({
|
||||
return mockedObject<ModelingEvents>({
|
||||
onActiveDbChanged,
|
||||
onDbClosed,
|
||||
onSelectedMethodChanged,
|
||||
onMethodsChanged,
|
||||
onHideModeledMethodsChanged,
|
||||
onModeChanged,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { TreeView } from "vscode";
|
||||
import { window } from "vscode";
|
||||
import { EventEmitter, window } from "vscode";
|
||||
import type { CodeQLCliServer } from "../../../../../src/codeql-cli/cli";
|
||||
import type { Method } from "../../../../../src/model-editor/method";
|
||||
import { MethodsUsagePanel } from "../../../../../src/model-editor/methods-usage/methods-usage-panel";
|
||||
@@ -66,6 +66,8 @@ describe("MethodsUsagePanel", () => {
|
||||
const modeledMethods: Record<string, ModeledMethod[]> = {};
|
||||
const modifiedMethodSignatures: Set<string> = new Set();
|
||||
const usage = createUsage();
|
||||
const selectedMethodChangedEmitter: ModelingEvents["onSelectedMethodChangedEventEmitter"] =
|
||||
new EventEmitter();
|
||||
|
||||
beforeEach(() => {
|
||||
mockTreeView = mockedObject<TreeView<unknown>>({
|
||||
@@ -74,7 +76,9 @@ describe("MethodsUsagePanel", () => {
|
||||
jest.spyOn(window, "createTreeView").mockReturnValue(mockTreeView);
|
||||
|
||||
modelingStore = createMockModelingStore();
|
||||
modelingEvents = createMockModelingEvents();
|
||||
modelingEvents = createMockModelingEvents({
|
||||
onSelectedMethodChanged: selectedMethodChangedEmitter.event,
|
||||
});
|
||||
});
|
||||
|
||||
it("should reveal the correct item in the tree view", async () => {
|
||||
@@ -97,7 +101,15 @@ describe("MethodsUsagePanel", () => {
|
||||
modifiedMethodSignatures,
|
||||
);
|
||||
|
||||
await panel.revealItem(method.signature, usage);
|
||||
selectedMethodChangedEmitter.fire({
|
||||
databaseItem: dbItem,
|
||||
method,
|
||||
usage,
|
||||
modeledMethods: modeledMethods[method.signature],
|
||||
isModified: modifiedMethodSignatures.has(method.signature),
|
||||
isInProgress: false,
|
||||
processedByAutoModel: false,
|
||||
});
|
||||
|
||||
expect(mockTreeView.reveal).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
@@ -124,7 +136,15 @@ describe("MethodsUsagePanel", () => {
|
||||
modifiedMethodSignatures,
|
||||
);
|
||||
|
||||
await panel.revealItem(method.signature, usage);
|
||||
selectedMethodChangedEmitter.fire({
|
||||
databaseItem: dbItem,
|
||||
method,
|
||||
usage,
|
||||
modeledMethods: modeledMethods[method.signature],
|
||||
isModified: modifiedMethodSignatures.has(method.signature),
|
||||
isInProgress: false,
|
||||
processedByAutoModel: false,
|
||||
});
|
||||
|
||||
expect(mockTreeView.reveal).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user