jiro-ui
Version:
A Mithril.js UI library based from construct-ui
60 lines (47 loc) • 1.52 kB
text/typescript
import m from 'mithril';
import assert from 'assert';
import { Classes, Breadcrumb, BreadcrumbItem, IBreadcrumbAttrs, Icon, Icons } from '@/';
import { hasChildClass, hasClass } from '@test-utils';
describe('breadcrumb', () => {
const el = () => document.body.firstChild as HTMLElement;
beforeEach(() => m.mount(document.body, null));
it('Renders correctly', () => {
mount({
class: Classes.POSITIVE,
size: 'xs'
});
assert(hasClass(el(), Classes.BREADCRUMB));
assert(hasClass(el(), Classes.POSITIVE));
assert(hasClass(el(), Classes.XS));
});
it('Renders children', () => {
mount({});
const childrenLength = el().querySelectorAll(`.${Classes.BREADCRUMB_ITEM}`).length;
const seperatorLength = el().querySelectorAll(`.${Classes.BREADCRUMB_SEPERATOR}`).length;
assert.equal(childrenLength, 2);
assert.equal(seperatorLength, 2);
});
it('Passes through html attrs', () => {
mount({
id: 1,
name: 'name'
});
assert(el().hasAttribute('id'));
assert(el().hasAttribute('name'));
});
it('Renders custom seperator', () => {
mount({
seperator: m(Icon, { name: Icons.ACTIVITY })
});
assert(hasChildClass(el(), `${Classes.ICON}-${Icons.ACTIVITY}`));
});
function mount(attrs: IBreadcrumbAttrs) {
const component = {
view: () => m(Breadcrumb, { ...attrs }, [
m(BreadcrumbItem, 'label'),
m(BreadcrumbItem, 'label')
])
};
m.mount(document.body, component);
}
});