Mholloway has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/394652 )
Change subject: Media: Unit testing for metadata and derivatives parsing
......................................................................
Media: Unit testing for metadata and derivatives parsing
Bug: T177430
Change-Id: I8cf8764fc60cf8a85fa847ca3ada16a1fa6fa094
---
M lib/media.js
M test/lib/media/media-test.js
2 files changed, 48 insertions(+), 5 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/mobileapps
refs/changes/52/394652/1
diff --git a/lib/media.js b/lib/media.js
index 1401cb1..270b799 100644
--- a/lib/media.js
+++ b/lib/media.js
@@ -52,7 +52,7 @@
/**
* Get file page titles from a NodeList of media elements from Parsoid HTML
- * @param {!NodeList} html raw Parsoid HTML
+ * @param {!String} html raw Parsoid HTML
* @return {!Array} array containing the information on the media items on the
page, in order of
* appearance
*/
@@ -207,5 +207,8 @@
getMediaItemInfoFromPage,
getMetadataFromApi,
filterResult,
- SELECTORS
+ SELECTORS,
+ Image,
+ Video,
+ Audio
};
diff --git a/test/lib/media/media-test.js b/test/lib/media/media-test.js
index c829acd..f0dbc76 100644
--- a/test/lib/media/media-test.js
+++ b/test/lib/media/media-test.js
@@ -29,10 +29,29 @@
const noTypeSpan = '<span><video resource="./File:Foo"/></span>';
const noTypeFigureInline = '<figure-inline><video
resource="./File:Foo"/></figure-inline>';
-const validItems = [imageFigure, imageSpan, imageFigureInline,
imageThumbFigure, imageThumbSpan,
- imageThumbFigureInline, videoFigure, videoSpan, videoFigureInline,
videoThumbFigure,
- videoThumbSpan, videoThumbFigureInline, audioFigure, audioSpan,
audioFigureInline];
+const videoWithMetadata =
+ '<figure typeof="mw:Video" data-mw=\'{"starttime": "1", "thumbtime": "2",
"endtime": "3"}\'>' +
+ '<video resource="./File:Foo"/>' +
+ '</figure>';
+const videoWithDerivative =
+ '<figure typeof="mw:Video">' +
+ '<video resource="./File:Foo">' +
+ '<source src="https://example.com/Foo.ogv"' +
+ ' type=\'video/ogg; codecs="theora, vorbis"\'' +
+ ' data-title="Foo"' +
+ ' data-shorttitle="Foo"' +
+ ' data-file-width="120"' +
+ ' data-file-height="120"' +
+ '/>' +
+ '</video>' +
+ '</figure>';
+
+const images = [imageFigure, imageSpan, imageFigureInline, imageThumbFigure,
imageThumbSpan, imageThumbFigureInline];
+const videos = [videoFigure, videoSpan, videoFigureInline, videoThumbFigure,
videoThumbSpan, videoThumbFigureInline];
+const audio = [audioFigure, audioSpan, audioFigureInline];
+
+const validItems = images.concat(videos).concat(audio);
const invalidItems = [noTypeFigure, noTypeSpan, noTypeFigureInline];
describe('lib:media', () => {
@@ -42,6 +61,9 @@
const result = media.getMediaItemInfoFromPage(page);
assert.deepEqual(result.length, validItems.length);
assert.deepEqual(result.filter(i => i.title === 'File:Foo').length,
validItems.length);
+ assert.deepEqual(result.filter(i => i.type ===
media.Image.name).length, images.length);
+ assert.deepEqual(result.filter(i => i.type ===
media.Video.name).length, videos.length);
+ assert.deepEqual(result.filter(i => i.type ===
media.Audio.name).length, audio.length);
});
it('items should not be found for other selectors', () => {
@@ -50,4 +72,22 @@
assert.deepEqual(result.length, 0);
});
+ it('all expected data-mw properties are present', () => {
+ const result = media.getMediaItemInfoFromPage(videoWithMetadata)[0];
+ assert.deepEqual(result.start_time, 1);
+ assert.deepEqual(result.thumb_time, 2);
+ assert.deepEqual(result.end_time, 3);
+ });
+
+ it('all expected derivative properties are present', () => {
+ const result = media.getMediaItemInfoFromPage(videoWithDerivative)[0];
+ const derivative = result.derivatives[0];
+ assert.deepEqual(derivative.src, 'https://example.com/Foo.ogv');
+ assert.deepEqual(derivative.type, 'video/ogg; codecs="theora,
vorbis"');
+ assert.deepEqual(derivative.title, 'Foo');
+ assert.deepEqual(derivative.short_title, 'Foo');
+ assert.deepEqual(derivative.width, 120);
+ assert.deepEqual(derivative.height, 120);
+ });
+
});
--
To view, visit https://gerrit.wikimedia.org/r/394652
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I8cf8764fc60cf8a85fa847ca3ada16a1fa6fa094
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/mobileapps
Gerrit-Branch: master
Gerrit-Owner: Mholloway <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits