Skip to content
This repository was archived by the owner on Sep 26, 2022. It is now read-only.

Commit 545ae89

Browse files
DinCahillFlorian-Schoenherr
authored andcommitted
test(Breadcrumbs): add test
1 parent fe7637c commit 545ae89

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<script>
2+
export let items;
3+
export let Breadcrumbs;
4+
</script>
5+
6+
<Breadcrumbs {items}>
7+
<div slot="divider">-</div>
8+
</Breadcrumbs>
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import { render } from '@testing-library/svelte';
2+
import Breadcrumbs from '@s/components/Breadcrumbs';
3+
import CustomDivider from './custom_divider.svelte';
4+
5+
function testBreadcrumbs(items = [], divider = '/', component = null) {
6+
const { getByRole } =
7+
component === null ?
8+
render(Breadcrumbs, { items }) :
9+
render(component, { Breadcrumbs, items });
10+
11+
const list = getByRole('list');
12+
expect(list).toHaveClass('s-breadcrumbs');
13+
14+
const bcItems = list.querySelectorAll('.s-breadcrumb-item');
15+
const dividers = list.querySelectorAll('.divider');
16+
const listItems = list.querySelectorAll('li');
17+
18+
expect(bcItems).toHaveLength(items.length);
19+
expect(dividers).toHaveLength(Math.max(items.length - 1, 0));
20+
expect(listItems).toHaveLength(bcItems.length + dividers.length);
21+
22+
bcItems.forEach((elem, idx) => {
23+
const item = items[idx];
24+
25+
if (!item.disabled) expect(elem.href).toContain(item.href);
26+
27+
expect(elem).toBeVisible();
28+
expect(elem).toHaveTextContent(item.text);
29+
});
30+
31+
dividers.forEach((elem) => {
32+
expect(elem).toBeVisible();
33+
expect(elem).toHaveTextContent(divider);
34+
});
35+
}
36+
37+
const testItems = [
38+
{ text: 'Dashboard', href: '/components/breadcrumbs/' },
39+
{ text: 'Link 1', href: '/components/breadcrumbs/' },
40+
{ text: 'Link 2', disabled: true },
41+
];
42+
43+
describe('Breadcrumbs', () => {
44+
test('renders properly', () => {
45+
testBreadcrumbs(testItems);
46+
});
47+
48+
test('renders properly with custom divider', () => {
49+
testBreadcrumbs(testItems, '-', CustomDivider);
50+
});
51+
52+
test('renders properly with empty items', () => {
53+
testBreadcrumbs();
54+
});
55+
});

0 commit comments

Comments
 (0)