diff --git a/jsx/package-lock.json b/jsx/package-lock.json index 170522ae..d9d3744c 100644 --- a/jsx/package-lock.json +++ b/jsx/package-lock.json @@ -30,7 +30,7 @@ "@babel/preset-react": "^7.24.7", "@testing-library/jest-dom": "^6.5.0", "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", + "@testing-library/user-event": "^14.5.2", "@webpack-cli/serve": "^2.0.1", "babel-jest": "^29.7.0", "babel-loader": "^9.1.3", @@ -2835,14 +2835,12 @@ } }, "node_modules/@testing-library/user-event": { - "version": "13.5.0", + "version": "14.5.2", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", + "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.12.5" - }, "engines": { - "node": ">=10", + "node": ">=12", "npm": ">=6" }, "peerDependencies": { @@ -8310,11 +8308,13 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { diff --git a/jsx/package.json b/jsx/package.json index e87295b5..69cd3429 100644 --- a/jsx/package.json +++ b/jsx/package.json @@ -50,7 +50,7 @@ "@babel/preset-react": "^7.24.7", "@testing-library/jest-dom": "^6.5.0", "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", + "@testing-library/user-event": "^14.5.2", "@webpack-cli/serve": "^2.0.1", "babel-jest": "^29.7.0", "babel-loader": "^9.1.3", diff --git a/jsx/src/components/AddUser/AddUser.test.js b/jsx/src/components/AddUser/AddUser.test.js index bb5d35f6..408ce6f5 100644 --- a/jsx/src/components/AddUser/AddUser.test.js +++ b/jsx/src/components/AddUser/AddUser.test.js @@ -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( diff --git a/jsx/src/components/CreateGroup/CreateGroup.test.js b/jsx/src/components/CreateGroup/CreateGroup.test.js index f05f1693..8debfa72 100644 --- a/jsx/src/components/CreateGroup/CreateGroup.test.js +++ b/jsx/src/components/CreateGroup/CreateGroup.test.js @@ -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( diff --git a/jsx/src/components/EditUser/EditUser.test.js b/jsx/src/components/EditUser/EditUser.test.js index 486e2517..56223e64 100644 --- a/jsx/src/components/EditUser/EditUser.test.js +++ b/jsx/src/components/EditUser/EditUser.test.js @@ -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."); diff --git a/jsx/src/components/GroupEdit/GroupEdit.test.jsx b/jsx/src/components/GroupEdit/GroupEdit.test.jsx index a18e2715..137075b2 100644 --- a/jsx/src/components/GroupEdit/GroupEdit.test.jsx +++ b/jsx/src/components/GroupEdit/GroupEdit.test.jsx @@ -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."); diff --git a/jsx/src/components/Groups/Groups.test.js b/jsx/src/components/Groups/Groups.test.js index dd5ed172..0eb4dd12 100644 --- a/jsx/src/components/Groups/Groups.test.js +++ b/jsx/src/components/Groups/Groups.test.js @@ -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 diff --git a/jsx/src/components/ServerDashboard/ServerDashboard.jsx b/jsx/src/components/ServerDashboard/ServerDashboard.jsx index d1b0a3a0..f143c323 100644 --- a/jsx/src/components/ServerDashboard/ServerDashboard.jsx +++ b/jsx/src/components/ServerDashboard/ServerDashboard.jsx @@ -453,7 +453,7 @@ const ServerDashboard = (props) => { setStateFilter(event.target.checked ? "active" : null); }} /> -