mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/MultimediaViewer
synced 2024-12-11 15:56:14 +00:00
8013fde051
The response of prop=imageinfo is now an array instead of an object. Therefor it is not needed to interate over the elements anymore. The array contains exact one element if one title is used in the query. The function getNormalizedTitle not needed anymore because the requested title is always the first element of the array. Change-Id: I7a226d3950615a2152c3f55127b218cac2d21fcc
166 lines
5.1 KiB
JavaScript
166 lines
5.1 KiB
JavaScript
/*
|
|
* This file is part of the MediaWiki extension MultimediaViewer.
|
|
*
|
|
* MultimediaViewer is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* MultimediaViewer is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with MultimediaViewer. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
( function () {
|
|
QUnit.module( 'mmv.provider.ThumbnailInfo', QUnit.newMwEnvironment() );
|
|
|
|
QUnit.test( 'ThumbnailInfo constructor sense check', function ( assert ) {
|
|
var api = { get: function () {} },
|
|
thumbnailInfoProvider = new mw.mmv.provider.ThumbnailInfo( api );
|
|
|
|
assert.true( thumbnailInfoProvider instanceof mw.mmv.provider.ThumbnailInfo );
|
|
} );
|
|
|
|
QUnit.test( 'ThumbnailInfo get test', function ( assert ) {
|
|
var apiCallCount = 0,
|
|
api = { get: function () {
|
|
apiCallCount++;
|
|
return $.Deferred().resolve( {
|
|
query: {
|
|
pages: [
|
|
{
|
|
ns: 6,
|
|
title: 'File:Stuff.jpg',
|
|
missing: true,
|
|
imagerepository: 'shared',
|
|
imageinfo: [
|
|
{
|
|
thumburl: 'https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/Stuff.jpg/51px-Stuff.jpg',
|
|
thumbwidth: 95,
|
|
thumbheight: 200,
|
|
url: 'https://upload.wikimedia.org/wikipedia/commons/1/19/Stuff.jpg',
|
|
descriptionurl: 'https://commons.wikimedia.org/wiki/File:Stuff.jpg'
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
} );
|
|
} },
|
|
file = new mw.Title( 'File:Stuff.jpg' ),
|
|
thumbnailInfoProvider = new mw.mmv.provider.ThumbnailInfo( api );
|
|
|
|
return thumbnailInfoProvider.get( file, 100 ).then( function ( thumbnail ) {
|
|
assert.strictEqual( thumbnail.url,
|
|
'https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/Stuff.jpg/51px-Stuff.jpg',
|
|
'URL is set correctly' );
|
|
assert.strictEqual( thumbnail.width, 95, 'actual width is set correctly' );
|
|
assert.strictEqual( thumbnail.height, 200, 'actual height is set correctly' );
|
|
} ).then( function () {
|
|
assert.strictEqual( apiCallCount, 1 );
|
|
// call the data provider a second time to check caching
|
|
return thumbnailInfoProvider.get( file, 100 );
|
|
} ).then( function () {
|
|
assert.strictEqual( apiCallCount, 1 );
|
|
// call a third time with different size to check caching
|
|
return thumbnailInfoProvider.get( file, 110 );
|
|
} ).then( function () {
|
|
assert.strictEqual( apiCallCount, 2 );
|
|
// call it again, with a height specified, to check caching
|
|
return thumbnailInfoProvider.get( file, 110, 100 );
|
|
} ).then( function () {
|
|
assert.strictEqual( apiCallCount, 3 );
|
|
} );
|
|
} );
|
|
|
|
QUnit.test( 'ThumbnailInfo fail test', function ( assert ) {
|
|
var api = { get: function () {
|
|
return $.Deferred().resolve( {} );
|
|
} },
|
|
file = new mw.Title( 'File:Stuff.jpg' ),
|
|
done = assert.async(),
|
|
thumbnailInfoProvider = new mw.mmv.provider.ThumbnailInfo( api );
|
|
|
|
thumbnailInfoProvider.get( file, 100 ).fail( function () {
|
|
assert.true( true, 'promise rejected when no data is returned' );
|
|
done();
|
|
} );
|
|
} );
|
|
|
|
QUnit.test( 'ThumbnailInfo fail test 2', function ( assert ) {
|
|
var api = { get: function () {
|
|
return $.Deferred().resolve( {
|
|
query: {
|
|
pages: [
|
|
{
|
|
title: 'File:Stuff.jpg'
|
|
}
|
|
]
|
|
}
|
|
} );
|
|
} },
|
|
file = new mw.Title( 'File:Stuff.jpg' ),
|
|
done = assert.async(),
|
|
thumbnailInfoProvider = new mw.mmv.provider.ThumbnailInfo( api );
|
|
|
|
thumbnailInfoProvider.get( file, 100 ).fail( function () {
|
|
assert.true( true, 'promise rejected when imageinfo is missing' );
|
|
done();
|
|
} );
|
|
} );
|
|
|
|
QUnit.test( 'ThumbnailInfo missing page test', function ( assert ) {
|
|
var api = { get: function () {
|
|
return $.Deferred().resolve( {
|
|
query: {
|
|
pages: [
|
|
{
|
|
title: 'File:Stuff.jpg',
|
|
missing: true,
|
|
imagerepository: ''
|
|
}
|
|
]
|
|
}
|
|
} );
|
|
} },
|
|
file = new mw.Title( 'File:Stuff.jpg' ),
|
|
done = assert.async(),
|
|
thumbnailInfoProvider = new mw.mmv.provider.ThumbnailInfo( api );
|
|
|
|
thumbnailInfoProvider.get( file ).fail( function ( errorMessage ) {
|
|
assert.strictEqual( errorMessage, 'file does not exist: File:Stuff.jpg',
|
|
'error message is set correctly for missing file' );
|
|
done();
|
|
} );
|
|
} );
|
|
|
|
QUnit.test( 'ThumbnailInfo fail test 3', function ( assert ) {
|
|
var api = { get: function () {
|
|
return $.Deferred().resolve( {
|
|
query: {
|
|
pages: [
|
|
{
|
|
title: 'File:Stuff.jpg',
|
|
imageinfo: [
|
|
{}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
} );
|
|
} },
|
|
file = new mw.Title( 'File:Stuff.jpg' ),
|
|
done = assert.async(),
|
|
thumbnailInfoProvider = new mw.mmv.provider.ThumbnailInfo( api );
|
|
|
|
thumbnailInfoProvider.get( file, 100 ).fail( function () {
|
|
assert.true( true, 'promise rejected when thumbnail info is missing' );
|
|
done();
|
|
} );
|
|
} );
|
|
}() );
|