Skip to content

Commit c56936e

Browse files
committed
create and use factories
1 parent 45f7d22 commit c56936e

3 files changed

Lines changed: 93 additions & 58 deletions

File tree

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import {
2+
Usage,
3+
ExternalApiUsage,
4+
CallClassification,
5+
} from "../../../src/data-extensions-editor/external-api-usage";
6+
import { ModeledMethodType } from "../../../src/data-extensions-editor/modeled-method";
7+
import { ResolvableLocationValue } from "../../../src/common/bqrs-cli-types";
8+
9+
export function createExternalApiUsage({
10+
library = "test",
11+
supported = true,
12+
supportedType = "none" as ModeledMethodType,
13+
usages = [],
14+
signature = "test",
15+
packageName = "test",
16+
typeName = "test",
17+
methodName = "test",
18+
methodParameters = "test",
19+
}: {
20+
library?: string;
21+
supported?: boolean;
22+
supportedType?: ModeledMethodType;
23+
usages?: Usage[];
24+
signature?: string;
25+
packageName?: string;
26+
typeName?: string;
27+
methodName?: string;
28+
methodParameters?: string;
29+
} = {}): ExternalApiUsage {
30+
return {
31+
library,
32+
supported,
33+
supportedType,
34+
usages,
35+
signature,
36+
packageName,
37+
typeName,
38+
methodName,
39+
methodParameters,
40+
};
41+
}
42+
43+
export function createUsage({
44+
classification = CallClassification.Unknown,
45+
label = "test",
46+
url = {} as ResolvableLocationValue,
47+
}: {
48+
classification?: CallClassification;
49+
label?: string;
50+
url?: ResolvableLocationValue;
51+
} = {}): Usage {
52+
return {
53+
classification,
54+
label,
55+
url,
56+
};
57+
}

extensions/ql-vscode/test/vscode-tests/no-workspace/data-extensions-editor/model-details/model-details-data-provider.test.ts

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
import { CodeQLCliServer } from "../../../../../src/codeql-cli/cli";
2-
import {
3-
ExternalApiUsage,
4-
Usage,
5-
} from "../../../../../src/data-extensions-editor/external-api-usage";
6-
import {
7-
ModelDetailsDataProvider,
8-
ModelDetailsTreeViewItem,
9-
} from "../../../../../src/data-extensions-editor/model-details/model-details-data-provider";
2+
import { ExternalApiUsage } from "../../../../../src/data-extensions-editor/external-api-usage";
3+
import { ModelDetailsDataProvider } from "../../../../../src/data-extensions-editor/model-details/model-details-data-provider";
104
import { DatabaseItem } from "../../../../../src/databases/local-databases";
5+
import {
6+
createExternalApiUsage,
7+
createUsage,
8+
} from "../../../../factories/data-extension/external-api-factories";
119
import { mockedObject } from "../../../utils/mocking.helpers";
1210

