|
| 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