-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.js
87 lines (71 loc) · 2.66 KB
/
test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import test from 'ava';
import b3m from './index';
test('Returns the passed block-class and build a class-string', t => {
const cn = b3m('button')
t.is(cn(), 'button')
})
test('Returns the passed string as block in BEM format', t => {
const cn = b3m('button')
t.is(cn('max'), 'button__max')
})
test('Returns class-string with multiple classes if you pass more strings', t => {
const cn = b3m('button')
t.is(cn('max', 'min'), 'button__max button__min')
})
test('Returns class-string with double dashes if string is passed as array', t => {
const cn = b3m('button')
t.is(cn(['clickable']), 'button--clickable')
})
test('Returns passed object into modifier if key is truth', t => {
const cn = b3m('button')
t.is(cn({clickable: true}), 'button--clickable')
})
test('Returns passed object without key if prop is false', t => {
const cn = b3m('button')
t.is(cn({clickable: false}), '')
t.is(cn({visible: true, clickable: false}), 'button--visible')
t.is(cn({visible: true, clickable: true, hoverable: true}), 'button--visible button--clickable button--hoverable')
})
test('Returns passed object without key if prop is true', t => {
const cn = b3m('button')
t.is(cn({clickable: true}), 'button--clickable')
})
test('Returns passed object without key if multiple props are false except one', t => {
const cn = b3m('button')
t.is(cn({this: false, is: false, a: false, test: false, pony: true}), 'button--pony')
})
test('Returns passed object and used key and prop of object since they`re not boolean', t => {
const cn = b3m('button')
t.is(cn({is: 'hidden'}), 'button--is-hidden')
})
test('Returns passed object and used key and prop of object and converts the camelCase key into dashes', t => {
const cn = b3m('button')
t.is(cn({isHidden: true}), 'button--is-hidden')
t.is(cn({status: 'isHidden'}), 'button--status-is-hidden')
t.is(cn({isHidden: 'maybe'}), 'button--is-hidden-maybe')
})
test('Returns multiple object entries splitted with whitespaces', t => {
const cn = b3m('button')
t.is(cn({foo: 'bar', hello: 'world'}), 'button--foo-bar button--hello-world')
})
test('Returns nothing if empty array is passed', t => {
const cn = b3m('button')
t.is(cn([]), '')
})
test('Returns nothing if empty object is passed', t => {
const cn = b3m('button')
t.is(cn({}), '')
})
test('Returns nothing if empty string is passed', t => {
const cn = b3m('button')
t.is(cn(''), '')
})
test('Handles numbers in classnames', t => {
const cn = b3m('button')
t.is(cn('opacity-80'), 'button__opacity-80')
t.is(cn('opacity-100'), 'button__opacity-100')
})
test('Ignore function when passed', t => {
const cn = b3m('button')
t.is(cn(() => 'foobar'), 'button')
})