import { render, screen } from "@testing-library/svelte";
import { describe, expect, it } from "vitest";
import { createRawSnippet } from "svelte";
import Card from "$components/layout/Card.svelte";
describe("Card.svelte", () => {
it("should render with string title", () => {
const childrenSnippet = createRawSnippet(() => ({
render: () => "
Test content
",
}));
const { container } = render(Card, {
props: {
title: "Test Title",
children: childrenSnippet,
},
});
expect(container.querySelector(".card-title")).toHaveTextContent("Test Title");
expect(container.querySelector(".card-body")).toHaveTextContent("Test content");
});
it("should render with snippet title", () => {
const titleSnippet = createRawSnippet(() => ({
render: () => "Snippet Title",
}));
const childrenSnippet = createRawSnippet(() => ({
render: () => "Test content
",
}));
const { container } = render(Card, {
props: {
title: titleSnippet,
children: childrenSnippet,
},
});
expect(container.querySelector(".card-title")).toHaveTextContent("Snippet Title");
expect(container.querySelector(".card-body")).toHaveTextContent("Test content");
});
it("should render with titleSnippet", () => {
const titleSnippet = createRawSnippet(() => ({
render: () => "",
}));
const childrenSnippet = createRawSnippet(() => ({
render: () => "Test content
",
}));
const { container } = render(Card, {
props: {
title: "Test Title",
children: childrenSnippet,
titleSnippet: titleSnippet,
},
});
expect(container.querySelector(".card-title")).toHaveTextContent("Test Title");
expect(container.querySelector(".card-body")).toHaveTextContent("Test content");
expect(container.querySelector(".card-snippet")).toHaveTextContent("Action");
});
it("should render without titleSnippet", () => {
const childrenSnippet = createRawSnippet(() => ({
render: () => "Test content
",
}));
const { container } = render(Card, {
props: {
title: "Test Title",
children: childrenSnippet,
},
});
expect(container.querySelector(".card-title")).toHaveTextContent("Test Title");
expect(container.querySelector(".card-body")).toHaveTextContent("Test content");
});
});