Skip to content

Commit 051686a

Browse files
committed
Add model editor test for save all/selected button
1 parent d5ebce2 commit 051686a

1 file changed

Lines changed: 69 additions & 0 deletions

File tree

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

0 commit comments

Comments
 (0)