UNPKG

@oruga-ui/oruga-next

Version:

UI components for Vue.js and CSS framework agnostic

78 lines (73 loc) 2.44 kB
import { describe, expect, test } from "vitest"; import { render } from "vitest-browser-vue"; import { defineComponent, h, ref } from "vue"; import OCollapse from "../Collapse.vue"; const SimpleCollapse = defineComponent({ name: "SimpleCollapse", setup() { const isOpen = ref(0); const collapses = [ { title: "Title 1", text: "Text 1", index: 0, }, { title: "Title 2", text: "Text 2", index: 1, }, { title: "Title 3", text: "Text 3", index: 2, }, ]; return { isOpen, collapses }; }, render() { return h( "section", {}, this.collapses.map(({ title, text, index }) => h( OCollapse, { key: index, "data-testid": `collapse-${index}`, open: this.isOpen == index, onOpen: () => { this.isOpen = index; }, }, { trigger: ({ open }) => h("div", {}, [ h("p", {}, [ `${title} (${open ? "Open" : "Closed"})`, ]), ]), default: () => h("div", { "data-testid": `content-${index}` }, [ text, ]), }, ), ), ); }, }); describe("<Collapse>", () => { test("works", async () => { const screen = render(SimpleCollapse); const firstContent = screen.getByTestId("content-0"); await expect.element(firstContent).toBeVisible(); const secondContent = screen.getByTestId("content-1"); await expect.element(secondContent).not.toBeVisible(); const second = screen.getByTestId("collapse-1"); const trigger = second.getByRole("button"); await trigger.click(); await expect.element(firstContent).not.toBeVisible(); await expect.element(secondContent).toBeVisible(); }); });