Benutzer:Schnark/js/search++.js/test.js
aus Wikipedia, der freien Enzyklopädie
Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
//<nowiki> /*global mediaWiki, QUnit*/ (function($,mw,s,simpleMockAjax){ "use strict"; functionsearchTest(name,query,result,ajax,assert,wait){ varcont,d; cont=assert.async(); d=wait||$.Deferred().resolve(); functiononEnd(){ simpleMockAjax(false,assert); cont(); } d=d.then(function(){ simpleMockAjax(true,assert).answerWith(ajax); returns.queryByString(query); }); if(result){ d=d.then(function(r){ assert.deepEqual(r,result,name); }); }else{ d=d.then(null,function(){ assert.ok(true,name); }); } returnd.then(onEnd,onEnd); } QUnit.module('search++'); QUnit.test('Umgebung',function(assert){ assert.expect(6); assert.ok(s,'libs["search++"] vorhanden'); assert.ok(s.addPropertyGetter,'addPropertyGetter vorhanden'); assert.ok(s.addSearchEngine,'addSearchEngine vorhanden'); assert.ok(s.getHelp,'getHelp vorhanden'); assert.ok(s.doQuery,'doQuery vorhanden'); assert.ok(s.queryByString,'queryByString vorhanden'); }); QUnit.test('Falsche Anfragen',function(assert){ assert.expect(3); searchTest('Falsche Syntax','prefix("Foo") ODER prefix("Bar")',false,{},assert); searchTest('Fehlende Funktion','praefix("Foo")',false,{},assert); searchTest('Kein Erzeuger','redir()',false,{},assert); }); QUnit.test('Foo und Bar',function(assert){ varwait; assert.expect(8); wait=searchTest('Einfache Anfrage','prefix("Foo")',['Foo','Foobar'],{ 'apprefix=Foo&aplimit=max&action=query&list=allpages&format=json&formatversion=2&continue=': '{"query":{"allpages":[{"ns":0,"title":"Foo"},{"ns":0,"title":"Foobar"}]}}' },assert); wait=searchTest('Gecachte Anfrage','prefix("Foo")',['Foo','Foobar'],{},assert,wait); wait=searchTest('Anfrage mit continue','prefix("Bar")',['Bar','Barfoo'],{ 'apprefix=Bar&aplimit=max&action=query&list=allpages&format=json&formatversion=2&continue=': '{"query":{"allpages":[{"ns":0,"title":"Bar"}]},"continue":{"apcontinue":"Barf","continue":"-||"}}', 'apprefix=Bar&aplimit=max&action=query&list=allpages&format=json&formatversion=2&continue=-%7C%7C&apcontinue=Barf': '{"query":{"allpages":[{"ns":0,"title":"Barfoo"}]}}' },assert,wait); wait=searchTest('Doppelte gecachte Anfrage mit Sortierung','prefix("Foo") OR prefix("Bar") SORT title()', ['Bar','Barfoo','Foo','Foobar'],{},assert,wait); wait=searchTest('Anfrage mit Selektierung','prefix("Foo") AND minSize(50)',['Foobar'],{ 'action=query&prop=info&titles=Foo%7CFoobar&format=json&formatversion=2&continue=': '{"query":{"pages":[{"pageid":321,"ns":0,"title":"Foo","length":20},'+ '{"pageid":789,"ns":0,"title":"Foobar","length":200}]}}' },assert,wait); wait=searchTest('Anfrage mit Sortierung','prefix("Foo") SORT maxSize()',['Foobar','Foo'],{},assert,wait); wait=searchTest('Anfrage mit Abbildung','prefix("Bar") MAP iw("en")',[':en:BAR'],{ 'lllimit=max&action=query&prop=langlinks&titles=Bar%7CBarfoo&format=json&formatversion=2&continue=': '{"query":{"pages":[{"pageid":123,"ns":0,"title":"Bar","langlinks":['+ '{"lang":"fr","title":"Bár"},{"lang":"en","title":"BAR"}]},{"pageid":987,"ns":0,"title":"Barfoo"}]}}' },assert,wait); searchTest('Anfrage mit Ausschluss','prefix("Bar") NOT iw("fr")',['Barfoo'],{},assert,wait); }); QUnit.test('Viele Titel',function(assert){ assert.expect(3); varviele=[],gerade=[],weiter=[],i,q1,q2,a1,a2,id,from,to,wait; q1='redirects=true&action=query&prop=&titles='; q2=q1; a1={ query:{ redirects:[], pages:[] } }; a2=$.extend(true,{},a1); for(i=0;i<100;i++){ id=100*i; from=String(i); to=i%2===0?'a'+i:from; if(from!==to){ gerade.push(from); } viele.push(from); weiter.push(to); if(i<50){ q1+=(i===0?'':'%7C')+i; if(from!==to){ a1.query.redirects.push({from:from,to:to}); } a1.query.pages.push({ ns:0,pageid:id,title:to }); }else{ q2+=(i===50?'':'%7C')+i; if(from!==to){ a2.query.redirects.push({from:from,to:to}); } a2.query.pages.push({ ns:0,pageid:id,title:to }); } } q1+='&format=json&formatversion=2&continue='; q2+='&format=json&formatversion=2&continue='; a1=JSON.stringify(a1); a2=JSON.stringify(a2); i={}; i[q1]=a1; i[q2]=a2; s.addSearchEngine('qunit',{ get:function(){ return$.Deferred().resolve(viele).promise(); } }); wait=searchTest('Einfache Anfrage','qunit()',viele,{},assert); wait=searchTest('Einschränken auf Weiterleitungen','qunit() AND redir()',gerade,i,assert,wait); searchTest('Abbildung auf Weiterleitungen','qunit() MAP redir()',weiter,{},assert,wait); }); QUnit.test('Cattree',function(assert){ assert.expect(1); searchTest('Cattree','cattree("Kategorie:1")',['A','B','C','D'],{ //jscs:disable maximumLineLength 'cmtype=subcat&cmtitle=Kategorie%3A1&cmlimit=max&action=query&list=categorymembers&format=json&formatversion=2&continue=': '{"query":{"categorymembers":[{"ns":14,"title":"Kategorie:2"}]}}', 'cmtype=subcat&cmtitle=Kategorie%3A2&cmlimit=max&action=query&list=categorymembers&format=json&formatversion=2&continue=': '{"query":{"categorymembers":[{"ns":14,"title":"Kategorie:1"},{"ns":14,"title":"Kategorie:3"}]}}', 'cmtype=subcat&cmtitle=Kategorie%3A3&cmlimit=max&action=query&list=categorymembers&format=json&formatversion=2&continue=': '{"query":{"categorymembers":[]}}', 'cmtype=page&cmtitle=Kategorie%3A1&cmlimit=max&action=query&list=categorymembers&format=json&formatversion=2&continue=': '{"query":{"categorymembers":[{"ns":0,"title":"A"}]}}', 'cmtype=page&cmtitle=Kategorie%3A2&cmlimit=max&action=query&list=categorymembers&format=json&formatversion=2&continue=': '{"query":{"categorymembers":[{"ns":0,"title":"A"},{"ns":0,"title":"B"},{"ns":0,"title":"C"}]}}', 'cmtype=page&cmtitle=Kategorie%3A3&cmlimit=max&action=query&list=categorymembers&format=json&formatversion=2&continue=': '{"query":{"categorymembers":[{"ns":0,"title":"D"}]}}' //jscs:enable maximumLineLength },assert); }); })(jQuery,mediaWiki,mediaWiki.libs['search++'],mediaWiki.libs.qunit.simpleMockAjax); //</nowiki>