import { assertEquals, cleanup, render } from "./setup.ts";
import FileInput from "../../components/form/FileInput.tsx";
Deno.test({
name: "FileInput - renders bare input without label",
fn() {
const { container } = render();
const fileInput = container.querySelector(
'input[type="file"]',
) as HTMLInputElement;
assertEquals(fileInput !== null, true);
assertEquals(fileInput.type, "file");
const labelEl = container.querySelector("label");
assertEquals(labelEl, null);
cleanup();
},
sanitizeResources: false,
sanitizeOps: false,
});
Deno.test({
name: "FileInput - renders with label wrapper",
fn() {
const { container } = render();
const labelEl = container.querySelector("label");
assertEquals(labelEl !== null, true);
assertEquals(labelEl?.textContent?.includes("Import file"), true);
const fileInput = container.querySelector(
'input[type="file"]',
) as HTMLInputElement;
assertEquals(fileInput !== null, true);
cleanup();
},
sanitizeResources: false,
sanitizeOps: false,
});
Deno.test({
name: "FileInput - passes through accept attribute",
fn() {
const { container } = render();
const fileInput = container.querySelector(
'input[type="file"]',
) as HTMLInputElement;
assertEquals(fileInput.getAttribute("accept"), ".md,.txt");
cleanup();
},
sanitizeResources: false,
sanitizeOps: false,
});
Deno.test({
name: "FileInput - passes through disabled attribute",
fn() {
const { container } = render();
const fileInput = container.querySelector(
'input[type="file"]',
) as HTMLInputElement;
assertEquals(fileInput.hasAttribute("disabled"), true);
cleanup();
},
sanitizeResources: false,
sanitizeOps: false,
});
Deno.test({
name: "FileInput - appends custom className",
fn() {
const { container } = render();
const fileInput = container.querySelector(
'input[type="file"]',
) as HTMLInputElement;
assertEquals(fileInput.classList.contains("my-file"), true);
cleanup();
},
sanitizeResources: false,
sanitizeOps: false,
});
Deno.test({
name: "FileInput - includes dark mode file button styles",
fn() {
const { container } = render();
const fileInput = container.querySelector(
'input[type="file"]',
) as HTMLInputElement;
assertEquals(fileInput.classList.contains("file:dark:bg-gray-600"), true);
assertEquals(
fileInput.classList.contains("file:dark:hover:bg-gray-500"),
true,
);
assertEquals(fileInput.classList.contains("file:dark:text-gray-100"), true);
cleanup();
},
sanitizeResources: false,
sanitizeOps: false,
});