Benutzer:Schnark/js/search++.js/test.js

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

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>
Abgerufen von „https://de.wikipedia.org/w/index.php?title=Benutzer:Schnark/js/search%2B%2B.js/test.js&oldid=194624841"