textarea_test.tsx 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import { assertEquals, cleanup, render, screen } from "./setup.ts";
  2. import Textarea from "../../components/form/Textarea.tsx";
  3. Deno.test({
  4. name: "Textarea - renders bare textarea without label",
  5. fn() {
  6. render(<Textarea placeholder="Write here" />);
  7. const textarea = screen.getByPlaceholderText("Write here");
  8. assertEquals(textarea.tagName, "TEXTAREA");
  9. cleanup();
  10. },
  11. sanitizeResources: false,
  12. sanitizeOps: false,
  13. });
  14. Deno.test({
  15. name: "Textarea - renders with label wrapper",
  16. fn() {
  17. render(<Textarea label="Content" placeholder="content" />);
  18. const label = screen.getByText("Content");
  19. assertEquals(label.tagName, "LABEL");
  20. const textarea = screen.getByPlaceholderText("content");
  21. assertEquals(textarea.tagName, "TEXTAREA");
  22. cleanup();
  23. },
  24. sanitizeResources: false,
  25. sanitizeOps: false,
  26. });
  27. Deno.test({
  28. name: "Textarea - applies error border when error=true",
  29. fn() {
  30. render(<Textarea error={true} placeholder="err" />);
  31. const textarea = screen.getByPlaceholderText("err");
  32. assertEquals(textarea.className.includes("border-red-600"), true);
  33. cleanup();
  34. },
  35. sanitizeResources: false,
  36. sanitizeOps: false,
  37. });
  38. Deno.test({
  39. name: "Textarea - applies normal border when error=false",
  40. fn() {
  41. render(<Textarea error={false} placeholder="ok" />);
  42. const textarea = screen.getByPlaceholderText("ok");
  43. assertEquals(textarea.className.includes("border-gray-300"), true);
  44. assertEquals(textarea.className.includes("border-red-600"), false);
  45. cleanup();
  46. },
  47. sanitizeResources: false,
  48. sanitizeOps: false,
  49. });
  50. Deno.test({
  51. name: "Textarea - passes through disabled attribute",
  52. fn() {
  53. render(<Textarea disabled placeholder="disabled" />);
  54. const textarea = screen.getByPlaceholderText(
  55. "disabled",
  56. ) as HTMLTextAreaElement;
  57. assertEquals(textarea.disabled, true);
  58. cleanup();
  59. },
  60. sanitizeResources: false,
  61. sanitizeOps: false,
  62. });
  63. Deno.test({
  64. name: "Textarea - appends custom className",
  65. fn() {
  66. render(<Textarea className="my-textarea" placeholder="custom" />);
  67. const textarea = screen.getByPlaceholderText("custom");
  68. assertEquals(textarea.className.includes("my-textarea"), true);
  69. cleanup();
  70. },
  71. sanitizeResources: false,
  72. sanitizeOps: false,
  73. });