Skip to content

Commit 59cc93f

Browse files
committed
Remove as unknown as DatabaseItem
1 parent 56d283f commit 59cc93f

File tree

6 files changed

+50
-53
lines changed

6 files changed

+50
-53
lines changed

extensions/ql-vscode/test/vscode-tests/no-workspace/astViewer.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import { load } from "js-yaml";
33

44
import { AstViewer, AstItem } from "../../../src/astViewer";
55
import { commands, Range, Uri } from "vscode";
6-
import { DatabaseItem } from "../../../src/local-databases";
76
import { testDisposeHandler } from "../test-dispose-handler";
7+
import { mockDatabaseItem } from "../utils/mocking.helpers";
88

99
describe("AstViewer", () => {
1010
let astRoots: AstItem[];
@@ -31,7 +31,7 @@ describe("AstViewer", () => {
3131
});
3232

3333
it("should update the viewer roots", () => {
34-
const item = {} as DatabaseItem;
34+
const item = mockDatabaseItem();
3535
viewer = new AstViewer();
3636
viewer.updateRoots(astRoots, item, Uri.file("def/abc"));
3737

@@ -71,7 +71,7 @@ describe("AstViewer", () => {
7171
selectionRange: Range | undefined,
7272
fileUri = defaultUri,
7373
) {
74-
const item = {} as DatabaseItem;
74+
const item = mockDatabaseItem();
7575
viewer = new AstViewer();
7676
viewer.updateRoots(astRoots, item, defaultUri);
7777

extensions/ql-vscode/test/vscode-tests/no-workspace/contextual/astBuilder.test.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@ import { readFileSync } from "fs-extra";
22

33
import AstBuilder from "../../../../src/contextual/astBuilder";
44
import { CodeQLCliServer } from "../../../../src/cli";
5-
import { DatabaseItem } from "../../../../src/local-databases";
65
import { Uri } from "vscode";
76
import { QueryWithResults } from "../../../../src/run-queries-shared";
8-
import { mockedObject } from "../../utils/mocking.helpers";
7+
import { mockDatabaseItem, mockedObject } from "../../utils/mocking.helpers";
98

109
/**
1110
*
@@ -146,7 +145,9 @@ describe("AstBuilder", () => {
146145
},
147146
} as QueryWithResults,
148147
mockCli,
149-
{} as DatabaseItem,
148+
mockDatabaseItem({
149+
resolveSourceFile: undefined,
150+
}),
150151
Uri.file(""),
151152
);
152153
}

extensions/ql-vscode/test/vscode-tests/no-workspace/contextual/fileRangeFromURI.test.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
WholeFileLocation,
77
LineColumnLocation,
88
} from "../../../../src/pure/bqrs-cli-types";
9+
import { mockDatabaseItem } from "../../utils/mocking.helpers";
910

1011
describe("fileRangeFromURI", () => {
1112
it("should return undefined when value is not a file URI", () => {
@@ -92,8 +93,8 @@ describe("fileRangeFromURI", () => {
9293
});
9394

9495
function createMockDatabaseItem(): DatabaseItem {
95-
return {
96+
return mockDatabaseItem({
9697
resolveSourceFile: (file: string) => Uri.parse(file),
97-
} as DatabaseItem;
98+
});
9899
}
99100
});

extensions/ql-vscode/test/vscode-tests/no-workspace/contextual/queryResolver.test.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ import {
1010
resolveQueries,
1111
} from "../../../../src/contextual/queryResolver";
1212
import { CodeQLCliServer } from "../../../../src/cli";
13-
import { DatabaseItem } from "../../../../src/local-databases";
14-
import { mockedObject } from "../../utils/mocking.helpers";
13+
import { mockDatabaseItem, mockedObject } from "../../utils/mocking.helpers";
1514

1615
describe("queryResolver", () => {
1716
let getQlPackForDbschemeSpy: jest.SpiedFunction<
@@ -96,13 +95,13 @@ describe("queryResolver", () => {
9695
dbschemePack: "my-qlpack",
9796
dbschemePackIsLibraryPack: false,
9897
});
99-
const db = {
98+
const db = mockDatabaseItem({
10099
contents: {
101100
datasetUri: {
102101
fsPath: "/path/to/database",
103102
},
104103
},
105-
} as unknown as DatabaseItem;
104+
});
106105
const result = await qlpackOfDatabase(mockCli, db);
107106
expect(result).toEqual({
108107
dbschemePack: "my-qlpack",

extensions/ql-vscode/test/vscode-tests/no-workspace/interface-utils.test.ts

Lines changed: 21 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import {
1414
tryResolveLocation,
1515
} from "../../../src/interface-utils";
1616
import { getDefaultResultSetName } from "../../../src/pure/interface-types";
17-
import { DatabaseItem } from "../../../src/local-databases";
17+
import { mockDatabaseItem } from "../utils/mocking.helpers";
1818

1919
describe("interface-utils", () => {
2020
describe("webview uri conversion", () => {
@@ -84,27 +84,21 @@ describe("interface-utils", () => {
8484

8585
describe("resolveWholeFileLocation", () => {
8686
it("should resolve a whole file location", () => {
87-
const mockDatabaseItem: DatabaseItem = {
88-
resolveSourceFile: jest.fn().mockReturnValue(Uri.file("abc")),
89-
} as unknown as DatabaseItem;
87+
const databaseItem = mockDatabaseItem();
9088
expect(
91-
tryResolveLocation("file://hucairz:0:0:0:0", mockDatabaseItem),
89+
tryResolveLocation("file://hucairz:0:0:0:0", databaseItem),
9290
).toEqual(new Location(Uri.file("abc"), new Range(0, 0, 0, 0)));
9391
});
9492

9593
it("should resolve a five-part location edge case", () => {
96-
const mockDatabaseItem: DatabaseItem = {
97-
resolveSourceFile: jest.fn().mockReturnValue(Uri.file("abc")),
98-
} as unknown as DatabaseItem;
94+
const databaseItem = mockDatabaseItem();
9995
expect(
100-
tryResolveLocation("file://hucairz:1:1:1:1", mockDatabaseItem),
96+
tryResolveLocation("file://hucairz:1:1:1:1", databaseItem),
10197
).toEqual(new Location(Uri.file("abc"), new Range(0, 0, 0, 1)));
10298
});
10399

104100
it("should resolve a five-part location", () => {
105-
const mockDatabaseItem: DatabaseItem = {
106-
resolveSourceFile: jest.fn().mockReturnValue(Uri.parse("abc")),
107-
} as unknown as DatabaseItem;
101+
const databaseItem = mockDatabaseItem();
108102

109103
expect(
110104
tryResolveLocation(
@@ -115,24 +109,20 @@ describe("interface-utils", () => {
115109
endLine: 5,
116110
uri: "hucairz",
117111
},
118-
mockDatabaseItem,
112+
databaseItem,
119113
),
120114
).toEqual(
121115
new Location(
122116
Uri.parse("abc"),
123117
new Range(new Position(4, 3), new Position(3, 0)),
124118
),
125119
);
126-
expect(mockDatabaseItem.resolveSourceFile).toHaveBeenCalledTimes(1);
127-
expect(mockDatabaseItem.resolveSourceFile).toHaveBeenCalledWith(
128-
"hucairz",
129-
);
120+
expect(databaseItem.resolveSourceFile).toHaveBeenCalledTimes(1);
121+
expect(databaseItem.resolveSourceFile).toHaveBeenCalledWith("hucairz");
130122
});
131123

132124
it("should resolve a five-part location with an empty path", () => {
133-
const mockDatabaseItem: DatabaseItem = {
134-
resolveSourceFile: jest.fn().mockReturnValue(Uri.parse("abc")),
135-
} as unknown as DatabaseItem;
125+
const databaseItem = mockDatabaseItem();
136126

137127
expect(
138128
tryResolveLocation(
@@ -143,51 +133,41 @@ describe("interface-utils", () => {
143133
endLine: 5,
144134
uri: "",
145135
},
146-
mockDatabaseItem,
136+
databaseItem,
147137
),
148138
).toBeUndefined();
149139
});
150140

151141
it("should resolve a string location for whole file", () => {
152-
const mockDatabaseItem: DatabaseItem = {
153-
resolveSourceFile: jest.fn().mockReturnValue(Uri.parse("abc")),
154-
} as unknown as DatabaseItem;
142+
const databaseItem = mockDatabaseItem();
155143

156144
expect(
157-
tryResolveLocation("file://hucairz:0:0:0:0", mockDatabaseItem),
145+
tryResolveLocation("file://hucairz:0:0:0:0", databaseItem),
158146
).toEqual(new Location(Uri.parse("abc"), new Range(0, 0, 0, 0)));
159-
expect(mockDatabaseItem.resolveSourceFile).toHaveBeenCalledTimes(1);
160-
expect(mockDatabaseItem.resolveSourceFile).toHaveBeenCalledWith(
161-
"hucairz",
162-
);
147+
expect(databaseItem.resolveSourceFile).toHaveBeenCalledTimes(1);
148+
expect(databaseItem.resolveSourceFile).toHaveBeenCalledWith("hucairz");
163149
});
164150

165151
it("should resolve a string location for five-part location", () => {
166-
const mockDatabaseItem: DatabaseItem = {
167-
resolveSourceFile: jest.fn().mockReturnValue(Uri.parse("abc")),
168-
} as unknown as DatabaseItem;
152+
const databaseItem = mockDatabaseItem();
169153

170154
expect(
171-
tryResolveLocation("file://hucairz:5:4:3:2", mockDatabaseItem),
155+
tryResolveLocation("file://hucairz:5:4:3:2", databaseItem),
172156
).toEqual(
173157
new Location(
174158
Uri.parse("abc"),
175159
new Range(new Position(4, 3), new Position(2, 2)),
176160
),
177161
);
178-
expect(mockDatabaseItem.resolveSourceFile).toHaveBeenCalledTimes(1);
179-
expect(mockDatabaseItem.resolveSourceFile).toHaveBeenCalledWith(
180-
"hucairz",
181-
);
162+
expect(databaseItem.resolveSourceFile).toHaveBeenCalledTimes(1);
163+
expect(databaseItem.resolveSourceFile).toHaveBeenCalledWith("hucairz");
182164
});
183165

184166
it("should resolve a string location for invalid string", () => {
185-
const mockDatabaseItem: DatabaseItem = {
186-
resolveSourceFile: jest.fn().mockReturnValue(Uri.parse("abc")),
187-
} as unknown as DatabaseItem;
167+
const databaseItem = mockDatabaseItem();
188168

189169
expect(
190-
tryResolveLocation("file://hucairz:x:y:z:a", mockDatabaseItem),
170+
tryResolveLocation("file://hucairz:x:y:z:a", databaseItem),
191171
).toBeUndefined();
192172
});
193173
});

extensions/ql-vscode/test/vscode-tests/utils/mocking.helpers.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import { DatabaseItem } from "../../../src/local-databases";
2+
import { Uri } from "vscode";
3+
14
export type DeepPartial<T> = T extends object
25
? {
36
[P in keyof T]?: DeepPartial<T[P]>;
@@ -41,3 +44,16 @@ export function mockedObject<T extends object>(
4144
},
4245
});
4346
}
47+
48+
export function mockDatabaseItem(
49+
props: DeepPartial<DatabaseItem> = {},
50+
): DatabaseItem {
51+
return mockedObject<DatabaseItem>({
52+
databaseUri: Uri.file("abc"),
53+
name: "github/codeql",
54+
language: "javascript",
55+
sourceArchive: undefined,
56+
resolveSourceFile: jest.fn().mockReturnValue(Uri.file("abc")),
57+
...props,
58+
});
59+
}

0 commit comments

Comments
 (0)