Skip to content

Commit 02a9d07

Browse files
author
Andrii Kirmas
committed
Test with hashes and rendering classNames to DOM
1 parent 51b36b0 commit 02a9d07

File tree

1 file changed

+64
-15
lines changed

1 file changed

+64
-15
lines changed

src/ctx.spec.tsx

Lines changed: 64 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,14 @@ import { classNamesCheck, classNamingCtx } from "."
33
import expectToRender from "../expect-to-render"
44
import { ClassNames } from "./defs"
55

6+
const {classNames}: ClassNames<typeof App> = {
7+
classNames: {
8+
"App__Item": "hash",
9+
class1: "hash1",
10+
class2: "hash2"
11+
}
12+
}
13+
614
function Component(props: ClassNames<true, "class1"|"class2">) {
715
const classes = classNamingCtx(props)
816
return <>
@@ -23,29 +31,70 @@ function App({classNames, className}: ClassNames<true, "App__Item", typeof Compo
2331
}
2432

2533
describe(classNamingCtx.name, () => {
26-
it("demo", () => expectToRender(
34+
it("not module", () => expectToRender(
2735
<App className="MyApp" classNames={classNamesCheck()} />,
2836
[
2937
'<div class="MyApp App__Item class1"></div>',
3038
'<div class="class2"></div>'
3139
]
3240
))
3341

34-
it("forget className", () => expectToRender(
35-
//@ts-expect-error Property 'className' is missing
36-
<App classNames={classNamesCheck()}/>,
37-
[
38-
'<div class="App__Item class1"></div>',
39-
'<div class="class2"></div>'
40-
]
41-
))
42-
it("forget classNames", () => expectToRender(
43-
//@ts-expect-error Property 'classNames' is missing
44-
<App className={"MyApp"}/>,
42+
it("css module", () => expectToRender(
43+
<App className="MyApp" classNames={classNames} />,
4544
[
46-
'<div class="MyApp App__Item class1"></div>',
47-
'<div class="class2"></div>'
48-
]
45+
'<div class="MyApp hash hash1"></div>',
46+
'<div class="hash2"></div>'
47+
]
4948
))
5049

50+
it("propagate classNames by option", () => {
51+
const App = ({classNames, className}: ClassNames<true, "App__Item", typeof Component>) =>
52+
//@ts-expect-error //TODO Types of property 'classNames' are incompatible.
53+
<Component {
54+
...classNamingCtx(
55+
{classNames, className},
56+
{withClassNames: true}
57+
)(
58+
true, "App__Item"
59+
)}/>
60+
61+
expectToRender(
62+
<App className="MyApp" classNames={classNames}/>,
63+
[
64+
'<div class="MyApp hash hash1"></div>',
65+
'<div class="hash2"></div>'
66+
]
67+
)
68+
})
69+
70+
it("not propagate classNames", () => {
71+
const App = ({classNames, className}: ClassNames<true, "App__Item", typeof Component>) =>
72+
//@ts-expect-error Types of property 'classNames' are incompatible Type 'undefined' is not assignable
73+
<Component {
74+
...classNamingCtx({
75+
classNames, className
76+
})(
77+
true, "App__Item"
78+
)}/>
79+
80+
expectToRender(
81+
<App className="MyApp" classNames={classNames}/>,
82+
[
83+
'<div class="MyApp hash class1"></div>',
84+
'<div class="class2"></div>'
85+
]
86+
)
87+
})
88+
89+
it("propagate wrongly to leaf element", () => {
90+
const Component = ({classNames}: ClassNames<"class1">) =>
91+
<div {
92+
...classNamingCtx({classNames}, {withClassNames: true})("class1")
93+
}/>
94+
95+
expectToRender(
96+
<Component classNames={classNames}/>,
97+
'<div class="hash1" classNames=""></div>'
98+
)
99+
})
51100
})

0 commit comments

Comments
 (0)