Passed
Push — main ( fa9d82...23a04f )
by Andrii
02:13
created

src/versus-classnames.test.ts   A

Complexity

Total Complexity 2
Complexity/F 0

Size

Lines of Code 50
Function Count 0

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 2
eloc 38
mnd 2
bc 2
fnc 0
dl 0
loc 50
rs 10
bpm 0
cpm 0
noi 0
c 0
b 0
f 0
1
import type {ClassNames} from "."
2
import {
3
  classNamesCheck,
4
  classNamingBasic,
5
  classNamingCtx
6
} from "."
7
8
import classnames_default from "classnames"
9
import classnames_bind from "classnames/bind"
10
11
import css from "./some.css"
12
import module from "./some.module.css"
13
const module_css: typeof module = {
14
  "class1": "hash1",
15
  "class2": "hash2"
16
}
17
18
it("usage interface", () => {
19
  const { class1,
20
    //@ts-expect-error Property 'class3' does not exist
21
    whatever
22
  } = classNamesCheck<"class1"|"class2">(css)
23
  
24
  const props: ClassNames<"class2"> = {"classnames": css}
25
  
26
  const {classnames: {class2}} = props
27
28
  expect(
29
    classNamingBasic({class1, class2})
30
  ).toStrictEqual({
31
    //@ts-expect-error `classnames` has no possibility for type hints
32
    className:  classnames_default<"whatever">("class1", "class2")
33
  })
34
35
  expect(class2 ?? whatever).toBe(undefined)
36
})
37
38
it("css module", () => expect({
39
  className: classnames_bind.bind(module_css)(
40
    // No error on redundant CSS-class
41
    "class1", "class3"
42
  )
43
}).toStrictEqual(
44
  classNamingCtx({classnames: module_css})(
45
    "class1",
46
    //@ts-expect-error Argument of type '"class3"' is not assignable to parameter
47
    "class3"
48
  )
49
))
50
51