blob: 2a9d38ea71b5d8b7ec69b0b3571e7d176d046a8d [file] [log] [blame]
hebasta75cfca52019-02-19 13:15:27 +01001/**
hebasta87f1b1f2019-07-30 13:03:23 +02002 * Test suite for guided tour
hebasta75cfca52019-02-19 13:15:27 +01003 *
4 * @author Helge Stallkamp
5 */
6
hebastafa118342021-11-02 19:56:01 +01007define(['tour/tours', 'vc', 'vc/unspecified', 'session', 'match', 'hint', 'hint/foundries/cnx', 'selectMenu', 'loc/dereko'], function(tourClass, vcClass, docClassUnspec, sessionClass, matchClass, hintClass, hintArray, selectMenuClass){
hebasta75cfca52019-02-19 13:15:27 +01008 const loc = KorAP.Locale;
hebastaf95226b2019-09-19 11:37:00 +02009
hebasta0c93d8e2019-05-15 12:06:16 +020010 var introKorAP =
11 "<form autocomplete='off' action='/' id='searchform'>" +
12 "<div id='searchbar' class=''>" +
13 "<input autocapitalize='off' autocomplete='off' autocorrect='off' autofocus='autofocus' id='q-field' name='q' placeholder='Finde ...' spellcheck='false' type='search'>" +
hebasta5df796f2019-05-21 15:27:12 +020014 "<button type='submit' id='qsubmit' title='Los!'><span>Los!</span></button>" +
hebasta0c93d8e2019-05-15 12:06:16 +020015 "</div>" +
Akroncd42a142019-07-12 18:55:37 +020016 "<!-- Search in the following virtual corpus -->"+
hebastafa118342021-11-02 19:56:01 +010017 "<div id='vc-view'>" +
18 "<div class='vc'>"+
19 "<div class='builder'>"+
20 "<div class='doc unspecified'><span>⋯</span></div>" +
21 "</div>" +
22 "<div class='action button-view button-group'><span title='Zuklappen' class='button-icon minimize'><span>Zuklappen</span></span></div>" +
23 "<div>" +
24 "<div class='panel vcinfo'>" +
25 "<div></div>" +
26 "<div class='action button-panel vcinfo button-group'><span title='Korpusstatistik' class='statistic'><span>Korpusstatistik</span></span></div>" +
27 "</div>" +
28 "</div>" +
29 "</div>" +
hebasta0c93d8e2019-05-15 12:06:16 +020030 "in" +
31 "<span id='vc-choose' class='select'><span>allen Korpora</span></span>" +
Akroncd42a142019-07-12 18:55:37 +020032 "<input id='cq' name='cq' type='text' style='display: none;'>" +
hebasta0c93d8e2019-05-15 12:06:16 +020033 "mit" +
34 "<span class='select'>" +
35 "<select id='ql-field' name='ql' style='display: none;'>" +
36 "<option value='poliqarp'>Poliqarp</option>" +
37 "<option value='cosmas2'>Cosmas II</option>" +
38 "<option value='annis'>Annis QL</option>" +
39 "<option value='cql'>CQL v1.2</option>" +
40 "<option value='fcsql'>FCSQL</option>" +
41 "</select>" +
42 "<span style='display: inline;'> Poliqarp</span>" +
43 "<ul style='outline: currentcolor none 0px;' tabindex='0' class='menu roll'>" +
44 "<span class='pref'></span>" +
45 "<div class='lengthField'>" +
46 "<span>Poliqarp--</span>" +
47 "<span>Cosmas II--</span>" +
48 "<span>Annis QL--</span>" +
49 "<span>CQL v1.2--</span>" +
50 "<span>FCSQL--</span>" +
51 "</div><div class='ruler' style='display: none;'><span></span><div></div>" +
52 "</div>" +
53 "</ul>" +
54 "</span>" +
55 "<div class='button right'>" +
56 "<input checked='' class='checkbox' id='q-cutoff-field' name='cutoff' type='checkbox' value='1'>" +
57 "<label for='q-cutoff-field' title='Zeige nur die ersten Treffer in beliebiger Reihenfolge'><span id='glimpse'></span>Glimpse</label>" +
hebasta0c93d8e2019-05-15 12:06:16 +020058 "</div>" +
59 "<div class='clear'></div>"+
60 "</form>" +
61 "<div class='hint mirror' style='height: 0px; left: 238px; top: 36px; width: 1272px; padding-left: 2px; margin-left: 0px; border-left-width: 2px; border-left-style: solid; font-size: 14.6667px; font-family: Noto Sans;'>" +
62 "<span></span>" +
63 "<div id='hint' class=''>" +
64 "<div style='display: none;' class='alert hint'></div>" +
65 "<ul style='outline: currentcolor none 0px;' tabindex='0' class='menu roll hint'>" +
66 "<span class='pref'></span>" +
67 "<div class='lengthField'>" +
68 "<span>Base Annotation--</span>" +
69 "<span class='desc'>Structure--</span>" +
70 "<span>DeReKo--</span><span class='desc'>Structure--</span>"+
71 "</div>"
72 "<div class='ruler' style='display: none;'><span></span><div></div></div>"
73 "</ul>" +
74 "</div>" +
75 "</div>";
hebastad090a512019-07-10 16:36:01 +020076
77
hebasta94e47cb2019-07-24 22:24:27 +020078 var preDefinedStat={
79 "documents":12,
80 "tokens":2323,
81 "sentences":343434,
82 "paragraphs":45454545
83 };
84
85
86 KorAP.API.getCorpStat = function(collQu, cb){
87 return cb(preDefinedStat);
88 };
89
Helge0115e7e2025-03-24 16:10:24 +010090 var noresultkorap =
91 "<div id='search' class=''>" +
92 "<div class='panel result'><div></div></div></div>" +
93 "<p class='no-results'>Unable to perform the action.</p>" +
94 "</div>";
95
hebasta87f1b1f2019-07-30 13:03:23 +020096 var resultkorap =
97 "<div id='search'>" +
98 "<ol class='align-left' tabindex='-8'>" +
99 "<li data-corpus-id='WPD' " +
100 "data-doc-id='WWW'" +
101 "data-text-id='03313'" +
102 "data-match-id='p102-103'" +
103 "data-available-info='base/s=spans corenlp/c=spans corenlp/ne=tokens corenlp/p=tokens corenlp/s=spans glemm/l=tokens mate/l=tokens mate/m=tokens mate/p=tokens opennlp/p=tokens opennlp/s=spans tt/l=tokens tt/p=tokens tt/s=spans xip/c=spans malt/d=rels'"+
104 "id='WPD-WWW.03313-p102-103'" +
105 "tabindex='6'>" +
106 "<div class='meta'>WPD/WWW/03313</div>" +
107 "<div class='match-main'>" +
108 "<div class='match-wrap'>" +
109 "<div class='snippet startMore endMore'>" +
110 "<div class='flag'></div>" +
111 "<span class='context-left'>In diesem Beispiel ist zu sehen, dass die beiden Variablen a und b lediglich ihre Werte an" +
112 " die Funktion </span><mark><mark class='class-2 level-1'>Dies </mark><mark class='class-1 level-0'><mark class='class-2 level-1'><mark class='class-3 level-2'>ist</mark>" +
113 " ein</mark> Test</mark></mark><span class='context-right'> übergeben, aber im Gegensatz zu einem Referenzparamter dabei unverändert bleiben.</span></div>" +
114 "</div>"+
115 "<!-- only inject via javascript! -->" +
116 "</div>" +
117 "<p class='ref'><strong>Wertparameter</strong> by Hubi,Zwobot,4; published on 2005-03-28 as WWW.03313 (WPD)</p>" +
118 "<!-- only inject via javascript! -->" +
119 "</li>" +
120 "</div>";
121
122
123
124 var snippet = "<span title=\"cnx/l:meist\">" +
125 " <span title=\"cnx/p:ADV\">" +
126 " <span title=\"cnx/syn:@PREMOD\">" +
127 " <span title=\"mate/l:meist\">" +
128 " <span title=\"mate/l:meist\">" +
129 " <span title=\"mate/p:ADV\">" +
130 " <span title=\"opennlp/p:ADV\">meist</span>" +
131 " </span>" +
132 " </span>" +
133 " </span>" +
134 " </span>" +
135 " </span>" +
136 "</span>" +
137 "<mark>" +
138 "<span title=\"cnx/l:deutlich\">" +
139 " <span title=\"cnx/p:A\">" +
140 " <span title=\"cnx/syn:@PREMOD\">" +
141 " <span title=\"mate/l:deutlich\">" +
142 " <span title=\"mate/m:degree:pos\">" +
143 " <span title=\"mate/p:ADJD\">" +
144 " <span title=\"opennlp/p:ADJD\">deutlich</span>" +
145 " </span>" +
146 " </span>" +
147 " </span>" +
148 " </span>" +
149 " </span>" +
150 "</span>" +
151 "</mark>" +
152 "<span title=\"cnx/l:fähig\">" +
153 " <span title=\"cnx/l:leistung\">" +
154 " <span title=\"cnx/p:A\">" +
155 " <span title=\"cnx/p:ADJA\">" +
156 " <span title=\"cnx/syn:@NH\">" +
157 " <span title=\"mate/l:leistungsfähig\">" +
158 " <span title=\"mate/m:degree:comp\">" +
159 " <span title=\"mate/p:ADJD\">" +
160 " <span title=\"opennlp/p:ADJD\">leistungsfähiger</span>" +
161 " </span>" +
162 " </span>" +
163 " </span>" +
164 " </span>" +
165 " </span>" +
166 " </span>" +
167 " </span>" +
168 "</span>";
169
170 var treeSnippet =
171 "<span class=\"context-left\"></span>" +
172 "<span class=\"match\">" +
173 " <span title=\"xip/c:MC\">" +
174 " <span title=\"xip/c:TOP\">" +
175 " <span title=\"xip/c:PP\">" +
176 " <span title=\"xip/c:PREP\">Mit</span>" +
177 " <span title=\"xip/c:NP\">" +
178 " <span title=\"xip/c:DET\">dieser</span>" +
179 " <span title=\"xip/c:NPA\">" +
180 " <span title=\"xip/c:NOUN\">Methode</span>" +
181 " </span>" +
182 " </span>" +
183 " </span>" +
184 " <span title=\"xip/c:VERB\">ist</span>" +
185 " <mark>" +
186 " <span title=\"xip/c:NP\">" +
187 " <span title=\"xip/c:PRON\">es</span>" +
188 " </span>" +
189 " <span title=\"xip/c:AP\">" +
190 " <span title=\"xip/c:ADV\">nun</span>" +
191 " <span title=\"xip/c:ADJ\">möglich</span>" +
192 " </span>" +
193 " </mark>" +
194 " <span title=\"xip/c:ADV\">z. B.</span>" +
195 " <span title=\"xip/c:NPA\">" +
196 " <span title=\"xip/c:NP\">" +
197 " <span title=\"xip/c:NOUN\">Voice</span>" +
198 " </span>" +
199 " </span>" + "(" +
200 " <span title=\"xip/c:INS\">" +
201 " <span title=\"xip/c:NPA\">" +
202 " <span title=\"xip/c:NP\">" +
203 " <span title=\"xip/c:NOUN\">Sprache</span>" +
204 " </span>" +
205 " </span>" +
206 " </span>" + ")" +
207 " <span title=\"xip/c:VERB\">bevorzugt</span>" +
208 " <span title=\"xip/c:PP\">" +
209 " <span title=\"xip/c:PREP\">in</span>" +
210 " <span title=\"xip/c:NP\">" +
211 " <span title=\"xip/c:PRON\">der</span>" +
212 " </span>" +
213 " <span title=\"xip/c:NPA\">" +
214 " <span title=\"xip/c:NP\">" +
215 " <span title=\"xip/c:NOUN\">Bridge</span>" +
216 " </span>" +
217 " </span>" +
218 " </span>" +
219 " <span title=\"xip/c:INFC\">" +
220 " <span title=\"xip/c:INS\">" +
221 " <span title=\"xip/c:VERB\">weiterzugeben</span>" +
222 " </span>" +
223 " </span>" +
224 " </span>" +
225 " </span>" +
226 "</span>" +
227 "<span class=\"context-right\"></span>";
228
229 KorAP.API.getTextInfo = function (doc, param, cb) {
230 cb(textInfo);
231 };
232
233 // Override getMatchInfo API call
234 KorAP.API.getMatchInfo = function (x, param, cb) {
235 if (param['spans'] === undefined || param['spans'] === false)
236 cb({ "snippet": snippet });
237 else
238 cb({ "snippet": treeSnippet });
239 };
240
241 var textInfo = {
242 "@context":"http:\/\/korap.ids-mannheim.de\/ns\/KoralQuery\/v0.3\/context.jsonld",
243 "document":{
244 "@type":"koral:document",
245 "fields":[
246 {
247 "@type":"koral:field",
248 "key":"editor",
249 "type":"type:store",
250 "value":"wikipedia.org"
251 },
252 {
253 "@type":"koral:field",
254 "key":"textSigle",
255 "type":"type:string",
256 "value":"WPD15\/264\/58336"
257 },
258 {
259 "@type":"koral:field",
260 "key":"author",
261 "type":"type:text",
262 "value":"Sprachpfleger, u.a."
263 },
264 {
265 "@type":"koral:field",
266 "key":"docSigle",
267 "type":"type:string",
268 "value":"WPD15\/264"
269 },
270 {
271 "@type":"koral:field",
272 "key":"textTypeArt",
273 "type":"type:string",
274 "value":"Enzyklopädie-Artikel"
275 },
276 {
277 "@type":"koral:field",
278 "key":"language",
279 "type":"type:string",
280 "value":"de"
281 },
282 {
283 "@type":"koral:field",
284 "key":"docTitle",
285 "type":"type:text",
286 "value":"Wikipedia, Artikel mit Anfangszahl 2, Teil 64"
287 },
288 {
289 "@type":"koral:field",
290 "key":"textType",
291 "type":"type:string",
292 "value":"Enzyklopädie"
293 },
294 {
295 "@type":"koral:field",
296 "key":"availability",
297 "type":"type:string",
298 "value":"CC-BY-SA"
299 },
300 {
301 "@type":"koral:field",
302 "key":"foundries",
303 "type":"type:keywords",
304 "value":[
305 "corenlp",
306 "corenlp\/constituency",
307 "corenlp\/morpho",
308 "corenlp\/sentences",
309 "dereko",
310 "dereko\/structure",
311 "dereko\/structure\/base-sentences-paragraphs-pagebreaks",
312 "opennlp",
313 "opennlp\/morpho",
314 "opennlp\/sentences"
315 ]
316 },
317 {
318 "@type":"koral:field",
319 "key":"creationDate",
320 "type":"type:date",
321 "value":"2015-04-17"
322 },
323 {
324 "@type":"koral:field",
325 "key":"title",
326 "type":"type:text",
327 "value":"22:43 – Das Schicksal hat einen Plan"
328 },
329 {
330 "@type":"koral:field",
331 "key":"pubDate",
332 "type":"type:date",
333 "value":"2015-05-01"
334 },
335 {
336 "@type":"koral:field",
337 "key":"reference",
338 "type":"type:store",
339 "value":"22:43 – Das Schicksal hat einen Plan, In: Wikipedia - URL:http:\/\/de.wikipedia.org\/wiki\/22:43_–_Das_Schicksal_hat_einen_Plan: Wikipedia, 2015"
340 },
341 {
342 "@type":"koral:field",
343 "key":"textClass",
344 "type":"type:keywords",
345 "value":["kultur","film"]
346 },
347 {
348 "@type":"koral:field",
349 "key":"tokenSource",
350 "type":"type:store",
351 "value":"base#tokens"
352 },
353 {
354 "@type":"koral:field",
355 "key":"publisher",
356 "type":"type:store",
357 "value":"Wikipedia"
358 },
359 {
360 "@type":"koral:field",
361 "key":"layerInfos",
362 "type":"type:store",
363 "value":"corenlp\/c=spans corenlp\/p=tokens corenlp\/s=spans dereko\/s=spans opennlp\/p=tokens opennlp\/s=spans"
364 },
365 {
366 "@type":"koral:field",
367 "key":"pubPlace",
368 "type":"type:string",
369 "value":"URL:http:\/\/de.wikipedia.org"
370 },
371 {
372 "@type":"koral:field",
373 "key":"corpusTitle",
374 "type":"type:text",
375 "value":"Wikipedia"
376 },
377 {
378 "@type":"koral:field",
379 "key":"corpusEditor",
380 "type":"type:store",
381 "value":"wikipedia.org"
382 },
383 {
384 "@type":"koral:field",
385 "key":"corpusSigle",
386 "type":"type:string",
387 "value":"WPD15"
388 }
389 ]
390 }
391 };
hebasta75cfca52019-02-19 13:15:27 +0100392 let template = document.createElement('template');
hebasta94e47cb2019-07-24 22:24:27 +0200393 let html = introKorAP.trim(); // Do not return a text node of whitespace as the result
hebasta75cfca52019-02-19 13:15:27 +0100394 template.innerHTML = html;
hebasta94e47cb2019-07-24 22:24:27 +0200395 let intrkorap = template.content;
hebasta75cfca52019-02-19 13:15:27 +0100396
hebasta87f1b1f2019-07-30 13:03:23 +0200397 let resulttemplate = document.createElement('template');
398 let htmlZwei = resultkorap.trim();
399 resulttemplate.innerHTML = resultkorap;
400 var resultkor = resulttemplate.content;
Helge0115e7e2025-03-24 16:10:24 +0100401
402 let noresulttemplate = document.createElement('template');
403 noresultkorap.trim();
404 noresulttemplate.innerHTML = noresultkorap;
405 var noresultkor = noresulttemplate.content;
hebasta87f1b1f2019-07-30 13:03:23 +0200406
407 resultkor.querySelector('#search > ol > li:not(.active)').addEventListener('click', function (e) {
408 if (this._match !== undefined)
409 this._match.open();
410 else {
411 matchClass.create(this).open();
412 }
413 });
414
hebasta94e47cb2019-07-24 22:24:27 +0200415 let vc= vcClass.create().fromJson({
416 '@type' : 'koral:doc',
417 'key' : 'title',
418 'match': 'match:eq',
419 'value' : 'TestTour!',
420 'type' : 'type:string'
421 });
422
423 KorAP.vc = vc;
hebastaf95226b2019-09-19 11:37:00 +0200424
hebasta75cfca52019-02-19 13:15:27 +0100425 describe('KorAP.GuidedTour', function(){
hebasta87f1b1f2019-07-30 13:03:23 +0200426
427 afterAll(function () {
428 KorAP.API.getMatchInfo = undefined;
429 var body = document.body;
430 var i = body.children.length - 1;
431 while (i >= 0) {
432 if (body.children[i].nodeType && body.children[i].nodeType === 1) {
433 if (!body.children[i].classList.contains("jasmine_html-reporter")) {
434 body.removeChild(body.children[i]);
435 };
436 };
437 i--;
438 };
439 })
hebastaf95226b2019-09-19 11:37:00 +0200440
441 KorAP.Hint = hintClass.create({inputField: intrkorap.getElementById("q-field")});
442
hebastafa118342021-11-02 19:56:01 +0100443
hebasta75cfca52019-02-19 13:15:27 +0100444 it('IDs and classes, that are needed for the guided tour should be in existence', function(){
hebasta87f1b1f2019-07-30 13:03:23 +0200445 //gTstartSearch
hebasta75cfca52019-02-19 13:15:27 +0100446 expect(intrkorap.querySelector('#searchbar')).not.toBeNull();
447 expect(intrkorap.querySelector('#q-field')).not.toBeNull();
hebasta0c93d8e2019-05-15 12:06:16 +0200448 expect(intrkorap.querySelector('#hint')).not.toBeNull();
449 expect(intrkorap.querySelector('#vc-choose')).not.toBeNull();
hebasta75cfca52019-02-19 13:15:27 +0100450 expect(intrkorap.querySelector('#vc-view')).not.toBeNull();
hebastafa118342021-11-02 19:56:01 +0100451 expect(intrkorap.querySelector('#vc-view * .doc')).not.toBeNull();
hebasta75cfca52019-02-19 13:15:27 +0100452 expect(intrkorap.querySelector('#ql-field').parentNode).not.toBeNull();
hebastabd53f822021-10-26 21:50:06 +0200453 expect(intrkorap.querySelector('#glimpse').parentNode).not.toBeNull();
hebasta75cfca52019-02-19 13:15:27 +0100454 expect(intrkorap.querySelector('#view-tutorial')).not.toBeNull();
hebasta5df796f2019-05-21 15:27:12 +0200455 expect(intrkorap.querySelector('#qsubmit')).not.toBeNull();
hebasta94e47cb2019-07-24 22:24:27 +0200456 let show = document.createElement('div');
hebastad090a512019-07-10 16:36:01 +0200457 show.appendChild(vc.element());
hebasta94e47cb2019-07-24 22:24:27 +0200458 let statbut = show.querySelector('.statistic');
459 expect(statbut).not.toBeNull();
460 statbut.click();
461 expect(show.querySelector('.stattable')).not.toBeNull();
hebastafa118342021-11-02 19:56:01 +0100462 let docUnspec = document.createElement('div');
463 let doc = docClassUnspec.create();
464 docUnspec.append(doc.element());
465 let vcbut = docUnspec.querySelector('.doc > span');
466 vcbut.click();
467 expect(docUnspec.querySelector('.menu.roll')).not.toBeNull();
468
hebasta87f1b1f2019-07-30 13:03:23 +0200469 //IDs and classes, that are needed for the second guided tour(gTshowResults()) should be in existence, too
470 expect(resultkor.querySelector('#search')).not.toBeNull();
471 expect(resultkor.querySelector('#search > ol > li')).not.toBeNull();
472 resultkor.querySelector("#search > ol > li").click();
473 expect(resultkor.querySelector('.action > .metatable')).not.toBeNull();
474 resultkor.querySelector(".metatable").click();
475 expect(resultkor.querySelector('.view.metatable')).not.toBeNull();
476 expect(resultkor.querySelector('.action > .info')).not.toBeNull();
477 resultkor.querySelector(".info").click();
478 expect(resultkor.querySelector('.view.tokentable')).not.toBeNull();
479 expect(resultkor.querySelector('.tree')).not.toBeNull();
hebastafa118342021-11-02 19:56:01 +0100480
hebasta75cfca52019-02-19 13:15:27 +0100481 });
hebasta87f1b1f2019-07-30 13:03:23 +0200482
hebasta75cfca52019-02-19 13:15:27 +0100483 it('Guided Tour should be started and display steps and labels in the right order', function(){
hebastaf95226b2019-09-19 11:37:00 +0200484
hebasta94e47cb2019-07-24 22:24:27 +0200485 let vcpanel = intrkorap.getElementById("vc-view");
486 vcpanel.appendChild(vc.element());
hebasta5df796f2019-05-21 15:27:12 +0200487 let searchTour = tourClass.gTstartSearch(intrkorap);
488 searchTour.start();
489 let totalSteps = searchTour.stepCount;
hebasta1e2d98e2019-10-30 15:58:17 +0100490 let welc = document.createElement("DIV");
491 welc.innerHTML = loc.TOUR_welc;
492 expect(document.querySelector(".introjs-tooltiptext").textContent).toEqual(welc.textContent);
hebasta75cfca52019-02-19 13:15:27 +0100493 expect(document.querySelector(".introjs-prevbutton").textContent).toEqual(loc.TOUR_lprev);
494 expect(document.querySelector(".introjs-nextbutton").textContent).toEqual(loc.TOUR_lnext);
hebastaa84c7a92021-10-26 21:12:40 +0200495 expect(document.querySelector(".introjs-skipbutton")).toBeDefined();
hebasta5df796f2019-05-21 15:27:12 +0200496 searchTour.exit();
hebasta75cfca52019-02-19 13:15:27 +0100497
hebastafa118342021-11-02 19:56:01 +0100498 let show = document.createElement('div');
499 show.appendChild(vc.element());
500 let statbut = show.querySelector('.statistic');
501 statbut.click();
502 let corpstat = show.querySelector('.stattable');
503 intrkorap.appendChild(corpstat);
504
hebasta75cfca52019-02-19 13:15:27 +0100505 for(let i = 2; i <= totalSteps; i++){
hebasta5df796f2019-05-21 15:27:12 +0200506 searchTour.goToStepNumber(i);
hebastaf898d7b2021-12-06 14:32:06 +0100507 if(i ==3){
508 //Test for equality. Ignore HTML-Tags, replace down arrow.
509 expect(document.querySelector(".introjs-tooltiptext").textContent).toEqual((searchTour.testIntros[i-1]).replace(/(<([^>]+)>)/ig,"").replace("&darr;","↓"));
510 }
511 else{
512 //Test for equality. Ignore HTML-Tags.
513 expect(document.querySelector(".introjs-tooltiptext").textContent).toEqual((searchTour.testIntros[i-1]).replace(/(<([^>]+)>)/ig,""));
514 }
hebastaf95226b2019-09-19 11:37:00 +0200515 switch(i){
hebastaee7b8a82020-01-20 12:45:04 +0100516 case 4:
hebastafa118342021-11-02 19:56:01 +0100517 expect(intrkorap.querySelector('#hint')).not.toBeNull();
518 expect(KorAP.Hint).not.toBeNull();
519 expect(KorAP.Hint.active().dontHide).toBe(true);
520 expect(KorAP.Hint._active).not.toBeNull();
521 break;
hebastaee7b8a82020-01-20 12:45:04 +0100522 case 5:
hebastafa118342021-11-02 19:56:01 +0100523 expect(KorAP.Hint._active).toBeNull();
524 break;
525 case 6:
526 expect(KorAP._vcKeyMenu.dontHide).toBe(false);
527 break;
528 case 7:
529 expect(KorAP._vcKeyMenu.dontHide).toBe(true);
530 break;
531 case 8:
532 expect(KorAP._vcKeyMenu.dontHide).toBe(false);
533 break;
hebastaf95226b2019-09-19 11:37:00 +0200534 case totalSteps:
hebastafa118342021-11-02 19:56:01 +0100535 expect(document.querySelector(".introjs-donebutton").textContent).toEqual(loc.TOUR_ldoneSearch);
536 expect(document.querySelector(".introjs-prevbutton").textContent).toEqual(loc.TOUR_lprev);
537 expect(document.querySelector(".introjs-skipbutton")).toBeDefined();
538 break;
hebastaf95226b2019-09-19 11:37:00 +0200539 }
hebasta5df796f2019-05-21 15:27:12 +0200540 searchTour.exit();
hebastafa118342021-11-02 19:56:01 +0100541 }
hebasta5df796f2019-05-21 15:27:12 +0200542
hebasta87f1b1f2019-07-30 13:03:23 +0200543 let resultTour = tourClass.gTshowResults(resultkor);
hebasta5df796f2019-05-21 15:27:12 +0200544 KorAP.session = sessionClass.create('KalamarJSDem');
hebastaf95226b2019-09-19 11:37:00 +0200545
hebasta87f1b1f2019-07-30 13:03:23 +0200546 resultTour.start(resultkor);
547 let totalStepsR = resultTour.stepCount;
548 expect(document.querySelector(".introjs-tooltiptext").textContent).toEqual(loc.TOUR_kwic);
hebasta87f1b1f2019-07-30 13:03:23 +0200549 expect(document.querySelector(".introjs-prevbutton").textContent).toEqual(loc.TOUR_lprev);
550 expect(document.querySelector(".introjs-nextbutton").textContent).toEqual(loc.TOUR_lnext);
hebastaa84c7a92021-10-26 21:12:40 +0200551 expect(document.querySelector(".introjs-skipbutton")).toBeDefined();
hebasta5df796f2019-05-21 15:27:12 +0200552 resultTour.exit();
hebastaf95226b2019-09-19 11:37:00 +0200553 for(let i = 2; i <= totalStepsR; i++){
hebasta87f1b1f2019-07-30 13:03:23 +0200554 resultTour.goToStepNumber(i);
555 expect(document.querySelector(".introjs-tooltiptext").textContent).toEqual(resultTour.testIntros[i-1]);
556 if(i == totalStepsR){
557 expect(document.querySelector(".introjs-donebutton").textContent).toEqual(loc.TOUR_ldone);
558 }
559 resultTour.exit();
560 }
561 });
Helge0115e7e2025-03-24 16:10:24 +0100562
563 it('Guided Tour should gracefully stop, if no results are retrieved', function(){
564 let resultTour = tourClass.gTshowResults(noresultkor);
565 KorAP.session = sessionClass.create('KalamarJSDem');
566 resultTour.start(noresultkor);
567 expect(document.querySelector(".introjs-donebutton").textContent).toEqual(loc.TOUR_ldone);
568 resultTour.exit();
569 });
570
hebastafa118342021-11-02 19:56:01 +0100571 it('Guided Tour should hide Hint if aborted', function(){
hebastaf95226b2019-09-19 11:37:00 +0200572 let tourAbort = tourClass.gTstartSearch(intrkorap);
573 tourAbort.start();
574 expect(KorAP.Hint._active).toBeNull();
575 expect(document.querySelector(".introjs-skipbutton")).not.toBeNull();
hebastaee7b8a82020-01-20 12:45:04 +0100576 tourAbort.goToStepNumber(4);
hebastaf95226b2019-09-19 11:37:00 +0200577 expect(KorAP.Hint._active).not.toBeNull()
578 expect(KorAP.Hint.active().dontHide).toBe(true);
579 tourAbort.exit();
580 expect(KorAP.Hint._active).toBeNull();
581 });
hebastafa118342021-11-02 19:56:01 +0100582
583 it('Guided Tour should hide vcKeyMenu if aborted', function(){
584 let tourAbort = tourClass.gTstartSearch(intrkorap);
585 tourAbort.start();
586 expect(KorAP._vcKeyMenu.dontHide).toBe(false);
587 tourAbort.goToStepNumber(6);
588 expect(KorAP._vcKeyMenu.dontHide).toBe(false);
589 tourAbort.goToStepNumber(7);
590 expect(KorAP._vcKeyMenu.dontHide).toBe(true);
591 tourAbort.exit();
592 expect(KorAP._vcKeyMenu.dontHide).toBe(false);
593 });
594
595 it('Guided Tour should hide vcKeyMenu in the next step ', function(){
596 let tourNext = tourClass.gTstartSearch(intrkorap);
597 tourNext.start();
598 expect(KorAP._vcKeyMenu.dontHide).toBe(false);
599 tourNext.goToStepNumber(7);
600 expect(KorAP._vcKeyMenu.dontHide).toBe(true);
601 tourNext.goToStepNumber(8);
602 expect(KorAP._vcKeyMenu.dontHide).toBe(false);
603 });
604
605
hebastaf95226b2019-09-19 11:37:00 +0200606
hebasta75cfca52019-02-19 13:15:27 +0100607 });
hebasta87f1b1f2019-07-30 13:03:23 +0200608});