@pixwel/pixwel-sdk 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/.babelrc +2 -1
  2. package/README.md +60 -0
  3. package/coverage/clover.xml +581 -430
  4. package/coverage/coverage-final.json +15 -9
  5. package/coverage/lcov-report/Ass.js.html +212 -212
  6. package/coverage/lcov-report/Asset.js.html +27 -27
  7. package/coverage/lcov-report/AssetType.js.html +98 -0
  8. package/coverage/lcov-report/Encode.js.html +98 -0
  9. package/coverage/lcov-report/File.js.html +98 -0
  10. package/coverage/lcov-report/Filename.js.html +9 -726
  11. package/coverage/lcov-report/Ingest.js.html +1239 -279
  12. package/coverage/lcov-report/IngestFile.js.html +5 -5
  13. package/coverage/lcov-report/Model.js.html +821 -0
  14. package/coverage/lcov-report/Order.js.html +25 -25
  15. package/coverage/lcov-report/Srt.js.html +102 -102
  16. package/coverage/lcov-report/Sub.js.html +43 -43
  17. package/coverage/lcov-report/Tag.js.html +98 -0
  18. package/coverage/lcov-report/TimeFormat.js.html +63 -63
  19. package/coverage/lcov-report/fileType.js.html +188 -0
  20. package/coverage/lcov-report/index.html +164 -86
  21. package/coverage/lcov.info +1159 -846
  22. package/dist/index.js +74 -22
  23. package/dist/src/Asset.js +10 -5
  24. package/dist/src/AssetType.js +54 -0
  25. package/dist/src/Encode.js +54 -0
  26. package/dist/src/File.js +54 -0
  27. package/dist/src/Filename.js +7 -228
  28. package/dist/src/Ingest.js +365 -33
  29. package/dist/src/IngestFile.js +6 -2
  30. package/dist/src/Model.js +569 -0
  31. package/dist/src/Order.js +20 -9
  32. package/dist/src/Srt.js +5 -1
  33. package/dist/src/Tag.js +54 -0
  34. package/dist/src/fileType.js +43 -0
  35. package/index.js +14 -0
  36. package/package.json +9 -3
  37. package/src/AssetType.js +11 -0
  38. package/src/Encode.js +11 -0
  39. package/src/File.js +11 -0
  40. package/src/Filename.js +0 -239
  41. package/src/Ingest.js +347 -27
  42. package/src/Model.js +252 -0
  43. package/src/Tag.js +11 -0
  44. package/src/fileType.js +41 -0
  45. package/test/Filename.spec.js +3 -707
  46. package/test/Ingest.spec.js +1107 -152
  47. package/test/Model.spec.js +328 -0
@@ -8,12 +8,930 @@ import mxfMock from "./mocks/mediainfo.mxf.mock";
8
8
  import mocks from "./mocks/mocks";
9
9
 
