Skip to content

Commit

Permalink
added more test
Browse files Browse the repository at this point in the history
  • Loading branch information
kn1cht committed Jun 29, 2017
1 parent 3bd682b commit f3a5d10
Show file tree
Hide file tree
Showing 6 changed files with 54 additions and 24 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ node_js:
script:
- "npm test"
after_success:
- "cat ./coverage/lcov.info | coveralls.js && rm -rf ./coverage"
- "npm run coveralls"
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# defaultSortBot [![Build Status](https://travis-ci.org/kn1cht/defaultSortBot.svg?branch=master)](https://travis-ci.org/kn1cht/defaultSortBot)[![Coverage Status](https://coveralls.io/repos/github/kn1cht/defaultSortBot/badge.svg?branch=master)](https://coveralls.io/github/kn1cht/defaultSortBot?branch=master)
# defaultSortBot [![Build Status](https://travis-ci.org/kn1cht/defaultSortBot.svg?branch=master)](https://travis-ci.org/kn1cht/defaultSortBot) [![Coverage Status](https://coveralls.io/repos/github/kn1cht/defaultSortBot/badge.svg?branch=master)](https://coveralls.io/github/kn1cht/defaultSortBot?branch=master)

Add **Japanese**
[sort key](https://ja.wikipedia.org/wiki/Help:%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA#.E3.82.BD.E3.83.BC.E3.83.88.E3.82.AD.E3.83.BC)
Expand Down
1 change: 1 addition & 0 deletions main.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ function main() {
return tokenize(title);
}
}).then((tokens) => {
if(!tokens) { return; }
let reading = getReadingFromTokens(tokens);
reading = japanese.hiraganize(reading);
reading = normalizeForDefaultSort(reading);
Expand Down
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
"description": "add DEFAULTSORT automatically to mediawiki articles.",
"main": "main.js",
"scripts": {
"test": "npm run lint && npm run coveralls",
"test": "npm run lint && npm run mocha",
"lint": "eslint *.js",
"mocha": "NODE_ENV=test mocha --require intelli-espower-loader",
"istanbul": "NODE_ENV=test istanbul cover --report html _mocha",
"coveralls": "NODE_ENV=test istanbul cover _mocha --report lcovonly -- -R spec"
"istanbul": "NODE_ENV=test istanbul cover _mocha",
"coveralls": "npm run istanbul && node ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info"
},
"repository": {
"type": "git",
Expand Down
55 changes: 41 additions & 14 deletions test/nock-mediawikiapi.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,20 @@ const fakeAPI = {

fakeAPI.title = {
0 : {
nodefaultsort : 'デフォルトソートのないページ'
noDefaultSort : 'デフォルトソートのないページ',
noDefaultSortWithAscii : 'DEFAULTSORTのないページ',
haveDefaultSort : 'デフォルトソートのあるページ'
},
14: {
nodefaultsort : 'カテゴリ:デフォルトソートのないページ'
noDefaultSort : 'カテゴリ:デフォルトソートのないページ',
noDefaultSortWithAscii : 'カテゴリ:DEFAULTSORTのないページ',
haveDefaultSort : 'カテゴリ:デフォルトソートのあるページ'
}
};

fakeAPI.ans = {
nodefaultsort: '\n{{DEFAULTSORT: てふおるとそおとのないへえし}}'
noDefaultSort : '\n{{DEFAULTSORT: てふおるとそおとのないへえし}}',
noDefaultSortWithAscii : '\n{{DEFAULTSORT: DEFAULTSORTのないへえし}}'
};

fakeAPI.login = {
Expand All @@ -43,8 +48,20 @@ fakeAPI.edit = {
request : (body) => (body.action === 'edit'),
reply : function(uri, requestBody) {
const req = querystring.parse(requestBody);
//req.title === fakeAPI.title.nodefaultsort
assert(req.text === fakeAPI.ans.nodefaultsort);
assert(req.title != fakeAPI.title[0].haveDefaultSort, 'leaves page that already have sort key as it is');
assert(req.title != fakeAPI.title[14].haveDefaultSort, 'leaves page that already have sort key as it is');
if(req.title === fakeAPI.title[0].noDefaultSort) {
assert(req.text === fakeAPI.ans.noDefaultSort, 'generates proper sort key');
}
else if(req.title === fakeAPI.title[0].noDefaultSortWithAscii) {
assert(req.text === fakeAPI.ans.noDefaultSortWithAscii, 'leaves non-Japanese character as it is');
}
else if(req.title === fakeAPI.title[14].noDefaultSort) {
assert(req.text === fakeAPI.ans.noDefaultSort, 'removes namespace prefix');
}
else if(req.title === fakeAPI.title[14].noDefaultSortWithAscii) {
assert(req.text === fakeAPI.ans.noDefaultSortWithAscii, 'removes namespace prefix');
}
return { edit : { result : 'Success' } };
}
};
Expand All @@ -57,7 +74,7 @@ fakeAPI.query = {
return fakeAPI.query.allpages(query);
}
else if(query.prop === 'revisions' && query.rvprop === 'content') {
return fakeAPI.query.revisions();
return fakeAPI.query.revisions(query);
}
else if(query.meta === 'siteinfo' && query.siprop === 'general') {
return fakeAPI.query.siteinfo();
Expand All @@ -67,17 +84,27 @@ fakeAPI.query = {
}
},
allpages: function(query) {
const title = fakeAPI.title[query.apnamespace].nodefaultsort;
return { batchcomplete : '', query : { allpages : [{ title : title }]}};
return { batchcomplete : '', query : { allpages : [
{ title : fakeAPI.title[query.apnamespace].noDefaultSort },
{ title : fakeAPI.title[query.apnamespace].noDefaultSortWithAscii },
{ title : fakeAPI.title[query.apnamespace].haveDefaultSort }
]}};
},
revisions: function() {
revisions: function(query) {
let content = '';
if(query.titles == fakeAPI.title[0].haveDefaultSort || query.titles == fakeAPI.title[14].haveDefaultSort) {
content = '{{DEFAULTSORT: てふおるとそおとのあるへえし}}'
}
return {
batchcomplete : '', query : { pages : { 1 : {
ns : 0, title : fakeAPI.title.nodefaultsort, revisions : [{
contentformat : 'text/x-wiki',
contentmodel : 'wikitext',
'*' : ''
}]
title : query.titles,
revisions : [
{
contentformat : 'text/x-wiki',
contentmodel : 'wikitext',
'*' : content
}
]
}}}
};
},
Expand Down
12 changes: 7 additions & 5 deletions test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ describe('normalizeForDefaultSort', () => {
it('convert 長音 to 母音', () => {
assert(normalizeForDefaultSort('あーきーすーつーのー') === 'ああきいすうつうのお');
});
it('do nothing hyphen not for 長音', () => {
assert(normalizeForDefaultSort('0-a-$-0ー') === '0-a-$-0ー');
});
it('do nothing against not ひらがな character', () => {
assert(normalizeForDefaultSort('Abc123"#$') === 'Abc123"#$');
});
Expand All @@ -42,13 +45,12 @@ describe('defaultSortBot', function() {
nock.cleanAll();
});
it('find page without sort key and add proper sort key', (done) => {
const editReq = nock(fakeAPI.server).persist()
.post(fakeAPI.path, fakeAPI.edit.request)
.reply(200, fakeAPI.edit.reply);
const edit = nock(fakeAPI.server).persist()
.post(fakeAPI.path, fakeAPI.edit.request).reply(200, fakeAPI.edit.reply);
main.__get__('main')();
setInterval(() => {
if(editReq.isDone() === true) {
editReq.done(); // nock assertion
if(edit.isDone() === true) {
edit.done(); // nock assertion
done();
}
}, 100);
Expand Down

0 comments on commit f3a5d10

Please sign in to comment.