UNPKG

bootstrap-vue

Version:

Quickly integrate Bootstrap 4 components with Vue.js

85 lines (68 loc) 2.92 kB
import { loadFixture, testVM, nextTick, setData } from '../../../tests/utils'; describe("breadcrumb", async () => { beforeEach(loadFixture(__dirname, "breadcrumb")); testVM(); it("should apply bootstrap breadcrumb classes", async () => { const { app: { $refs } } = window; const $ol = $refs.breadcrumb1; expect($ol.classList.contains("breadcrumb")).toBe(true); Array.from($ol.children).forEach($li => { if ($li.tagName === "LI") { expect($li.classList.contains("breadcrumb-item")).toBe(true); } }); }); it("should apply ARIA roles", async () => { const { app: { $refs } } = window; const $ol = $refs.breadcrumb1; Array.from($ol.children).forEach($li => { if ($li.tagName === "LI") { expect($li.getAttribute("role")).toBe("presentation"); } }); }); it("should apply active class to active item", async () => { const { app: { $refs: { breadcrumb2: crumb2 }, items2 } } = window; items2.forEach((item, i) => { if (item.active) { expect(crumb2.children[i].classList.contains("active")).toBe(true); } }); }); it("should apply aria-current to active class element", async () => { const { app: { $refs: { breadcrumb2: crumb2 }, items2 } } = window; const $listItems = Array.from(crumb2.children); items2.forEach((item, i) => { if (item.active) { expect($listItems[i].firstElementChild.hasAttribute("aria-current")).toBe(true); } else { expect($listItems[i].firstElementChild.hasAttribute("aria-current")).toBe(false); } }); }); it("should default active class to last item only when no true active prop provided", async () => { const { app: { $refs: { breadcrumb1: crumb }, items } } = window; const $listItems = Array.from(crumb.children); const itemsLength = items.length; items.forEach((item, i) => { const isLast = i === itemsLength - 1; if (isLast) { expect($listItems[i].classList.contains("active")).toBe(true); } else { expect($listItems[i].classList.contains("active")).toBe(false); } }); }); // TODO: FC's can't emit events, so what to do here? // it("should emit a click event with the item when clicked", async () => { // const { app: { $refs, $el } } = window // const vm = $refs.breadcrumb2 // const spy = jest.fn() // vm.$on("click", spy) // const $listItems = Array.from(vm.$el.children) // app.items2.forEach((item, index) => { // $listItems[index].click() // expect(spy).toHaveBeenCalledWith(item) // }) // }) });