Skip to content

Commit 7f20921

Browse files
committed
Add simple test for ModelEditorView
1 parent d7565fb commit 7f20921

1 file changed

Lines changed: 79 additions & 0 deletions

File tree

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
import { join } from "path";
2+
import { Mode } from "../../../../src/model-editor/shared/mode";
3+
import { mockDatabaseItem, mockedObject } from "../../utils/mocking.helpers";
4+
import { CodeQLCliServer } from "../../../../src/codeql-cli/cli";
5+
import { Uri, WebviewPanel } from "vscode";
6+
import { ModelEditorView } from "../../../../src/model-editor/model-editor-view";
7+
import { createMockApp } from "../../../__mocks__/appMock";
8+
import { mockEmptyDatabaseManager } from "../query-testing/test-runner-helpers";
9+
import { QueryRunner } from "../../../../src/query-server";
10+
import { ExtensionPack } from "../../../../src/model-editor/shared/extension-pack";
11+
12+
describe("ModelEditorView", () => {
13+
const app = createMockApp({});
14+
const databaseManager = mockEmptyDatabaseManager();
15+
const cliServer = mockedObject<CodeQLCliServer>({});
16+
const queryRunner = mockedObject<QueryRunner>({});
17+
const queryStorageDir = "/a/b/c/d";
18+
const queryDir = "/a/b/c/e";
19+
const databaseItem = mockDatabaseItem();
20+
const extensionPack: ExtensionPack = {
21+
path: "/a/b/c/f",
22+
yamlPath: join("/a/b/c/f", "codeql-pack.yml"),
23+
name: "codeql/test",
24+
version: "0.0.0",
25+
language: "java",
26+
extensionTargets: {
27+
"codeql/java-all": "*",
28+
},
29+
dataExtensions: ["models/**/*.yml"],
30+
};
31+
const mode = Mode.Application;
32+
const updateMethodsUsagePanelState = jest.fn();
33+
const showMethod = jest.fn();
34+
const handleViewBecameActive = jest.fn();
35+
const handleViewWasDisposed = jest.fn();
36+
const isMostRecentlyActiveView = jest.fn();
37+
38+
let view: ModelEditorView;
39+
40+
beforeEach(() => {
41+
view = new ModelEditorView(
42+
app,
43+
databaseManager,
44+
cliServer,
45+
queryRunner,
46+
queryStorageDir,
47+
queryDir,
48+
databaseItem,
49+
extensionPack,
50+
mode,
51+
updateMethodsUsagePanelState,
52+
showMethod,
53+
handleViewBecameActive,
54+
handleViewWasDisposed,
55+
isMostRecentlyActiveView,
56+
);
57+
});
58+
59+
it("sets up the view", async () => {
60+
const panel = mockedObject<WebviewPanel>({
61+
onDidDispose: jest.fn(),
62+
webview: {
63+
html: undefined,
64+
cspSource: "abc",
65+
onDidReceiveMessage: jest.fn(),
66+
asWebviewUri: jest.fn().mockImplementation((uri: Uri) =>
67+
uri.with({
68+
scheme: "webview",
69+
}),
70+
),
71+
},
72+
});
73+
74+
await view.restoreView(panel);
75+
76+
expect(panel.webview.html).toContain("<html>");
77+
expect(panel.webview.html).toContain('data-view="model-editor"');
78+
});
79+
});

0 commit comments

Comments
 (0)