feedback-actions.test.tsx 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import { render, screen, within } from "@testing-library/react";
  2. import userEvent from "@testing-library/user-event";
  3. import { afterEach, describe, expect, it, vi } from "vitest";
  4. import { FeedbackActions } from "#/components/feedback-actions";
  5. describe("FeedbackActions", () => {
  6. const user = userEvent.setup();
  7. const onPositiveFeedback = vi.fn();
  8. const onNegativeFeedback = vi.fn();
  9. afterEach(() => {
  10. vi.clearAllMocks();
  11. });
  12. it("should render correctly", () => {
  13. render(
  14. <FeedbackActions
  15. onPositiveFeedback={onPositiveFeedback}
  16. onNegativeFeedback={onNegativeFeedback}
  17. />,
  18. );
  19. const actions = screen.getByTestId("feedback-actions");
  20. within(actions).getByTestId("positive-feedback");
  21. within(actions).getByTestId("negative-feedback");
  22. });
  23. it("should call onPositiveFeedback when positive feedback is clicked", async () => {
  24. render(
  25. <FeedbackActions
  26. onPositiveFeedback={onPositiveFeedback}
  27. onNegativeFeedback={onNegativeFeedback}
  28. />,
  29. );
  30. const positiveFeedback = screen.getByTestId("positive-feedback");
  31. await user.click(positiveFeedback);
  32. expect(onPositiveFeedback).toHaveBeenCalled();
  33. });
  34. it("should call onNegativeFeedback when negative feedback is clicked", async () => {
  35. render(
  36. <FeedbackActions
  37. onPositiveFeedback={onPositiveFeedback}
  38. onNegativeFeedback={onNegativeFeedback}
  39. />,
  40. );
  41. const negativeFeedback = screen.getByTestId("negative-feedback");
  42. await user.click(negativeFeedback);
  43. expect(onNegativeFeedback).toHaveBeenCalled();
  44. });
  45. });