mirror of
https://github.com/carbon-design-system/carbon-components-svelte.git
synced 2025-09-14 18:01:06 +00:00
test(clickable-tile): add unit tests
This commit is contained in:
parent
d8fbdabc70
commit
39cb29afba
3 changed files with 85 additions and 16 deletions
|
@ -1,16 +0,0 @@
|
||||||
<script lang="ts">
|
|
||||||
import { ClickableTile } from "carbon-components-svelte";
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<ClickableTile href="https://www.carbondesignsystem.com/">
|
|
||||||
Carbon Design System
|
|
||||||
</ClickableTile>
|
|
||||||
|
|
||||||
<ClickableTile
|
|
||||||
light
|
|
||||||
href="https://www.carbondesignsystem.com/"
|
|
||||||
title=""
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
Carbon Design System
|
|
||||||
</ClickableTile>
|
|
32
tests/Tile/ClickableTile.test.svelte
Normal file
32
tests/Tile/ClickableTile.test.svelte
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
<script lang="ts">
|
||||||
|
import { ClickableTile } from "carbon-components-svelte";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<ClickableTile href="https://www.carbondesignsystem.com/">
|
||||||
|
Link only
|
||||||
|
</ClickableTile>
|
||||||
|
|
||||||
|
<ClickableTile
|
||||||
|
light
|
||||||
|
href="https://www.carbondesignsystem.com/"
|
||||||
|
title=""
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
Link with light variant
|
||||||
|
</ClickableTile>
|
||||||
|
|
||||||
|
<ClickableTile
|
||||||
|
href="#"
|
||||||
|
data-testid="click-test"
|
||||||
|
on:click={() => {
|
||||||
|
console.log("clicked");
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Click me
|
||||||
|
</ClickableTile>
|
||||||
|
|
||||||
|
<ClickableTile href="#" clicked>Clicked</ClickableTile>
|
||||||
|
|
||||||
|
<ClickableTile href="#" disabled data-testid="disabled-test">
|
||||||
|
Disabled tile
|
||||||
|
</ClickableTile>
|
53
tests/Tile/ClickableTile.test.ts
Normal file
53
tests/Tile/ClickableTile.test.ts
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
import { render, screen } from "@testing-library/svelte";
|
||||||
|
import { user } from "../setup-tests";
|
||||||
|
import ClickableTile from "./ClickableTile.test.svelte";
|
||||||
|
|
||||||
|
describe("ClickableTile", () => {
|
||||||
|
it("should render with href", () => {
|
||||||
|
render(ClickableTile);
|
||||||
|
|
||||||
|
const tile = screen.getByText("Link only");
|
||||||
|
expect(tile).toHaveAttribute("href", "https://www.carbondesignsystem.com/");
|
||||||
|
expect(tile).toHaveClass("bx--tile", "bx--tile--clickable");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should render light variant with other attributes", () => {
|
||||||
|
render(ClickableTile);
|
||||||
|
|
||||||
|
const tile = screen.getByText("Link with light variant");
|
||||||
|
expect(tile).toHaveClass("bx--tile--light");
|
||||||
|
expect(tile).toHaveAttribute("target", "_blank");
|
||||||
|
expect(tile).toHaveAttribute("title", "");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should toggle clicked state on click", async () => {
|
||||||
|
render(ClickableTile);
|
||||||
|
|
||||||
|
const tile = screen.getByTestId("click-test");
|
||||||
|
expect(tile).not.toHaveClass("bx--tile--is-clicked");
|
||||||
|
|
||||||
|
await user.click(tile);
|
||||||
|
expect(tile).toHaveClass("bx--tile--is-clicked");
|
||||||
|
|
||||||
|
await user.click(tile);
|
||||||
|
expect(tile).not.toHaveClass("bx--tile--is-clicked");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should have clicked state", async () => {
|
||||||
|
render(ClickableTile);
|
||||||
|
|
||||||
|
const tile = screen.getByText("Clicked");
|
||||||
|
expect(tile).toHaveClass("bx--tile--is-clicked");
|
||||||
|
|
||||||
|
await user.type(tile, "{Space}");
|
||||||
|
expect(tile).not.toHaveClass("bx--tile--is-clicked");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should respect disabled state", async () => {
|
||||||
|
render(ClickableTile);
|
||||||
|
|
||||||
|
const disabledTile = screen.getByTestId("disabled-test");
|
||||||
|
expect(disabledTile).toHaveAttribute("aria-disabled", "true");
|
||||||
|
expect(disabledTile).toHaveClass("bx--tile--clickable");
|
||||||
|
});
|
||||||
|
});
|
Loading…
Add table
Add a link
Reference in a new issue