@pixwel/pixwel-sdk 1.1.7 → 1.1.9
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/coverage/clover.xml +469 -3
- package/coverage/coverage-final.json +10 -1
- package/coverage/lcov-report/Ass.js.html +1 -1
- package/coverage/lcov-report/Asset.js.html +25 -25
- package/coverage/lcov-report/Filename.js.html +209 -242
- package/coverage/lcov-report/Ingest.js.html +578 -116
- package/coverage/lcov-report/IngestFile.js.html +1 -1
- package/coverage/lcov-report/IngestFileDrop.js.html +3 -3
- package/coverage/lcov-report/Order.js.html +62 -26
- package/coverage/lcov-report/Srt.js.html +1 -1
- package/coverage/lcov-report/Sub.js.html +1 -1
- package/coverage/lcov-report/TimeFormat.js.html +1 -1
- package/coverage/lcov-report/index.html +128 -11
- package/coverage/lcov.info +967 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +0 -9
- package/dist/src/Filename.js +13 -20
- package/dist/src/Ingest.js +241 -88
- package/dist/src/Order.js +12 -0
- package/index.js +0 -1
- package/package.json +32 -26
- package/src/Filename.js +13 -24
- package/src/Ingest.js +241 -91
- package/src/Order.js +13 -1
- package/test/Filename.spec.js +74 -38
- package/test/Ingest.spec.js +306 -68
- package/test/mocks/mediainfo.mock.js +89 -66
- package/test/mocks/mocks.js +5 -1
- package/test/mocks/prores.mock.js +119 -70
- package/.vscode/launch.json +0 -0
- package/dist/src/IngestFileDrop.js +0 -178
- package/src/IngestFileDrop.js +0 -157
- package/src/docs.json +0 -1
package/test/Filename.spec.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import Filename from "../src/Filename";
|
|
2
2
|
let mocks = require("./mocks/mocks");
|
|
3
3
|
|
|
4
|
-
describe("Filename",
|
|
5
|
-
describe("render",
|
|
4
|
+
describe("Filename", () => {
|
|
5
|
+
describe("render", () => {
|
|
6
6
|
it("renders tags as an underscore-separated string", function() {
|
|
7
7
|
let asset = {
|
|
8
8
|
name: "Test Asset A",
|
|
@@ -30,7 +30,61 @@ describe("Filename", function() {
|
|
|
30
30
|
);
|
|
31
31
|
});
|
|
32
32
|
|
|
33
|
-
it("
|
|
33
|
+
it("renders language and country", 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: "US",
|
|
46
|
+
tags: {
|
|
47
|
+
Text: "txtd",
|
|
48
|
+
Extra: ["COMING-SOON", "HOJE"],
|
|
49
|
+
Codec: "PRORES",
|
|
50
|
+
Resolution: "640x480",
|
|
51
|
+
Framerate: "23.98",
|
|
52
|
+
"Frame Mode": "progressive"
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
expect(Filename.render(mocks.tags, mocks.types, asset, options)).toBe(
|
|
56
|
+
"TESTPROJECT_ITR-TEST-ASSET-A_ENG-US_TXTD_COMING-SOON_HOJE_PRORES_480p2398"
|
|
57
|
+
);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it("renders language only for dual-language codes", function () {
|
|
61
|
+
let asset = {
|
|
62
|
+
name: "Test Asset A",
|
|
63
|
+
slug: "test-asset-a",
|
|
64
|
+
type: "trailer.intl",
|
|
65
|
+
mediaType: "video",
|
|
66
|
+
project: {
|
|
67
|
+
filePrefix: "TESTPROJECT"
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
let options = {
|
|
71
|
+
language: "PFR-FLE",
|
|
72
|
+
country: "US",
|
|
73
|
+
tags: {
|
|
74
|
+
Text: "txtd",
|
|
75
|
+
Extra: ["COMING-SOON", "HOJE"],
|
|
76
|
+
Codec: "PRORES",
|
|
77
|
+
Resolution: "640x480",
|
|
78
|
+
Framerate: "23.98",
|
|
79
|
+
"Frame Mode": "progressive"
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
expect(Filename.render(mocks.tags, mocks.types, asset, options)).toBe(
|
|
83
|
+
"TESTPROJECT_ITR-TEST-ASSET-A_PFR-FLE_TXTD_COMING-SOON_HOJE_PRORES_480p2398"
|
|
84
|
+
);
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
it("displays resolution for images", function() {
|
|
34
88
|
let asset = {
|
|
35
89
|
name: "Test Asset A",
|
|
36
90
|
slug: "test-asset-a",
|
|
@@ -44,13 +98,13 @@ describe("Filename", function() {
|
|
|
44
98
|
language: "ENG",
|
|
45
99
|
country: "WW",
|
|
46
100
|
tags: {
|
|
47
|
-
Text:
|
|
101
|
+
Text: "txtd",
|
|
48
102
|
Resolution: "640x480"
|
|
49
103
|
}
|
|
50
104
|
};
|
|
51
|
-
expect(
|
|
52
|
-
"
|
|
53
|
-
);
|
|
105
|
+
expect(
|
|
106
|
+
Filename.render(mocks.tags, mocks.types, asset, options, "image")
|
|
107
|
+
).toBe("TESTPROJECT_ITR-TEST-ASSET-A_ENG_TXTD_640x480");
|
|
54
108
|
});
|
|
55
109
|
|
|
56
110
|
it("renders asset names with contractions correctly", function() {
|
|
@@ -122,7 +176,7 @@ describe("Filename", function() {
|
|
|
122
176
|
}).toThrow("missing asset.project");
|
|
123
177
|
});
|
|
124
178
|
|
|
125
|
-
|
|
179
|
+
xit("throws exception if missing asset.length (film-clip)", function() {
|
|
126
180
|
let asset = {
|
|
127
181
|
name: "Test Asset A",
|
|
128
182
|
slug: "test-asset-a",
|
|
@@ -133,7 +187,10 @@ describe("Filename", function() {
|
|
|
133
187
|
}
|
|
134
188
|
};
|
|
135
189
|
let options = {
|
|
136
|
-
language: "ENG"
|
|
190
|
+
language: "ENG",
|
|
191
|
+
tags: {
|
|
192
|
+
Text: "txtd"
|
|
193
|
+
}
|
|
137
194
|
};
|
|
138
195
|
expect(() => {
|
|
139
196
|
Filename.render(mocks.tags, mocks.types, asset, options);
|
|
@@ -168,30 +225,6 @@ describe("Filename", function() {
|
|
|
168
225
|
// }).toThrow('conflicting options supplied: SubDub and Text');
|
|
169
226
|
// });
|
|
170
227
|
|
|
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
228
|
// it("throws exception if mediaType=video is missing Codec", function() {
|
|
196
229
|
// let asset = {
|
|
197
230
|
// name: "Test Asset A",
|
|
@@ -238,7 +271,7 @@ describe("Filename", function() {
|
|
|
238
271
|
}
|
|
239
272
|
};
|
|
240
273
|
expect(() => {
|
|
241
|
-
Filename.render(mocks.tags, mocks.types, asset, options,
|
|
274
|
+
Filename.render(mocks.tags, mocks.types, asset, options, "video");
|
|
242
275
|
}).toThrow("missing options.tags.Resolution");
|
|
243
276
|
});
|
|
244
277
|
|
|
@@ -263,7 +296,7 @@ describe("Filename", function() {
|
|
|
263
296
|
}
|
|
264
297
|
};
|
|
265
298
|
expect(() => {
|
|
266
|
-
Filename.render(mocks.tags, mocks.types, asset, options,
|
|
299
|
+
Filename.render(mocks.tags, mocks.types, asset, options, "video");
|
|
267
300
|
}).toThrow("missing options.tags.Framerate");
|
|
268
301
|
});
|
|
269
302
|
|
|
@@ -288,11 +321,11 @@ describe("Filename", function() {
|
|
|
288
321
|
}
|
|
289
322
|
};
|
|
290
323
|
expect(() => {
|
|
291
|
-
Filename.render(mocks.tags, mocks.types, asset, options,
|
|
324
|
+
Filename.render(mocks.tags, mocks.types, asset, options, "video");
|
|
292
325
|
}).toThrow("missing options.tags[Frame Mode]");
|
|
293
326
|
});
|
|
294
327
|
|
|
295
|
-
|
|
328
|
+
xit("throws exception if missing asset.length (featurette)", function() {
|
|
296
329
|
let asset = {
|
|
297
330
|
name: "Test Asset A",
|
|
298
331
|
slug: "test-asset-a",
|
|
@@ -303,7 +336,10 @@ describe("Filename", function() {
|
|
|
303
336
|
}
|
|
304
337
|
};
|
|
305
338
|
let options = {
|
|
306
|
-
language: "ENG"
|
|
339
|
+
language: "ENG",
|
|
340
|
+
tags: {
|
|
341
|
+
Text: "txtd"
|
|
342
|
+
}
|
|
307
343
|
};
|
|
308
344
|
expect(() => {
|
|
309
345
|
Filename.render(mocks.tags, mocks.types, asset, options);
|
package/test/Ingest.spec.js
CHANGED
|
@@ -1,112 +1,350 @@
|
|
|
1
1
|
import Ingest from "../src/Ingest";
|
|
2
|
+
import Order from "../src/Order";
|
|
2
3
|
|
|
3
4
|
import mock from "./mocks/mediainfo.mock";
|
|
4
5
|
import proresMock from "./mocks/prores.mock";
|
|
5
6
|
import pngMock from "./mocks/mediainfo.png.mock";
|
|
6
7
|
import mxfMock from "./mocks/mediainfo.mxf.mock";
|
|
8
|
+
import mocks from "./mocks/mocks";
|
|
7
9
|
|
|
8
10
|
describe("Ingest", () => {
|
|
9
|
-
describe("
|
|
11
|
+
describe("assemble", () => {
|
|
12
|
+
it("should set country and language from filename if not found in order", () => {
|
|
13
|
+
let original = {
|
|
14
|
+
context: {}
|
|
15
|
+
};
|
|
16
|
+
let filename = {
|
|
17
|
+
selected: {
|
|
18
|
+
download: {
|
|
19
|
+
language: "ENG",
|
|
20
|
+
country: "US"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
let mediainfo = {};
|
|
25
|
+
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");
|
|
29
|
+
});
|
|
30
|
+
it("should use asset from filename when there is no context", () => {
|
|
31
|
+
let original = {
|
|
32
|
+
context: {}
|
|
33
|
+
};
|
|
34
|
+
let filename = {
|
|
35
|
+
asset: { _id: "a1b2c3" },
|
|
36
|
+
};
|
|
37
|
+
let mediainfo = {};
|
|
38
|
+
let order = new Order();
|
|
39
|
+
let ingest = Ingest.assemble(original, filename, mediainfo, order);
|
|
40
|
+
expect(ingest.selected.asset).toBe("a1b2c3");
|
|
41
|
+
});
|
|
42
|
+
it("should use all context when coming from an order", () => {
|
|
43
|
+
let original = {
|
|
44
|
+
selected: {
|
|
45
|
+
download: {
|
|
46
|
+
tags: {
|
|
47
|
+
Extra: ['A', 'B']
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
context: {
|
|
52
|
+
"workRequest": "5c90dd39ab0e003b358b456d",
|
|
53
|
+
"asset": "5c804776bb65ce2e008b4568",
|
|
54
|
+
"assetType": "social",
|
|
55
|
+
"project": "5ada6930679eef010c8b45fc",
|
|
56
|
+
"group": 1553693108697,
|
|
57
|
+
"tag": "FRIDAY"
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
let filename = {
|
|
61
|
+
project: { _id: "a1b2c3"},
|
|
62
|
+
asset: { _id: "a1b2c3" }
|
|
63
|
+
};
|
|
64
|
+
let mediainfo = {};
|
|
65
|
+
let order = new Order({ _id: "5c90dd39ab0e003b358b456d" });
|
|
66
|
+
let ingest = Ingest.assemble(original, filename, mediainfo, order);
|
|
67
|
+
expect(ingest.selected.download.tags.Extra).toEqual(['FRIDAY']);
|
|
68
|
+
expect(ingest.selected.project).toBe("5ada6930679eef010c8b45fc");
|
|
69
|
+
expect(ingest.selected.asset).toBe("5c804776bb65ce2e008b4568");
|
|
70
|
+
expect(ingest.selected.assetType).toBe("social");
|
|
71
|
+
});
|
|
72
|
+
it("should set preview revision=Unfinished for creative assets", () => {
|
|
73
|
+
let original = {
|
|
74
|
+
asset: {
|
|
75
|
+
creative: true
|
|
76
|
+
},
|
|
77
|
+
context: {}
|
|
78
|
+
};
|
|
79
|
+
let filename = {
|
|
80
|
+
selected: {
|
|
81
|
+
download: {
|
|
82
|
+
language: "ENG",
|
|
83
|
+
country: "US"
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
let mediainfo = {};
|
|
88
|
+
let order = new Order();
|
|
89
|
+
let ingest = Ingest.assemble(original, filename, mediainfo, order);
|
|
90
|
+
expect(ingest.selected.preview.revision).toBe("Unfinished");
|
|
91
|
+
});
|
|
92
|
+
it("should keep tags from parsed filename when order is empty", () => {
|
|
93
|
+
let original = { asset: { creative: true }, context: {} };
|
|
94
|
+
let filename = {
|
|
95
|
+
selected: {
|
|
96
|
+
download: {
|
|
97
|
+
language: "ENG",
|
|
98
|
+
country: "US",
|
|
99
|
+
tags: {
|
|
100
|
+
Extra: ["coming-soon"],
|
|
101
|
+
SubDub: {
|
|
102
|
+
sub: true
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
let mediainfo = {};
|
|
109
|
+
let order = new Order();
|
|
110
|
+
let ingest = Ingest.assemble(original, filename, mediainfo, order);
|
|
111
|
+
expect(ingest.selected.download.tags).toEqual({
|
|
112
|
+
Extra: ["coming-soon"],
|
|
113
|
+
SubDub: { sub: true }
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
it("should set preview revision=Final for finished assets", () => {
|
|
117
|
+
let original = { asset: { creative: false }, context: {} };
|
|
118
|
+
let filename = {
|
|
119
|
+
selected: { download: { language: "ENG", country: "US" } }
|
|
120
|
+
};
|
|
121
|
+
let mediainfo = {};
|
|
122
|
+
let order = new Order();
|
|
123
|
+
let ingest = Ingest.assemble(original, filename, mediainfo, order);
|
|
124
|
+
expect(ingest.selected.preview.revision).toBe("Final");
|
|
125
|
+
});
|
|
126
|
+
it("should enable preview if file is prores 1080p 23.98/25", () => {
|
|
127
|
+
let original = { context: {} };
|
|
128
|
+
let filename = {
|
|
129
|
+
selected: { download: { language: "ENG", country: "US" } }
|
|
130
|
+
};
|
|
131
|
+
let mediainfo = {
|
|
132
|
+
selected: {
|
|
133
|
+
download: {
|
|
134
|
+
tags: {
|
|
135
|
+
Codec: "prores",
|
|
136
|
+
Resolution: "720x1080",
|
|
137
|
+
Framerate: "23.98"
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
let order = new Order();
|
|
143
|
+
let watermarks = [1];
|
|
144
|
+
let ingest = Ingest.assemble(
|
|
145
|
+
original,
|
|
146
|
+
filename,
|
|
147
|
+
mediainfo,
|
|
148
|
+
order,
|
|
149
|
+
watermarks
|
|
150
|
+
);
|
|
151
|
+
expect(ingest.selected.preview.enabled).toBe(true);
|
|
152
|
+
});
|
|
153
|
+
it("should prefer language and country from order over filename", () => {
|
|
154
|
+
let original = { context: {} };
|
|
155
|
+
let filename = {
|
|
156
|
+
selected: { download: { language: "ENG", country: "US" } }
|
|
157
|
+
};
|
|
158
|
+
let mediainfo = {};
|
|
159
|
+
let order = new Order({
|
|
160
|
+
territory: "FI",
|
|
161
|
+
language: "FIN"
|
|
162
|
+
});
|
|
163
|
+
let ingest = Ingest.assemble(original, filename, mediainfo, order);
|
|
164
|
+
expect(ingest.selected.download.language).toBe("FIN");
|
|
165
|
+
expect(ingest.selected.download.country).toBe("FI");
|
|
166
|
+
});
|
|
167
|
+
it("should correctly merge tags from mediainfo over filename", () => {
|
|
168
|
+
let original = { context: {} };
|
|
169
|
+
let filename = {
|
|
170
|
+
selected: { download: { tags: { Codec: "prores", Aspect: "4X3" } } }
|
|
171
|
+
};
|
|
172
|
+
let mediainfo = {
|
|
173
|
+
selected: { download: { tags: { Codec: "h264", Aspect: "16:9" } } }
|
|
174
|
+
};
|
|
175
|
+
let order = new Order();
|
|
176
|
+
let ingest = Ingest.assemble(original, filename, mediainfo, order);
|
|
177
|
+
expect(ingest.selected.download.tags.Codec).toBe("h264");
|
|
178
|
+
expect(ingest.selected.download.tags.Aspect).toBe("16:9");
|
|
179
|
+
});
|
|
180
|
+
it("should set preview.type=sub if order.isSub", () => {
|
|
181
|
+
let original = { context: {} };
|
|
182
|
+
let filename = {};
|
|
183
|
+
let mediainfo = {};
|
|
184
|
+
let order = {
|
|
185
|
+
isSub: jest.fn().mockReturnValue(true),
|
|
186
|
+
isDub: jest.fn().mockReturnValue(null)
|
|
187
|
+
};
|
|
188
|
+
let ingest = Ingest.assemble(original, filename, mediainfo, order);
|
|
189
|
+
expect(ingest.selected.preview.type).toBe("sub");
|
|
190
|
+
});
|
|
191
|
+
it("should set preview.type=dub if order.isDub", () => {
|
|
192
|
+
let original = { context: {} };
|
|
193
|
+
let filename = {};
|
|
194
|
+
let mediainfo = {};
|
|
195
|
+
let order = {
|
|
196
|
+
isSub: jest.fn().mockReturnValue(null),
|
|
197
|
+
isDub: jest.fn().mockReturnValue(true)
|
|
198
|
+
};
|
|
199
|
+
let ingest = Ingest.assemble(original, filename, mediainfo, order);
|
|
200
|
+
expect(ingest.selected.preview.type).toBe("dub");
|
|
201
|
+
});
|
|
202
|
+
it("should set preview.type=both if order.isDub and order.isDub", () => {
|
|
203
|
+
let original = { context: {} };
|
|
204
|
+
let filename = {};
|
|
205
|
+
let mediainfo = {};
|
|
206
|
+
let order = {
|
|
207
|
+
isSub: jest.fn().mockReturnValue(true),
|
|
208
|
+
isDub: jest.fn().mockReturnValue(true)
|
|
209
|
+
};
|
|
210
|
+
let ingest = Ingest.assemble(original, filename, mediainfo, order);
|
|
211
|
+
expect(ingest.selected.preview.type).toBe("both");
|
|
212
|
+
});
|
|
213
|
+
it("should retain Extra tags from order over filename", () => {
|
|
214
|
+
let original = { context: { tag: "coming-soon" } };
|
|
215
|
+
let filename = {
|
|
216
|
+
selected: {
|
|
217
|
+
download: {
|
|
218
|
+
tags: ["friday"]
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
let mediainfo = {};
|
|
223
|
+
let order = {
|
|
224
|
+
isSub: jest.fn().mockReturnValue(true),
|
|
225
|
+
isDub: jest.fn().mockReturnValue(true)
|
|
226
|
+
};
|
|
227
|
+
let ingest = Ingest.assemble(original, filename, mediainfo, order);
|
|
228
|
+
expect(ingest.selected.download.tags.Extra).toEqual(["coming-soon"]);
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
describe("mapFromMediainfo", () => {
|
|
10
232
|
it("should throw exception if missing File object", () => {
|
|
11
233
|
let meta = {};
|
|
12
234
|
expect(() => {
|
|
13
|
-
let ingest = Ingest.
|
|
235
|
+
let ingest = Ingest.mapFromMediainfo(meta, "video");
|
|
14
236
|
}).toThrow("missing info.File");
|
|
15
237
|
});
|
|
16
238
|
it("should throw exception if missing File.track object", () => {
|
|
17
|
-
let meta = {
|
|
18
|
-
File: {}
|
|
19
|
-
};
|
|
239
|
+
let meta = { File: {} };
|
|
20
240
|
expect(() => {
|
|
21
|
-
let ingest = Ingest.
|
|
241
|
+
let ingest = Ingest.mapFromMediainfo(meta, "video");
|
|
22
242
|
}).toThrow("missing info.File.track");
|
|
23
243
|
});
|
|
24
244
|
it("should return empty object of tags if no metadata supplied", () => {
|
|
25
|
-
let meta = {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
let ingest = Ingest.mapMetaToTags(meta, "video");
|
|
31
|
-
expect(ingest).toEqual({
|
|
32
|
-
Aspect: "",
|
|
33
|
-
Standard: "",
|
|
34
|
-
Resolution: "",
|
|
35
|
-
Codec: "",
|
|
36
|
-
"Frame Mode": "",
|
|
37
|
-
Text: "",
|
|
38
|
-
Usage: "",
|
|
39
|
-
Extra: [],
|
|
40
|
-
Framerate: "",
|
|
41
|
-
Duration: ""
|
|
42
|
-
});
|
|
245
|
+
let meta = { File: { track: {} } };
|
|
246
|
+
let ingest = Ingest.mapFromMediainfo(meta, "video");
|
|
247
|
+
expect(ingest).toEqual({ selected: { download: { tags: {} } } });
|
|
43
248
|
});
|
|
44
249
|
it("should set usage to broadcast for mxf files", () => {
|
|
45
250
|
let meta = mxfMock;
|
|
46
|
-
let ingest = Ingest.
|
|
251
|
+
let ingest = Ingest.mapFromMediainfo(meta, "");
|
|
47
252
|
expect(ingest).toEqual({
|
|
48
|
-
|
|
49
|
-
Standard: "",
|
|
50
|
-
Resolution: "",
|
|
51
|
-
Codec: "",
|
|
52
|
-
"Frame Mode": "",
|
|
53
|
-
Text: "",
|
|
54
|
-
Usage: "broadcast",
|
|
55
|
-
Extra: [],
|
|
56
|
-
Framerate: "",
|
|
57
|
-
Duration: ""
|
|
253
|
+
Usage: "broadcast"
|
|
58
254
|
});
|
|
59
255
|
});
|
|
60
256
|
it("should correctly map h264 metadata to tags", () => {
|
|
61
257
|
let meta = mock;
|
|
62
|
-
let ingest = Ingest.
|
|
258
|
+
let ingest = Ingest.mapFromMediainfo(meta, "video");
|
|
63
259
|
let expected = {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
260
|
+
selected: {
|
|
261
|
+
download: {
|
|
262
|
+
tags: {
|
|
263
|
+
Aspect: "16:9",
|
|
264
|
+
Codec: "h264",
|
|
265
|
+
"Frame Mode": "progressive",
|
|
266
|
+
Framerate: "23.98",
|
|
267
|
+
Resolution: "640x360",
|
|
268
|
+
Standard: "ntsc",
|
|
269
|
+
Usage: "online"
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
74
273
|
};
|
|
75
274
|
expect(ingest).toEqual(expected);
|
|
76
275
|
});
|
|
77
276
|
it("should correctly map prores metadata to tags", () => {
|
|
78
277
|
let meta = proresMock;
|
|
79
|
-
let ingest = Ingest.
|
|
278
|
+
let ingest = Ingest.mapFromMediainfo(meta, "video");
|
|
80
279
|
let expected = {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
280
|
+
selected: {
|
|
281
|
+
download: {
|
|
282
|
+
tags: {
|
|
283
|
+
Aspect: "16:9",
|
|
284
|
+
Codec: "prores",
|
|
285
|
+
"Frame Mode": "progressive",
|
|
286
|
+
Framerate: "23.98",
|
|
287
|
+
Resolution: "1920x1080",
|
|
288
|
+
Standard: "ntsc",
|
|
289
|
+
Usage: "broadcast"
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
91
293
|
};
|
|
92
294
|
expect(ingest).toEqual(expected);
|
|
93
295
|
});
|
|
94
296
|
it("should correctly map png metadata to tags", () => {
|
|
95
297
|
let meta = pngMock;
|
|
96
|
-
let ingest = Ingest.
|
|
298
|
+
let ingest = Ingest.mapFromMediainfo(meta, "image");
|
|
97
299
|
let expected = {
|
|
98
|
-
|
|
99
|
-
Codec: "",
|
|
100
|
-
Duration: "",
|
|
101
|
-
Extra: [],
|
|
102
|
-
"Frame Mode": "",
|
|
103
|
-
Framerate: "",
|
|
104
|
-
Resolution: "1240x859",
|
|
105
|
-
Standard: "",
|
|
106
|
-
Text: "",
|
|
107
|
-
Usage: ""
|
|
300
|
+
selected: { download: { tags: { Resolution: "1240x859" } } }
|
|
108
301
|
};
|
|
109
302
|
expect(ingest).toEqual(expected);
|
|
110
303
|
});
|
|
111
304
|
});
|
|
305
|
+
describe("mapFromFilename", () => {
|
|
306
|
+
it("should map filename data to ingest format", () => {
|
|
307
|
+
let filename = {
|
|
308
|
+
extra: ["coming-soon"],
|
|
309
|
+
file: { language: "ENG", country: "US", tags: ["sub", "dub", "txtd"] }
|
|
310
|
+
};
|
|
311
|
+
let allTags = mocks.tags;
|
|
312
|
+
let ingest = Ingest.mapFromFilename(filename, allTags);
|
|
313
|
+
expect(ingest).toEqual({
|
|
314
|
+
selected: {
|
|
315
|
+
download: {
|
|
316
|
+
tags: {
|
|
317
|
+
SubDub: {
|
|
318
|
+
dub: true,
|
|
319
|
+
sub: true
|
|
320
|
+
},
|
|
321
|
+
Extra: ["coming-soon"],
|
|
322
|
+
Text: "txtd"
|
|
323
|
+
},
|
|
324
|
+
language: "ENG",
|
|
325
|
+
country: "US"
|
|
326
|
+
},
|
|
327
|
+
preview: { language: "ENG", type: "both" }
|
|
328
|
+
}
|
|
329
|
+
});
|
|
330
|
+
});
|
|
331
|
+
it("should set preview type=sub based on filename", () => {
|
|
332
|
+
let filename = {
|
|
333
|
+
extra: ["coming-soon"],
|
|
334
|
+
file: { language: "ENG", country: "US", tags: ["sub", "txtd"] }
|
|
335
|
+
};
|
|
336
|
+
let allTags = mocks.tags;
|
|
337
|
+
let ingest = Ingest.mapFromFilename(filename, allTags);
|
|
338
|
+
expect(ingest.selected.preview.type).toEqual("sub");
|
|
339
|
+
});
|
|
340
|
+
it("should set preview type=dub based on filename", () => {
|
|
341
|
+
let filename = {
|
|
342
|
+
extra: ["coming-soon"],
|
|
343
|
+
file: { language: "ENG", country: "US", tags: ["dub", "txtd"] }
|
|
344
|
+
};
|
|
345
|
+
let allTags = mocks.tags;
|
|
346
|
+
let ingest = Ingest.mapFromFilename(filename, allTags);
|
|
347
|
+
expect(ingest.selected.preview.type).toEqual("dub");
|
|
348
|
+
});
|
|
349
|
+
});
|
|
112
350
|
});
|