@pixwel/pixwel-sdk 1.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.
- package/.babelrc +3 -0
- package/.editorconfig +36 -0
- package/.vs/slnx.sqlite +0 -0
- package/.vscode/launch.json +0 -0
- package/coverage/clover.xml +7 -0
- package/coverage/coverage-final.json +1 -0
- package/coverage/lcov-report/Ass.js.html +651 -0
- package/coverage/lcov-report/Asset.js.html +129 -0
- package/coverage/lcov-report/Filename.js.html +849 -0
- package/coverage/lcov-report/Ingest.js.html +591 -0
- package/coverage/lcov-report/IngestFile.js.html +87 -0
- package/coverage/lcov-report/IngestFileDrop.js.html +540 -0
- package/coverage/lcov-report/Order.js.html +162 -0
- package/coverage/lcov-report/Srt.js.html +333 -0
- package/coverage/lcov-report/Sub.js.html +177 -0
- package/coverage/lcov-report/TimeFormat.js.html +210 -0
- package/coverage/lcov-report/base.css +223 -0
- package/coverage/lcov-report/block-navigation.js +63 -0
- package/coverage/lcov-report/index.html +84 -0
- package/coverage/lcov-report/lib/Filename.js.html +720 -0
- package/coverage/lcov-report/lib/index.html +97 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +1 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +158 -0
- package/coverage/lcov-report/test/index.html +97 -0
- package/coverage/lcov-report/test/mocks.js.html +423 -0
- package/coverage/lcov.info +0 -0
- package/dist/index.js +61 -0
- package/dist/src/Ass.js +200 -0
- package/dist/src/Asset.js +41 -0
- package/dist/src/Filename.js +252 -0
- package/dist/src/Ingest.js +200 -0
- package/dist/src/IngestFile.js +17 -0
- package/dist/src/IngestFileDrop.js +178 -0
- package/dist/src/Order.js +58 -0
- package/dist/src/Srt.js +102 -0
- package/dist/src/Sub.js +42 -0
- package/dist/src/TimeFormat.js +48 -0
- package/index.js +6 -0
- package/package.json +26 -0
- package/src/Ass.js +195 -0
- package/src/Asset.js +20 -0
- package/src/Filename.js +260 -0
- package/src/Ingest.js +175 -0
- package/src/IngestFile.js +6 -0
- package/src/IngestFileDrop.js +157 -0
- package/src/Order.js +31 -0
- package/src/Srt.js +89 -0
- package/src/Sub.js +37 -0
- package/src/TimeFormat.js +48 -0
- package/src/docs.json +1 -0
- package/test/Ass.spec.js +150 -0
- package/test/Asset.spec.js +24 -0
- package/test/Filename.spec.js +728 -0
- package/test/Ingest.spec.js +95 -0
- package/test/Srt.spec.js +111 -0
- package/test/Sub.spec.js +75 -0
- package/test/TimeFormat.spec.js +84 -0
- package/test/mocks/mediainfo.mock.js +67 -0
- package/test/mocks/mediainfo.png.mock.js +22 -0
- package/test/mocks/mocks.js +118 -0
- package/test/mocks/prores.mock.js +71 -0
- package/test/parse.spec.ts +927 -0
- package/tsconfig.json +11 -0
|
@@ -0,0 +1,728 @@
|
|
|
1
|
+
import Filename from "../lib/Filename";
|
|
2
|
+
let mocks = require("./mocks/mocks");
|
|
3
|
+
|
|
4
|
+
describe("Filename", function() {
|
|
5
|
+
describe("render", function() {
|
|
6
|
+
it("renders tags as an underscore-separated string", function() {
|
|
7
|
+
let asset = {
|
|
8
|
+
name: "Test Asset A",
|
|
9
|
+
slug: "test-asset-a",
|
|
10
|
+
type: "trailer.intl",
|
|
11
|
+
mediaType: "video",
|
|
12
|
+
project: {
|
|
13
|
+
filePrefix: "TESTPROJECT"
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
let options = {
|
|
17
|
+
language: "ENG",
|
|
18
|
+
country: "WW",
|
|
19
|
+
tags: {
|
|
20
|
+
Text: "txtd",
|
|
21
|
+
Extra: ["COMING-SOON", "HOJE"],
|
|
22
|
+
Codec: "PRORES",
|
|
23
|
+
Resolution: "640x480",
|
|
24
|
+
Framerate: "23.98",
|
|
25
|
+
"Frame Mode": "progressive"
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
expect(Filename.render(mocks.tags, mocks.types, asset, options)).toBe(
|
|
29
|
+
"TESTPROJECT_ITR-TEST-ASSET-A_ENG_TXTD_COMING-SOON_HOJE_PRORES_480p2398"
|
|
30
|
+
);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it("displays resolution for images", function () {
|
|
34
|
+
let asset = {
|
|
35
|
+
name: "Test Asset A",
|
|
36
|
+
slug: "test-asset-a",
|
|
37
|
+
type: "trailer.intl",
|
|
38
|
+
mediaType: "video",
|
|
39
|
+
project: {
|
|
40
|
+
filePrefix: "TESTPROJECT"
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
let options = {
|
|
44
|
+
language: "ENG",
|
|
45
|
+
country: "WW",
|
|
46
|
+
tags: {
|
|
47
|
+
Text: 'txtd',
|
|
48
|
+
Resolution: "640x480"
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
expect(Filename.render(mocks.tags, mocks.types, asset, options, 'image')).toBe(
|
|
52
|
+
"TESTPROJECT_ITR-TEST-ASSET-A_ENG_TXTD_640x480"
|
|
53
|
+
);
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it("renders asset names with contractions correctly", function() {
|
|
57
|
+
let asset = {
|
|
58
|
+
name: "Can't Int'l 10",
|
|
59
|
+
slug: "cant-intl-10",
|
|
60
|
+
type: "trailer.intl",
|
|
61
|
+
mediaType: "video",
|
|
62
|
+
project: {
|
|
63
|
+
filePrefix: "TESTPROJECT"
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
let options = {
|
|
67
|
+
language: "ENG",
|
|
68
|
+
tags: {
|
|
69
|
+
Text: "txtd",
|
|
70
|
+
Codec: "prores",
|
|
71
|
+
Resolution: "640x480",
|
|
72
|
+
Framerate: "23.98",
|
|
73
|
+
"Frame Mode": "progressive"
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
expect(Filename.render(mocks.tags, mocks.types, asset, options)).toBe(
|
|
77
|
+
"TESTPROJECT_ITR-CANT-INTL-10_ENG_TXTD_PRORES_480p2398"
|
|
78
|
+
);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it("renders version", function() {
|
|
82
|
+
let asset = {
|
|
83
|
+
name: "Test Asset A",
|
|
84
|
+
slug: "test-asset-a",
|
|
85
|
+
type: "trailer.intl",
|
|
86
|
+
mediaType: "video",
|
|
87
|
+
project: {
|
|
88
|
+
filePrefix: "TESTPROJECT"
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
let options = {
|
|
92
|
+
version: "rev",
|
|
93
|
+
language: "ENG",
|
|
94
|
+
tags: {
|
|
95
|
+
Text: "txtd",
|
|
96
|
+
Codec: "prores",
|
|
97
|
+
Resolution: "640x480",
|
|
98
|
+
Framerate: "23.98",
|
|
99
|
+
"Frame Mode": "progressive"
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
expect(Filename.render(mocks.tags, mocks.types, asset, options)).toBe(
|
|
103
|
+
"TESTPROJECT_ITR-TEST-ASSET-A_ENG_TXTD_REV_PRORES_480p2398"
|
|
104
|
+
);
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
it("throws exception if missing asset.project", function() {
|
|
108
|
+
let asset = {
|
|
109
|
+
name: "Test Asset A",
|
|
110
|
+
slug: "test-asset-a",
|
|
111
|
+
type: "trailer.intl",
|
|
112
|
+
mediaType: "video"
|
|
113
|
+
// project: {
|
|
114
|
+
// filePrefix: 'TESTPROJECT'
|
|
115
|
+
// }
|
|
116
|
+
};
|
|
117
|
+
let options = {
|
|
118
|
+
language: "ENG"
|
|
119
|
+
};
|
|
120
|
+
expect(() => {
|
|
121
|
+
Filename.render(mocks.tags, mocks.types, asset, options);
|
|
122
|
+
}).toThrow("missing asset.project");
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
it("throws exception if missing asset.length (film-clip)", function() {
|
|
126
|
+
let asset = {
|
|
127
|
+
name: "Test Asset A",
|
|
128
|
+
slug: "test-asset-a",
|
|
129
|
+
type: "film-clip",
|
|
130
|
+
mediaType: "video",
|
|
131
|
+
project: {
|
|
132
|
+
filePrefix: "TESTPROJECT"
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
let options = {
|
|
136
|
+
language: "ENG"
|
|
137
|
+
};
|
|
138
|
+
expect(() => {
|
|
139
|
+
Filename.render(mocks.tags, mocks.types, asset, options);
|
|
140
|
+
}).toThrow("missing asset.length");
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
// it('throws exception if SubDub and Text is both supplied', function() {
|
|
144
|
+
// let asset = {
|
|
145
|
+
// name: 'Test Asset A',
|
|
146
|
+
// slug: 'test-asset-a',
|
|
147
|
+
// type: 'trailer.intl',
|
|
148
|
+
// mediaType: 'video',
|
|
149
|
+
// project: {
|
|
150
|
+
// filePrefix: 'TESTPROJECT'
|
|
151
|
+
// }
|
|
152
|
+
// };
|
|
153
|
+
// let options = {
|
|
154
|
+
// language: 'ENG',
|
|
155
|
+
// tags: {
|
|
156
|
+
// Codec: 'prores',
|
|
157
|
+
// Resolution: '640x480',
|
|
158
|
+
// Framerate: '23.98',
|
|
159
|
+
// "Frame Mode": 'progressive',
|
|
160
|
+
// SubDub: {
|
|
161
|
+
// dub: true
|
|
162
|
+
// },
|
|
163
|
+
// Text: 'txtd'
|
|
164
|
+
// }
|
|
165
|
+
// };
|
|
166
|
+
// expect(() => {
|
|
167
|
+
// Filename.render(mocks.tags, mocks.types, asset, options)
|
|
168
|
+
// }).toThrow('conflicting options supplied: SubDub and Text');
|
|
169
|
+
// });
|
|
170
|
+
|
|
171
|
+
it("throws exception if both SubDub and Text is not supplied", function() {
|
|
172
|
+
let asset = {
|
|
173
|
+
name: "Test Asset A",
|
|
174
|
+
slug: "test-asset-a",
|
|
175
|
+
type: "trailer.intl",
|
|
176
|
+
mediaType: "video",
|
|
177
|
+
project: {
|
|
178
|
+
filePrefix: "TESTPROJECT"
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
let options = {
|
|
182
|
+
language: "ENG",
|
|
183
|
+
tags: {
|
|
184
|
+
Codec: "prores",
|
|
185
|
+
Resolution: "640x480",
|
|
186
|
+
Framerate: "23.98",
|
|
187
|
+
"Frame Mode": "progressive"
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
expect(() => {
|
|
191
|
+
Filename.render(mocks.tags, mocks.types, asset, options);
|
|
192
|
+
}).toThrow("missing options.tags.Text or options.tags.SubDub");
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
// it("throws exception if mediaType=video is missing Codec", function() {
|
|
196
|
+
// let asset = {
|
|
197
|
+
// name: "Test Asset A",
|
|
198
|
+
// slug: "test-asset-a",
|
|
199
|
+
// type: "trailer.intl",
|
|
200
|
+
// mediaType: "video",
|
|
201
|
+
// project: {
|
|
202
|
+
// filePrefix: "TESTPROJECT"
|
|
203
|
+
// }
|
|
204
|
+
// };
|
|
205
|
+
// let options = {
|
|
206
|
+
// language: "ENG",
|
|
207
|
+
// tags: {
|
|
208
|
+
// // Codec: 'prores',
|
|
209
|
+
// Text: "txtd",
|
|
210
|
+
// Resolution: "640x480",
|
|
211
|
+
// Framerate: "23.98",
|
|
212
|
+
// "Frame Mode": "progressive"
|
|
213
|
+
// }
|
|
214
|
+
// };
|
|
215
|
+
// expect(() => {
|
|
216
|
+
// Filename.render(mocks.tags, mocks.types, asset, options);
|
|
217
|
+
// }).toThrow("missing options.tags.Codec");
|
|
218
|
+
// });
|
|
219
|
+
|
|
220
|
+
it("throws exception if missing Resolution", function() {
|
|
221
|
+
let asset = {
|
|
222
|
+
name: "Test Asset A",
|
|
223
|
+
slug: "test-asset-a",
|
|
224
|
+
type: "trailer.intl",
|
|
225
|
+
mediaType: "video",
|
|
226
|
+
project: {
|
|
227
|
+
filePrefix: "TESTPROJECT"
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
let options = {
|
|
231
|
+
language: "ENG",
|
|
232
|
+
tags: {
|
|
233
|
+
Codec: "prores",
|
|
234
|
+
Text: "txtd",
|
|
235
|
+
// Resolution: '640x480',
|
|
236
|
+
Framerate: "23.98",
|
|
237
|
+
"Frame Mode": "progressive"
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
expect(() => {
|
|
241
|
+
Filename.render(mocks.tags, mocks.types, asset, options, 'video');
|
|
242
|
+
}).toThrow("missing options.tags.Resolution");
|
|
243
|
+
});
|
|
244
|
+
|
|
245
|
+
it("throws exception if missing Framerate", function() {
|
|
246
|
+
let asset = {
|
|
247
|
+
name: "Test Asset A",
|
|
248
|
+
slug: "test-asset-a",
|
|
249
|
+
type: "trailer.intl",
|
|
250
|
+
mediaType: "video",
|
|
251
|
+
project: {
|
|
252
|
+
filePrefix: "TESTPROJECT"
|
|
253
|
+
}
|
|
254
|
+
};
|
|
255
|
+
let options = {
|
|
256
|
+
language: "ENG",
|
|
257
|
+
tags: {
|
|
258
|
+
Codec: "prores",
|
|
259
|
+
Text: "txtd",
|
|
260
|
+
Resolution: "640x480",
|
|
261
|
+
// Framerate: '23.98',
|
|
262
|
+
"Frame Mode": "progressive"
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
expect(() => {
|
|
266
|
+
Filename.render(mocks.tags, mocks.types, asset, options, 'video');
|
|
267
|
+
}).toThrow("missing options.tags.Framerate");
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
it("throws exception if missing Frame Mode", function() {
|
|
271
|
+
let asset = {
|
|
272
|
+
name: "Test Asset A",
|
|
273
|
+
slug: "test-asset-a",
|
|
274
|
+
type: "trailer.intl",
|
|
275
|
+
mediaType: "video",
|
|
276
|
+
project: {
|
|
277
|
+
filePrefix: "TESTPROJECT"
|
|
278
|
+
}
|
|
279
|
+
};
|
|
280
|
+
let options = {
|
|
281
|
+
language: "ENG",
|
|
282
|
+
tags: {
|
|
283
|
+
Codec: "prores",
|
|
284
|
+
Text: "txtd",
|
|
285
|
+
Resolution: "640x480",
|
|
286
|
+
Framerate: "23.98"
|
|
287
|
+
// "Frame Mode": 'progressive'
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
expect(() => {
|
|
291
|
+
Filename.render(mocks.tags, mocks.types, asset, options, 'video');
|
|
292
|
+
}).toThrow("missing options.tags[Frame Mode]");
|
|
293
|
+
});
|
|
294
|
+
|
|
295
|
+
it("throws exception if missing asset.length (featurette)", function() {
|
|
296
|
+
let asset = {
|
|
297
|
+
name: "Test Asset A",
|
|
298
|
+
slug: "test-asset-a",
|
|
299
|
+
type: "featurette",
|
|
300
|
+
mediaType: "video",
|
|
301
|
+
project: {
|
|
302
|
+
filePrefix: "TESTPROJECT"
|
|
303
|
+
}
|
|
304
|
+
};
|
|
305
|
+
let options = {
|
|
306
|
+
language: "ENG"
|
|
307
|
+
};
|
|
308
|
+
expect(() => {
|
|
309
|
+
Filename.render(mocks.tags, mocks.types, asset, options);
|
|
310
|
+
}).toThrow("missing asset.length");
|
|
311
|
+
});
|
|
312
|
+
|
|
313
|
+
it("throws exception if missing asset.project.filePrefix", function() {
|
|
314
|
+
let asset = {
|
|
315
|
+
name: "Test Asset A",
|
|
316
|
+
slug: "test-asset-a",
|
|
317
|
+
type: "trailer.intl",
|
|
318
|
+
project: {
|
|
319
|
+
// filePrefix: 'TESTPROJECT'
|
|
320
|
+
}
|
|
321
|
+
};
|
|
322
|
+
let options = {
|
|
323
|
+
language: "ENG"
|
|
324
|
+
};
|
|
325
|
+
expect(() => {
|
|
326
|
+
Filename.render(mocks.tags, mocks.types, asset, options);
|
|
327
|
+
}).toThrow("missing asset.project.filePrefix");
|
|
328
|
+
});
|
|
329
|
+
|
|
330
|
+
it("throws exception if missing asset.name", function() {
|
|
331
|
+
let asset = {
|
|
332
|
+
// name: 'Test Asset A',
|
|
333
|
+
slug: "test-asset-a",
|
|
334
|
+
type: "trailer.intl",
|
|
335
|
+
project: {
|
|
336
|
+
filePrefix: "TESTPROJECT"
|
|
337
|
+
}
|
|
338
|
+
};
|
|
339
|
+
let options = {
|
|
340
|
+
language: "ENG"
|
|
341
|
+
};
|
|
342
|
+
expect(() => {
|
|
343
|
+
Filename.render(mocks.tags, mocks.types, asset, options);
|
|
344
|
+
}).toThrow("missing asset.name");
|
|
345
|
+
});
|
|
346
|
+
|
|
347
|
+
it("throws exception if missing asset.type", function() {
|
|
348
|
+
let asset = {
|
|
349
|
+
name: "Test Asset A",
|
|
350
|
+
slug: "test-asset-a",
|
|
351
|
+
// type: 'trailer.intl',
|
|
352
|
+
project: {
|
|
353
|
+
filePrefix: "TESTPROJECT"
|
|
354
|
+
}
|
|
355
|
+
};
|
|
356
|
+
let options = {
|
|
357
|
+
language: "ENG"
|
|
358
|
+
};
|
|
359
|
+
expect(() => {
|
|
360
|
+
Filename.render(mocks.tags, mocks.types, asset, options);
|
|
361
|
+
}).toThrow("missing asset.type");
|
|
362
|
+
});
|
|
363
|
+
|
|
364
|
+
it("throws exception if missing options.language", function() {
|
|
365
|
+
let asset = {
|
|
366
|
+
name: "Test Asset A",
|
|
367
|
+
slug: "test-asset-a",
|
|
368
|
+
type: "trailer.intl",
|
|
369
|
+
mediaType: "video",
|
|
370
|
+
project: {
|
|
371
|
+
filePrefix: "TESTPROJECT"
|
|
372
|
+
}
|
|
373
|
+
};
|
|
374
|
+
expect(() => {
|
|
375
|
+
Filename.render(mocks.tags, mocks.types, asset);
|
|
376
|
+
}).toThrow("missing options.language");
|
|
377
|
+
});
|
|
378
|
+
|
|
379
|
+
it("throws exception if missing options.tags.Text", function() {
|
|
380
|
+
let asset = {
|
|
381
|
+
name: "Test Asset A",
|
|
382
|
+
slug: "test-asset-a",
|
|
383
|
+
type: "trailer.intl",
|
|
384
|
+
mediaType: "video",
|
|
385
|
+
project: {
|
|
386
|
+
filePrefix: "TESTPROJECT"
|
|
387
|
+
}
|
|
388
|
+
};
|
|
389
|
+
let options = {
|
|
390
|
+
tags: {
|
|
391
|
+
Text: ""
|
|
392
|
+
}
|
|
393
|
+
};
|
|
394
|
+
expect(() => {
|
|
395
|
+
Filename.render(mocks.tags, mocks.types, asset);
|
|
396
|
+
}).toThrow("missing options.language");
|
|
397
|
+
});
|
|
398
|
+
|
|
399
|
+
it("renders country and territory", function() {
|
|
400
|
+
let asset = {
|
|
401
|
+
name: "Test Asset A",
|
|
402
|
+
slug: "test-asset-a",
|
|
403
|
+
type: "trailer.intl",
|
|
404
|
+
mediaType: "video",
|
|
405
|
+
project: {
|
|
406
|
+
filePrefix: "TESTPROJECT"
|
|
407
|
+
}
|
|
408
|
+
};
|
|
409
|
+
let options = {
|
|
410
|
+
language: "ENG",
|
|
411
|
+
country: "US",
|
|
412
|
+
tags: {
|
|
413
|
+
Text: "txtd",
|
|
414
|
+
Codec: "prores",
|
|
415
|
+
Resolution: "640x480",
|
|
416
|
+
Framerate: "23.98",
|
|
417
|
+
"Frame Mode": "progressive"
|
|
418
|
+
}
|
|
419
|
+
};
|
|
420
|
+
expect(Filename.render(mocks.tags, mocks.types, asset, options)).toBe(
|
|
421
|
+
"TESTPROJECT_ITR-TEST-ASSET-A_ENG-US_TXTD_PRORES_480p2398"
|
|
422
|
+
);
|
|
423
|
+
});
|
|
424
|
+
|
|
425
|
+
it("renders domestic trailer type with custom name", function() {
|
|
426
|
+
let asset = {
|
|
427
|
+
name: "Test Asset A",
|
|
428
|
+
slug: "test-asset-a",
|
|
429
|
+
type: "trailer.us",
|
|
430
|
+
mediaType: "video",
|
|
431
|
+
project: {
|
|
432
|
+
filePrefix: "TESTPROJECT"
|
|
433
|
+
}
|
|
434
|
+
};
|
|
435
|
+
let options = {
|
|
436
|
+
language: "ENG",
|
|
437
|
+
tags: {
|
|
438
|
+
Text: "txtd",
|
|
439
|
+
Codec: "prores",
|
|
440
|
+
Resolution: "640x480",
|
|
441
|
+
Framerate: "23.98",
|
|
442
|
+
"Frame Mode": "progressive"
|
|
443
|
+
}
|
|
444
|
+
};
|
|
445
|
+
expect(Filename.render(mocks.tags, mocks.types, asset, options)).toBe(
|
|
446
|
+
"TESTPROJECT_DTR-TEST-ASSET-A_ENG_TXTD_PRORES_480p2398"
|
|
447
|
+
);
|
|
448
|
+
});
|
|
449
|
+
|
|
450
|
+
it("renders generic trailer type", function() {
|
|
451
|
+
let asset = {
|
|
452
|
+
name: "Generic Trailer",
|
|
453
|
+
slug: "generic-trailer",
|
|
454
|
+
type: "trailer",
|
|
455
|
+
mediaType: "video",
|
|
456
|
+
project: {
|
|
457
|
+
filePrefix: "TESTPROJECT"
|
|
458
|
+
}
|
|
459
|
+
};
|
|
460
|
+
let options = {
|
|
461
|
+
language: "ENG",
|
|
462
|
+
tags: {
|
|
463
|
+
Text: "txtd",
|
|
464
|
+
Codec: "prores",
|
|
465
|
+
Resolution: "640x480",
|
|
466
|
+
Framerate: "23.98",
|
|
467
|
+
"Frame Mode": "progressive"
|
|
468
|
+
}
|
|
469
|
+
};
|
|
470
|
+
expect(Filename.render(mocks.tags, mocks.types, asset, options)).toBe(
|
|
471
|
+
"TESTPROJECT_TR-GENERIC-TRAILER_ENG_TXTD_PRORES_480p2398"
|
|
472
|
+
);
|
|
473
|
+
});
|
|
474
|
+
|
|
475
|
+
it("renders non-trailer types", function() {
|
|
476
|
+
let asset = {
|
|
477
|
+
name: "Cool Spot 15",
|
|
478
|
+
slug: "cool-spot-15",
|
|
479
|
+
type: "tv-spot.intl",
|
|
480
|
+
mediaType: "video",
|
|
481
|
+
project: {
|
|
482
|
+
filePrefix: "TESTPROJECT"
|
|
483
|
+
}
|
|
484
|
+
};
|
|
485
|
+
let options = {
|
|
486
|
+
language: "ENG",
|
|
487
|
+
tags: {
|
|
488
|
+
Text: "txtd",
|
|
489
|
+
Codec: "prores",
|
|
490
|
+
Resolution: "640x480",
|
|
491
|
+
Framerate: "23.98",
|
|
492
|
+
"Frame Mode": "progressive"
|
|
493
|
+
}
|
|
494
|
+
};
|
|
495
|
+
expect(Filename.render(mocks.tags, mocks.types, asset, options)).toBe(
|
|
496
|
+
"TESTPROJECT_TV-SPOT-INTL_COOL-SPOT-15_ENG_TXTD_PRORES_480p2398"
|
|
497
|
+
);
|
|
498
|
+
});
|
|
499
|
+
|
|
500
|
+
it("throws an error if asset type does not exist", function() {
|
|
501
|
+
let asset = {
|
|
502
|
+
name: "Cool Spot 15",
|
|
503
|
+
slug: "cool-spot-15",
|
|
504
|
+
type: "doesnt-exist",
|
|
505
|
+
mediaType: "video",
|
|
506
|
+
project: {
|
|
507
|
+
filePrefix: "TESTPROJECT"
|
|
508
|
+
}
|
|
509
|
+
};
|
|
510
|
+
let options = {
|
|
511
|
+
language: "ENG",
|
|
512
|
+
tags: {
|
|
513
|
+
Text: "txtd",
|
|
514
|
+
Codec: "prores",
|
|
515
|
+
Resolution: "640x480",
|
|
516
|
+
Framerate: "23.98",
|
|
517
|
+
"Frame Mode": "progressive"
|
|
518
|
+
}
|
|
519
|
+
};
|
|
520
|
+
expect(function() {
|
|
521
|
+
Filename.render(mocks.tags, mocks.types, asset, options);
|
|
522
|
+
}).toThrow('Asset type "doesnt-exist" could not be found');
|
|
523
|
+
});
|
|
524
|
+
|
|
525
|
+
it("contains running time from film clips", function() {
|
|
526
|
+
let asset = {
|
|
527
|
+
name: "Ultra Violence",
|
|
528
|
+
slug: "ultra-violence",
|
|
529
|
+
type: "film-clip.intl",
|
|
530
|
+
length: 63,
|
|
531
|
+
mediaType: "video",
|
|
532
|
+
project: {
|
|
533
|
+
filePrefix: "TESTPROJECT"
|
|
534
|
+
}
|
|
535
|
+
};
|
|
536
|
+
let options = {
|
|
537
|
+
language: "ENG",
|
|
538
|
+
tags: {
|
|
539
|
+
Text: "txtd",
|
|
540
|
+
Codec: "prores",
|
|
541
|
+
Resolution: "640x480",
|
|
542
|
+
Framerate: "23.98",
|
|
543
|
+
"Frame Mode": "progressive"
|
|
544
|
+
}
|
|
545
|
+
};
|
|
546
|
+
expect(Filename.render(mocks.tags, mocks.types, asset, options)).toBe(
|
|
547
|
+
"TESTPROJECT_FILM-CLIP-INTL_ULTRA-VIOLENCE_1MIN3SEC_ENG_TXTD_PRORES_480p2398"
|
|
548
|
+
);
|
|
549
|
+
|
|
550
|
+
asset.length = 60;
|
|
551
|
+
|
|
552
|
+
expect(Filename.render(mocks.tags, mocks.types, asset, options)).toBe(
|
|
553
|
+
"TESTPROJECT_FILM-CLIP-INTL_ULTRA-VIOLENCE_1MIN_ENG_TXTD_PRORES_480p2398"
|
|
554
|
+
);
|
|
555
|
+
|
|
556
|
+
asset.length = 45;
|
|
557
|
+
|
|
558
|
+
expect(Filename.render(mocks.tags, mocks.types, asset, options)).toBe(
|
|
559
|
+
"TESTPROJECT_FILM-CLIP-INTL_ULTRA-VIOLENCE_45SEC_ENG_TXTD_PRORES_480p2398"
|
|
560
|
+
);
|
|
561
|
+
});
|
|
562
|
+
|
|
563
|
+
it("renders `set` tags when all tags in `set` are specified but retains `codec`", function() {
|
|
564
|
+
let asset = {
|
|
565
|
+
name: "Test Asset A",
|
|
566
|
+
slug: "test-asset-a",
|
|
567
|
+
type: "trailer.intl",
|
|
568
|
+
mediaType: "video",
|
|
569
|
+
project: {
|
|
570
|
+
filePrefix: "TESTPROJECT"
|
|
571
|
+
}
|
|
572
|
+
};
|
|
573
|
+
let options = {
|
|
574
|
+
language: "ENG",
|
|
575
|
+
tags: {
|
|
576
|
+
Codec: "h264",
|
|
577
|
+
Resolution: "1920x1080",
|
|
578
|
+
Usage: "online",
|
|
579
|
+
Text: "txtd",
|
|
580
|
+
Framerate: "23.98",
|
|
581
|
+
"Frame Mode": "progressive"
|
|
582
|
+
}
|
|
583
|
+
};
|
|
584
|
+
expect(Filename.render(mocks.tags, mocks.types, asset, options)).toBe(
|
|
585
|
+
"TESTPROJECT_ITR-TEST-ASSET-A_ENG_TXTD_H264_1080p2398"
|
|
586
|
+
);
|
|
587
|
+
});
|
|
588
|
+
|
|
589
|
+
it("includes `Frame mode` and `Framerate`", function() {
|
|
590
|
+
let asset = {
|
|
591
|
+
name: "Test Asset A",
|
|
592
|
+
slug: "test-asset-a",
|
|
593
|
+
type: "trailer.intl",
|
|
594
|
+
mediaType: "video",
|
|
595
|
+
project: {
|
|
596
|
+
filePrefix: "TESTPROJECT"
|
|
597
|
+
}
|
|
598
|
+
};
|
|
599
|
+
let options = {
|
|
600
|
+
language: "ENG",
|
|
601
|
+
country: "WW",
|
|
602
|
+
tags: {
|
|
603
|
+
Resolution: "1920x1080",
|
|
604
|
+
"Frame Mode": "progressive",
|
|
605
|
+
Framerate: "29.97",
|
|
606
|
+
Text: "txtd",
|
|
607
|
+
Extra: ["COMING-SOON", "HOJE"],
|
|
608
|
+
Codec: "PRORES"
|
|
609
|
+
}
|
|
610
|
+
};
|
|
611
|
+
expect(Filename.render(mocks.tags, mocks.types, asset, options)).toBe(
|
|
612
|
+
"TESTPROJECT_ITR-TEST-ASSET-A_ENG_TXTD_COMING-SOON_HOJE_PRORES_1080p2997"
|
|
613
|
+
);
|
|
614
|
+
});
|
|
615
|
+
|
|
616
|
+
it("does not redundantly include tag info", function() {
|
|
617
|
+
let 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
|
+
let options = {
|
|
627
|
+
language: "ENG",
|
|
628
|
+
country: "WW",
|
|
629
|
+
tags: {
|
|
630
|
+
Resolution: "1080i",
|
|
631
|
+
"Frame Mode": "progressive",
|
|
632
|
+
Framerate: "29.97",
|
|
633
|
+
Text: "txtd",
|
|
634
|
+
Extra: ["COMING-SOON", "HOJE"],
|
|
635
|
+
Codec: "PRORES"
|
|
636
|
+
}
|
|
637
|
+
};
|
|
638
|
+
expect(Filename.render(mocks.tags, mocks.types, asset, options)).toBe(
|
|
639
|
+
"TESTPROJECT_ITR-TEST-ASSET-A_ENG_TXTD_COMING-SOON_HOJE_PRORES_1080i2997"
|
|
640
|
+
);
|
|
641
|
+
|
|
642
|
+
options = {
|
|
643
|
+
language: "ENG",
|
|
644
|
+
country: "WW",
|
|
645
|
+
tags: {
|
|
646
|
+
Usage: "online",
|
|
647
|
+
Aspect: "16:9",
|
|
648
|
+
Codec: "h264",
|
|
649
|
+
Resolution: "1920x1080",
|
|
650
|
+
"Frame Mode": "progressive",
|
|
651
|
+
Framerate: "29.97",
|
|
652
|
+
Text: "txtd",
|
|
653
|
+
Extra: ["COMING-SOON", "HOJE"]
|
|
654
|
+
}
|
|
655
|
+
};
|
|
656
|
+
|
|
657
|
+
expect(Filename.render(mocks.tags, mocks.types, asset, options)).toBe(
|
|
658
|
+
"TESTPROJECT_ITR-TEST-ASSET-A_ENG_TXTD_COMING-SOON_HOJE_H264_1080p2997"
|
|
659
|
+
);
|
|
660
|
+
});
|
|
661
|
+
|
|
662
|
+
it("converts asset names containing `int'l` to `intl`", function() {
|
|
663
|
+
let asset = {
|
|
664
|
+
type: "tv-spot.intl",
|
|
665
|
+
name: "Test Asset Int'l 10",
|
|
666
|
+
slug: "test-asset-intl-10",
|
|
667
|
+
mediaType: "video",
|
|
668
|
+
project: {
|
|
669
|
+
filePrefix: "TESTPROJECT"
|
|
670
|
+
}
|
|
671
|
+
};
|
|
672
|
+
let options = {
|
|
673
|
+
language: "ENG",
|
|
674
|
+
country: "WW",
|
|
675
|
+
tags: {
|
|
676
|
+
Text: "txtd",
|
|
677
|
+
Extra: ["COMING-SOON", "HOJE"],
|
|
678
|
+
Codec: "prores",
|
|
679
|
+
Resolution: "640x480",
|
|
680
|
+
Framerate: "23.98",
|
|
681
|
+
"Frame Mode": "progressive"
|
|
682
|
+
}
|
|
683
|
+
};
|
|
684
|
+
expect(Filename.render(mocks.tags, mocks.types, asset, options)).toBe(
|
|
685
|
+
"TESTPROJECT_TV-SPOT-INTL_TEST-ASSET-INTL-10_ENG_TXTD_COMING-SOON_HOJE_PRORES_480p2398"
|
|
686
|
+
);
|
|
687
|
+
});
|
|
688
|
+
|
|
689
|
+
it("renders sub and dub tags", function() {
|
|
690
|
+
let asset = {
|
|
691
|
+
type: "tv-spot.intl",
|
|
692
|
+
name: "Test Asset Int'l 10",
|
|
693
|
+
slug: "test-asset-int-l-10",
|
|
694
|
+
mediaType: "video",
|
|
695
|
+
project: {
|
|
696
|
+
filePrefix: "TESTPROJECT"
|
|
697
|
+
}
|
|
698
|
+
};
|
|
699
|
+
let options = {
|
|
700
|
+
language: "ENG",
|
|
701
|
+
country: "WW",
|
|
702
|
+
tags: {
|
|
703
|
+
SubDub: {
|
|
704
|
+
sub: true,
|
|
705
|
+
dub: false
|
|
706
|
+
},
|
|
707
|
+
Extra: ["COMING-SOON", "HOJE"],
|
|
708
|
+
Codec: "PRORES",
|
|
709
|
+
Resolution: "640x480",
|
|
710
|
+
Framerate: "23.98",
|
|
711
|
+
"Frame Mode": "progressive"
|
|
712
|
+
}
|
|
713
|
+
};
|
|
714
|
+
expect(Filename.render(mocks.tags, mocks.types, asset, options)).toBe(
|
|
715
|
+
"TESTPROJECT_TV-SPOT-INTL_TEST-ASSET-INTL-10_ENG_SUB_COMING-SOON_HOJE_PRORES_480p2398"
|
|
716
|
+
);
|
|
717
|
+
|
|
718
|
+
Object.assign(options.tags.SubDub, {
|
|
719
|
+
sub: true,
|
|
720
|
+
dub: true
|
|
721
|
+
});
|
|
722
|
+
|
|
723
|
+
expect(Filename.render(mocks.tags, mocks.types, asset, options)).toBe(
|
|
724
|
+
"TESTPROJECT_TV-SPOT-INTL_TEST-ASSET-INTL-10_ENG_SUB_DUB_COMING-SOON_HOJE_PRORES_480p2398"
|
|
725
|
+
);
|
|
726
|
+
});
|
|
727
|
+
});
|
|
728
|
+
});
|