mediawiki-extensions-Echo/tests/qunit/model/test_mw.echo.dm.SourcePagesModel.js

171 lines
3 KiB
JavaScript
Raw Normal View History

QUnit.module( 'ext.echo.dm - SourcePagesModel', () => {
// Mock partial API response we feed into the model
const sources = {
local: {
pages: [
{
ns: 2,
title: 'User:Admin',
unprefixed: 'Admin',
pages: [
'User:Admin',
'User talk:Admin',
null
],
count: 24
},
{
ns: 2,
title: 'User:RandomUser',
unprefixed: 'RandomUser',
pages: [
'User:RandomUser',
'User talk:RandomUser'
],
count: 6
},
{
ns: 0,
title: 'Moai',
unprefixed: 'Moai',
pages: [
'Moai',
'Talk:Moai'
],
count: 3
}
],
totalCount: 33,
source: {
title: 'LocalWiki',
url: 'http://dev.wiki.local.wmftest.net:8080/w/api.php',
base: 'http://dev.wiki.local.wmftest.net:8080/wiki/$1'
}
},
hewiki: {
pages: [
{
ns: 2,
title: 'Foo',
unprefixed: 'Foo',
pages: [
'Foo',
'Talk:Foo',
null
],
count: 10
},
{
ns: 0,
title: 'User:Bar',
unprefixed: 'Bar',
pages: [
'User:Bar',
'User talk:Bar'
],
count: 5
}
],
totalCount: 15,
source: {
title: 'Hebrew Wikipedia',
url: 'http://he.wiki.local.wmftest.net:8080/w/api.php',
base: 'http://he.wiki.local.wmftest.net:8080/wiki/$1'
}
}
};
QUnit.test( 'Creating source-page map', ( assert ) => {
const model = new mw.echo.dm.SourcePagesModel();
model.setAllSources( sources );
assert.strictEqual(
model.getCurrentSource(),
'local',
'Default source is local'
);
assert.strictEqual(
model.getCurrentPage(),
null,
'Default page is null'
);
assert.deepEqual(
model.getSourcesArray(),
[ 'local', 'hewiki' ],
'Source array includes all sources'
);
assert.strictEqual(
model.getSourceTitle( 'hewiki' ),
'Hebrew Wikipedia',
'Source title'
);
assert.strictEqual(
model.getSourceTotalCount( 'hewiki' ),
15,
'Source total count'
);
assert.deepEqual(
model.getSourcePages( 'local' ),
{
Moai: {
count: 3,
ns: 0,
pages: [
'Moai',
'Talk:Moai'
],
title: 'Moai',
unprefixed: 'Moai'
},
'User:Admin': {
count: 24,
ns: 2,
pages: [
'User:Admin',
'User talk:Admin',
null
],
title: 'User:Admin',
unprefixed: 'Admin'
},
'User:RandomUser': {
count: 6,
ns: 2,
pages: [
'User:RandomUser',
'User talk:RandomUser'
],
title: 'User:RandomUser',
unprefixed: 'RandomUser'
}
},
'Outputting source pages'
);
assert.deepEqual(
model.getGroupedPagesForTitle( 'local', 'User:Admin' ),
[
'User:Admin',
'User talk:Admin',
null
],
'Grouped pages per title'
);
// Change source
model.setCurrentSourcePage( 'hewiki', 'User:Bar' );
assert.strictEqual(
model.getCurrentSource(),
'hewiki',
'Source changed successfully'
);
assert.strictEqual(
model.getCurrentPage(),
'User:Bar',
'Page changed successfully'
);
} );
} );