| Total Complexity | 2 |
| Complexity/F | 0 |
| Lines of Code | 58 |
| Function Count | 0 |
| Duplicated Lines | 0 |
| Ratio | 0 % |
| Changes | 0 | ||
| 1 | import type {ClassNames} from "." |
||
| 2 | import classNaming, { classNamesCheck } from "." |
||
| 3 | |||
| 4 | import classnames_default from "classnames" |
||
| 5 | import classnames_bind from "classnames/bind" |
||
| 6 | |||
| 7 | import css from "./some.css" |
||
| 8 | import module from "./some.module.css" |
||
| 9 | import { ClassNamesProperty, ClassHash } from "./defs" |
||
| 10 | |||
| 11 | const module_css: typeof module = { |
||
| 12 | "class1": "hash1", |
||
| 13 | "class2": "hash2" |
||
| 14 | } |
||
| 15 | |||
| 16 | it("usage interface", () => { |
||
| 17 | const { class1, |
||
| 18 | //@ts-expect-error Property 'class3' does not exist |
||
| 19 | whatever |
||
| 20 | } = classNamesCheck<ClassNamesProperty<{class1: ClassHash; class2: ClassHash}>>(css) |
||
| 21 | |||
| 22 | const props: ClassNames<ClassNamesProperty<{class2: ClassHash}>> = { |
||
| 23 | //@ts-expect-error |
||
| 24 | "classnames": css |
||
| 25 | } |
||
| 26 | |||
| 27 | const {classnames: {class2}} = props |
||
| 28 | , classes = classNaming() |
||
| 29 | expect({ |
||
| 30 | ...classes({class1, class2}) |
||
| 31 | }).toStrictEqual({ |
||
| 32 | //@ts-expect-error `classnames` has no possibility for type hints |
||
| 33 | className: classnames_default<"whatever">("class1", "class2") |
||
| 34 | }) |
||
| 35 | |||
| 36 | expect(class2 ?? whatever).toBe(undefined) |
||
| 37 | }) |
||
| 38 | |||
| 39 | it("css module", () => { |
||
| 40 | const classes = classNaming({classnames: module_css}) |
||
| 41 | |||
| 42 | expect({ |
||
| 43 | className: classnames_bind.bind(module_css)( |
||
| 44 | // No error on redundant CSS-class |
||
| 45 | {"class1": true}, |
||
| 46 | "class3" |
||
| 47 | ) |
||
| 48 | }).toStrictEqual({ |
||
| 49 | ...classes({ |
||
| 50 | class1: true, |
||
| 51 | //@ts-expect-error Argument of type '"class3"' is not assignable to parameter |
||
| 52 | class3: true |
||
| 53 | }) |
||
| 54 | }) |
||
| 55 | }) |
||
| 56 | |||
| 57 | it.todo("Does `classnames` have chainable interface?") |
||
| 58 |