1311
describe("ModelDetailsDataProvider", () => {
@@ -97,26 +95,31 @@ describe("ModelDetailsDataProvider", () => {
9795
});
9896

9997
describe("getChildren", () => {
98+
const supportedExternalApiUsage = createExternalApiUsage({
99+
supported: true,
100+
});
101+
102+
const unsupportedExternalApiUsage = createExternalApiUsage({
103+
supported: false,
104+
});
105+
100106
const externalApiUsages: ExternalApiUsage[] = [
101-
mockedObject<ExternalApiUsage>({ supported: true }),
102-
mockedObject<ExternalApiUsage>({ supported: false }),
107+
supportedExternalApiUsage,
108+
unsupportedExternalApiUsage,
103109
];
104110
const dbItem = mockedObject<DatabaseItem>({
105111
getSourceLocationPrefix: () => "test",
106112
});
107113

114+
const usage = createUsage({});
115+
108116
it("should return [] if item is a usage", async () => {
109-
const item = { usages: undefined } as unknown as ModelDetailsTreeViewItem;
110-
expect(dataProvider.getChildren(item)).toEqual([]);
117+
expect(dataProvider.getChildren(usage)).toEqual([]);
111118
});
112119

113120
it("should return usages if item is external api usage", async () => {
114-
const usage = mockedObject<Usage>({});
115-
const item = mockedObject<ExternalApiUsage>({
116-
usages: [usage],
117-
});
118-
119-
expect(dataProvider.getChildren(item)).toEqual([usage]);
121+
const externalApiUsage = createExternalApiUsage({ usages: [usage] });
122+
expect(dataProvider.getChildren(externalApiUsage)).toEqual([usage]);
120123
});
121124

122125
it("should show all externalApiUsages if hideModeledApis is false and item is undefined", async () => {

extensions/ql-vscode/test/vscode-tests/no-workspace/data-extensions-editor/model-details/model-details-panel.test.ts

Lines changed: 15 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,23 @@
11
import { window, TreeView } from "vscode";
22
import { CodeQLCliServer } from "../../../../../src/codeql-cli/cli";
3-
import {
4-
CallClassification,
5-
ExternalApiUsage,
6-
} from "../../../../../src/data-extensions-editor/external-api-usage";
3+
import { ExternalApiUsage } from "../../../../../src/data-extensions-editor/external-api-usage";
74
import { ModelDetailsPanel } from "../../../../../src/data-extensions-editor/model-details/model-details-panel";
85
import { DatabaseItem } from "../../../../../src/databases/local-databases";
96
import { mockedObject } from "../../../utils/mocking.helpers";
7+
import {
8+
createExternalApiUsage,
9+
createUsage,
10+
} from "../../../../factories/data-extension/external-api-factories";
1011

1112
describe("ModelDetailsPanel", () => {
1213
const mockCliServer = mockedObject<CodeQLCliServer>({});
14+
const dbItem = mockedObject<DatabaseItem>({
15+
getSourceLocationPrefix: () => "test",
16+
});
1317

1418
describe("setState", () => {
1519
const hideModeledApis: boolean = false;
16-
const externalApiUsages: ExternalApiUsage[] = [
17-
{
18-
library: "test",
19-
supported: false,
20-
supportedType: "none",
21-
usages: [],
22-
signature: "test",
23-
packageName: "test",
24-
typeName: "test",
25-
methodName: "test",
26-
methodParameters: "test",
27-
},
28-
];
29-
const dbItem = mockedObject<DatabaseItem>({
30-
getSourceLocationPrefix: () => "test",
31-
});
20+
const externalApiUsages: ExternalApiUsage[] = [createExternalApiUsage()];
3221

3322
it("should update the tree view with the correct batch number", async () => {
3423
const mockTreeView = {
@@ -47,20 +36,7 @@ describe("ModelDetailsPanel", () => {
4736
let mockTreeView: TreeView<unknown>;
4837

4938
const hideModeledApis: boolean = false;
50-
const dbItem = mockedObject<DatabaseItem>({
51-
getSourceLocationPrefix: () => "test",
52-
});
53-
const usage = {
54-
classification: "unknown" as CallClassification,
55-
label: "test",
56-
url: {
57-
uri: "test",
58-
startLine: 1,
59-
startColumn: 1,
60-
endLine: 1,
61-
endColumn: 1,
62-
},
63-
};
39+
const usage = createUsage();
6440

6541
beforeEach(() => {
6642
mockTreeView = {
@@ -70,11 +46,11 @@ describe("ModelDetailsPanel", () => {
7046
});
7147

7248
it("should reveal the correct item in the tree view", async () => {
73-
const externalApiUsages = mockedObject<ExternalApiUsage[]>([
74-
{
49+
const externalApiUsages = [
50+
createExternalApiUsage({
7551
usages: [usage],
76-
},
77-
]);
52+
}),
53+
];
7854

7955
const panel = new ModelDetailsPanel(mockCliServer);
8056
await panel.setState(externalApiUsages, dbItem, hideModeledApis);
@@ -85,8 +61,7 @@ describe("ModelDetailsPanel", () => {
8561
});
8662

8763
it("should do nothing if usage cannot be found", async () => {
88-
const externalApiUsages = mockedObject<ExternalApiUsage[]>([]);
89-
64+
const externalApiUsages = [createExternalApiUsage({})];
9065
const panel = new ModelDetailsPanel(mockCliServer);
9166
await panel.setState(externalApiUsages, dbItem, hideModeledApis);
9267

0 commit comments

Comments
 (0)