__tests__/check.test.tsx   A
last analyzed

Complexity

Total Complexity 2
Complexity/F 1

Size

Lines of Code 115
Function Count 2

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 2
eloc 100
mnd 0
bc 0
fnc 2
dl 0
loc 115
rs 10
bpm 0
cpm 1
noi 0
c 0
b 0
f 0

2 Functions

Rating   Name   Duplication   Size   Complexity  
A check.test.tsx ➔ check0 0 5 1
A check.test.tsx ➔ check2 0 5 1
1
import React from "react"
2
import { classNamesCheck } from "../src/check"
3
import { EMPTY_OBJECT } from "../src/consts.json"
4
import type { ClassHash, ClassNamesFrom, ClassNamesProperty } from "../src/main.types"
5
import type { CssModule } from "../src/definitions.types"
6
7
export {}
8
9
const Component = ({classnames: {App}}: ClassNamesProperty<{App: ClassHash}>) => <div className={App}/>
10
11
const css_module_exact = {
12
  App: undefined
13
} //as {App: string|undefined}
14
, css_module = {
15
  App: undefined,
16
  "never-used": "bad"
17
}
18
, css_dictionary: CssModule = {}
19
20
it(classNamesCheck.name, () => {
21
  <Component classnames={classNamesCheck()} />;
22
  //@ts-expect-error Property 'App' is missing
23
  <Component classnames={classNamesCheck({})} />;
24
25
  <Component classnames={classNamesCheck(css_dictionary)} />;
26
27
  <Component classnames={classNamesCheck(css_dictionary, {} as ClassNamesFrom<typeof Component>)} />;
28
29
  <Component classnames={classNamesCheck(css_module_exact)} />;
30
  <Component classnames={classNamesCheck(css_module)} />;
31
  <Component classnames={classNamesCheck(css_module_exact, {} as ClassNamesFrom<typeof Component>)} />;
32
  <Component classnames={classNamesCheck<ClassNamesFrom<typeof Component>, typeof css_module_exact>(css_module_exact)} />;
33
  <Component classnames={classNamesCheck(
34
    css_module,
35
    //@ts-expect-error Property 'never-used' is missing
36
    {} as ClassNamesFrom<typeof Component>)
37
  } />;
38
39
  <Component classnames={classNamesCheck<
40
    //@ts-expect-error Type 'ClassNamesFrom<typeof Component>' does not satisfy the constraint
41
    ClassNamesFrom<typeof Component>,
42
    typeof css_module
43
  >(css_module)} />;
44
45
  expect(true).toBe(true)
46
})
47
48
it("research", () => {
49
  //@ts-expect-error Property 'App' is missing
50
  <Component classnames={{} as Record<string, ClassHash>} />;
51
  <Component classnames={{} as never} />;
52
  <Component classnames={{} as any} />;
53
  //@ts-expect-error Type 'unknown' is not assignable
54
  <Component classnames={{} as unknown} />;
55
  <Component classnames={{App: undefined,
56
    //@ts-expect-error Object literal may only specify known properties, and 'App__bad' does not exist
57
    App__bad: "bad"
58
  }} />;
59
  <Component classnames={css_module} />;
60
  <Component classnames={css_module as ClassNamesFrom<typeof Component>} />;
61
  expect(true).toBe(true)
62
})
63
64
it("research ", () => {
65
  function check0<
66
    //@ts-expect-error
67
    C extends T,
68
    T extends CssModule = CssModule>(source = EMPTY_OBJECT as T) {
69
    return source
70
  }
71
72
  // function check0<C extends T, T extends CssModule = CssModule>(source = EMPTY_OBJECT as T) :C {
73
  //   return source as C
74
  // }
75
76
  <Component classnames={check0()} />;
77
  //@ts-expect-error Property 'App' is missing
78
  <Component classnames={check0({})} />;
79
  <Component classnames={check0(css_module_exact)} />;
80
  //#16 @ts-expect-error
81
  <Component classnames={check0(css_module)} />;
82
83
  //@ts-expect-error Property 'App' is missing in type 'CssModule'
84
  <Component classnames
85
    ={check0<ClassNamesFrom<typeof Component>>(css_module)} />;
86
87
  <Component classnames={check0<
88
    //@ts-expect-error Property 'never-used' is missing in type 'ClassNamesFrom<typeof Component>'
89
    ClassNamesFrom<typeof Component>,
90
    typeof css_module
91
  >(css_module)} />;
92
93
  function check2<T extends CssModule = CssModule, C extends {[K in keyof T]: ClassHash} = T>(
94
    source = EMPTY_OBJECT as T,
95
    _ = EMPTY_OBJECT as C
96
  ) {return source}
97
98
  <Component classnames={check2()} />;
99
  //@ts-expect-error Property 'App' is missing
100
  <Component classnames={check2({})} />;
101
  <Component classnames={check2(css_module_exact, {} as ClassNamesFrom<typeof Component>)} />;
102
  <Component classnames={check2<typeof css_module_exact, ClassNamesFrom<typeof Component>>(css_module_exact)} />;
103
  <Component classnames={check2(css_module,
104
    //@ts-expect-error Property 'never-used' is missing
105
    {} as ClassNamesFrom<typeof Component>)
106
  } />;
107
  <Component classnames={check2<
108
    typeof css_module,
109
    //@ts-expect-error Type 'ClassNamesFrom<typeof Component>' does not satisfy the constraint
110
    ClassNamesFrom<typeof Component>
111
  >(css_module)} />;
112
113
  expect(true).toBe(true)
114
})
115