You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

forgotPasswordPageUI.test.js 2.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import * as redux from "react-redux";
  2. import store from "../../store";
  3. import { Router } from "react-router-dom";
  4. import { fireEvent, render, screen, waitFor } from "@testing-library/react";
  5. import history from "../../store/utils/history";
  6. import ForgotPasswordPage from "../../pages/ForgotPasswordPage/ForgotPasswordPageMUI";
  7. describe("ForgotPasswordPage render tests", () => {
  8. const cont = (
  9. <redux.Provider store={store}>
  10. <Router history={history}>
  11. <ForgotPasswordPage />
  12. </Router>
  13. </redux.Provider>
  14. );
  15. let spyOnUseDispatch;
  16. let mockDispatch;
  17. beforeEach(() => {
  18. spyOnUseDispatch = jest.spyOn(redux, "useDispatch");
  19. mockDispatch = jest.fn();
  20. spyOnUseDispatch.mockReturnValue(mockDispatch);
  21. });
  22. afterEach(() => {
  23. jest.restoreAllMocks();
  24. });
  25. it("Should render", () => {
  26. const { container } = render(cont);
  27. expect(
  28. container.getElementsByClassName("c-login-container")[0]
  29. ).toBeDefined();
  30. });
  31. it("Should render login logo", () => {
  32. const { container } = render(cont);
  33. expect(container.getElementsByClassName("login-logo")[0]).toBeDefined();
  34. });
  35. it("Should render header", () => {
  36. const { container } = render(cont);
  37. expect(
  38. container
  39. .getElementsByClassName("c-login-container")[0]
  40. .querySelector("h")
  41. ).toBeDefined();
  42. });
  43. it("Should render paragraph", () => {
  44. const { container } = render(cont);
  45. expect(
  46. container
  47. .getElementsByClassName("c-login-container")[0]
  48. .querySelector("p")
  49. ).toBeDefined();
  50. });
  51. it("Should render email input", () => {
  52. render(cont);
  53. expect(screen.getByTestId("email-input")).toBeDefined();
  54. });
  55. it("Should render submit button", () => {
  56. const { container } = render(cont);
  57. expect(container.getElementsByClassName("c-btn")[0]).toBeDefined();
  58. });
  59. it("Should render link for going to login page", () => {
  60. render(cont);
  61. expect(screen.getByTestId("back-link")).toBeDefined();
  62. });
  63. it("Should render dilig logo", () => {
  64. render(cont);
  65. expect(screen.getByTestId("dilig-logo")).toBeDefined();
  66. });
  67. it("Should not dispatch function because input for email is empty", async () => {
  68. const { container } = render(cont);
  69. fireEvent.click(container.getElementsByClassName("c-btn")[0]);
  70. await waitFor(() => expect(mockDispatch).toBeCalledTimes(0));
  71. });
  72. it("Should dispatch function becxause input for email is not empty", async () => {
  73. const { container } = render(cont);
  74. fireEvent.change(screen.getByTestId("email-input"), {
  75. target: { value: "dzenis@dilig.net" },
  76. });
  77. fireEvent.click(container.getElementsByClassName("c-btn")[0]);
  78. await waitFor(() => expect(mockDispatch).toBeCalledTimes(1));
  79. });
  80. });