Skip to content

Commit a359fd7

Browse files
committed
Add tests for ModeledMethodsList
1 parent d3a9426 commit a359fd7

3 files changed

Lines changed: 102 additions & 33 deletions

File tree

extensions/ql-vscode/src/view/model-editor/ModeledMethodsList.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
import { ModelEditorViewState } from "../../model-editor/shared/view-state";
1212
import { InProgressMethods } from "../../model-editor/shared/in-progress-methods";
1313

14-
type Props = {
14+
export type ModeledMethodsListProps = {
1515
methods: Method[];
1616
modeledMethods: Record<string, ModeledMethod>;
1717
modifiedSignatures: Set<string>;
@@ -54,7 +54,7 @@ export const ModeledMethodsList = ({
5454
onStopGenerateFromLlmClick,
5555
onGenerateFromSourceClick,
5656
onModelDependencyClick,
57-
}: Props) => {
57+
}: ModeledMethodsListProps) => {
5858
const grouped = useMemo(
5959
() => groupMethods(methods, viewState.mode),
6060
[methods, viewState.mode],
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
import * as React from "react";
2+
import { render as reactRender, screen } from "@testing-library/react";
3+
import { createMethod } from "../../../../test/factories/data-extension/method-factories";
4+
import { InProgressMethods } from "../../../model-editor/shared/in-progress-methods";
5+
import { createMockExtensionPack } from "../../../../test/factories/model-editor/extension-pack";
6+
import { Mode } from "../../../model-editor/shared/mode";
7+
import { ModelEditorViewState } from "../../../model-editor/shared/view-state";
8+
import {
9+
ModeledMethodsList,
10+
ModeledMethodsListProps,
11+
} from "../ModeledMethodsList";
12+
13+
describe(ModeledMethodsList.name, () => {
14+
const method1 = createMethod({
15+
library: "sql2o",
16+
libraryVersion: "1.6.0",
17+
signature: "org.sql2o.Connection#createQuery(String)",
18+
packageName: "org.sql2o",
19+
typeName: "Connection",
20+
methodName: "createQuery",
21+
methodParameters: "(String)",
22+
});
23+
const method2 = createMethod({
24+
library: "sql2o",
25+
libraryVersion: "1.6.0",
26+
signature: "org.sql2o.Query#executeScalar(Class)",
27+
packageName: "org.sql2o",
28+
typeName: "Query",
29+
methodName: "executeScalar",
30+
methodParameters: "(Class)",
31+
});
32+
const method3 = createMethod({
33+
library: "rt",
34+
libraryVersion: "",
35+
signature: "java.io.PrintStream#println(String)",
36+
packageName: "java.io",
37+
typeName: "PrintStream",
38+
methodName: "println",
39+
methodParameters: "(String)",
40+
});
41+
const onChange = jest.fn();
42+
const onSaveModelClick = jest.fn();
43+
const onGenerateFromLlmClick = jest.fn();
44+
const onStopGenerateFromLlmClick = jest.fn();
45+
const onModelDependencyClick = jest.fn();
46+
47+
const viewState: ModelEditorViewState = {
48+
mode: Mode.Application,
49+
showFlowGeneration: false,
50+
showLlmButton: false,
51+
extensionPack: createMockExtensionPack(),
52+
};
53+
54+
const render = (props: Partial<ModeledMethodsListProps> = {}) =>
55+
reactRender(
56+
<ModeledMethodsList
57+
methods={[method1, method2, method3]}
58+
modeledMethods={{
59+
[method1.signature]: {
60+
...method1,
61+
type: "sink",
62+
input: "Argument[0]",
63+
output: "",
64+
kind: "jndi-injection",
65+
provenance: "df-generated",
66+
},
67+
}}
68+
modifiedSignatures={new Set([method1.signature])}
69+
inProgressMethods={new InProgressMethods()}
70+
viewState={viewState}
71+
hideModeledMethods={false}
72+
onChange={onChange}
73+
onSaveModelClick={onSaveModelClick}
74+
onGenerateFromLlmClick={onGenerateFromLlmClick}
75+
onStopGenerateFromLlmClick={onStopGenerateFromLlmClick}
76+
onGenerateFromSourceClick={jest.fn()}
77+
onModelDependencyClick={onModelDependencyClick}
78+
{...props}
79+
/>,
80+
);
81+
82+
it("renders the rows", () => {
83+
render();
84+
85+
expect(screen.getByText("sql2o@1.6.0")).toBeInTheDocument();
86+
expect(screen.getByText("Java Runtime")).toBeInTheDocument();
87+
});
88+
});

extensions/ql-vscode/test/factories/data-extension/method-factories.ts

Lines changed: 12 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,40 +3,21 @@ import {
33
Method,
44
CallClassification,
55
} from "../../../src/model-editor/method";
6-
import { ModeledMethodType } from "../../../src/model-editor/modeled-method";
76
import { ResolvableLocationValue } from "../../../src/common/bqrs-cli-types";
87

9-
export function createMethod({
10-
library = "sql2o-1.6.0.jar",
11-
supported = true,
12-
supportedType = "summary" as ModeledMethodType,
13-
usages = [],
14-
signature = "org.sql2o.Sql2o#open()",
15-
packageName = "org.sql2o",
16-
typeName = "Sql2o",
17-
methodName = "open",
18-
methodParameters = "()",
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-
} = {}): Method {
8+
export function createMethod(data: Partial<Method> = {}): Method {
309
return {
31-
library,
32-
supported,
33-
supportedType,
34-
usages,
35-
signature,
36-
packageName,
37-
typeName,
38-
methodName,
39-
methodParameters,
10+
library: "sql2o",
11+
libraryVersion: "1.6.0",
12+
supported: true,
13+
supportedType: "summary",
14+
usages: [],
15+
signature: "org.sql2o.Sql2o#open()",
16+
packageName: "org.sql2o",
17+
typeName: "Sql2o",
18+
methodName: "open",
19+
methodParameters: "()",
20+
...data,
4021
};
4122
}
4223

0 commit comments

Comments
 (0)