@@ -5,7 +5,7 @@ import { render, click, settled, waitFor } from '@ember/test-helpers';
5
5
import { DEFAULT_QUEUE , FileState } from ' ember-file-upload' ;
6
6
import type { UploadFile } from ' ember-file-upload' ;
7
7
import { selectFiles } from ' ember-file-upload/test-support' ;
8
- import { uploadHandler } from ' ember-file-upload' ;
8
+ import { type FileQueueService , uploadHandler } from ' ember-file-upload' ;
9
9
import { later } from ' @ember/runloop' ;
10
10
import fileQueue from ' ember-file-upload/helpers/file-queue' ;
11
11
import { on } from ' @ember/modifier' ;
@@ -20,6 +20,31 @@ module('Integration | Helper | file-queue', function (hooks) {
20
20
setupRenderingTest (hooks );
21
21
setupMirage (hooks );
22
22
23
+ test (' service can be used before helper' , async function (assert ) {
24
+ const fileQueueService = this .owner .lookup (
25
+ ' service:file-queue' ,
26
+ ) as FileQueueService ;
27
+
28
+ await render (
29
+ <template >
30
+ <ul >
31
+ {{#each fileQueueService.files as | file | }}
32
+ <li >
33
+ {{file.name }}
34
+ </li >
35
+ {{/each }}
36
+ </ul >
37
+
38
+ {{#let ( fileQueue ) as | queue | }}
39
+ <label >
40
+ <input type =' file' {{queue.selectFile }} hidden />
41
+ Select File
42
+ </label >
43
+ {{/let }}
44
+ </template >,
45
+ );
46
+ });
47
+
23
48
test (' filter is triggered when selecting files' , async function (assert ) {
24
49
const filter = (file : File ) => {
25
50
assert .step (` filter: ${file .name } ` );
@@ -274,4 +299,63 @@ module('Integration | Helper | file-queue', function (hooks) {
274
299
await settled ();
275
300
assert .dom (' [data-test-file]' ).doesNotExist (' queue was flushed' );
276
301
});
302
+
303
+ // Service before helper issue ref: https://github.com/adopted-ember-addons/ember-file-upload/issues/1085
304
+ test (' service can be used before helper with DEFUALT_QUEUE' , async function (assert ) {
305
+ const fileQueueService = this .owner .lookup (
306
+ ' service:file-queue' ,
307
+ ) as FileQueueService ;
308
+
309
+ await render (
310
+ <template >
311
+ {{fileQueue }}
312
+
313
+ <ul >
314
+ {{#each fileQueueService.files as | file | }}
315
+ <li >
316
+ {{file.name }}
317
+ </li >
318
+ {{/each }}
319
+ </ul >
320
+
321
+ {{#let ( fileQueue ) as | queue | }}
322
+ <label >
323
+ <input type =' file' {{queue.selectFile }} hidden />
324
+ Select File
325
+ </label >
326
+ {{/let }}
327
+ </template >,
328
+ );
329
+
330
+ assert .dom (' label' ).exists (' regression would throw during rendering' );
331
+ });
332
+
333
+ test (' service can be used before helper with named queue, provided FileQueueService.create is called first' , async function (assert ) {
334
+ const fileQueueService = this .owner .lookup (
335
+ ' service:file-queue' ,
336
+ ) as FileQueueService ;
337
+ const customName = ' uploads' ;
338
+ fileQueueService .create (customName );
339
+
340
+ await render (
341
+ <template >
342
+ <ul >
343
+ {{#each fileQueueService.files as | file | }}
344
+ <li >
345
+ {{file.name }}
346
+ </li >
347
+ {{/each }}
348
+ </ul >
349
+
350
+ {{#let ( fileQueue name =customName ) as | queue | }}
351
+ <label >
352
+ <input type =' file' {{queue.selectFile }} hidden />
353
+ Select File
354
+ </label >
355
+ {{/let }}
356
+ </template >,
357
+ );
358
+
359
+ assert .dom (' label' ).exists (' regression would throw during rendering' );
360
+ });
277
361
});
0 commit comments