mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-17 15:03:02 +00:00
userEvent is async now
This commit is contained in:
@@ -67,7 +67,7 @@ test("Removes users when they fail Regex", async () => {
|
||||
|
||||
fireEvent.blur(textarea, { target: { value: "foo \n bar\na@b.co\n \n\n" } });
|
||||
await act(async () => {
|
||||
fireEvent.click(submit);
|
||||
await fireEvent.click(submit);
|
||||
});
|
||||
|
||||
expect(callbackSpy).toHaveBeenCalledWith(["foo", "bar", "a@b.co"], false);
|
||||
@@ -84,10 +84,10 @@ test("Correctly submits admin", async () => {
|
||||
let submit = screen.getByTestId("submit");
|
||||
let check = screen.getByTestId("check");
|
||||
|
||||
userEvent.click(check);
|
||||
await userEvent.click(check);
|
||||
fireEvent.blur(textarea, { target: { value: "foo" } });
|
||||
await act(async () => {
|
||||
fireEvent.click(submit);
|
||||
await fireEvent.click(submit);
|
||||
});
|
||||
|
||||
expect(callbackSpy).toHaveBeenCalledWith(["foo"], true);
|
||||
@@ -103,7 +103,7 @@ test("Shows a UI error dialogue when user creation fails", async () => {
|
||||
let submit = screen.getByTestId("submit");
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(submit);
|
||||
await fireEvent.click(submit);
|
||||
});
|
||||
|
||||
let errorDialog = screen.getByText("Failed to create user.");
|
||||
@@ -122,7 +122,7 @@ test("Shows a more specific UI error dialogue when user creation returns an impr
|
||||
let submit = screen.getByTestId("submit");
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(submit);
|
||||
await fireEvent.click(submit);
|
||||
});
|
||||
|
||||
let errorDialog = screen.getByText(
|
||||
|
@@ -63,9 +63,10 @@ test("Calls createGroup on submit", async () => {
|
||||
|
||||
let input = screen.getByTestId("group-input");
|
||||
let submit = screen.getByTestId("submit");
|
||||
const user = userEvent.setup({ advanceTimers: jest.advanceTimersByTime });
|
||||
|
||||
userEvent.type(input, "groupname");
|
||||
await act(async () => fireEvent.click(submit));
|
||||
await user.type(input, "groupname");
|
||||
await act(async () => await fireEvent.click(submit));
|
||||
|
||||
expect(callbackSpy).toHaveBeenNthCalledWith(1, "groupname");
|
||||
});
|
||||
@@ -80,7 +81,7 @@ test("Shows a UI error dialogue when group creation fails", async () => {
|
||||
let submit = screen.getByTestId("submit");
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(submit);
|
||||
await fireEvent.click(submit);
|
||||
});
|
||||
|
||||
let errorDialog = screen.getByText("Failed to create group.");
|
||||
@@ -99,7 +100,7 @@ test("Shows a more specific UI error dialogue when user creation returns an impr
|
||||
let submit = screen.getByTestId("submit");
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(submit);
|
||||
await fireEvent.click(submit);
|
||||
});
|
||||
|
||||
let errorDialog = screen.getByText(
|
||||
|
@@ -80,7 +80,7 @@ test("Calls the delete user function when the button is pressed", async () => {
|
||||
let deleteUser = screen.getByTestId("delete-user");
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(deleteUser);
|
||||
await fireEvent.click(deleteUser);
|
||||
});
|
||||
|
||||
expect(callbackSpy).toHaveBeenCalled();
|
||||
@@ -95,7 +95,7 @@ test("Submits the edits when the button is pressed", async () => {
|
||||
|
||||
let submit = screen.getByTestId("submit");
|
||||
await act(async () => {
|
||||
fireEvent.click(submit);
|
||||
await fireEvent.click(submit);
|
||||
});
|
||||
|
||||
expect(callbackSpy).toHaveBeenCalled();
|
||||
@@ -113,7 +113,7 @@ test("Shows a UI error dialogue when user edit fails", async () => {
|
||||
|
||||
fireEvent.blur(usernameInput, { target: { value: "whatever" } });
|
||||
await act(async () => {
|
||||
fireEvent.click(submit);
|
||||
await fireEvent.click(submit);
|
||||
});
|
||||
|
||||
let errorDialog = screen.getByText("Failed to edit user.");
|
||||
@@ -134,7 +134,7 @@ test("Shows a UI error dialogue when user edit returns an improper status code",
|
||||
|
||||
fireEvent.blur(usernameInput, { target: { value: "whatever" } });
|
||||
await act(async () => {
|
||||
fireEvent.click(submit);
|
||||
await fireEvent.click(submit);
|
||||
});
|
||||
|
||||
let errorDialog = screen.getByText("Failed to edit user.");
|
||||
|
@@ -80,13 +80,13 @@ test("Adds user from input to user selectables on button click", async () => {
|
||||
let input = screen.getByTestId("username-input");
|
||||
let validateUser = screen.getByTestId("validate-user");
|
||||
let submit = screen.getByTestId("submit");
|
||||
|
||||
userEvent.type(input, "bar");
|
||||
fireEvent.click(validateUser);
|
||||
const user = userEvent.setup({ advanceTimers: jest.advanceTimersByTime });
|
||||
await user.type(input, "bar");
|
||||
await fireEvent.click(validateUser);
|
||||
await act(async () => okPacket);
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(submit);
|
||||
await fireEvent.click(submit);
|
||||
});
|
||||
|
||||
expect(callbackSpy).toHaveBeenNthCalledWith(1, ["bar"], "group");
|
||||
@@ -100,7 +100,7 @@ test("Removes a user recently added from input from the selectables list", async
|
||||
});
|
||||
|
||||
let selectedUser = screen.getByText("foo");
|
||||
fireEvent.click(selectedUser);
|
||||
await await fireEvent.click(selectedUser);
|
||||
|
||||
let unselectedUser = screen.getByText("foo");
|
||||
|
||||
@@ -117,14 +117,14 @@ test("Grays out a user, already in the group, when unselected and calls deleteUs
|
||||
let submit = screen.getByTestId("submit");
|
||||
|
||||
let groupUser = screen.getByText("foo");
|
||||
fireEvent.click(groupUser);
|
||||
await fireEvent.click(groupUser);
|
||||
|
||||
let unselectedUser = screen.getByText("foo");
|
||||
expect(unselectedUser.className).toBe("item unselected");
|
||||
|
||||
// test deleteUser call
|
||||
await act(async () => {
|
||||
fireEvent.click(submit);
|
||||
await fireEvent.click(submit);
|
||||
});
|
||||
|
||||
expect(callbackSpy).toHaveBeenNthCalledWith(1, ["foo"], "group");
|
||||
@@ -140,7 +140,7 @@ test("Calls deleteGroup on button click", async () => {
|
||||
let deleteGroup = screen.getByTestId("delete-group");
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(deleteGroup);
|
||||
await fireEvent.click(deleteGroup);
|
||||
});
|
||||
|
||||
expect(callbackSpy).toHaveBeenNthCalledWith(1, "group");
|
||||
@@ -154,12 +154,12 @@ test("Shows a UI error dialogue when group edit fails", async () => {
|
||||
});
|
||||
|
||||
let groupUser = screen.getByText("foo");
|
||||
fireEvent.click(groupUser);
|
||||
await fireEvent.click(groupUser);
|
||||
|
||||
let submit = screen.getByTestId("submit");
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(submit);
|
||||
await fireEvent.click(submit);
|
||||
});
|
||||
|
||||
let errorDialog = screen.getByText("Failed to edit group.");
|
||||
@@ -176,12 +176,12 @@ test("Shows a UI error dialogue when group edit returns an improper status code"
|
||||
});
|
||||
|
||||
let groupUser = screen.getByText("foo");
|
||||
fireEvent.click(groupUser);
|
||||
await fireEvent.click(groupUser);
|
||||
|
||||
let submit = screen.getByTestId("submit");
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(submit);
|
||||
await fireEvent.click(submit);
|
||||
});
|
||||
|
||||
let errorDialog = screen.getByText("Failed to edit group.");
|
||||
@@ -200,7 +200,7 @@ test("Shows a UI error dialogue when group delete fails", async () => {
|
||||
let deleteGroup = screen.getByTestId("delete-group");
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(deleteGroup);
|
||||
await fireEvent.click(deleteGroup);
|
||||
});
|
||||
|
||||
let errorDialog = screen.getByText("Failed to delete group.");
|
||||
@@ -219,7 +219,7 @@ test("Shows a UI error dialogue when group delete returns an improper status cod
|
||||
let deleteGroup = screen.getByTestId("delete-group");
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(deleteGroup);
|
||||
await fireEvent.click(deleteGroup);
|
||||
});
|
||||
|
||||
let errorDialog = screen.getByText("Failed to delete group.");
|
||||
|
@@ -138,7 +138,7 @@ test("Interacting with PaginationFooter causes page refresh", async () => {
|
||||
|
||||
let next = screen.getByTestId("paginate-next");
|
||||
await act(async () => {
|
||||
fireEvent.click(next);
|
||||
await fireEvent.click(next);
|
||||
});
|
||||
expect(updateGroupsSpy).toBeCalledWith(2, 2);
|
||||
// mocked updateGroups means callback after load doesn't fire
|
||||
|
@@ -453,7 +453,7 @@ const ServerDashboard = (props) => {
|
||||
setStateFilter(event.target.checked ? "active" : null);
|
||||
}}
|
||||
/>
|
||||
<Form.Check.Label for="active-servers-filter">
|
||||
<Form.Check.Label htmlFor="active-servers-filter">
|
||||
{"only active servers"}
|
||||
</Form.Check.Label>
|
||||
</Form.Check>
|
||||
|
@@ -291,7 +291,7 @@ test("Invokes the startServer event on button click", async () => {
|
||||
expect(start_elems.length).toBe(Object.keys(bar_servers).length);
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(start_elems[0]);
|
||||
await fireEvent.click(start_elems[0]);
|
||||
});
|
||||
|
||||
expect(callbackSpy).toHaveBeenCalled();
|
||||
@@ -307,7 +307,7 @@ test("Invokes the stopServer event on button click", async () => {
|
||||
let stop = screen.getByText("Stop Server");
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(stop);
|
||||
await fireEvent.click(stop);
|
||||
});
|
||||
|
||||
expect(callbackSpy).toHaveBeenCalled();
|
||||
@@ -323,7 +323,7 @@ test("Invokes the shutdownHub event on button click", async () => {
|
||||
let shutdown = screen.getByText("Shutdown Hub");
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(shutdown);
|
||||
await fireEvent.click(shutdown);
|
||||
});
|
||||
|
||||
expect(callbackSpy).toHaveBeenCalled();
|
||||
@@ -338,7 +338,7 @@ test("Sorts according to username", async () => {
|
||||
|
||||
expect(searchParams.get("sort")).toEqual(null);
|
||||
let handler = screen.getByTestId(testId);
|
||||
fireEvent.click(handler);
|
||||
await fireEvent.click(handler);
|
||||
expect(searchParams.get("sort")).toEqual("name");
|
||||
|
||||
await act(async () => {
|
||||
@@ -346,7 +346,7 @@ test("Sorts according to username", async () => {
|
||||
handler = screen.getByTestId(testId);
|
||||
});
|
||||
|
||||
fireEvent.click(handler);
|
||||
await fireEvent.click(handler);
|
||||
expect(searchParams.get("sort")).toEqual("-name");
|
||||
|
||||
await act(async () => {
|
||||
@@ -354,7 +354,7 @@ test("Sorts according to username", async () => {
|
||||
handler = screen.getByTestId(testId);
|
||||
});
|
||||
|
||||
fireEvent.click(handler);
|
||||
await fireEvent.click(handler);
|
||||
expect(searchParams.get("sort")).toEqual("name");
|
||||
});
|
||||
|
||||
@@ -367,7 +367,7 @@ test("Sorts according to last activity", async () => {
|
||||
|
||||
expect(searchParams.get("sort")).toEqual(null);
|
||||
let handler = screen.getByTestId(testId);
|
||||
fireEvent.click(handler);
|
||||
await fireEvent.click(handler);
|
||||
expect(searchParams.get("sort")).toEqual("last_activity");
|
||||
|
||||
await act(async () => {
|
||||
@@ -375,7 +375,7 @@ test("Sorts according to last activity", async () => {
|
||||
handler = screen.getByTestId(testId);
|
||||
});
|
||||
|
||||
fireEvent.click(handler);
|
||||
await fireEvent.click(handler);
|
||||
expect(searchParams.get("sort")).toEqual("-last_activity");
|
||||
|
||||
await act(async () => {
|
||||
@@ -383,7 +383,7 @@ test("Sorts according to last activity", async () => {
|
||||
handler = screen.getByTestId(testId);
|
||||
});
|
||||
|
||||
fireEvent.click(handler);
|
||||
await fireEvent.click(handler);
|
||||
expect(searchParams.get("sort")).toEqual("last_activity");
|
||||
});
|
||||
|
||||
@@ -397,7 +397,7 @@ test("Filter according to server status (running/not running)", async () => {
|
||||
const label = "only active servers";
|
||||
let handler = screen.getByLabelText(label);
|
||||
expect(handler.checked).toEqual(false);
|
||||
fireEvent.click(handler);
|
||||
await fireEvent.click(handler);
|
||||
|
||||
// FIXME: need to force a rerender to get updated checkbox
|
||||
// I don't think this should be required
|
||||
@@ -408,7 +408,7 @@ test("Filter according to server status (running/not running)", async () => {
|
||||
expect(searchParams.get("state")).toEqual("active");
|
||||
expect(handler.checked).toEqual(true);
|
||||
|
||||
fireEvent.click(handler);
|
||||
await fireEvent.click(handler);
|
||||
|
||||
await act(async () => {
|
||||
rerender(serverDashboardJsx());
|
||||
@@ -433,7 +433,7 @@ test("Shows server details with button click", async () => {
|
||||
expect(collapseBar).not.toHaveClass("show");
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(button);
|
||||
await fireEvent.click(button);
|
||||
jest.runAllTimers();
|
||||
});
|
||||
|
||||
@@ -441,7 +441,7 @@ test("Shows server details with button click", async () => {
|
||||
expect(collapseBar).not.toHaveClass("show");
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(button);
|
||||
await fireEvent.click(button);
|
||||
jest.runAllTimers();
|
||||
});
|
||||
|
||||
@@ -450,7 +450,7 @@ test("Shows server details with button click", async () => {
|
||||
expect(collapseBar).not.toHaveClass("show");
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(button);
|
||||
await fireEvent.click(button);
|
||||
jest.runAllTimers();
|
||||
});
|
||||
|
||||
@@ -480,7 +480,7 @@ test("Shows a UI error dialogue when start all servers fails", async () => {
|
||||
let startAll = screen.getByTestId("start-all");
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(startAll);
|
||||
await fireEvent.click(startAll);
|
||||
});
|
||||
|
||||
let errorDialog = screen.getByText("Failed to start servers.");
|
||||
@@ -496,7 +496,7 @@ test("Shows a UI error dialogue when stop all servers fails", async () => {
|
||||
let stopAll = screen.getByTestId("stop-all");
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(stopAll);
|
||||
await fireEvent.click(stopAll);
|
||||
});
|
||||
|
||||
let errorDialog = screen.getByText("Failed to stop servers.");
|
||||
@@ -513,7 +513,7 @@ test("Shows a UI error dialogue when start user server fails", async () => {
|
||||
expect(start_elems.length).toBe(Object.keys(bar_servers).length);
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(start_elems[0]);
|
||||
await fireEvent.click(start_elems[0]);
|
||||
});
|
||||
|
||||
let errorDialog = screen.getByText("Failed to start server.");
|
||||
@@ -531,7 +531,7 @@ test("Shows a UI error dialogue when start user server returns an improper statu
|
||||
expect(start_elems.length).toBe(Object.keys(bar_servers).length);
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(start_elems[0]);
|
||||
await fireEvent.click(start_elems[0]);
|
||||
});
|
||||
|
||||
let errorDialog = screen.getByText("Failed to start server.");
|
||||
@@ -550,7 +550,7 @@ test("Shows a UI error dialogue when stop user servers fails", async () => {
|
||||
let stop = screen.getByText("Stop Server");
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(stop);
|
||||
await fireEvent.click(stop);
|
||||
});
|
||||
|
||||
let errorDialog = screen.getByText("Failed to stop server.");
|
||||
@@ -569,7 +569,7 @@ test("Shows a UI error dialogue when stop user server returns an improper status
|
||||
let stop = screen.getByText("Stop Server");
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(stop);
|
||||
await fireEvent.click(stop);
|
||||
});
|
||||
|
||||
let errorDialog = screen.getByText("Failed to stop server.");
|
||||
@@ -584,12 +584,13 @@ test("Search for user calls updateUsers with name filter", async () => {
|
||||
render(serverDashboardJsx());
|
||||
});
|
||||
|
||||
const user = userEvent.setup({ advanceTimers: jest.advanceTimersByTime });
|
||||
let search = screen.getByLabelText("user-search");
|
||||
|
||||
expect(mockUpdateUsers.mock.calls).toHaveLength(1);
|
||||
|
||||
expect(searchParams.get("offset")).toEqual("2");
|
||||
userEvent.type(search, "a");
|
||||
await user.type(search, "a");
|
||||
expect(search.value).toEqual("a");
|
||||
await act(async () => {
|
||||
jest.runAllTimers();
|
||||
@@ -599,7 +600,7 @@ test("Search for user calls updateUsers with name filter", async () => {
|
||||
// FIXME: useSelector mocks prevent updateUsers from being called
|
||||
// expect(mockUpdateUsers.mock.calls).toHaveLength(2);
|
||||
// expect(mockUpdateUsers).toBeCalledWith(0, 100, "a");
|
||||
userEvent.type(search, "b");
|
||||
await user.type(search, "b");
|
||||
expect(search.value).toEqual("ab");
|
||||
await act(async () => {
|
||||
jest.runAllTimers();
|
||||
@@ -672,7 +673,7 @@ test("Start server and confirm pending state", async () => {
|
||||
expect(buttons[2].textContent).toBe("Edit User");
|
||||
|
||||
await act(async () => {
|
||||
fireEvent.click(buttons[0]);
|
||||
await fireEvent.click(buttons[0]);
|
||||
});
|
||||
expect(mockUpdateUsers.mock.calls).toHaveLength(1);
|
||||
|
||||
|
Reference in New Issue
Block a user