Passed
Push — main ( c81d48...f3c905 )
by Andrii
03:15
created

src/bem.core.test.ts   A

Complexity

Total Complexity 1
Complexity/F 0

Size

Lines of Code 42
Function Count 0

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 1
eloc 34
mnd 1
bc 1
fnc 0
dl 0
loc 42
bpm 0
cpm 0
noi 0
c 0
b 0
f 0
rs 10
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