Total Complexity | 2 |
Complexity/F | 0 |
Lines of Code | 50 |
Function Count | 0 |
Duplicated Lines | 0 |
Ratio | 0 % |
Changes | 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 |