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

Reply via email to