10
10
  describe("Ingest", () => {
11
+ describe("renderPath", () => {
12
+ it("should render filename path", () => {
13
+ let data = {
14
+ asset: {
15
+ type: "social",
16
+ project: {
17
+ slug: "bumblebee",
18
+ studio: {
19
+ slug: "paramount"
20
+ }
21
+ }
22
+ }
23
+ };
24
+ let ingest = new Ingest(data);
25
+ let res = ingest.renderPath();
26
+ expect(res).toBe("paramount/bumblebee/social");
27
+ });
28
+ });
29
+ describe("renderFilename", () => {
30
+ it("renders language only for dual-language codes", function() {
31
+ let data = {
32
+ asset: {
33
+ name: "Test Asset A",
34
+ slug: "test-asset-a",
35
+ type: "trailer.intl",
36
+ mediaType: "video",
37
+ project: {
38
+ filePrefix: "TESTPROJECT"
39
+ }
40
+ },
41
+ selected: {
42
+ download: {
43
+ language: "PFR-FLE",
44
+ country: "US",
45
+ tags: {
46
+ Text: "txtd",
47
+ Extra: ["COMING-SOON", "HOJE"],
48
+ Codec: "PRORES",
49
+ Resolution: "640x480",
50
+ Framerate: "23.98",
51
+ "Frame Mode": "progressive"
52
+ }
53
+ }
54
+ }
55
+ };
56
+ let ingest = new Ingest(data);
57
+ let allTags = [];
58
+ let allTypes = [];
59
+ let name = ingest.renderFilename({ allTags, allTypes });
60
+ expect(name).toBe(
61
+ "TESTPROJECT_ITR-TEST-ASSET-A_PFR-FLE_TXTD_COMING-SOON_HOJE_PRORES_480p2398"
62
+ );
63
+ });
64
+ it("throws exception if missing Framerate", function() {
65
+ let data = {
66
+ asset: {
67
+ name: "Test Asset A",
68
+ slug: "test-asset-a",
69
+ type: "trailer.intl",
70
+ mediaType: "video",
71
+ project: {
72
+ filePrefix: "TESTPROJECT"
73
+ }
74
+ },
75
+ selected: {
76
+ download: {
77
+ language: "ENG",
78
+ tags: {
79
+ Codec: "prores",
80
+ Text: "txtd",
81
+ Resolution: "640x480",
82
+ // Framerate: '23.98',
83
+ "Frame Mode": "progressive"
84
+ }
85
+ }
86
+ }
87
+ };
88
+ let ingest = new Ingest(data);
89
+ let allTags = [];
90
+ let allTypes = [];
91
+ expect(() => {
92
+ let name = ingest.renderFilename({ allTags, allTypes });
93
+ }).toThrow("missing options.tags.Framerate");
94
+ });
95
+ it("displays resolution for images", function() {
96
+ let data = {
97
+ asset: {
98
+ name: "Test Asset A",
99
+ slug: "test-asset-a",
100
+ type: "trailer.intl",
101
+ mediaType: "image",
102
+ project: {
103
+ filePrefix: "TESTPROJECT"
104
+ }
105
+ },
106
+ selected: {
107
+ download: {
108
+ language: "ENG",
109
+ country: "WW",
110
+ tags: {
111
+ Text: "txtd",
112
+ Resolution: "640x480"
113
+ }
114
+ }
115
+ }
116
+ };
117
+ let ingest = new Ingest(data);
118
+ let allTags = [];
119
+ let allTypes = [];
120
+ let name = ingest.renderFilename({ allTags, allTypes });
121
+ expect(name).toBe("TESTPROJECT_ITR-TEST-ASSET-A_ENG_TXTD_640x480");
122
+ });
123
+ it("throws exception if missing asset.project.filePrefix", function() {
124
+ let data = {
125
+ asset: {
126
+ name: "Test Asset A",
127
+ slug: "test-asset-a",
128
+ type: "trailer.intl",
129
+ project: {
130
+ // filePrefix: 'TESTPROJECT'
131
+ }
132
+ },
133
+ selected: {
134
+ download: {
135
+ language: "ENG"
136
+ }
137
+ }
138
+ };
139
+ expect(() => {
140
+ let ingest = new Ingest(data);
141
+ let allTags = [];
142
+ let allTypes = [];
143
+ let name = ingest.renderFilename({ allTags, allTypes });
144
+ }).toThrow("missing asset.project.filePrefix");
145
+ });
146
+ it("throws exception if missing asset.name", function() {
147
+ let data = {
148
+ asset: {
149
+ // name: 'Test Asset A',
150
+ slug: "test-asset-a",
151
+ type: "trailer.intl",
152
+ project: {
153
+ filePrefix: "TESTPROJECT"
154
+ }
155
+ },
156
+ selected: {
157
+ download: {
158
+ language: "ENG"
159
+ }
160
+ }
161
+ };
162
+ expect(() => {
163
+ let ingest = new Ingest(data);
164
+ let allTags = [];
165
+ let allTypes = [];
166
+ let name = ingest.renderFilename({ allTags, allTypes });
167
+ }).toThrow("missing asset.name");
168
+ });
169
+ it("renders country and territory", function() {
170
+ let data = {
171
+ asset: {
172
+ name: "Test Asset A",
173
+ slug: "test-asset-a",
174
+ type: "trailer.intl",
175
+ mediaType: "video",
176
+ project: {
177
+ filePrefix: "TESTPROJECT"
178
+ }
179
+ },
180
+ selected: {
181
+ download: {
182
+ language: "ENG",
183
+ country: "US",
184
+ tags: {
185
+ Text: "txtd",
186
+ Codec: "prores",
187
+ Resolution: "640x480",
188
+ Framerate: "23.98",
189
+ "Frame Mode": "progressive"
190
+ }
191
+ }
192
+ }
193
+ };
194
+ let ingest = new Ingest(data);
195
+ let allTags = [];
196
+ let allTypes = [];
197
+ let name = ingest.renderFilename({ allTags, allTypes });
198
+ expect(name).toBe(
199
+ "TESTPROJECT_ITR-TEST-ASSET-A_ENG-US_TXTD_PRORES_480p2398"
200
+ );
201
+ });
202
+ it("renders domestic trailer type with custom name", function() {
203
+ let data = {
204
+ asset: {
205
+ name: "Test Asset A",
206
+ slug: "test-asset-a",
207
+ type: "trailer.us",
208
+ mediaType: "video",
209
+ project: {
210
+ filePrefix: "TESTPROJECT"
211
+ }
212
+ },
213
+ selected: {
214
+ download: {
215
+ language: "ENG",
216
+ tags: {
217
+ Text: "txtd",
218
+ Codec: "prores",
219
+ Resolution: "640x480",
220
+ Framerate: "23.98",
221
+ "Frame Mode": "progressive"
222
+ }
223
+ }
224
+ }
225
+ };
226
+ let ingest = new Ingest(data);
227
+ let allTags = [];
228
+ let allTypes = [];
229
+ let name = ingest.renderFilename({ allTags, allTypes });
230
+ expect(name).toBe(
231
+ "TESTPROJECT_DTR-TEST-ASSET-A_ENG_TXTD_PRORES_480p2398"
232
+ );
233
+ });
234
+ it("renders generic trailer type", function() {
235
+ let data = {
236
+ asset: {
237
+ name: "Generic Trailer",
238
+ slug: "generic-trailer",
239
+ type: "trailer",
240
+ mediaType: "video",
241
+ project: {
242
+ filePrefix: "TESTPROJECT"
243
+ }
244
+ },
245
+ selected: {
246
+ download: {
247
+ language: "ENG",
248
+ tags: {
249
+ Text: "txtd",
250
+ Codec: "prores",
251
+ Resolution: "640x480",
252
+ Framerate: "23.98",
253
+ "Frame Mode": "progressive"
254
+ }
255
+ }
256
+ }
257
+ };
258
+ let ingest = new Ingest(data);
259
+ let allTags = [];
260
+ let allTypes = [];
261
+ let name = ingest.renderFilename({ allTags, allTypes });
262
+ expect(name).toBe(
263
+ "TESTPROJECT_TR-GENERIC-TRAILER_ENG_TXTD_PRORES_480p2398"
264
+ );
265
+ });
266
+ it("throws an error if asset type does not exist", function() {
267
+ let data = {
268
+ asset: {
269
+ name: "Cool Spot 15",
270
+ slug: "cool-spot-15",
271
+ type: "doesnt-exist",
272
+ mediaType: "video",
273
+ project: {
274
+ filePrefix: "TESTPROJECT"
275
+ }
276
+ },
277
+ selected: {
278
+ download: {
279
+ language: "ENG",
280
+ tags: {
281
+ Text: "txtd",
282
+ Codec: "prores",
283
+ Resolution: "640x480",
284
+ Framerate: "23.98",
285
+ "Frame Mode": "progressive"
286
+ }
287
+ }
288
+ }
289
+ };
290
+ expect(function() {
291
+ let ingest = new Ingest(data);
292
+ let allTags = [];
293
+ let allTypes = [];
294
+ let name = ingest.renderFilename({ allTags, allTypes });
295
+ }).toThrow('Asset type "doesnt-exist" could not be found');
296
+ });
297
+ it("renders non-trailer types", function() {
298
+ let data = {
299
+ asset: {
300
+ name: "Cool Spot 15",
301
+ slug: "cool-spot-15",
302
+ type: "tv-spot.intl",
303
+ mediaType: "video",
304
+ project: {
305
+ filePrefix: "TESTPROJECT"
306
+ }
307
+ },
308
+ selected: {
309
+ download: {
310
+ language: "ENG",
311
+ tags: {
312
+ Text: "txtd",
313
+ Codec: "prores",
314
+ Resolution: "640x480",
315
+ Framerate: "23.98",
316
+ "Frame Mode": "progressive"
317
+ }
318
+ }
319
+ }
320
+ };
321
+ let ingest = new Ingest(data);
322
+ let allTags = [];
323
+ let allTypes = [{ _id: "tv-spot.intl", name: "tv-spot.intl" }];
324
+ let name = ingest.renderFilename({ allTags, allTypes });
325
+ expect(name).toBe(
326
+ "TESTPROJECT_TV-SPOT-INTL_COOL-SPOT-15_ENG_TXTD_PRORES_480p2398"
327
+ );
328
+ });
329
+ it("throws exception if missing options.tags.Text", function() {
330
+ let data = {
331
+ asset: {
332
+ name: "Test Asset A",
333
+ slug: "test-asset-a",
334
+ type: "trailer.intl",
335
+ mediaType: "video",
336
+ project: {
337
+ filePrefix: "TESTPROJECT"
338
+ }
339
+ },
340
+ selected: {
341
+ download: {
342
+ tags: {
343
+ Text: ""
344
+ }
345
+ }
346
+ }
347
+ };
348
+ expect(() => {
349
+ let ingest = new Ingest(data);
350
+ let allTags = [];
351
+ let allTypes = [];
352
+ let name = ingest.renderFilename({ allTags, allTypes });
353
+ }).toThrow("missing options.language");
354
+ });
355
+ it("throws exception if missing options.language", function() {
356
+ let data = {
357
+ asset: {
358
+ name: "Test Asset A",
359
+ slug: "test-asset-a",
360
+ type: "trailer.intl",
361
+ mediaType: "video",
362
+ project: {
363
+ filePrefix: "TESTPROJECT"
364
+ }
365
+ },
366
+ selected: { download: {} }
367
+ };
368
+ expect(() => {
369
+ let ingest = new Ingest(data);
370
+ let allTags = [];
371
+ let allTypes = [];
372
+ let name = ingest.renderFilename({ allTags, allTypes });
373
+ }).toThrow("missing options.language");
374
+ });
375
+ it("throws exception if missing asset.type", function() {
376
+ let data = {
377
+ asset: {
378
+ name: "Test Asset A",
379
+ slug: "test-asset-a",
380
+ // type: 'trailer.intl',
381
+ project: {
382
+ filePrefix: "TESTPROJECT"
383
+ }
384
+ },
385
+ selected: {
386
+ download: {
387
+ language: "ENG"
388
+ }
389
+ }
390
+ };
391
+ expect(() => {
392
+ let ingest = new Ingest(data);
393
+ let allTags = [];
394
+ let allTypes = [];
395
+ let name = ingest.renderFilename({ allTags, allTypes });
396
+ }).toThrow("missing asset.type");
397
+ });
398
+ it("contains running time from film clips", function() {
399
+ let data = {
400
+ asset: {
401
+ name: "Ultra Violence",
402
+ slug: "ultra-violence",
403
+ type: "film-clip.intl",
404
+ length: 63,
405
+ mediaType: "video",
406
+ project: {
407
+ filePrefix: "TESTPROJECT"
408
+ }
409
+ },
410
+ selected: {
411
+ download: {
412
+ language: "ENG",
413
+ tags: {
414
+ Text: "txtd",
415
+ Codec: "prores",
416
+ Resolution: "640x480",
417
+ Framerate: "23.98",
418
+ "Frame Mode": "progressive"
419
+ }
420
+ }
421
+ }
422
+ };
423
+ let ingest = new Ingest(data);
424
+ let allTags = [];
425
+ let allTypes = [{ name: "film-clip.intl" }];
426
+ let name = ingest.renderFilename({ allTags, allTypes });
427
+ expect(name).toBe(
428
+ "TESTPROJECT_FILM-CLIP-INTL_ULTRA-VIOLENCE_1MIN3SEC_ENG_TXTD_PRORES_480p2398"
429
+ );
430
+
431
+ ingest.asset.length = 60;
432
+ name = ingest.renderFilename({ allTags, allTypes });
433
+
434
+ expect(name).toBe(
435
+ "TESTPROJECT_FILM-CLIP-INTL_ULTRA-VIOLENCE_1MIN_ENG_TXTD_PRORES_480p2398"
436
+ );
437
+
438
+ ingest.asset.length = 45;
439
+ name = ingest.renderFilename({ allTags, allTypes });
440
+
441
+ expect(name).toBe(
442
+ "TESTPROJECT_FILM-CLIP-INTL_ULTRA-VIOLENCE_45SEC_ENG_TXTD_PRORES_480p2398"
443
+ );
444
+ });
445
+ it("does not redundantly include tag info", function() {
446
+ let data = {
447
+ asset: {
448
+ name: "Test Asset A",
449
+ slug: "test-asset-a",
450
+ type: "trailer.intl",
451
+ mediaType: "video",
452
+ project: {
453
+ filePrefix: "TESTPROJECT"
454
+ }
455
+ },
456
+ selected: {
457
+ download: {
458
+ language: "ENG",
459
+ country: "WW",
460
+ tags: {
461
+ Resolution: "1080i",
462
+ "Frame Mode": "progressive",
463
+ Framerate: "29.97",
464
+ Text: "txtd",
465
+ Extra: ["COMING-SOON", "HOJE"],
466
+ Codec: "PRORES"
467
+ }
468
+ }
469
+ }
470
+ };
471
+ let ingest = new Ingest(data);
472
+ let allTags = [];
473
+ let allTypes = [{ name: "film-clip.intl" }];
474
+ let name = ingest.renderFilename({ allTags, allTypes });
475
+ expect(name).toBe(
476
+ "TESTPROJECT_ITR-TEST-ASSET-A_ENG_TXTD_COMING-SOON_HOJE_PRORES_1080i2997"
477
+ );
478
+
479
+ ingest.selected.download = {
480
+ language: "ENG",
481
+ country: "WW",
482
+ tags: {
483
+ Usage: "online",
484
+ Aspect: "16:9",
485
+ Codec: "h264",
486
+ Resolution: "1920x1080",
487
+ "Frame Mode": "progressive",
488
+ Framerate: "29.97",
489
+ Text: "txtd",
490
+ Extra: ["COMING-SOON", "HOJE"]
491
+ }
492
+ };
493
+ name = ingest.renderFilename({ allTags, allTypes });
494
+
495
+ expect(name).toBe(
496
+ "TESTPROJECT_ITR-TEST-ASSET-A_ENG_TXTD_COMING-SOON_HOJE_H264_1080p2997"
497
+ );
498
+ });
499
+ it("converts asset names containing `int'l` to `intl`", function() {
500
+ let data = {
501
+ asset: {
502
+ type: "tv-spot.intl",
503
+ name: "Test Asset Int'l 10",
504
+ slug: "test-asset-intl-10",
505
+ mediaType: "video",
506
+ project: {
507
+ filePrefix: "TESTPROJECT"
508
+ }
509
+ },
510
+ selected: {
511
+ download: {
512
+ language: "ENG",
513
+ country: "WW",
514
+ tags: {
515
+ Text: "txtd",
516
+ Extra: ["COMING-SOON", "HOJE"],
517
+ Codec: "prores",
518
+ Resolution: "640x480",
519
+ Framerate: "23.98",
520
+ "Frame Mode": "progressive"
521
+ }
522
+ }
523
+ }
524
+ };
525
+ let ingest = new Ingest(data);
526
+ let allTags = [];
527
+ let allTypes = [{ name: "film-clip.intl" }, { name: "tv-spot.intl" }];
528
+ let name = ingest.renderFilename({ allTags, allTypes });
529
+ expect(name).toBe(
530
+ "TESTPROJECT_TV-SPOT-INTL_TEST-ASSET-INTL-10_ENG_TXTD_COMING-SOON_HOJE_PRORES_480p2398"
531
+ );
532
+ });
533
+ it("renders sub and dub tags", function() {
534
+ let data = {
535
+ asset: {
536
+ type: "tv-spot.intl",
537
+ name: "Test Asset Int'l 10",
538
+ slug: "test-asset-int-l-10",
539
+ mediaType: "video",
540
+ project: {
541
+ filePrefix: "TESTPROJECT"
542
+ }
543
+ },
544
+ selected: {
545
+ download: {
546
+ language: "ENG",
547
+ country: "WW",
548
+ tags: {
549
+ SubDub: {
550
+ sub: true,
551
+ dub: false
552
+ },
553
+ Extra: ["COMING-SOON", "HOJE"],
554
+ Codec: "PRORES",
555
+ Resolution: "640x480",
556
+ Framerate: "23.98",
557
+ "Frame Mode": "progressive"
558
+ }
559
+ }
560
+ }
561
+ };
562
+ let ingest = new Ingest(data);
563
+ let allTags = [];
564
+ let allTypes = [{ name: "film-clip.intl" }, { name: "tv-spot.intl" }];
565
+ let name = ingest.renderFilename({ allTags, allTypes });
566
+ expect(name).toBe(
567
+ "TESTPROJECT_TV-SPOT-INTL_TEST-ASSET-INTL-10_ENG_SUB_COMING-SOON_HOJE_PRORES_480p2398"
568
+ );
569
+
570
+ Object.assign(ingest.selected.download.tags.SubDub, {
571
+ sub: true,
572
+ dub: true
573
+ });
574
+
575
+ name = ingest.renderFilename({ allTags, allTypes });
576
+
577
+ expect(name).toBe(
578
+ "TESTPROJECT_TV-SPOT-INTL_TEST-ASSET-INTL-10_ENG_SUB_DUB_COMING-SOON_HOJE_PRORES_480p2398"
579
+ );
580
+ });
581
+ it("includes `Frame mode` and `Framerate`", function() {
582
+ let data = {
583
+ asset: {
584
+ name: "Test Asset A",
585
+ slug: "test-asset-a",
586
+ type: "trailer.intl",
587
+ mediaType: "video",
588
+ project: {
589
+ filePrefix: "TESTPROJECT"
590
+ }
591
+ },
592
+ selected: {
593
+ download: {
594
+ language: "ENG",
595
+ country: "WW",
596
+ tags: {
597
+ Resolution: "1920x1080",
598
+ "Frame Mode": "progressive",
599
+ Framerate: "29.97",
600
+ Text: "txtd",
601
+ Extra: ["COMING-SOON", "HOJE"],
602
+ Codec: "PRORES"
603
+ }
604
+ }
605
+ }
606
+ };
607
+ let ingest = new Ingest(data);
608
+ let allTags = [];
609
+ let allTypes = [{ name: "film-clip.intl" }];
610
+ let name = ingest.renderFilename({ allTags, allTypes });
611
+ expect(name).toBe(
612
+ "TESTPROJECT_ITR-TEST-ASSET-A_ENG_TXTD_COMING-SOON_HOJE_PRORES_1080p2997"
613
+ );
614
+ });
615
+ it("renders `set` tags when all tags in `set` are specified but retains `codec`", function() {
616
+ let data = {
617
+ asset: {
618
+ name: "Test Asset A",
619
+ slug: "test-asset-a",
620
+ type: "trailer.intl",
621
+ mediaType: "video",
622
+ project: {
623
+ filePrefix: "TESTPROJECT"
624
+ }
625
+ },
626
+ selected: {
627
+ download: {
628
+ language: "ENG",
629
+ tags: {
630
+ Codec: "h264",
631
+ Resolution: "1920x1080",
632
+ Usage: "online",
633
+ Text: "txtd",
634
+ Framerate: "23.98",
635
+ "Frame Mode": "progressive"
636
+ }
637
+ }
638
+ }
639
+ };
640
+ let ingest = new Ingest(data);
641
+ let allTags = [];
642
+ let allTypes = [{ name: "film-clip.intl" }];
643
+ let name = ingest.renderFilename({ allTags, allTypes });
644
+ expect(name).toBe("TESTPROJECT_ITR-TEST-ASSET-A_ENG_TXTD_H264_1080p2398");
645
+ });
646
+ it("throws exception if missing Frame Mode", function() {
647
+ let data = {
648
+ asset: {
649
+ name: "Test Asset A",
650
+ slug: "test-asset-a",
651
+ type: "trailer.intl",
652
+ mediaType: "video",
653
+ project: {
654
+ filePrefix: "TESTPROJECT"
655
+ }
656
+ },
657
+ selected: {
658
+ download: {
659
+ language: "ENG",
660
+ tags: {
661
+ Codec: "prores",
662
+ Text: "txtd",
663
+ Resolution: "640x480",
664
+ Framerate: "23.98"
665
+ // "Frame Mode": 'progressive'
666
+ }
667
+ }
668
+ }
669
+ };
670
+ expect(() => {
671
+ let ingest = new Ingest(data);
672
+ let allTags = [];
673
+ let allTypes = [];
674
+ let name = ingest.renderFilename({ allTags, allTypes });
675
+ }).toThrow("missing options.tags[Frame Mode]");
676
+ });
677
+ it("throws exception if missing Resolution", function() {
678
+ let data = {
679
+ asset: {
680
+ name: "Test Asset A",
681
+ slug: "test-asset-a",
682
+ type: "trailer.intl",
683
+ mediaType: "video",
684
+ project: {
685
+ filePrefix: "TESTPROJECT"
686
+ }
687
+ },
688
+ selected: {
689
+ download: {
690
+ language: "ENG",
691
+ tags: {
692
+ Codec: "prores",
693
+ Text: "txtd",
694
+ // Resolution: '640x480',
695
+ Framerate: "23.98",
696
+ "Frame Mode": "progressive"
697
+ }
698
+ }
699
+ }
700
+ };
701
+ let ingest = new Ingest(data);
702
+ let allTags = [];
703
+ let allTypes = [];
704
+ expect(() => {
705
+ let name = ingest.renderFilename({ allTags, allTypes });
706
+ }).toThrow("missing options.tags.Resolution");
707
+ });
708
+ it("throws exception if missing asset.project", function() {
709
+ let data = {
710
+ asset: {
711
+ name: "Test Asset A",
712
+ slug: "test-asset-a",
713
+ type: "trailer.intl",
714
+ mediaType: "video"
715
+ },
716
+ selected: {
717
+ download: {
718
+ language: "ENG"
719
+ }
720
+ }
721
+ };
722
+ let ingest = new Ingest(data);
723
+ let allTags = [];
724
+ let allTypes = [];
725
+ expect(() => {
726
+ let name = ingest.renderFilename({ allTags, allTypes });
727
+ }).toThrow("missing asset.project");
728
+ });
729
+ it("renders language and country", function() {
730
+ let data = {
731
+ asset: {
732
+ name: "Test Asset A",
733
+ slug: "test-asset-a",
734
+ type: "trailer.intl",
735
+ mediaType: "video",
736
+ project: {
737
+ filePrefix: "TESTPROJECT"
738
+ }
739
+ },
740
+ selected: {
741
+ download: {
742
+ language: "ENG",
743
+ country: "US",
744
+ tags: {
745
+ Text: "txtd",
746
+ Extra: ["COMING-SOON", "HOJE"],
747
+ Codec: "PRORES",
748
+ Resolution: "640x480",
749
+ Framerate: "23.98",
750
+ "Frame Mode": "progressive"
751
+ }
752
+ }
753
+ }
754
+ };
755
+ let ingest = new Ingest(data);
756
+ let allTags = [];
757
+ let allTypes = [];
758
+ let name = ingest.renderFilename({ allTags, allTypes });
759
+ expect(name).toBe(
760
+ "TESTPROJECT_ITR-TEST-ASSET-A_ENG-US_TXTD_COMING-SOON_HOJE_PRORES_480p2398"
761
+ );
762
+ });
763
+ it("renders version", function() {
764
+ let data = {
765
+ asset: {
766
+ name: "Test Asset A",
767
+ slug: "test-asset-a",
768
+ type: "trailer.intl",
769
+ mediaType: "video",
770
+ project: {
771
+ filePrefix: "TESTPROJECT"
772
+ }
773
+ },
774
+ selected: {
775
+ download: {
776
+ version: "rev",
777
+ language: "ENG",
778
+ tags: {
779
+ Text: "txtd",
780
+ Codec: "prores",
781
+ Resolution: "640x480",
782
+ Framerate: "23.98",
783
+ "Frame Mode": "progressive"
784
+ }
785
+ }
786
+ }
787
+ };
788
+ let ingest = new Ingest(data);
789
+ let allTags = [];
790
+ let allTypes = [];
791
+ let name = ingest.renderFilename({ allTags, allTypes });
792
+ expect(name).toEqual(
793
+ "TESTPROJECT_ITR-TEST-ASSET-A_ENG_TXTD_REV_PRORES_480p2398"
794
+ );
795
+ });
796
+ it("renders asset names with contractions correctly", function() {
797
+ let data = {
798
+ asset: {
799
+ name: "Can't Int'l 10",
800
+ slug: "cant-intl-10",
801
+ type: "trailer.intl",
802
+ mediaType: "video",
803
+ project: {
804
+ filePrefix: "TESTPROJECT"
805
+ }
806
+ },
807
+ selected: {
808
+ download: {
809
+ language: "ENG",
810
+ tags: {
811
+ Text: "txtd",
812
+ Codec: "prores",
813
+ Resolution: "640x480",
814
+ Framerate: "23.98",
815
+ "Frame Mode": "progressive"
816
+ }
817
+ }
818
+ }
819
+ };
820
+ let ingest = new Ingest(data);
821
+ let allTags = [];
822
+ let allTypes = [];
823
+ let name = ingest.renderFilename({ allTags, allTypes });
824
+ expect(name).toBe(
825
+ "TESTPROJECT_ITR-CANT-INTL-10_ENG_TXTD_PRORES_480p2398"
826
+ );
827
+ });
828
+ it("renders tags as an underscore-separated string", function() {
829
+ let data = {
830
+ asset: {
831
+ name: "Test Asset A",
832
+ slug: "test-asset-a",
833
+ type: "trailer.intl",
834
+ mediaType: "video",
835
+ project: {
836
+ filePrefix: "TESTPROJECT"
837
+ }
838
+ },
839
+ selected: {
840
+ download: {
841
+ language: "ENG",
842
+ country: "WW",
843
+ tags: {
844
+ Text: "txtd",
845
+ Extra: ["COMING-SOON", "HOJE"],
846
+ Codec: "PRORES",
847
+ Resolution: "640x480",
848
+ Framerate: "23.98",
849
+ "Frame Mode": "progressive"
850
+ }
851
+ }
852
+ }
853
+ };
854
+ let ingest = new Ingest(data);
855
+ let allTags = [];
856
+ let allTypes = [];
857
+ let name = ingest.renderFilename({ allTags, allTypes });
858
+ expect(name).toBe(
859
+ "TESTPROJECT_ITR-TEST-ASSET-A_ENG_TXTD_COMING-SOON_HOJE_PRORES_480p2398"
860
+ );
861
+ });
862
+ });
863
+ describe("createFile", () => {
864
+ it("should create a File object given an Ingest and Order", () => {
865
+ let data = {
866
+ _id: "a1b2c3",
867
+ workRequest: "a1b2c3",
868
+ context: {
869
+ tag: "FRIDAY"
870
+ },
871
+ asset: {
872
+ _id: "a1b2c3",
873
+ name: "Asset",
874
+ type: "tv-spot.intl",
875
+ slug: "asset",
876
+ mediaType: "video",
877
+ project: {
878
+ filePrefix: "PROJECT",
879
+ slug: "project",
880
+ studio: {
881
+ slug: "paramount"
882
+ }
883
+ }
884
+ },
885
+ filename: {
886
+ asset: {},
887
+ file: {
888
+ tags: ["sub"]
889
+ }
890
+ },
891
+ mediainfo: {
892
+ File: { track: {} }
893
+ },
894
+ selected: {
895
+ download: {
896
+ language: "ENG",
897
+ country: "US",
898
+ tags: {
899
+ Codec: "prores",
900
+ Resolution: "1024x768",
901
+ Framerate: "24",
902
+ "Frame Mode": "progressive"
903
+ }
904
+ }
905
+ }
906
+ };
907
+ let allTags = [];
908
+ let allTypes = [{ name: "tv-spot.intl" }];
909
+ let order = new Order();
910
+ let ingest = new Ingest(data);
911
+ let file = ingest.createFile({ allTags, allTypes, order });
912
+ let expected = {
913
+ name: "PROJECT_TV-SPOT-INTL_ASSET_ENG-US_PRORES_768p24",
914
+ path: "paramount/project/tv-spot.intl",
915
+ asset: "a1b2c3",
916
+ generator: "ingest",
917
+ contextTag: "FRIDAY",
918
+ language: "ENG",
919
+ country: "US",
920
+ tags: ["FRIDAY", "prores", "1024x768", "24", "progressive"],
921
+ ingest: "a1b2c3",
922
+ workRequest: "a1b2c3",
923
+ verified: true
924
+ };
925
+ expect(file.data()).toEqual(expected);
926
+ });
927
+ });
11
928
  describe("assemble", () => {
12
929
  it("should set country and language from filename if not found in order", () => {
13
930
  let original = {
14
- context: {}
15
- };
16
- let filename = {
931
+ context: {},
932
+ filename: {
933
+ asset: ""
934
+ },
17
935
  selected: {
18
936
  download: {
19
937
  language: "ENG",
@@ -21,28 +939,30 @@ describe("Ingest", () => {
21
939
  }
22
940
  }
23
941
  };
24
- let mediainfo = {};
25
942
  let order = new Order();
26
- let ingest = Ingest.assemble({ original, filename, mediainfo, order });
27
- expect(ingest.selected.download.language).toBe("ENG");
28
- expect(ingest.selected.download.country).toBe("US");
943
+ let ingest = new Ingest(original);
944
+ let data = ingest.assemble({ order });
945
+ expect(data.selected.download.language).toBe("ENG");
946
+ expect(data.selected.download.country).toBe("US");
29
947
  });
30
948
  it("should use asset from filename when there is no context", () => {
31
949
  let original = {
32
- context: {}
33
- };
34
- let filename = {
35
- asset: { _id: "a1b2c3" },
950
+ context: {},
951
+ filename: {
952
+ asset: {
953
+ _id: "a1b2c3"
954
+ }
955
+ }
36
956
  };
37
- let mediainfo = {};
38
957
  let order = new Order();
39
- let ingest = Ingest.assemble({ original, filename, mediainfo, order });
40
- expect(ingest.selected.asset).toBe("a1b2c3");
958
+ let ingest = new Ingest(original);
959
+ let data = ingest.assemble({ order });
960
+ expect(data.selected.asset).toBe("a1b2c3");
41
961
  });
42
- it('should prefer ingest asset data over filename when coming from workrequest', () => {
962
+ it("should prefer ingest asset data over filename when coming from workrequest", () => {
43
963
  let original = {
44
964
  asset: {
45
- slug: 'alpha'
965
+ slug: "alpha"
46
966
  },
47
967
  context: {
48
968
  workRequest: "5c90dd39ab0e003b358b456d",
@@ -51,237 +971,263 @@ describe("Ingest", () => {
51
971
  project: "5ada6930679eef010c8b45fc",
52
972
  group: 1553693108697,
53
973
  tag: "FRIDAY"
974
+ },
975
+ filename: {
976
+ project: { _id: "a1b2c3" },
977
+ asset: {
978
+ _id: "a1b2c3",
979
+ slug: "beta"
980
+ }
54
981
  }
55
982
  };
56
- let filename = {
57
- project: { _id: "a1b2c3" },
58
- asset: {
59
- _id: "a1b2c3",
60
- slug: 'beta'
61
- }
62
- };
63
- let mediainfo = {};
64
983
  let order = new Order({ _id: "5c90dd39ab0e003b358b456d" });
65
- let ingest = Ingest.assemble({ original, filename, mediainfo, order });
66
- expect(ingest.asset.slug).toEqual('alpha');
984
+ let ingest = new Ingest(original);
985
+ let data = ingest.assemble({ order });
986
+ expect(data.asset.slug).toEqual("alpha");
67
987
  });
68
988
  it("should use all context when coming from an order", () => {
69
989
  let original = {
70
990
  selected: {
71
991
  download: {
72
992
  tags: {
73
- Extra: ['A', 'B']
993
+ Extra: ["A", "B"]
74
994
  }
75
995
  }
76
996
  },
77
997
  context: {
78
- "workRequest": "5c90dd39ab0e003b358b456d",
79
- "asset": "5c804776bb65ce2e008b4568",
80
- "assetType": "social",
81
- "project": "5ada6930679eef010c8b45fc",
82
- "group": 1553693108697,
83
- "tag": "FRIDAY"
998
+ workRequest: "5c90dd39ab0e003b358b456d",
999
+ asset: "5c804776bb65ce2e008b4568",
1000
+ assetType: "social",
1001
+ project: "5ada6930679eef010c8b45fc",
1002
+ group: 1553693108697,
1003
+ tag: "FRIDAY"
1004
+ },
1005
+ filename: {
1006
+ project: { _id: "a1b2c3" },
1007
+ asset: { _id: "a1b2c3" }
84
1008
  }
85
1009
  };
86
- let filename = {
87
- project: { _id: "a1b2c3"},
88
- asset: { _id: "a1b2c3" }
89
- };
90
- let mediainfo = {};
91
1010
  let order = new Order({ _id: "5c90dd39ab0e003b358b456d" });
92
- let ingest = Ingest.assemble({ original, filename, mediainfo, order });
93
- expect(ingest.selected.download.tags.Extra).toEqual(['FRIDAY']);
94
- expect(ingest.selected.project).toBe("5ada6930679eef010c8b45fc");
95
- expect(ingest.selected.asset).toBe("5c804776bb65ce2e008b4568");
96
- expect(ingest.selected.assetType).toBe("social");
1011
+ let ingest = new Ingest(original);
1012
+ let data = ingest.assemble({ order });
1013
+ expect(data.selected.download.tags.Extra).toEqual(["FRIDAY"]);
1014
+ expect(data.selected.project).toBe("5ada6930679eef010c8b45fc");
1015
+ expect(data.selected.asset).toBe("5c804776bb65ce2e008b4568");
1016
+ expect(data.selected.assetType).toBe("social");
97
1017
  });
98
1018
  it("should set preview revision=Unfinished for creative assets", () => {
99
1019
  let original = {
100
1020
  asset: {
101
1021
  creative: true
102
1022
  },
103
- context: {}
104
- };
105
- let filename = {
106
- selected: {
107
- download: {
108
- language: "ENG",
109
- country: "US"
1023
+ context: {},
1024
+ filename: {
1025
+ selected: {
1026
+ download: {
1027
+ language: "ENG",
1028
+ country: "US"
1029
+ }
110
1030
  }
111
1031
  }
112
1032
  };
113
- let mediainfo = {};
114
1033
  let order = new Order();
115
- let ingest = Ingest.assemble({ original, filename, mediainfo, order });
116
- expect(ingest.selected.preview.revision).toBe("Unfinished");
1034
+ let ingest = new Ingest(original);
1035
+ let data = ingest.assemble({ order });
1036
+ expect(data.selected.preview.revision).toBe("Unfinished");
117
1037
  });
118
1038
  it("should keep tags from parsed filename when order is empty", () => {
119
- let original = { asset: { creative: true }, context: {} };
120
- let filename = {
121
- selected: {
122
- download: {
123
- language: "ENG",
124
- country: "US",
125
- tags: {
126
- Extra: ["coming-soon"],
127
- SubDub: {
128
- sub: true
1039
+ let original = {
1040
+ asset: { creative: true },
1041
+ context: {},
1042
+ filename: {
1043
+ selected: {
1044
+ download: {
1045
+ language: "ENG",
1046
+ country: "US",
1047
+ tags: {
1048
+ Extra: ["coming-soon"],
1049
+ SubDub: {
1050
+ sub: true
1051
+ }
129
1052
  }
130
1053
  }
131
1054
  }
132
1055
  }
133
1056
  };
134
- let mediainfo = {};
135
1057
  let order = new Order();
136
- let ingest = Ingest.assemble({ original, filename, mediainfo, order });
137
- expect(ingest.selected.download.tags).toEqual({
1058
+ let ingest = new Ingest(original);
1059
+ let data = ingest.assemble({ order });
1060
+ expect(data.selected.download.tags).toEqual({
138
1061
  Extra: ["coming-soon"],
139
1062
  SubDub: { sub: true }
140
1063
  });
141
1064
  });
142
1065
  it("should set preview revision=Final for finished assets", () => {
143
- let original = { asset: { creative: false }, context: {} };
144
- let filename = {
145
- selected: { download: { language: "ENG", country: "US" } }
1066
+ let original = {
1067
+ asset: { creative: false },
1068
+ context: {},
1069
+ filename: {
1070
+ selected: { download: { language: "ENG", country: "US" } }
1071
+ }
146
1072
  };
147
- let mediainfo = {};
148
1073
  let order = new Order();
149
- let ingest = Ingest.assemble({ original, filename, mediainfo, order });
150
- expect(ingest.selected.preview.revision).toBe("Final");
1074
+ let ingest = new Ingest(original);
1075
+ let data = ingest.assemble({ order });
1076
+ expect(data.selected.preview.revision).toBe("Final");
151
1077
  });
152
1078
  it("should enable preview if file is prores 1080p 23.98/25", () => {
153
- let original = { context: {} };
154
- let filename = {
155
- selected: { download: { language: "ENG", country: "US" } }
156
- };
157
- let mediainfo = {
158
- selected: {
159
- download: {
160
- tags: {
161
- Codec: "prores",
162
- Resolution: "720x1080",
163
- Framerate: "23.98"
1079
+ let original = {
1080
+ context: {},
1081
+ mediainfo: {
1082
+ selected: {
1083
+ download: {
1084
+ tags: {
1085
+ Codec: "prores",
1086
+ Resolution: "720x1080",
1087
+ Framerate: "23.98"
1088
+ }
164
1089
  }
165
1090
  }
1091
+ },
1092
+ filename: {
1093
+ selected: { download: { language: "ENG", country: "US" } }
166
1094
  }
167
1095
  };
168
1096
  let order = new Order();
169
1097
  let watermarks = [1];
170
- let ingest = Ingest.assemble({
171
- original,
172
- filename,
173
- mediainfo,
174
- order,
175
- watermarks
176
- });
177
- expect(ingest.selected.preview.enabled).toBe(true);
1098
+ let ingest = new Ingest(original);
1099
+ let data = ingest.assemble({ order, watermarks });
1100
+ expect(data.selected.preview.enabled).toBe(true);
178
1101
  });
179
1102
  it("should prefer language and country from order over filename", () => {
180
- let original = { context: {} };
181
- let filename = {
182
- selected: { download: { language: "ENG", country: "US" } }
1103
+ let original = {
1104
+ context: {},
1105
+ filename: {
1106
+ selected: { download: { language: "ENG", country: "US" } }
1107
+ }
183
1108
  };
184
- let mediainfo = {};
185
1109
  let order = new Order({
186
1110
  territory: "FI",
187
1111
  language: "FIN"
188
1112
  });
189
- let ingest = Ingest.assemble({ original, filename, mediainfo, order });
190
- expect(ingest.selected.download.language).toBe("FIN");
191
- expect(ingest.selected.download.country).toBe("FI");
1113
+ let ingest = new Ingest(original);
1114
+ let data = ingest.assemble({ order });
1115
+ expect(data.selected.download.language).toBe("FIN");
1116
+ expect(data.selected.download.country).toBe("FI");
192
1117
  });
193
1118
  it("should correctly merge tags from mediainfo over filename", () => {
194
- let original = { context: {} };
195
- let filename = {
196
- selected: { download: { tags: { Codec: "prores", Aspect: "4X3" } } }
197
- };
198
- let mediainfo = {
199
- selected: { download: { tags: { Codec: "h264", Aspect: "16:9" } } }
1119
+ let original = {
1120
+ context: {},
1121
+ mediainfo: {
1122
+ selected: { download: { tags: { Codec: "h264", Aspect: "16:9" } } }
1123
+ },
1124
+ filename: {
1125
+ selected: { download: { tags: { Codec: "prores", Aspect: "4X3" } } }
1126
+ }
200
1127
  };
201
1128
  let order = new Order();
202
- let ingest = Ingest.assemble({ original, filename, mediainfo, order });
203
- expect(ingest.selected.download.tags.Codec).toBe("h264");
204
- expect(ingest.selected.download.tags.Aspect).toBe("16:9");
1129
+ let ingest = new Ingest(original);
1130
+ let data = ingest.assemble({ order });
1131
+ expect(data.selected.download.tags.Codec).toBe("h264");
1132
+ expect(data.selected.download.tags.Aspect).toBe("16:9");
205
1133
  });
206
1134
  it("should set preview.type=sub if order.isSub", () => {
207
- let original = { context: {} };
208
- let filename = {};
209
- let mediainfo = {};
1135
+ let original = { context: {}, filename: {}, mediainfo: {} };
210
1136
  let order = {
211
1137
  isSub: jest.fn().mockReturnValue(true),
212
1138
  isDub: jest.fn().mockReturnValue(null)
213
1139
  };
214
- let ingest = Ingest.assemble({ original, filename, mediainfo, order });
215
- expect(ingest.selected.preview.type).toBe("sub");
1140
+ let ingest = new Ingest(original);
1141
+ let data = ingest.assemble({ order });
1142
+ expect(data.selected.preview.type).toBe("sub");
216
1143
  });
217
1144
  it("should set preview.type=dub if order.isDub", () => {
218
- let original = { context: {} };
219
- let filename = {};
220
- let mediainfo = {};
1145
+ let original = { context: {}, filename: {}, mediainfo: {} };
221
1146
  let order = {
222
1147
  isSub: jest.fn().mockReturnValue(null),
223
1148
  isDub: jest.fn().mockReturnValue(true)
224
1149
  };
225
- let ingest = Ingest.assemble({ original, filename, mediainfo, order });
226
- expect(ingest.selected.preview.type).toBe("dub");
1150
+ let ingest = new Ingest(original);
1151
+ let data = ingest.assemble({ order });
1152
+ expect(data.selected.preview.type).toBe("dub");
227
1153
  });
228
1154
  it("should set preview.type=both if order.isDub and order.isDub", () => {
229
- let original = { context: {} };
230
- let filename = {};
231
- let mediainfo = {};
1155
+ let original = { context: {}, filename: {}, mediainfo: {} };
232
1156
  let order = {
233
1157
  isSub: jest.fn().mockReturnValue(true),
234
1158
  isDub: jest.fn().mockReturnValue(true)
235
1159
  };
236
- let ingest = Ingest.assemble({ original, filename, mediainfo, order });
237
- expect(ingest.selected.preview.type).toBe("both");
1160
+ let ingest = new Ingest(original);
1161
+ let data = ingest.assemble({ order });
1162
+ expect(data.selected.preview.type).toBe("both");
238
1163
  });
239
1164
  it("should retain Extra tags from order over filename", () => {
240
- let original = { context: { tag: "coming-soon" } };
241
- let filename = {
242
- selected: {
243
- download: {
244
- tags: ["friday"]
1165
+ let original = {
1166
+ context: { tag: "coming-soon" },
1167
+ mediainfo: {},
1168
+ filename: {
1169
+ selected: {
1170
+ download: {
1171
+ tags: ["friday"]
1172
+ }
245
1173
  }
246
1174
  }
247
1175
  };
248
- let mediainfo = {};
249
1176
  let order = {
250
1177
  isSub: jest.fn().mockReturnValue(true),
251
1178
  isDub: jest.fn().mockReturnValue(true)
252
1179
  };
253
- let ingest = Ingest.assemble({ original, filename, mediainfo, order });
254
- expect(ingest.selected.download.tags.Extra).toEqual(["coming-soon"]);
1180
+ let ingest = new Ingest(original);
1181
+ let data = ingest.assemble({ order });
1182
+ expect(data.selected.download.tags.Extra).toEqual(["coming-soon"]);
255
1183
  });
256
1184
  });
257
1185
  describe("mapFromMediainfo", () => {
258
1186
  it("should throw exception if missing File object", () => {
259
1187
  let meta = {};
260
1188
  expect(() => {
261
- let ingest = Ingest.mapFromMediainfo(meta, "video");
1189
+ let ingest = new Ingest({
1190
+ asset: { mediaType: "video" },
1191
+ mediainfo: meta
1192
+ });
1193
+ let info = ingest.mapFromMediainfo();
262
1194
  }).toThrow("missing info.File");
263
1195
  });
264
1196
  it("should throw exception if missing File.track object", () => {
265
1197
  let meta = { File: {} };
266
1198
  expect(() => {
267
- let ingest = Ingest.mapFromMediainfo(meta, "video");
1199
+ let ingest = new Ingest({
1200
+ asset: { mediaType: "video" },
1201
+ mediainfo: meta
1202
+ });
1203
+ let info = ingest.mapFromMediainfo();
268
1204
  }).toThrow("missing info.File.track");
269
1205
  });
270
1206
  it("should return empty object of tags if no metadata supplied", () => {
271
1207
  let meta = { File: { track: {} } };
272
- let ingest = Ingest.mapFromMediainfo(meta, "video");
273
- expect(ingest).toEqual({ selected: { download: { tags: {} } } });
1208
+ let ingest = new Ingest({
1209
+ asset: { mediaType: "video" },
1210
+ mediainfo: meta
1211
+ });
1212
+ let info = ingest.mapFromMediainfo();
1213
+ expect(info).toEqual({ selected: { download: { tags: {} } } });
274
1214
  });
275
1215
  it("should set usage to broadcast for mxf files", () => {
276
- let meta = mxfMock;
277
- let ingest = Ingest.mapFromMediainfo(meta, "");
278
- expect(ingest).toEqual({
1216
+ let ingest = new Ingest({
1217
+ asset: { mediaType: "" },
1218
+ mediainfo: mxfMock
1219
+ });
1220
+ let info = ingest.mapFromMediainfo();
1221
+ expect(info).toEqual({
279
1222
  Usage: "broadcast"
280
1223
  });
281
1224
  });
282
1225
  it("should correctly map h264 metadata to tags", () => {
283
- let meta = mock;
284
- let ingest = Ingest.mapFromMediainfo(meta, "video");
1226
+ let ingest = new Ingest({
1227
+ asset: { mediaType: "video" },
1228
+ mediainfo: mock
1229
+ });
1230
+ let info = ingest.mapFromMediainfo();
285
1231
  let expected = {
286
1232
  selected: {
287
1233
  download: {
@@ -297,11 +1243,14 @@ describe("Ingest", () => {
297
1243
  }
298
1244
  }
299
1245
  };
300
- expect(ingest).toEqual(expected);
1246
+ expect(info).toEqual(expected);
301
1247
  });
302
1248
  it("should correctly map prores metadata to tags", () => {
303
- let meta = proresMock;
304
- let ingest = Ingest.mapFromMediainfo(meta, "video");
1249
+ let ingest = new Ingest({
1250
+ asset: { mediaType: "video" },
1251
+ mediainfo: proresMock
1252
+ });
1253
+ let info = ingest.mapFromMediainfo();
305
1254
  let expected = {
306
1255
  selected: {
307
1256
  download: {
@@ -317,15 +1266,18 @@ describe("Ingest", () => {
317
1266
  }
318
1267
  }
319
1268
  };
320
- expect(ingest).toEqual(expected);
1269
+ expect(info).toEqual(expected);
321
1270
  });
322
1271
  it("should correctly map png metadata to tags", () => {
323
- let meta = pngMock;
324
- let ingest = Ingest.mapFromMediainfo(meta, "image");
1272
+ let ingest = new Ingest({
1273
+ asset: { mediaType: "image" },
1274
+ mediainfo: pngMock
1275
+ });
1276
+ let info = ingest.mapFromMediainfo();
325
1277
  let expected = {
326
1278
  selected: { download: { tags: { Resolution: "1240x859" } } }
327
1279
  };
328
- expect(ingest).toEqual(expected);
1280
+ expect(info).toEqual(expected);
329
1281
  });
330
1282
  });
331
1283
  describe("mapFromFilename", () => {
@@ -335,8 +1287,9 @@ describe("Ingest", () => {
335
1287
  file: { language: "ENG", country: "US", tags: ["sub", "dub", "txtd"] }
336
1288
  };
337
1289
  let allTags = mocks.tags;
338
- let ingest = Ingest.mapFromFilename(filename, allTags);
339
- expect(ingest).toEqual({
1290
+ let ingest = new Ingest({ filename });
1291
+ let info = ingest.mapFromFilename({ allTags });
1292
+ expect(info).toEqual({
340
1293
  selected: {
341
1294
  download: {
342
1295
  tags: {
@@ -360,8 +1313,9 @@ describe("Ingest", () => {
360
1313
  file: { language: "ENG", country: "US", tags: ["sub", "txtd"] }
361
1314
  };
362
1315
  let allTags = mocks.tags;
363
- let ingest = Ingest.mapFromFilename(filename, allTags);
364
- expect(ingest.selected.preview.type).toEqual("sub");
1316
+ let ingest = new Ingest({ filename });
1317
+ let info = ingest.mapFromFilename({ allTags });
1318
+ expect(info.selected.preview.type).toEqual("sub");
365
1319
  });
366
1320
  it("should set preview type=dub based on filename", () => {
367
1321
  let filename = {
@@ -369,8 +1323,9 @@ describe("Ingest", () => {
369
1323
  file: { language: "ENG", country: "US", tags: ["dub", "txtd"] }
370
1324
  };
371
1325
  let allTags = mocks.tags;
372
- let ingest = Ingest.mapFromFilename(filename, allTags);
373
- expect(ingest.selected.preview.type).toEqual("dub");
1326
+ let ingest = new Ingest({ filename });
1327
+ let info = ingest.mapFromFilename({ allTags });
1328
+ expect(info.selected.preview.type).toEqual("dub");
374
1329
  });
375
1330
  });
376
1331
  });