page_container_test.tsx 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import { assertEquals, cleanup, render, screen } from "./setup.ts";
  2. import PageContainer from "../../components/layout/PageContainer.tsx";
  3. Deno.test({
  4. name: "PageContainer - renders children",
  5. fn() {
  6. render(
  7. <PageContainer>
  8. <span>Child content</span>
  9. </PageContainer>,
  10. );
  11. assertEquals(screen.getByText("Child content").tagName, "SPAN");
  12. cleanup();
  13. },
  14. sanitizeResources: false,
  15. sanitizeOps: false,
  16. });
  17. Deno.test({
  18. name: "PageContainer - applies base layout classes",
  19. fn() {
  20. const { container } = render(<PageContainer>Test</PageContainer>);
  21. const div = container.firstElementChild!;
  22. assertEquals(div.className.includes("w-screen"), true);
  23. assertEquals(div.className.includes("h-screen"), true);
  24. assertEquals(div.className.includes("flex"), true);
  25. assertEquals(div.className.includes("flex-col"), true);
  26. cleanup();
  27. },
  28. sanitizeResources: false,
  29. sanitizeOps: false,
  30. });
  31. Deno.test({
  32. name: "PageContainer - applies centering classes when centered=true",
  33. fn() {
  34. const { container } = render(
  35. <PageContainer centered>Centered</PageContainer>,
  36. );
  37. const div = container.firstElementChild!;
  38. assertEquals(div.className.includes("items-center"), true);
  39. assertEquals(div.className.includes("justify-center"), true);
  40. cleanup();
  41. },
  42. sanitizeResources: false,
  43. sanitizeOps: false,
  44. });
  45. Deno.test({
  46. name: "PageContainer - no centering when centered=false (default)",
  47. fn() {
  48. const { container } = render(<PageContainer>Not centered</PageContainer>);
  49. const div = container.firstElementChild!;
  50. assertEquals(div.className.includes("items-center"), false);
  51. assertEquals(div.className.includes("justify-center"), false);
  52. cleanup();
  53. },
  54. sanitizeResources: false,
  55. sanitizeOps: false,
  56. });
  57. Deno.test({
  58. name: "PageContainer - appends custom className",
  59. fn() {
  60. const { container } = render(
  61. <PageContainer className="my-page">Custom</PageContainer>,
  62. );
  63. const div = container.firstElementChild!;
  64. assertEquals(div.className.includes("my-page"), true);
  65. cleanup();
  66. },
  67. sanitizeResources: false,
  68. sanitizeOps: false,
  69. });