Add tests for ModeledMethodsList

This commit is contained in:
Koen Vlaswinkel
2023-09-14 14:11:40 +02:00
parent d3a9426411
commit a359fd7054
3 changed files with 102 additions and 33 deletions

View File

@@ -11,7 +11,7 @@ import {
import { ModelEditorViewState } from "../../model-editor/shared/view-state";
import { InProgressMethods } from "../../model-editor/shared/in-progress-methods";
type Props = {
export type ModeledMethodsListProps = {
methods: Method[];
modeledMethods: Record<string, ModeledMethod>;
modifiedSignatures: Set<string>;
@@ -54,7 +54,7 @@ export const ModeledMethodsList = ({
onStopGenerateFromLlmClick,
onGenerateFromSourceClick,
onModelDependencyClick,
}: Props) => {
}: ModeledMethodsListProps) => {
const grouped = useMemo(
() => groupMethods(methods, viewState.mode),
[methods, viewState.mode],

View File

@@ -0,0 +1,88 @@
import * as React from "react";
import { render as reactRender, screen } from "@testing-library/react";
import { createMethod } from "../../../../test/factories/data-extension/method-factories";
import { InProgressMethods } from "../../../model-editor/shared/in-progress-methods";
import { createMockExtensionPack } from "../../../../test/factories/model-editor/extension-pack";
import { Mode } from "../../../model-editor/shared/mode";
import { ModelEditorViewState } from "../../../model-editor/shared/view-state";
import {
ModeledMethodsList,
ModeledMethodsListProps,
} from "../ModeledMethodsList";
describe(ModeledMethodsList.name, () => {
const method1 = createMethod({
library: "sql2o",
libraryVersion: "1.6.0",
signature: "org.sql2o.Connection#createQuery(String)",
packageName: "org.sql2o",
typeName: "Connection",
methodName: "createQuery",
methodParameters: "(String)",
});
const method2 = createMethod({
library: "sql2o",
libraryVersion: "1.6.0",
signature: "org.sql2o.Query#executeScalar(Class)",
packageName: "org.sql2o",
typeName: "Query",
methodName: "executeScalar",
methodParameters: "(Class)",
});
const method3 = createMethod({
library: "rt",
libraryVersion: "",
signature: "java.io.PrintStream#println(String)",
packageName: "java.io",
typeName: "PrintStream",
methodName: "println",
methodParameters: "(String)",
});
const onChange = jest.fn();
const onSaveModelClick = jest.fn();
const onGenerateFromLlmClick = jest.fn();
const onStopGenerateFromLlmClick = jest.fn();
const onModelDependencyClick = jest.fn();
const viewState: ModelEditorViewState = {
mode: Mode.Application,
showFlowGeneration: false,
showLlmButton: false,
extensionPack: createMockExtensionPack(),
};
const render = (props: Partial<ModeledMethodsListProps> = {}) =>
reactRender(
<ModeledMethodsList
methods={[method1, method2, method3]}
modeledMethods={{
[method1.signature]: {
...method1,
type: "sink",
input: "Argument[0]",
output: "",
kind: "jndi-injection",
provenance: "df-generated",
},
}}
modifiedSignatures={new Set([method1.signature])}
inProgressMethods={new InProgressMethods()}
viewState={viewState}
hideModeledMethods={false}
onChange={onChange}
onSaveModelClick={onSaveModelClick}
onGenerateFromLlmClick={onGenerateFromLlmClick}
onStopGenerateFromLlmClick={onStopGenerateFromLlmClick}
onGenerateFromSourceClick={jest.fn()}
onModelDependencyClick={onModelDependencyClick}
{...props}
/>,
);
it("renders the rows", () => {
render();
expect(screen.getByText("sql2o@1.6.0")).toBeInTheDocument();
expect(screen.getByText("Java Runtime")).toBeInTheDocument();
});
});

View File

@@ -3,40 +3,21 @@ import {
Method,
CallClassification,
} from "../../../src/model-editor/method";
import { ModeledMethodType } from "../../../src/model-editor/modeled-method";
import { ResolvableLocationValue } from "../../../src/common/bqrs-cli-types";
export function createMethod({
library = "sql2o-1.6.0.jar",
supported = true,
supportedType = "summary" as ModeledMethodType,
usages = [],
signature = "org.sql2o.Sql2o#open()",
packageName = "org.sql2o",
typeName = "Sql2o",
methodName = "open",
methodParameters = "()",
}: {
library?: string;
supported?: boolean;
supportedType?: ModeledMethodType;
usages?: Usage[];
signature?: string;
packageName?: string;
typeName?: string;
methodName?: string;
methodParameters?: string;
} = {}): Method {
export function createMethod(data: Partial<Method> = {}): Method {
return {
library,
supported,
supportedType,
usages,
signature,
packageName,
typeName,
methodName,
methodParameters,
library: "sql2o",
libraryVersion: "1.6.0",
supported: true,
supportedType: "summary",
usages: [],
signature: "org.sql2o.Sql2o#open()",
packageName: "org.sql2o",
typeName: "Sql2o",
methodName: "open",
methodParameters: "()",
...data,
};
}