@@ -219,10 +219,8 @@ describe('FilesController', () => {
219
219
done ( ) ;
220
220
} ) ;
221
221
222
- it ( 'should return valid filename or url from createFile response when provided ' , async ( ) => {
222
+ it ( 'should return filename and url when adapter returns both ' , async ( ) => {
223
223
const config = Config . get ( Parse . applicationId ) ;
224
-
225
- // Test case 1: adapter returns new filename and url
226
224
const adapterWithReturn = { ...mockAdapter } ;
227
225
adapterWithReturn . createFile = ( ) => {
228
226
return Promise . resolve ( {
@@ -234,17 +232,20 @@ describe('FilesController', () => {
234
232
return Promise . resolve ( 'http://default.url/file.txt' ) ;
235
233
} ;
236
234
const controllerWithReturn = new FilesController ( adapterWithReturn , null , { preserveFileName : true } ) ;
237
- // preserveFileName is true to make filename behaviors predictable
238
- const result1 = await controllerWithReturn . createFile (
235
+
236
+ const result = await controllerWithReturn . createFile (
239
237
config ,
240
238
'originalFile.txt' ,
241
239
'data' ,
242
240
'text/plain'
243
241
) ;
244
- expect ( result1 . name ) . toBe ( 'newFilename.txt' ) ;
245
- expect ( result1 . url ) . toBe ( 'http://new.url/newFilename.txt' ) ;
246
242
247
- // Test case 2: adapter returns nothing, falling back to default behavior
243
+ expect ( result . name ) . toBe ( 'newFilename.txt' ) ;
244
+ expect ( result . url ) . toBe ( 'http://new.url/newFilename.txt' ) ;
245
+ } ) ;
246
+
247
+ it ( 'should use original filename and generate url when adapter returns nothing' , async ( ) => {
248
+ const config = Config . get ( Parse . applicationId ) ;
248
249
const adapterWithoutReturn = { ...mockAdapter } ;
249
250
adapterWithoutReturn . createFile = ( ) => {
250
251
return Promise . resolve ( ) ;
@@ -254,20 +255,20 @@ describe('FilesController', () => {
254
255
} ;
255
256
256
257
const controllerWithoutReturn = new FilesController ( adapterWithoutReturn , null , { preserveFileName : true } ) ;
257
- const result2 = await controllerWithoutReturn . createFile (
258
+ const result = await controllerWithoutReturn . createFile (
258
259
config ,
259
260
'originalFile.txt' ,
260
261
'data' ,
261
262
'text/plain' ,
262
263
{ }
263
264
) ;
264
-
265
- expect ( result2 . name ) . toBe ( 'originalFile.txt' ) ;
266
- expect ( result2 . url ) . toBe ( 'http://default.url/originalFile.txt' ) ;
267
265
268
- // Test case 3: adapter returns partial info (only url)
269
- // This is a valid scenario, as the adapter may return a modified filename
270
- // but may result in a mismatch between the filename and the resource URL
266
+ expect ( result . name ) . toBe ( 'originalFile.txt' ) ;
267
+ expect ( result . url ) . toBe ( 'http://default.url/originalFile.txt' ) ;
268
+ } ) ;
269
+
270
+ it ( 'should use original filename when adapter returns only url' , async ( ) => {
271
+ const config = Config . get ( Parse . applicationId ) ;
271
272
const adapterWithOnlyURL = { ...mockAdapter } ;
272
273
adapterWithOnlyURL . createFile = ( ) => {
273
274
return Promise . resolve ( {
@@ -277,20 +278,22 @@ describe('FilesController', () => {
277
278
adapterWithOnlyURL . getFileLocation = ( ) => {
278
279
return Promise . resolve ( 'http://default.url/file.txt' ) ;
279
280
} ;
280
-
281
+
281
282
const controllerWithPartial = new FilesController ( adapterWithOnlyURL , null , { preserveFileName : true } ) ;
282
- const result3 = await controllerWithPartial . createFile (
283
+ const result = await controllerWithPartial . createFile (
283
284
config ,
284
285
'originalFile.txt' ,
285
286
'data' ,
286
287
'text/plain' ,
287
288
{ }
288
289
) ;
289
-
290
- expect ( result3 . name ) . toBe ( 'originalFile.txt' ) ;
291
- expect ( result3 . url ) . toBe ( 'http://new.url/partialFile.txt' ) ; // Technically, the resource does not need to match the filename
292
290
293
- // Test case 4: adapter returns only filename
291
+ expect ( result . name ) . toBe ( 'originalFile.txt' ) ;
292
+ expect ( result . url ) . toBe ( 'http://new.url/partialFile.txt' ) ;
293
+ } ) ;
294
+
295
+ it ( 'should use adapter filename and generate url when adapter returns only filename' , async ( ) => {
296
+ const config = Config . get ( Parse . applicationId ) ;
294
297
const adapterWithOnlyFilename = { ...mockAdapter } ;
295
298
adapterWithOnlyFilename . createFile = ( ) => {
296
299
return Promise . resolve ( {
@@ -300,17 +303,17 @@ describe('FilesController', () => {
300
303
adapterWithOnlyFilename . getFileLocation = ( config , filename ) => {
301
304
return Promise . resolve ( `http://default.url/${ filename } ` ) ;
302
305
} ;
303
-
306
+
304
307
const controllerWithOnlyFilename = new FilesController ( adapterWithOnlyFilename , null , { preserveFileName : true } ) ;
305
- const result4 = await controllerWithOnlyFilename . createFile (
308
+ const result = await controllerWithOnlyFilename . createFile (
306
309
config ,
307
310
'originalFile.txt' ,
308
311
'data' ,
309
312
'text/plain' ,
310
313
{ }
311
314
) ;
312
-
313
- expect ( result4 . name ) . toBe ( 'newname.txt' ) ;
314
- expect ( result4 . url ) . toBe ( 'http://default.url/newname.txt' ) ;
315
+
316
+ expect ( result . name ) . toBe ( 'newname.txt' ) ;
317
+ expect ( result . url ) . toBe ( 'http://default.url/newname.txt' ) ;
315
318
} ) ;
316
319
} ) ;
0 commit comments