VulpesOS/gaia/apps/video/test/unit/thumbnail_item_test.js
OverSu b38dea0597 Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
2026-09-30 23:13:03 +02:00

212 lines
5.5 KiB
JavaScript
Executable file

/* global MockL10n,ThumbnailItem,l10nAssert */
/*
* Thumbnail Item tests
*/
'use strict';
require('/shared/js/sanitizer.js');
require('/shared/js/media/media_utils.js');
require('/shared/test/unit/mocks/mock_l20n.js');
requireApp('/video/js/thumbnail_item.js');
suite('Thumbnail Item Unit Tests', function() {
var nativeMozL10n;
suiteSetup(function() {
nativeMozL10n = document.l10n;
document.l10n = MockL10n;
});
suiteTeardown(function() {
document.l10n = nativeMozL10n;
});
suite('#test object creation', function() {
test('#empty video object', function() {
try {
new ThumbnailItem(); // jshint ignore:line
assert.fail('undefined or null videoitem should not be ok.');
} catch (ex) {
assert.ok('correct behavior caught');
}
});
});
suite('#error handling', function() {
var videodata;
suiteSetup(function() {
videodata = {
metadata: {
title: 'Small webm',
duration: 5.568,
width: 560,
height: 320,
watched: false
},
type: 'video/webm',
date: 1375873140000,
size: 229455,
name: 'dummy-file-name'
};
});
test('#partial fields of template inexistent', function() {
var thumbnail = new ThumbnailItem(videodata);
thumbnail.updatePoster(new Blob(['empty-image'], {'type': 'image/jpeg'}));
assert.ok('it is ok without any fields');
});
});
suite('#rendering', function() {
var videodata;
var thumbnail;
var domNode;
suiteSetup(function() {
videodata = {
metadata: {
title: 'Small webm',
duration: 5.568,
width: 560,
height: 320,
watched: false
},
type: 'video/webm',
date: 1375873140000,
size: 229455,
name: 'dummy-file-name'
};
thumbnail = new ThumbnailItem(videodata);
domNode = thumbnail.htmlNode;
});
test('#unwatched', function() {
assert.isDefined(domNode);
var unwatchedNode = domNode.querySelector('.unwatched');
// it is is unwatched now.
assert.isFalse(unwatchedNode.hidden);
});
test('#title', function() {
var titleNode = domNode.querySelector('.title');
assert.equal(titleNode.textContent, 'Small webm');
});
test('#duration-text', function() {
var durationNode = domNode.querySelector('.duration-text');
assert.equal(durationNode.textContent, '00:06');
});
test('#size-text', function() {
var sizeNode = domNode.querySelector('.size-text');
l10nAssert(
sizeNode,
'fileSize',
{size: 224, unit: 'KB'}
);
});
test('#type-text', function() {
var typeNode = domNode.querySelector('.type-text');
assert.equal(typeNode.textContent, 'webm');
});
});
suite('#api tests', function() {
var videodata;
var thumbnail;
var domNode;
suiteSetup(function() {
videodata = {
metadata: {
title: 'Small webm',
duration: 5.568,
width: 560,
height: 320,
watched: false,
poster: new Blob(['empty-image'], {'type': 'image/jpeg'})
},
type: 'video/webm',
date: 1375873140000,
size: 229455,
name: 'dummy-file-name'
};
thumbnail = new ThumbnailItem(videodata);
domNode = thumbnail.htmlNode;
});
test('#addTapListener and fired', function(done) {
function testFunc(video) {
assert.deepEqual(video, videodata);
thumbnail.removeTapListener(testFunc);
done();
}
thumbnail.addTapListener(testFunc);
domNode.click();
});
test('#removeTapListener and fired', function(done) {
function testFunc(video) {
assert.fail('event should not fired.');
}
thumbnail.addTapListener(testFunc);
thumbnail.removeTapListener(testFunc);
domNode.click();
window.setTimeout(done);
});
test('#addTapListener, empty argument', function() {
thumbnail.addTapListener();
assert.ok('everything should be ok');
});
test('#removeTapListener, empty argument', function() {
thumbnail.removeTapListener();
assert.ok('everything should be ok');
});
test('#addTapListener, object listener', function(done) {
function testFunc(video) {
assert.deepEqual(video, videodata);
thumbnail.removeTapListener(testFunc);
done();
}
thumbnail.addTapListener({handleEvent: testFunc});
domNode.click();
});
test('#overflow', function() {
var evt = new Event('overflow');
thumbnail.detailNode.dispatchEvent(evt);
assert.ok('everything should be ok');
});
test('#htmlNode', function() {
assert.equal(thumbnail.htmlNode, domNode);
});
test('#data', function() {
assert.deepEqual(thumbnail.data, videodata);
});
test('#watched', function() {
thumbnail.setWatched(false);
var node = domNode.querySelector('.unwatched');
assert.isFalse(node.hidden);
thumbnail.setWatched(true);
assert.isTrue(node.hidden);
});
test('#updatePoster', function() {
var blob = new Blob(['empty-image'], {'type': 'image/jpeg'});
thumbnail.updatePoster(blob);
var node = domNode.querySelector('.img');
assert.notEqual(node.src, '');
thumbnail.updatePoster(null);
assert.ok(node.src.endsWith('style/images/default_thumbnail.png'));
});
});
});