@@ -10,45 +10,104 @@ const mutateComponent = (component: React.ReactNode, newProps: Object) => {
10
10
11
11
export const commonPropsTests = ( name : string , component : React . ReactNode , expectedStyle : Partial < CSSStyleDeclaration > ) => {
12
12
test ( `${ name } default has correct styles` , async ( ) => {
13
+ // arrange, act
13
14
const { container } = render ( < ViewPort > { mutateComponent ( component , { id : "test" } ) } </ ViewPort > ) ;
15
+
16
+ // assert
14
17
const sut = container . querySelector ( "#test" ) ! ;
15
18
const style = window . getComputedStyle ( sut ) ;
16
-
17
19
expect ( style . display ) . toBe ( "block" ) ;
18
20
expect ( sut . nodeName ) . toBe ( "DIV" ) ;
19
-
20
21
Object . keys ( expectedStyle ) . forEach ( ( k ) => {
21
22
expect ( style [ k ] , `Property ${ k } ` ) . toBe ( expectedStyle [ k ] ) ;
22
23
} ) ;
23
24
} ) ;
24
25
25
26
test ( `${ name } with class applied` , async ( ) => {
27
+ // arrange, act
26
28
const { container } = render ( < ViewPort > { mutateComponent ( component , { id : "test" , className : "custom-class" } ) } </ ViewPort > ) ;
27
- const sut = container . querySelector ( "#test" ) ;
28
29
30
+ // assert
31
+ const sut = container . querySelector ( "#test" ) ;
29
32
expect ( sut ! . className ) . toBe ( "spaces-space custom-class" ) ;
30
33
} ) ;
31
34
35
+ test ( `${ name } with class change applied` , async ( ) => {
36
+ // arrange
37
+ const { container, rerender } = render ( < ViewPort > { mutateComponent ( component , { id : "test" , className : "custom-class" } ) } </ ViewPort > ) ;
38
+ const sut = container . querySelector ( "#test" ) ;
39
+
40
+ // act
41
+ rerender ( < ViewPort > { mutateComponent ( component , { id : "test" , className : "different-custom-class" } ) } </ ViewPort > ) ;
42
+
43
+ //assert
44
+ expect ( sut ! . className ) . toBe ( "spaces-space different-custom-class" ) ;
45
+ } ) ;
46
+
32
47
test ( `${ name } with style applied` , async ( ) => {
48
+ // arrange, act
33
49
const { container } = render ( < ViewPort > { mutateComponent ( component , { id : "test" , style : { backgroundColor : "red" } } ) } </ ViewPort > ) ;
34
50
const sut = container . querySelector ( "#test" ) ;
35
- const style = window . getComputedStyle ( sut ! ) ;
36
51
52
+ // assert
53
+ const style = window . getComputedStyle ( sut ! ) ;
37
54
expect ( style . backgroundColor ) . toBe ( "red" ) ;
38
55
} ) ;
39
56
57
+ test ( `${ name } with style change applied` , async ( ) => {
58
+ // arrange
59
+ const { container, rerender } = render ( < ViewPort > { mutateComponent ( component , { id : "test" , style : { backgroundColor : "red" } } ) } </ ViewPort > ) ;
60
+ const sut = container . querySelector ( "#test" ) ;
61
+
62
+ // act
63
+ rerender ( < ViewPort > { mutateComponent ( component , { id : "test" , style : { backgroundColor : "green" } } ) } </ ViewPort > ) ;
64
+
65
+ // assert
66
+ const style = window . getComputedStyle ( sut ! ) ;
67
+ expect ( style . backgroundColor ) . toBe ( "green" ) ;
68
+ } ) ;
69
+
40
70
test ( `${ name } scrollable applied` , async ( ) => {
71
+ // arrange, act
41
72
const { container } = render ( < ViewPort > { mutateComponent ( component , { id : "test" , scrollable : true } ) } </ ViewPort > ) ;
42
73
const sut = container . querySelector ( "#test" ) ;
74
+
75
+ // assert
43
76
const style = window . getComputedStyle ( sut ! ) ;
77
+ expect ( style . overflow ) . toBe ( "auto" ) ;
78
+ } ) ;
79
+
80
+ test ( `${ name } scrollable change applied` , async ( ) => {
81
+ // arrange
82
+ const { container, rerender } = render ( < ViewPort > { mutateComponent ( component , { id : "test" , scrollable : false } ) } </ ViewPort > ) ;
83
+ const sut = container . querySelector ( "#test" ) ;
44
84
85
+ // act
86
+ rerender ( < ViewPort > { mutateComponent ( component , { id : "test" , scrollable : true } ) } </ ViewPort > ) ;
87
+
88
+ // assert
89
+ const style = window . getComputedStyle ( sut ! ) ;
45
90
expect ( style . overflow ) . toBe ( "auto" ) ;
46
91
} ) ;
47
92
48
93
test ( `${ name } as applied` , async ( ) => {
94
+ // arrange, act
49
95
const { container } = render ( < ViewPort > { mutateComponent ( component , { id : "test" , as : "main" } ) } </ ViewPort > ) ;
50
96
const sut = container . querySelector ( "#test" ) ! ;
51
97
98
+ // assert
99
+ expect ( sut . nodeName ) . toBe ( "MAIN" ) ;
100
+ } ) ;
101
+
102
+ test ( `${ name } as change applied` , async ( ) => {
103
+ // arrange
104
+ const { container, rerender } = render ( < ViewPort > { mutateComponent ( component , { id : "test" } ) } </ ViewPort > ) ;
105
+
106
+ // act
107
+ rerender ( < ViewPort > { mutateComponent ( component , { id : "test" , as : "main" } ) } </ ViewPort > ) ;
108
+
109
+ // assert
110
+ const sut = container . querySelector ( "#test" ) ! ;
52
111
expect ( sut . nodeName ) . toBe ( "MAIN" ) ;
53
112
} ) ;
54
113
} ;
@@ -61,41 +120,58 @@ export const commonAnchorTests = (
61
120
oppositeEdge : ( style : CSSStyleDeclaration ) => string | null ,
62
121
) => {
63
122
test ( `${ name } stacked has correct styles` , async ( ) => {
123
+ // arrange, act
64
124
const { container } = render (
65
125
< ViewPort >
66
126
{ mutateComponent ( component , { id : "test" , size : 50 , order : 0 } ) }
67
127
{ mutateComponent ( component , { id : "test1" , size : 100 , order : 1 } ) }
68
128
</ ViewPort > ,
69
129
) ;
70
-
71
130
const sut = container . querySelector ( "#test" ) ! ;
131
+ const sut1 = container . querySelector ( "#test1" ) ! ;
132
+
133
+ // assert
72
134
const style = window . getComputedStyle ( sut ) ;
73
135
expect ( size ( style ) ) . toBe ( "50px" ) ;
74
136
expect ( edge ( style ) ) . toBe ( "0px" ) ;
75
137
expect ( oppositeEdge ( style ) ) . toBe ( "" ) ;
76
138
77
- const sut1 = container . querySelector ( "#test1" ) ! ;
78
139
const style1 = window . getComputedStyle ( sut1 ) ;
79
140
expect ( size ( style1 ) ) . toBe ( "100px" ) ;
80
141
expect ( edge ( style1 ) ) . toBe ( "calc(0px + 50px)" ) ;
81
142
expect ( oppositeEdge ( style1 ) ) . toBe ( "" ) ;
82
143
} ) ;
83
144
145
+ test ( `${ name } size changed has correct styles` , async ( ) => {
146
+ // arrange
147
+ const { container, rerender } = render ( < ViewPort > { mutateComponent ( component , { id : "test" , size : 50 } ) } </ ViewPort > ) ;
148
+ const sut = container . querySelector ( "#test" ) ! ;
149
+
150
+ // act
151
+ rerender ( < ViewPort > { mutateComponent ( component , { id : "test" , size : 100 } ) } </ ViewPort > ) ;
152
+
153
+ // assert
154
+ const style = window . getComputedStyle ( sut ) ;
155
+ expect ( size ( style ) ) . toBe ( "100px" ) ;
156
+ } ) ;
157
+
84
158
test ( `${ name } stacked DOM reversed has correct styles` , async ( ) => {
159
+ // arrange, act
85
160
const { container } = render (
86
161
< ViewPort >
87
162
{ mutateComponent ( component , { id : "test1" , size : 100 , order : 1 } ) }
88
163
{ mutateComponent ( component , { id : "test" , size : 50 , order : 0 } ) }
89
164
</ ViewPort > ,
90
165
) ;
91
-
92
166
const sut = container . querySelector ( "#test" ) ! ;
167
+ const sut1 = container . querySelector ( "#test1" ) ! ;
168
+
169
+ // assert
93
170
const style = window . getComputedStyle ( sut ) ;
94
171
expect ( size ( style ) ) . toBe ( "50px" ) ;
95
172
expect ( edge ( style ) ) . toBe ( "0px" ) ;
96
173
expect ( oppositeEdge ( style ) ) . toBe ( "" ) ;
97
174
98
- const sut1 = container . querySelector ( "#test1" ) ! ;
99
175
const style1 = window . getComputedStyle ( sut1 ) ;
100
176
expect ( size ( style1 ) ) . toBe ( "100px" ) ;
101
177
expect ( edge ( style1 ) ) . toBe ( "calc(0px + 50px)" ) ;
@@ -113,10 +189,12 @@ export const commonResizableTests = (
113
189
negate : boolean ,
114
190
) => {
115
191
test ( `${ name } after resize has correct styles` , async ( ) => {
192
+ // arrange
116
193
const { container } = render ( < ViewPort > { mutateComponent ( component , { id : "test" } ) } </ ViewPort > ) ;
117
194
const sut = container . querySelector ( "#test" ) ! ;
118
195
const resizeHandle = container . querySelector ( "#test .spaces-resize-handle" ) ! ;
119
196
197
+ // act
120
198
drag (
121
199
resizeHandle ,
122
200
sut ,
@@ -126,15 +204,18 @@ export const commonResizableTests = (
126
204
horizontal ? 0 : negate ? - 100 : 100 ,
127
205
) ;
128
206
207
+ // assert
129
208
const style = window . getComputedStyle ( sut ) ;
130
209
expect ( size ( style ) ) . toBe ( "calc(50px + 100px)" ) ;
131
210
} ) ;
132
211
133
212
test ( `${ name } subsequent resize has correct styles` , async ( ) => {
213
+ // arrange
134
214
const { container } = render ( < ViewPort > { mutateComponent ( component , { id : "test" } ) } </ ViewPort > ) ;
135
215
const sut = container . querySelector ( "#test" ) ! ;
136
216
const resizeHandle = container . querySelector ( "#test .spaces-resize-handle" ) ! ;
137
217
218
+ // act
138
219
drag (
139
220
resizeHandle ,
140
221
sut ,
@@ -152,15 +233,18 @@ export const commonResizableTests = (
152
233
horizontal ? 0 : negate ? 100 : - 100 ,
153
234
) ;
154
235
236
+ // assert
155
237
const style = window . getComputedStyle ( sut ) ;
156
238
expect ( size ( style ) ) . toBe ( "50px" ) ;
157
239
} ) ;
158
240
159
241
test ( `${ name } resize then props size change has correct styles` , async ( ) => {
242
+ // arrange
160
243
const { container, rerender } = render ( < ViewPort > { mutateComponent ( component , { id : "test" , size : 50 } ) } </ ViewPort > ) ;
161
244
const sut = container . querySelector ( "#test" ) ! ;
162
245
const resizeHandle = container . querySelector ( "#test .spaces-resize-handle" ) ! ;
163
246
247
+ // act
164
248
drag (
165
249
resizeHandle ,
166
250
sut ,
@@ -172,6 +256,7 @@ export const commonResizableTests = (
172
256
173
257
rerender ( < ViewPort > { mutateComponent ( component , { id : "test" , size : 150 } ) } </ ViewPort > ) ;
174
258
259
+ // assert
175
260
const style = window . getComputedStyle ( sut ) ;
176
261
expect ( size ( style ) ) . toBe ( "150px" ) ;
177
262
} ) ;
0 commit comments