| Current File : /home/jvzmxxx/wiki1/extensions/Wikibase/lib/tests/qunit/wikibase.sites.tests.js |
/**
* @since 0.5
*
* @license GPL-2.0+
* @author Daniel Werner < daniel.werner@wikimedia.de >
*/
( function( wb, Site, $, QUnit ) {
'use strict';
/**
* All site groups used in site definitions in TEST_SITE_DEFINITIONS.
* @type String[]
*/
var TEST_SITE_GROUPS = [ 'wikipedia', 'foo bar group' ];
/**
* Site definition loaded to mw.config var "wbSiteDetails" before each test.
* @type Object
*/
var TEST_SITE_DEFINITIONS = {
nnwiki: {
apiUrl: '//nn.wikipedia.org/w/api.php',
id: 'nnwiki',
group: TEST_SITE_GROUPS[0],
languageCode: 'nn',
name: null,
pageUrl: '//nn.wikipedia.org/wiki/$1',
shortName: 'norsk nynorsk'
},
'foo-site': {
apiUrl: '//foo.site.bar/api.php',
id: 'foo-site',
group: TEST_SITE_GROUPS[1],
languageCode: 'foo',
name: null,
pageUrl: '//foo.site.bar/pages/$1',
shortName: 'foo site'
},
siteInExistingGroup: {
apiUrl: '//someSite/api.php',
globalSiteId: 'site-in-existing-group',
group: TEST_SITE_GROUPS[1],
id: 'siteInExistingGroup',
languageCode: 'siteInExistingGroup',
name: null,
pageUrl: '//someSite/pages/$1',
shortName: 'some site'
}
};
QUnit.module( 'wikibase.sites', QUnit.newWbEnvironment( {
config: {
wbSiteDetails: TEST_SITE_DEFINITIONS
}
} ) );
QUnit.test( 'basic', 1, function( assert ) {
assert.ok(
wb.sites instanceof Object,
'initiated wikibase object'
);
} );
/**
* Generic test for testing an object of sites as supposed to be returned by getSites() and
* others.
*
* TODO: Another reason why there should be a SiteList object, much easier to verify that the
* returned value of different functions returning a list of sites is valid.
*
* @param {QUnit.assert} assert
* @param {string} fnName
* @param {Object} sites
*/
function siteSetTest( assert, fnName, sites ) {
assert.ok(
$.isPlainObject( sites ),
fnName + '() returns a plain object'
);
var allSiteInstances = true;
$.each( sites, function( i, site ) {
allSiteInstances = allSiteInstances && ( site instanceof Site );
} );
assert.ok(
allSiteInstances,
fnName + '() returned object fields only hold site objects'
);
}
QUnit.test( 'wikibase.sites.getSites()', function( assert ) {
assert.expect( 3 );
var sites = wb.sites.getSites();
siteSetTest( assert, 'getSites', sites );
assert.strictEqual(
sites.length,
TEST_SITE_DEFINITIONS.length,
'getSites() returns expected number of sites'
);
} );
QUnit.test( 'wikibase.sites.getSitesOfGroup()', function( assert ) {
assert.expect( 6 );
$.each( TEST_SITE_GROUPS, function( i, group ) {
var sites = wb.sites.getSitesOfGroup( group );
siteSetTest( assert, 'getSitesOfGroup', sites );
var allFromRightGroup = true;
$.each( sites, function( i, site ) {
allFromRightGroup = allFromRightGroup && ( site.getGroup() === group );
} );
assert.ok(
allFromRightGroup,
'getSitesOfGroup( "' + group + '" ) only returned sites of group "' + group + '"'
);
} );
} );
QUnit.test( 'wikibase.sites.getSite()', 2, function( assert ) {
assert.ok(
wb.sites.getSite( 'nnwiki' ) instanceof Site,
'trying to get a known site by its ID returns a site object'
);
assert.strictEqual(
wb.sites.getSite( 'unknown-site' ),
null,
'trying to get an unknown site returns null'
);
} );
QUnit.test( 'wikibase.sites.hasSite()', 2, function( assert ) {
assert.strictEqual(
wb.sites.hasSite( 'nnwiki' ),
true,
'trying to check for known site returns true'
);
assert.strictEqual(
wb.sites.hasSite( 'unknown-site' ),
false,
'trying to check for unknown site returns false'
);
} );
QUnit.test( 'wikibase.sites.getSiteGroups()', 2 + TEST_SITE_GROUPS.length, function( assert ) {
assert.expect( 4 );
var siteGroups = wb.sites.getSiteGroups();
assert.strictEqual(
$.isArray( siteGroups ),
true,
'getSiteGroups() returns Array'
);
assert.strictEqual(
siteGroups.length,
TEST_SITE_GROUPS.length,
'Number of expected groups is accurate'
);
$.each( TEST_SITE_GROUPS, function( i, group ) {
assert.ok(
$.inArray( group, siteGroups ) !== -1,
'site group "' + group + '" is part of returned site groups'
);
} );
} );
}( wikibase, wikibase.Site, jQuery, QUnit ) );