@@ -3,6 +3,8 @@ import { useAvailableUploads } from './useAvailableUploads';
3
3
import { renderHook } from '@testing-library/react' ;
4
4
5
5
describe ( 'useAvailableUploads' , ( ) => {
6
+ const setUploadError = vi . fn ( ) ;
7
+
6
8
beforeEach ( ( ) => {
7
9
vi . useFakeTimers ( ) ;
8
10
} ) ;
@@ -13,30 +15,24 @@ describe('useAvailableUploads', () => {
13
15
vi . useRealTimers ( ) ;
14
16
} ) ;
15
17
16
- it ( 'should return a function that returns true when imageIDs length is less than maximumFileUploads' , ( ) => {
17
- const setUploadingState = vi . fn ( ) ;
18
- const resetUploadState = vi . fn ( ) ;
19
-
18
+ it ( 'no error when imageIDs length is less than maximumFileUploads' , ( ) => {
20
19
const { result } = renderHook ( ( ) =>
21
20
useAvailableUploads ( {
22
21
uploadedFiles : [
23
22
{ id : 'image1' , fileName : 'mock 1' , fileType : 'image/png' } ,
24
23
{ id : 'image2' , fileName : 'mock2' , fileType : 'image/png' } ,
25
24
] ,
26
25
maximumFileUploads : 4 ,
27
- setUploadingState,
28
- resetUploadState,
26
+ setUploadError,
29
27
} ) ,
30
28
) ;
31
29
32
30
expect ( result . current ( ) ) . toBe ( true ) ;
33
- expect ( setUploadingState ) . not . toHaveBeenCalled ( ) ;
34
- expect ( resetUploadState ) . not . toHaveBeenCalled ( ) ;
31
+ expect ( setUploadError ) . not . toHaveBeenCalled ( ) ;
35
32
} ) ;
36
33
37
- it ( 'should return a function that returns false and sets error state when imageIDs length equals maximumFileUploads' , ( ) => {
38
- const setUploadingState = vi . fn ( ) ;
39
- const resetUploadState = vi . fn ( ) ;
34
+ it ( 'sets error state when imageIDs length equals maximumFileUploads' , ( ) => {
35
+ const setUploadError = vi . fn ( ) ;
40
36
41
37
const { result } = renderHook ( ( ) =>
42
38
useAvailableUploads ( {
@@ -47,23 +43,15 @@ describe('useAvailableUploads', () => {
47
43
{ id : 'image4' , fileName : 'mock 4' , fileType : 'image/png' } ,
48
44
] ,
49
45
maximumFileUploads : 4 ,
50
- setUploadingState,
51
- resetUploadState,
46
+ setUploadError,
52
47
} ) ,
53
48
) ;
54
49
55
50
expect ( result . current ( ) ) . toBe ( false ) ;
56
- expect ( setUploadingState ) . toHaveBeenCalledWith ( {
57
- isActive : true ,
58
- isSupportedFile : false ,
59
- errorMessage : 'Maximum 4 files allowed!' ,
60
- } ) ;
51
+ expect ( setUploadError ) . toHaveBeenCalledWith ( 'Maximum 4 files allowed!' ) ;
61
52
} ) ;
62
53
63
- it ( 'should return a function that returns false and sets error state when imageIDs length exceeds maximumFileUploads' , ( ) => {
64
- const setUploadingState = vi . fn ( ) ;
65
- const resetUploadState = vi . fn ( ) ;
66
-
54
+ it ( 'sets error state when imageIDs length exceeds maximumFileUploads' , ( ) => {
67
55
const { result } = renderHook ( ( ) =>
68
56
useAvailableUploads ( {
69
57
uploadedFiles : [
@@ -74,50 +62,15 @@ describe('useAvailableUploads', () => {
74
62
{ id : 'image5' , fileName : 'mock 5' , fileType : 'image/png' } ,
75
63
] ,
76
64
maximumFileUploads : 4 ,
77
- setUploadingState,
78
- resetUploadState,
65
+ setUploadError,
79
66
} ) ,
80
67
) ;
81
68
82
69
expect ( result . current ( ) ) . toBe ( false ) ;
83
- expect ( setUploadingState ) . toHaveBeenCalledWith ( {
84
- isActive : true ,
85
- isSupportedFile : false ,
86
- errorMessage : 'Maximum 4 files allowed!' ,
87
- } ) ;
88
- } ) ;
89
-
90
- it ( 'should call resetUploadState after timeout when exceeding maximumFileUploads' , ( ) => {
91
- const setUploadingState = vi . fn ( ) ;
92
- const resetUploadState = vi . fn ( ) ;
93
-
94
- const { result } = renderHook ( ( ) =>
95
- useAvailableUploads ( {
96
- uploadedFiles : [
97
- { id : 'image1' , fileName : 'mock 1' , fileType : 'image/png' } ,
98
- { id : 'image2' , fileName : 'mock 2' , fileType : 'image/png' } ,
99
- { id : 'image3' , fileName : 'mock 3' , fileType : 'image/png' } ,
100
- { id : 'image4' , fileName : 'mock 4' , fileType : 'image/png' } ,
101
- { id : 'image5' , fileName : 'mock 5' , fileType : 'image/png' } ,
102
- ] ,
103
- maximumFileUploads : 4 ,
104
- setUploadingState,
105
- resetUploadState,
106
- } ) ,
107
- ) ;
108
-
109
- result . current ( ) ;
110
-
111
- expect ( resetUploadState ) . not . toHaveBeenCalled ( ) ;
112
-
113
- vi . advanceTimersByTime ( 2000 ) ;
114
-
115
- expect ( resetUploadState ) . toHaveBeenCalledTimes ( 1 ) ;
70
+ expect ( setUploadError ) . toHaveBeenCalledWith ( 'Maximum 4 files allowed!' ) ;
116
71
} ) ;
117
72
118
73
it ( 'should update error message based on maximumFileUploads value' , ( ) => {
119
- const setUploadingState = vi . fn ( ) ;
120
- const resetUploadState = vi . fn ( ) ;
121
74
const customMaxUploads = 2 ;
122
75
123
76
const { result } = renderHook ( ( ) =>
@@ -127,36 +80,28 @@ describe('useAvailableUploads', () => {
127
80
{ id : 'image2' , fileName : 'mock 2' , fileType : 'image/png' } ,
128
81
] ,
129
82
maximumFileUploads : customMaxUploads ,
130
- setUploadingState,
131
- resetUploadState,
83
+ setUploadError,
132
84
} ) ,
133
85
) ;
134
86
135
87
result . current ( ) ;
136
88
137
- expect ( setUploadingState ) . toHaveBeenCalledWith ( {
138
- isActive : true ,
139
- isSupportedFile : false ,
140
- errorMessage : `Maximum ${ customMaxUploads } files allowed!` ,
141
- } ) ;
89
+ expect ( setUploadError ) . toHaveBeenCalledWith (
90
+ `Maximum ${ customMaxUploads } files allowed!` ,
91
+ ) ;
142
92
} ) ;
143
93
144
94
it ( 'should handle different input scenarios correctly' , ( ) => {
145
- const setUploadingState = vi . fn ( ) ;
146
- const resetUploadState = vi . fn ( ) ;
147
-
148
95
let { result } = renderHook ( ( ) =>
149
96
useAvailableUploads ( {
150
97
uploadedFiles : [ ] ,
151
98
maximumFileUploads : 4 ,
152
- setUploadingState,
153
- resetUploadState,
99
+ setUploadError,
154
100
} ) ,
155
101
) ;
156
102
expect ( result . current ( ) ) . toBe ( true ) ;
157
103
158
- setUploadingState . mockClear ( ) ;
159
- resetUploadState . mockClear ( ) ;
104
+ setUploadError . mockClear ( ) ;
160
105
161
106
result = renderHook ( ( ) =>
162
107
useAvailableUploads ( {
@@ -167,25 +112,22 @@ describe('useAvailableUploads', () => {
167
112
{ id : 'image4' , fileName : 'mock 4' , fileType : 'image/png' } ,
168
113
] ,
169
114
maximumFileUploads : 4 ,
170
- setUploadingState,
171
- resetUploadState,
115
+ setUploadError,
172
116
} ) ,
173
117
) . result ;
174
118
expect ( result . current ( ) ) . toBe ( false ) ;
175
- expect ( setUploadingState ) . toHaveBeenCalled ( ) ;
119
+ expect ( setUploadError ) . toHaveBeenCalled ( ) ;
176
120
177
- setUploadingState . mockClear ( ) ;
178
- resetUploadState . mockClear ( ) ;
121
+ setUploadError . mockClear ( ) ;
179
122
180
123
result = renderHook ( ( ) =>
181
124
useAvailableUploads ( {
182
125
uploadedFiles : [ ] ,
183
126
maximumFileUploads : 0 ,
184
- setUploadingState,
185
- resetUploadState,
127
+ setUploadError,
186
128
} ) ,
187
129
) . result ;
188
130
expect ( result . current ( ) ) . toBe ( false ) ;
189
- expect ( setUploadingState ) . toHaveBeenCalled ( ) ;
131
+ expect ( setUploadError ) . toHaveBeenCalled ( ) ;
190
132
} ) ;
191
133
} ) ;
0 commit comments