Add reveal test

This commit is contained in:
Nora
2023-08-22 13:11:46 +00:00
parent 392e76d8f2
commit 45f7d22d2a

View File

@@ -1,6 +1,9 @@
import { window, TreeView } from "vscode";
import { CodeQLCliServer } from "../../../../../src/codeql-cli/cli";
import { ExternalApiUsage } from "../../../../../src/data-extensions-editor/external-api-usage";
import {
CallClassification,
ExternalApiUsage,
} from "../../../../../src/data-extensions-editor/external-api-usage";
import { ModelDetailsPanel } from "../../../../../src/data-extensions-editor/model-details/model-details-panel";
import { DatabaseItem } from "../../../../../src/databases/local-databases";
import { mockedObject } from "../../../utils/mocking.helpers";
@@ -39,4 +42,57 @@ describe("ModelDetailsPanel", () => {
expect(mockTreeView.badge?.value).toBe(1);
});
});
describe("revealItem", () => {
let mockTreeView: TreeView<unknown>;
const hideModeledApis: boolean = false;
const dbItem = mockedObject<DatabaseItem>({
getSourceLocationPrefix: () => "test",
});
const usage = {
classification: "unknown" as CallClassification,
label: "test",
url: {
uri: "test",
startLine: 1,
startColumn: 1,
endLine: 1,
endColumn: 1,
},
};
beforeEach(() => {
mockTreeView = {
reveal: jest.fn(),
} as unknown as TreeView<unknown>;
jest.spyOn(window, "createTreeView").mockReturnValue(mockTreeView);
});
it("should reveal the correct item in the tree view", async () => {
const externalApiUsages = mockedObject<ExternalApiUsage[]>([
{
usages: [usage],
},
]);
const panel = new ModelDetailsPanel(mockCliServer);
await panel.setState(externalApiUsages, dbItem, hideModeledApis);
await panel.revealItem(usage);
expect(mockTreeView.reveal).toHaveBeenCalledWith(usage);
});
it("should do nothing if usage cannot be found", async () => {
const externalApiUsages = mockedObject<ExternalApiUsage[]>([]);
const panel = new ModelDetailsPanel(mockCliServer);
await panel.setState(externalApiUsages, dbItem, hideModeledApis);
await panel.revealItem(usage);
expect(mockTreeView.reveal).not.toHaveBeenCalled();
});
});
});