Merge pull request #2123 from github/koesie10/remove-unknown-database-item
Remove additional `as unknown as` for database items
This commit is contained in:
@@ -3,8 +3,8 @@ import { load } from "js-yaml";
|
||||
|
||||
import { AstViewer, AstItem } from "../../../src/astViewer";
|
||||
import { commands, Range, Uri } from "vscode";
|
||||
import { DatabaseItem } from "../../../src/local-databases";
|
||||
import { testDisposeHandler } from "../test-dispose-handler";
|
||||
import { mockDatabaseItem } from "../utils/mocking.helpers";
|
||||
|
||||
describe("AstViewer", () => {
|
||||
let astRoots: AstItem[];
|
||||
@@ -31,7 +31,7 @@ describe("AstViewer", () => {
|
||||
});
|
||||
|
||||
it("should update the viewer roots", () => {
|
||||
const item = {} as DatabaseItem;
|
||||
const item = mockDatabaseItem();
|
||||
viewer = new AstViewer();
|
||||
viewer.updateRoots(astRoots, item, Uri.file("def/abc"));
|
||||
|
||||
@@ -71,7 +71,7 @@ describe("AstViewer", () => {
|
||||
selectionRange: Range | undefined,
|
||||
fileUri = defaultUri,
|
||||
) {
|
||||
const item = {} as DatabaseItem;
|
||||
const item = mockDatabaseItem();
|
||||
viewer = new AstViewer();
|
||||
viewer.updateRoots(astRoots, item, defaultUri);
|
||||
|
||||
|
||||
@@ -2,10 +2,9 @@ import { readFileSync } from "fs-extra";
|
||||
|
||||
import AstBuilder from "../../../../src/contextual/astBuilder";
|
||||
import { CodeQLCliServer } from "../../../../src/cli";
|
||||
import { DatabaseItem } from "../../../../src/local-databases";
|
||||
import { Uri } from "vscode";
|
||||
import { QueryWithResults } from "../../../../src/run-queries-shared";
|
||||
import { mockedObject } from "../../utils/mocking.helpers";
|
||||
import { mockDatabaseItem, mockedObject } from "../../utils/mocking.helpers";
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -146,7 +145,9 @@ describe("AstBuilder", () => {
|
||||
},
|
||||
} as QueryWithResults,
|
||||
mockCli,
|
||||
{} as DatabaseItem,
|
||||
mockDatabaseItem({
|
||||
resolveSourceFile: undefined,
|
||||
}),
|
||||
Uri.file(""),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import {
|
||||
WholeFileLocation,
|
||||
LineColumnLocation,
|
||||
} from "../../../../src/pure/bqrs-cli-types";
|
||||
import { mockDatabaseItem } from "../../utils/mocking.helpers";
|
||||
|
||||
describe("fileRangeFromURI", () => {
|
||||
it("should return undefined when value is not a file URI", () => {
|
||||
@@ -92,8 +93,8 @@ describe("fileRangeFromURI", () => {
|
||||
});
|
||||
|
||||
function createMockDatabaseItem(): DatabaseItem {
|
||||
return {
|
||||
return mockDatabaseItem({
|
||||
resolveSourceFile: (file: string) => Uri.parse(file),
|
||||
} as DatabaseItem;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@@ -10,8 +10,7 @@ import {
|
||||
resolveQueries,
|
||||
} from "../../../../src/contextual/queryResolver";
|
||||
import { CodeQLCliServer } from "../../../../src/cli";
|
||||
import { DatabaseItem } from "../../../../src/local-databases";
|
||||
import { mockedObject } from "../../utils/mocking.helpers";
|
||||
import { mockDatabaseItem, mockedObject } from "../../utils/mocking.helpers";
|
||||
|
||||
describe("queryResolver", () => {
|
||||
let getQlPackForDbschemeSpy: jest.SpiedFunction<
|
||||
@@ -96,13 +95,13 @@ describe("queryResolver", () => {
|
||||
dbschemePack: "my-qlpack",
|
||||
dbschemePackIsLibraryPack: false,
|
||||
});
|
||||
const db = {
|
||||
const db = mockDatabaseItem({
|
||||
contents: {
|
||||
datasetUri: {
|
||||
fsPath: "/path/to/database",
|
||||
},
|
||||
},
|
||||
} as unknown as DatabaseItem;
|
||||
});
|
||||
const result = await qlpackOfDatabase(mockCli, db);
|
||||
expect(result).toEqual({
|
||||
dbschemePack: "my-qlpack",
|
||||
|
||||
@@ -14,7 +14,7 @@ import {
|
||||
tryResolveLocation,
|
||||
} from "../../../src/interface-utils";
|
||||
import { getDefaultResultSetName } from "../../../src/pure/interface-types";
|
||||
import { DatabaseItem } from "../../../src/local-databases";
|
||||
import { mockDatabaseItem } from "../utils/mocking.helpers";
|
||||
|
||||
describe("interface-utils", () => {
|
||||
describe("webview uri conversion", () => {
|
||||
@@ -84,27 +84,21 @@ describe("interface-utils", () => {
|
||||
|
||||
describe("resolveWholeFileLocation", () => {
|
||||
it("should resolve a whole file location", () => {
|
||||
const mockDatabaseItem: DatabaseItem = {
|
||||
resolveSourceFile: jest.fn().mockReturnValue(Uri.file("abc")),
|
||||
} as unknown as DatabaseItem;
|
||||
const databaseItem = mockDatabaseItem();
|
||||
expect(
|
||||
tryResolveLocation("file://hucairz:0:0:0:0", mockDatabaseItem),
|
||||
tryResolveLocation("file://hucairz:0:0:0:0", databaseItem),
|
||||
).toEqual(new Location(Uri.file("abc"), new Range(0, 0, 0, 0)));
|
||||
});
|
||||
|
||||
it("should resolve a five-part location edge case", () => {
|
||||
const mockDatabaseItem: DatabaseItem = {
|
||||
resolveSourceFile: jest.fn().mockReturnValue(Uri.file("abc")),
|
||||
} as unknown as DatabaseItem;
|
||||
const databaseItem = mockDatabaseItem();
|
||||
expect(
|
||||
tryResolveLocation("file://hucairz:1:1:1:1", mockDatabaseItem),
|
||||
tryResolveLocation("file://hucairz:1:1:1:1", databaseItem),
|
||||
).toEqual(new Location(Uri.file("abc"), new Range(0, 0, 0, 1)));
|
||||
});
|
||||
|
||||
it("should resolve a five-part location", () => {
|
||||
const mockDatabaseItem: DatabaseItem = {
|
||||
resolveSourceFile: jest.fn().mockReturnValue(Uri.parse("abc")),
|
||||
} as unknown as DatabaseItem;
|
||||
const databaseItem = mockDatabaseItem();
|
||||
|
||||
expect(
|
||||
tryResolveLocation(
|
||||
@@ -115,7 +109,7 @@ describe("interface-utils", () => {
|
||||
endLine: 5,
|
||||
uri: "hucairz",
|
||||
},
|
||||
mockDatabaseItem,
|
||||
databaseItem,
|
||||
),
|
||||
).toEqual(
|
||||
new Location(
|
||||
@@ -123,16 +117,12 @@ describe("interface-utils", () => {
|
||||
new Range(new Position(4, 3), new Position(3, 0)),
|
||||
),
|
||||
);
|
||||
expect(mockDatabaseItem.resolveSourceFile).toHaveBeenCalledTimes(1);
|
||||
expect(mockDatabaseItem.resolveSourceFile).toHaveBeenCalledWith(
|
||||
"hucairz",
|
||||
);
|
||||
expect(databaseItem.resolveSourceFile).toHaveBeenCalledTimes(1);
|
||||
expect(databaseItem.resolveSourceFile).toHaveBeenCalledWith("hucairz");
|
||||
});
|
||||
|
||||
it("should resolve a five-part location with an empty path", () => {
|
||||
const mockDatabaseItem: DatabaseItem = {
|
||||
resolveSourceFile: jest.fn().mockReturnValue(Uri.parse("abc")),
|
||||
} as unknown as DatabaseItem;
|
||||
const databaseItem = mockDatabaseItem();
|
||||
|
||||
expect(
|
||||
tryResolveLocation(
|
||||
@@ -143,51 +133,41 @@ describe("interface-utils", () => {
|
||||
endLine: 5,
|
||||
uri: "",
|
||||
},
|
||||
mockDatabaseItem,
|
||||
databaseItem,
|
||||
),
|
||||
).toBeUndefined();
|
||||
});
|
||||
|
||||
it("should resolve a string location for whole file", () => {
|
||||
const mockDatabaseItem: DatabaseItem = {
|
||||
resolveSourceFile: jest.fn().mockReturnValue(Uri.parse("abc")),
|
||||
} as unknown as DatabaseItem;
|
||||
const databaseItem = mockDatabaseItem();
|
||||
|
||||
expect(
|
||||
tryResolveLocation("file://hucairz:0:0:0:0", mockDatabaseItem),
|
||||
tryResolveLocation("file://hucairz:0:0:0:0", databaseItem),
|
||||
).toEqual(new Location(Uri.parse("abc"), new Range(0, 0, 0, 0)));
|
||||
expect(mockDatabaseItem.resolveSourceFile).toHaveBeenCalledTimes(1);
|
||||
expect(mockDatabaseItem.resolveSourceFile).toHaveBeenCalledWith(
|
||||
"hucairz",
|
||||
);
|
||||
expect(databaseItem.resolveSourceFile).toHaveBeenCalledTimes(1);
|
||||
expect(databaseItem.resolveSourceFile).toHaveBeenCalledWith("hucairz");
|
||||
});
|
||||
|
||||
it("should resolve a string location for five-part location", () => {
|
||||
const mockDatabaseItem: DatabaseItem = {
|
||||
resolveSourceFile: jest.fn().mockReturnValue(Uri.parse("abc")),
|
||||
} as unknown as DatabaseItem;
|
||||
const databaseItem = mockDatabaseItem();
|
||||
|
||||
expect(
|
||||
tryResolveLocation("file://hucairz:5:4:3:2", mockDatabaseItem),
|
||||
tryResolveLocation("file://hucairz:5:4:3:2", databaseItem),
|
||||
).toEqual(
|
||||
new Location(
|
||||
Uri.parse("abc"),
|
||||
new Range(new Position(4, 3), new Position(2, 2)),
|
||||
),
|
||||
);
|
||||
expect(mockDatabaseItem.resolveSourceFile).toHaveBeenCalledTimes(1);
|
||||
expect(mockDatabaseItem.resolveSourceFile).toHaveBeenCalledWith(
|
||||
"hucairz",
|
||||
);
|
||||
expect(databaseItem.resolveSourceFile).toHaveBeenCalledTimes(1);
|
||||
expect(databaseItem.resolveSourceFile).toHaveBeenCalledWith("hucairz");
|
||||
});
|
||||
|
||||
it("should resolve a string location for invalid string", () => {
|
||||
const mockDatabaseItem: DatabaseItem = {
|
||||
resolveSourceFile: jest.fn().mockReturnValue(Uri.parse("abc")),
|
||||
} as unknown as DatabaseItem;
|
||||
const databaseItem = mockDatabaseItem();
|
||||
|
||||
expect(
|
||||
tryResolveLocation("file://hucairz:x:y:z:a", mockDatabaseItem),
|
||||
tryResolveLocation("file://hucairz:x:y:z:a", databaseItem),
|
||||
).toBeUndefined();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -37,7 +37,7 @@ describe("test-adapter", () => {
|
||||
const preTestDatabaseItem = new DatabaseItemImpl(
|
||||
Uri.file("/path/to/test/dir/dir.testproj"),
|
||||
undefined,
|
||||
{ displayName: "custom display name" } as unknown as FullDatabaseOptions,
|
||||
mockedObject<FullDatabaseOptions>({ displayName: "custom display name" }),
|
||||
(_) => {
|
||||
/* no change event listener */
|
||||
},
|
||||
@@ -45,7 +45,7 @@ describe("test-adapter", () => {
|
||||
const postTestDatabaseItem = new DatabaseItemImpl(
|
||||
Uri.file("/path/to/test/dir/dir.testproj"),
|
||||
undefined,
|
||||
{ displayName: "default name" } as unknown as FullDatabaseOptions,
|
||||
mockedObject<FullDatabaseOptions>({ displayName: "default name" }),
|
||||
(_) => {
|
||||
/* no change event listener */
|
||||
},
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
import { DatabaseItem } from "../../../src/local-databases";
|
||||
import { Uri } from "vscode";
|
||||
|
||||
export type DeepPartial<T> = T extends object
|
||||
? {
|
||||
[P in keyof T]?: DeepPartial<T[P]>;
|
||||
@@ -41,3 +44,16 @@ export function mockedObject<T extends object>(
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export function mockDatabaseItem(
|
||||
props: DeepPartial<DatabaseItem> = {},
|
||||
): DatabaseItem {
|
||||
return mockedObject<DatabaseItem>({
|
||||
databaseUri: Uri.file("abc"),
|
||||
name: "github/codeql",
|
||||
language: "javascript",
|
||||
sourceArchive: undefined,
|
||||
resolveSourceFile: jest.fn().mockReturnValue(Uri.file("abc")),
|
||||
...props,
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user