Skip to content

Commit 0663097

Browse files
committed
Add model editor test for save all/selected button
1 parent ece1b51 commit 0663097

1 file changed

Lines changed: 70 additions & 0 deletions

File tree

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
import * as React from "react";
2+
import { act, render as reactRender, screen } from "@testing-library/react";
3+
import { createMethod } from "../../../../test/factories/model-editor/method-factories";
4+
import { ModelEditor } from "../ModelEditor";
5+
import { createMockModelEditorViewState } from "../../../../test/factories/model-editor/view-state";
6+
import { userEvent } from "@testing-library/user-event";
7+
8+
describe(ModelEditor.name, () => {
9+
const method1 = createMethod({
10+
library: "sql2o",
11+
libraryVersion: "1.6.0",
12+
signature: "org.sql2o.Connection#createQuery(String)",
13+
packageName: "org.sql2o",
14+
typeName: "Connection",
15+
methodName: "createQuery",
16+
methodParameters: "(String)",
17+
supported: false,
18+
});
19+
const method2 = createMethod({
20+
library: "sql2o",
21+
libraryVersion: "1.6.0",
22+
signature: "org.sql2o.Query#executeScalar(Class)",
23+
packageName: "org.sql2o",
24+
typeName: "Query",
25+
methodName: "executeScalar",
26+
methodParameters: "(Class)",
27+
supported: false,
28+
});
29+
const method3 = createMethod({
30+
library: "sql2o",
31+
libraryVersion: "1.6.0",
32+
signature: "org.sql2o.Sql2o#open()",
33+
packageName: "org.sql2o",
34+
typeName: "Sql2o",
35+
methodName: "open",
36+
methodParameters: "()",
37+
supported: true,
38+
});
39+
40+
const viewState = createMockModelEditorViewState();
41+
42+
const render = () =>
43+
reactRender(
44+
<ModelEditor
45+
initialViewState={viewState}
46+
initialMethods={[method1, method2, method3]}
47+
/>,
48+
);
49+
50+
it("renders Save button when no rows are selected", () => {
51+
render();
52+
53+
expect(screen.getByText("Save all")).toBeInTheDocument();
54+
});
55+
56+
it("renders Save button when rows are selected", async () => {
57+
render();
58+
59+
await act(async () => {
60+
await userEvent.click(screen.getAllByLabelText("Expand")[0]);
61+
});
62+
63+
await act(async () => {
64+
await userEvent.click(screen.getAllByTestId("modelable-method-row")[0]);
65+
});
66+
67+
// The top-level Save button and the per-library Save button should have been updated.
68+
expect(screen.getAllByText("Save selected")).toHaveLength(2);
69+
});
70+
});

0 commit comments

Comments
 (0)