@@ -4,12 +4,12 @@ import { models as apiModels } from '@cornie-js/api-models';
4
4
import { renderHook , RenderHookResult } from '@testing-library/react' ;
5
5
import { act } from 'react' ;
6
6
7
- import { useGameCards , UseGameCardsResult } from './useGameCards' ;
7
+ import { GameCard , useGameCards , UseGameCardsResult } from './useGameCards' ;
8
8
9
9
describe ( useGameCards . name , ( ) => {
10
10
describe ( 'when called' , ( ) => {
11
11
let cardsFixture : apiModels . CardArrayV1 ;
12
-
12
+ let gameCardFixture : GameCard [ ] ;
13
13
let renderResult : RenderHookResult < UseGameCardsResult , unknown > ;
14
14
15
15
beforeAll ( ( ) => {
@@ -19,16 +19,27 @@ describe(useGameCards.name, () => {
19
19
} ,
20
20
] ;
21
21
22
+ gameCardFixture = [
23
+ {
24
+ card : { kind : 'wildDraw4' } ,
25
+ index : 0 ,
26
+ isSelected : false ,
27
+ } ,
28
+ ] ;
22
29
renderResult = renderHook ( ( ) => useGameCards ( cardsFixture ) ) ;
23
30
} ) ;
24
31
25
32
it ( 'should return expected result' , ( ) => {
26
33
const expected : UseGameCardsResult = {
27
- cards : cardsFixture ,
34
+ cards : gameCardFixture ,
35
+ deleteAllSelectedCard : expect . any ( Function ) as unknown as ( ) => void ,
28
36
hasNext : false ,
29
37
hasPrevious : false ,
30
38
setNext : expect . any ( Function ) as unknown as ( ) => void ,
31
39
setPrevious : expect . any ( Function ) as unknown as ( ) => void ,
40
+ switchCardSelection : expect . any ( Function ) as unknown as (
41
+ index : number ,
42
+ ) => void ,
32
43
} ;
33
44
34
45
expect ( renderResult . result . current ) . toStrictEqual ( expected ) ;
@@ -37,11 +48,25 @@ describe(useGameCards.name, () => {
37
48
38
49
describe ( 'having more than ten cards' , ( ) => {
39
50
let cardsFixture : apiModels . CardArrayV1 ;
51
+ let gameCardFixture : GameCard [ ] ;
40
52
41
53
beforeAll ( ( ) => {
42
54
cardsFixture = new Array < apiModels . CardV1 > ( 11 ) . fill ( {
43
55
kind : 'wildDraw4' ,
44
56
} ) ;
57
+
58
+ gameCardFixture = [
59
+ { card : { kind : 'wildDraw4' } , index : 0 , isSelected : false } ,
60
+ { card : { kind : 'wildDraw4' } , index : 1 , isSelected : false } ,
61
+ { card : { kind : 'wildDraw4' } , index : 2 , isSelected : false } ,
62
+ { card : { kind : 'wildDraw4' } , index : 3 , isSelected : false } ,
63
+ { card : { kind : 'wildDraw4' } , index : 4 , isSelected : false } ,
64
+ { card : { kind : 'wildDraw4' } , index : 5 , isSelected : false } ,
65
+ { card : { kind : 'wildDraw4' } , index : 6 , isSelected : false } ,
66
+ { card : { kind : 'wildDraw4' } , index : 7 , isSelected : false } ,
67
+ { card : { kind : 'wildDraw4' } , index : 8 , isSelected : false } ,
68
+ { card : { kind : 'wildDraw4' } , index : 9 , isSelected : false } ,
69
+ ] ;
45
70
} ) ;
46
71
47
72
describe ( 'when called' , ( ) => {
@@ -53,13 +78,15 @@ describe(useGameCards.name, () => {
53
78
54
79
it ( 'should return expected result' , ( ) => {
55
80
const expected : UseGameCardsResult = {
56
- cards : new Array < apiModels . CardV1 > ( 10 ) . fill ( {
57
- kind : 'wildDraw4' ,
58
- } ) ,
81
+ cards : gameCardFixture ,
82
+ deleteAllSelectedCard : expect . any ( Function ) as unknown as ( ) => void ,
59
83
hasNext : true ,
60
84
hasPrevious : false ,
61
85
setNext : expect . any ( Function ) as unknown as ( ) => void ,
62
86
setPrevious : expect . any ( Function ) as unknown as ( ) => void ,
87
+ switchCardSelection : expect . any ( Function ) as unknown as (
88
+ index : number ,
89
+ ) => void ,
63
90
} ;
64
91
65
92
expect ( renderResult . result . current ) . toStrictEqual ( expected ) ;
@@ -81,13 +108,126 @@ describe(useGameCards.name, () => {
81
108
const expected : UseGameCardsResult = {
82
109
cards : [
83
110
{
84
- kind : 'wildDraw4' ,
111
+ card : { kind : 'wildDraw4' } ,
112
+ index : 10 ,
113
+ isSelected : false ,
85
114
} ,
86
115
] ,
116
+ deleteAllSelectedCard : expect . any ( Function ) as unknown as ( ) => void ,
87
117
hasNext : false ,
88
118
hasPrevious : true ,
89
119
setNext : expect . any ( Function ) as unknown as ( ) => void ,
90
120
setPrevious : expect . any ( Function ) as unknown as ( ) => void ,
121
+ switchCardSelection : expect . any ( Function ) as unknown as (
122
+ index : number ,
123
+ ) => void ,
124
+ } ;
125
+
126
+ expect ( renderResult . result . current ) . toStrictEqual ( expected ) ;
127
+ } ) ;
128
+ } ) ;
129
+
130
+ describe ( 'when called, and switchCardSelection() is called and a deselected card is selected' , ( ) => {
131
+ let renderResult : RenderHookResult < UseGameCardsResult , unknown > ;
132
+
133
+ beforeAll ( ( ) => {
134
+ renderResult = renderHook ( ( ) => useGameCards ( cardsFixture ) ) ;
135
+
136
+ act ( ( ) => {
137
+ renderResult . result . current . switchCardSelection ( 9 ) ;
138
+ } ) ;
139
+
140
+ gameCardFixture = [
141
+ { card : { kind : 'wildDraw4' } , index : 0 , isSelected : false } ,
142
+ { card : { kind : 'wildDraw4' } , index : 1 , isSelected : false } ,
143
+ { card : { kind : 'wildDraw4' } , index : 2 , isSelected : false } ,
144
+ { card : { kind : 'wildDraw4' } , index : 3 , isSelected : false } ,
145
+ { card : { kind : 'wildDraw4' } , index : 4 , isSelected : false } ,
146
+ { card : { kind : 'wildDraw4' } , index : 5 , isSelected : false } ,
147
+ { card : { kind : 'wildDraw4' } , index : 6 , isSelected : false } ,
148
+ { card : { kind : 'wildDraw4' } , index : 7 , isSelected : false } ,
149
+ { card : { kind : 'wildDraw4' } , index : 8 , isSelected : false } ,
150
+ { card : { kind : 'wildDraw4' } , index : 9 , isSelected : true } ,
151
+ ] ;
152
+ } ) ;
153
+
154
+ it ( 'should return expected result' , ( ) => {
155
+ const expected : UseGameCardsResult = {
156
+ cards : gameCardFixture ,
157
+ deleteAllSelectedCard : expect . any ( Function ) as unknown as ( ) => void ,
158
+ hasNext : true ,
159
+ hasPrevious : false ,
160
+ setNext : expect . any ( Function ) as unknown as ( ) => void ,
161
+ setPrevious : expect . any ( Function ) as unknown as ( ) => void ,
162
+ switchCardSelection : expect . any ( Function ) as unknown as (
163
+ index : number ,
164
+ ) => void ,
165
+ } ;
166
+
167
+ expect ( renderResult . result . current ) . toStrictEqual ( expected ) ;
168
+ } ) ;
169
+ } ) ;
170
+
171
+ describe ( 'when called, and switchCardSelection() is called and a selected card is deselected' , ( ) => {
172
+ let renderResult : RenderHookResult < UseGameCardsResult , unknown > ;
173
+ let renderResultInTheMiddle : UseGameCardsResult ;
174
+ let gameCardResultInTheMiddle : GameCard [ ] ;
175
+
176
+ beforeAll ( ( ) => {
177
+ renderResult = renderHook ( ( ) => useGameCards ( cardsFixture ) ) ;
178
+
179
+ act ( ( ) => {
180
+ renderResult . result . current . switchCardSelection ( 9 ) ;
181
+ } ) ;
182
+
183
+ renderResultInTheMiddle = renderResult . result . current ;
184
+ gameCardResultInTheMiddle = renderResult . result . current . cards ;
185
+
186
+ act ( ( ) => {
187
+ renderResult . result . current . switchCardSelection ( 9 ) ;
188
+ } ) ;
189
+
190
+ gameCardFixture = [
191
+ { card : { kind : 'wildDraw4' } , index : 0 , isSelected : false } ,
192
+ { card : { kind : 'wildDraw4' } , index : 1 , isSelected : false } ,
193
+ { card : { kind : 'wildDraw4' } , index : 2 , isSelected : false } ,
194
+ { card : { kind : 'wildDraw4' } , index : 3 , isSelected : false } ,
195
+ { card : { kind : 'wildDraw4' } , index : 4 , isSelected : false } ,
196
+ { card : { kind : 'wildDraw4' } , index : 5 , isSelected : false } ,
197
+ { card : { kind : 'wildDraw4' } , index : 6 , isSelected : false } ,
198
+ { card : { kind : 'wildDraw4' } , index : 7 , isSelected : false } ,
199
+ { card : { kind : 'wildDraw4' } , index : 8 , isSelected : false } ,
200
+ { card : { kind : 'wildDraw4' } , index : 9 , isSelected : false } ,
201
+ ] ;
202
+ } ) ;
203
+
204
+ it ( 'should return deselected cards but one of them selected' , ( ) => {
205
+ const expected : UseGameCardsResult = {
206
+ cards : gameCardResultInTheMiddle ,
207
+ deleteAllSelectedCard : expect . any ( Function ) as unknown as ( ) => void ,
208
+ hasNext : true ,
209
+ hasPrevious : false ,
210
+ setNext : expect . any ( Function ) as unknown as ( ) => void ,
211
+ setPrevious : expect . any ( Function ) as unknown as ( ) => void ,
212
+ switchCardSelection : expect . any ( Function ) as unknown as (
213
+ index : number ,
214
+ ) => void ,
215
+ } ;
216
+
217
+ expect ( renderResultInTheMiddle ) . toStrictEqual ( expected ) ;
218
+ } ) ;
219
+
220
+ it ( 'should return all deselected cards' , ( ) => {
221
+ const expected : UseGameCardsResult = {
222
+ cards : gameCardFixture ,
223
+ deleteAllSelectedCard : expect . any ( Function ) as unknown as ( ) => void ,
224
+ hasNext : true ,
225
+ hasPrevious : false ,
226
+ setNext : expect . any ( Function ) as unknown as ( ) => void ,
227
+ setPrevious : expect . any ( Function ) as unknown as ( ) => void ,
228
+ switchCardSelection : expect . any ( Function ) as unknown as (
229
+ index : number ,
230
+ ) => void ,
91
231
} ;
92
232
93
233
expect ( renderResult . result . current ) . toStrictEqual ( expected ) ;
0 commit comments