Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

patternDetailsPageUI.test.js 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. import {
  2. render,
  3. screen,
  4. fireEvent,
  5. waitFor,
  6. findByTestId,
  7. } from "@testing-library/react";
  8. import * as redux from "react-redux";
  9. import store from "../../store";
  10. import { mockState } from "../../mockState";
  11. import { Router } from "react-router-dom";
  12. import history from "../../store/utils/history";
  13. import ColorModeProvider from "../../context/ColorModeContext";
  14. import PatternDetailsPage from "../../pages/PatternsPage/PatternDetailsPage";
  15. describe("PatternDetailsPage render tests", () => {
  16. var props = {
  17. history: {
  18. replace: jest.fn(),
  19. push: jest.fn(),
  20. location: {
  21. pathname: "/patterns/1",
  22. },
  23. },
  24. };
  25. const cont = (
  26. <redux.Provider store={store}>
  27. <Router history={history}>
  28. <ColorModeProvider>
  29. <PatternDetailsPage {...props} />
  30. </ColorModeProvider>
  31. </Router>
  32. </redux.Provider>
  33. );
  34. let spyOnUseSelector;
  35. beforeEach(() => {
  36. spyOnUseSelector = jest.spyOn(redux, "useSelector");
  37. spyOnUseSelector
  38. .mockReturnValue(mockState.patterns.patterns[0])
  39. .mockReturnValue([
  40. {
  41. applicantId: 21359,
  42. firstName: "Jelena",
  43. lastName: "Zivkovic",
  44. email: "jelena.d.zivkovic@gmail.com",
  45. },
  46. ])
  47. .mockReturnValue(null);
  48. });
  49. afterEach(() => {
  50. jest.restoreAllMocks();
  51. });
  52. it("Should render PatternDetaisPage", async () => {
  53. render(cont);
  54. waitFor(() => {
  55. expect(screen.getByTestId("pattern-details")).toBeDefined();
  56. });
  57. });
  58. it("Should render select input for choosing candidate", async () => {
  59. render(cont);
  60. waitFor(() => {
  61. expect(screen.getByTestId("pattern-details-select")).toBeDefined();
  62. });
  63. });
  64. it("Should render add candidate button for choosing email", async () => {
  65. render(cont);
  66. waitFor(() => {
  67. expect(screen.getByTestId("pattern-details-plus")).toBeDefined();
  68. });
  69. });
  70. it("Should render go back button", async () => {
  71. const { container } = render(cont);
  72. waitFor(() => {
  73. expect(
  74. container.getElementsByClassName("ad-details-buttons-link")[0]
  75. ).toBeDefined();
  76. });
  77. });
  78. it("Should go to patterns page when click go back button", async () => {
  79. const { container } = render(cont);
  80. waitFor(() => {
  81. fireEvent.click(screen.getByTestId("ad-details-buttons-link"));
  82. expect(props.history.push).toHaveBeenCalledWith("/patterns");
  83. });
  84. });
  85. it("Should render send email button", () => {
  86. render(cont);
  87. waitFor(() => {
  88. expect(screen.getByTestId("pattern-details-send-email")).toBeDefined();
  89. });
  90. });
  91. it("Should render send email modal", () => {
  92. render(cont);
  93. waitFor(() => {
  94. fireEvent.change(screen.getByTestId("pattern-details-select"), {
  95. target: { value: "jelena.d.zivkovic@gmail.com" },
  96. });
  97. fireEvent.click(screen.getByTestId("pattern-details-plus"));
  98. fireEvent.click(screen.getByTestId("pattern-details-send-email"));
  99. expect(props.history.push).toHaveBeenCalledWith("/patterns");
  100. });
  101. });
  102. });