Passed
Push — main ( a3dd18...4c1518 )
by Andrii
02:15
created

check.spec.tsx ➔ Component   A

Complexity

Conditions 1

Size

Total Lines 1
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 1
dl 0
loc 1
rs 10
c 0
b 0
f 0
cc 1
1
import React from "react"
2
import classNamesCheck from "./check"
3
import type { ClassNames } from "./defs"
4
5
import css from "./some.css"
6
import module from "./some.module.css"
7
const module_css: typeof module = {
8
  "class1": "hash1",
9
  "class2": "hash2"
10
}
11
12
function App(_: ClassNames<"class1"|"class2">) { return null }
13
function Component(_: ClassNames<"class1">) { return null }
14
15
it("without", () => {
16
  <App classNames={css} />;
17
  <App classNames={module_css} />;
18
  <Component classNames={module_css} />;
19
})
20
21
it("declares", () => {
22
  <App classNames={classNamesCheck()} />;
23
24
  <App
25
      //@ts-expect-error Property 'class2' is missing
26
      classNames={
27
        classNamesCheck<"class1">() } />;
28
29
    <App
30
      //@ts-expect-error Property 'class2' is missing
31
      classNames={
32
        classNamesCheck<typeof Component>()} />;
33
  
34
  expect(true).toBe(true)
35
})
36
37
it("propagates", () => {
38
  <App classNames={classNamesCheck(css)} />;
39
40
  <Component classNames={classNamesCheck(module_css)} />;
41
42
  <App classNames={classNamesCheck(module_css)} />;
43
44
  <App
45
    //@ts-expect-error Property 'class2' is missing
46
    classNames={
47
      classNamesCheck({class1: undefined})} />;
48
})
49
50
it("equility if possible", () => {
51
  <App classNames={classNamesCheck<typeof App>(css)} />;
52
53
  <App classNames={classNamesCheck<typeof App>(module_css)} />;
54
55
  <App
56
    //@ts-expect-error is not assignable
57
    classNames={
58
      classNamesCheck<typeof Component>(css)} />;
59
60
  <App
61
    //@ts-expect-error is not assignable
62
    classNames={
63
      classNamesCheck<typeof Component>(module_css)} />;
64
    
65
  classNamesCheck<typeof Component>({class1: "undefined",
66
    //@ts-expect-error Object literal may only specify known properties, but 'class2' does not exist
67
    class2: "undefined"});
68
  //TODO //@ts-expect-error
69
  classNamesCheck<typeof Component, typeof module_css>(module_css);
70
71
  <App classNames={classNamesCheck<typeof App, typeof css>(css)} />;
72
73
  <Component classNames={classNamesCheck<typeof App, typeof module_css>(module_css)} /> ;
74
75
  //@ts-expect-error Property 'class1' is missing in type '"class2"[]'
76
  <Component classNames={classNamesCheck<typeof Component, typeof module_css>(module_css)} /> ;
77
  //@ts-expect-error Property 'class1' is missing in type '"class2"[]'
78
  <Component classNames={classNamesCheck<typeof Component, typeof module_css>()} /> ;
79
80
  expect(true).toBe(true)
81
})