1
|
|
|
import { bem2arr, BemAbsraction } from "./bem.core"; |
2
|
|
|
|
3
|
|
|
describe(bem2arr.name, () => { |
4
|
|
|
describe("singletons", () => { |
5
|
|
|
const suites = { |
6
|
|
|
"block singleton": [ |
7
|
|
|
[{block: false }, ""], |
8
|
|
|
[{block: true }, "block"], |
9
|
|
|
[{block: {} }, "" /* or "block" */], |
10
|
|
|
[{block: {$: undefined }}, "block"], |
11
|
|
|
[{block: {$: false }}, "block"], |
12
|
|
|
[{block: {$: { }}}, "block"], |
13
|
|
|
[{block: {$: {mod: false}}}, "block"], |
14
|
|
|
[{block: {$: {mod: true }}}, "block block--mod"], |
15
|
|
|
[{block: {$: {mod: "" }}}, "block"], |
16
|
|
|
[{block: {$: {mod: "val"}}}, "block block--mod--val"], |
17
|
|
|
], |
18
|
|
|
"element singleton": [ |
19
|
|
|
[{block: {el: false }}, ""], |
20
|
|
|
[{block: {el: true }}, "block__el"], |
21
|
|
|
[{block: {el: {} }}, "block__el"], |
22
|
|
|
[{block: {el: {mod: false}}}, "block__el"], |
23
|
|
|
[{block: {el: {mod: true }}}, "block__el block__el--mod"], |
24
|
|
|
[{block: {el: {mod: "" }}}, "block__el"], |
25
|
|
|
[{block: {el: {mod: "val"}}}, "block__el block__el--mod--val"], |
26
|
|
|
], |
27
|
|
|
"block and el combine": [ |
28
|
|
|
[{block: { |
29
|
|
|
$: {mod: true}, |
30
|
|
|
el: true }}, "block block--mod block__el"] |
31
|
|
|
] |
32
|
|
|
} as Record<string, [BemAbsraction, string][]> |
33
|
|
|
|
34
|
|
|
Object.entries(suites).forEach(([title, launches]) => describe(title, () => launches |
35
|
|
|
.forEach(([query, output]) => it( |
36
|
|
|
JSON.stringify(query, (_, v) => v === undefined ? "`undefined`" : v), |
37
|
|
|
() => expect(bem2arr(query).join(" ")).toBe(output)) |
38
|
|
|
) |
39
|
|
|
)) |
40
|
|
|
}) |
41
|
|
|
}) |
42
|
|
|
|