blob: 18d3b4e7017cab7dba185358bd7732973b3b3556 [file] [log] [blame]
hebasta75cfca52019-02-19 13:15:27 +01001/**
2 * Test suite for guided tour.
3 *
4 * @author Helge Stallkamp
5 */
6
hebasta5df796f2019-05-21 15:27:12 +02007define(['tour/tours', 'vc', 'session'], function(tourClass, vcClass, sessionClass){
hebasta75cfca52019-02-19 13:15:27 +01008 const loc = KorAP.Locale;
9
10 //TODO Read this file from the file system, see https://korap.ids-mannheim.de/gerrit/#/c/KorAP/Kalamar/+/2241/
hebasta0c93d8e2019-05-15 12:06:16 +020011 var introKorAP =
12 "<form autocomplete='off' action='/' id='searchform'>" +
13 "<div id='searchbar' class=''>" +
14 "<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 +020015 "<button type='submit' id='qsubmit' title='Los!'><span>Los!</span></button>" +
hebasta0c93d8e2019-05-15 12:06:16 +020016 "</div>" +
17 "<!-- Search in the following virtual collection -->"+
18 "<div id='vc-view'></div>" +
19 "in" +
20 "<span id='vc-choose' class='select'><span>allen Korpora</span></span>" +
21 "<input id='collection' name='collection' type='text' style='display: none;'>" +
22 "mit" +
23 "<span class='select'>" +
24 "<select id='ql-field' name='ql' style='display: none;'>" +
25 "<option value='poliqarp'>Poliqarp</option>" +
26 "<option value='cosmas2'>Cosmas II</option>" +
27 "<option value='annis'>Annis QL</option>" +
28 "<option value='cql'>CQL v1.2</option>" +
29 "<option value='fcsql'>FCSQL</option>" +
30 "</select>" +
31 "<span style='display: inline;'> Poliqarp</span>" +
32 "<ul style='outline: currentcolor none 0px;' tabindex='0' class='menu roll'>" +
33 "<span class='pref'></span>" +
34 "<div class='lengthField'>" +
35 "<span>Poliqarp--</span>" +
36 "<span>Cosmas II--</span>" +
37 "<span>Annis QL--</span>" +
38 "<span>CQL v1.2--</span>" +
39 "<span>FCSQL--</span>" +
40 "</div><div class='ruler' style='display: none;'><span></span><div></div>" +
41 "</div>" +
42 "</ul>" +
43 "</span>" +
44 "<div class='button right'>" +
45 "<input checked='' class='checkbox' id='q-cutoff-field' name='cutoff' type='checkbox' value='1'>" +
46 "<label for='q-cutoff-field' title='Zeige nur die ersten Treffer in beliebiger Reihenfolge'><span id='glimpse'></span>Glimpse</label>" +
47 "<a class='tutorial' id='view-tutorial' tabindex='-1' title='Einführung'><span>Einführung</span></a>"+
48 "</div>" +
49 "<div class='clear'></div>"+
50 "</form>" +
51 "<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;'>" +
52 "<span></span>" +
53 "<div id='hint' class=''>" +
54 "<div style='display: none;' class='alert hint'></div>" +
55 "<ul style='outline: currentcolor none 0px;' tabindex='0' class='menu roll hint'>" +
56 "<span class='pref'></span>" +
57 "<div class='lengthField'>" +
58 "<span>Base Annotation--</span>" +
59 "<span class='desc'>Structure--</span>" +
60 "<span>DeReKo--</span><span class='desc'>Structure--</span>"+
61 "</div>"
62 "<div class='ruler' style='display: none;'><span></span><div></div></div>"
63 "</ul>" +
64 "</div>" +
65 "</div>";
hebastad090a512019-07-10 16:36:01 +020066
67
hebasta75cfca52019-02-19 13:15:27 +010068
69 let template = document.createElement('template');
hebasta5df796f2019-05-21 15:27:12 +020070 html = introKorAP.trim(); // Do not return a text node of whitespace as the result
hebasta75cfca52019-02-19 13:15:27 +010071 template.innerHTML = html;
hebasta0c93d8e2019-05-15 12:06:16 +020072 intrkorap = template.content;
hebasta75cfca52019-02-19 13:15:27 +010073
74 //TODO Add hint and vc-choose, they are not part of the generated file
75 describe('KorAP.GuidedTour', function(){
76 it('IDs and classes, that are needed for the guided tour should be in existence', function(){
77 expect(intrkorap.querySelector('#searchbar')).not.toBeNull();
78 expect(intrkorap.querySelector('#q-field')).not.toBeNull();
hebasta0c93d8e2019-05-15 12:06:16 +020079 expect(intrkorap.querySelector('#hint')).not.toBeNull();
80 expect(intrkorap.querySelector('#vc-choose')).not.toBeNull();
hebasta75cfca52019-02-19 13:15:27 +010081 expect(intrkorap.querySelector('#vc-view')).not.toBeNull();
82 expect(intrkorap.querySelector('#ql-field').parentNode).not.toBeNull();
Akrone9e5e832019-04-02 14:56:23 +020083 expect(intrkorap.querySelector('#glimpse')).not.toBeNull();
hebasta75cfca52019-02-19 13:15:27 +010084 expect(intrkorap.querySelector('#view-tutorial')).not.toBeNull();
hebasta5df796f2019-05-21 15:27:12 +020085 expect(intrkorap.querySelector('#qsubmit')).not.toBeNull();
hebastad090a512019-07-10 16:36:01 +020086 let vc= vcClass.create().fromJson({
87 '@type' : 'koral:doc',
88 'key' : 'title',
89 'match': 'match:eq',
90 'value' : 'TestTour!',
91 'type' : 'type:string'
92 });
93 var show = document.createElement('div');
94 show.appendChild(vc.element());
95 expect(show.querySelector('.statistic')).not.toBeNull();
hebasta75cfca52019-02-19 13:15:27 +010096 });
97
98
hebasta0c93d8e2019-05-15 12:06:16 +020099
hebasta75cfca52019-02-19 13:15:27 +0100100 it('Guided Tour should be started and display steps and labels in the right order', function(){
hebasta5df796f2019-05-21 15:27:12 +0200101 let searchTour = tourClass.gTstartSearch(intrkorap);
102 searchTour.start();
103 let totalSteps = searchTour.stepCount;
hebasta75cfca52019-02-19 13:15:27 +0100104 expect(document.querySelector(".introjs-tooltiptext").textContent).toEqual(loc.TOUR_sear1);
105 expect(document.querySelector(".introjs-skipbutton").textContent).toEqual(loc.TOUR_lskip);
106 expect(document.querySelector(".introjs-prevbutton").textContent).toEqual(loc.TOUR_lprev);
107 expect(document.querySelector(".introjs-nextbutton").textContent).toEqual(loc.TOUR_lnext);
hebasta5df796f2019-05-21 15:27:12 +0200108 searchTour.exit();
hebasta75cfca52019-02-19 13:15:27 +0100109
110 for(let i = 2; i <= totalSteps; i++){
hebasta5df796f2019-05-21 15:27:12 +0200111 searchTour.goToStepNumber(i);
112 expect(document.querySelector(".introjs-tooltiptext").textContent).toEqual(searchTour.testIntros[i-1]);
hebasta75cfca52019-02-19 13:15:27 +0100113 if(i == totalSteps){
hebasta5df796f2019-05-21 15:27:12 +0200114 expect(document.querySelector(".introjs-donebutton").textContent).toEqual(loc.TOUR_seargo);
115 expect(document.querySelector(".introjs-prevbutton").textContent).toEqual(loc.TOUR_lprev);
116 expect(document.querySelector(".introjs-nextbutton").classList.contains("introjs-disabled")).toBe(true);
hebasta0c93d8e2019-05-15 12:06:16 +0200117 }
hebasta5df796f2019-05-21 15:27:12 +0200118 searchTour.exit();
119 }
120
121 let resultTour = tourClass.gTshowResults(intrkorap);
122 KorAP.session = sessionClass.create('KalamarJSDem');
123 resultTour.start();
124 expect(document.querySelector(".introjs-tooltiptext").textContent).toEqual(loc.TOUR_result);
125 expect(document.querySelector(".introjs-donebutton").textContent).toEqual(loc.TOUR_ldone);
126 resultTour.exit();
127
hebasta75cfca52019-02-19 13:15:27 +0100128 });
129 });
130}
131);