blob: b4d7ebb814c3fc9ad15dcc3e6c061b70a2577830 [file] [log] [blame]
hebasta75cfca52019-02-19 13:15:27 +01001/**
2 * Test suite for guided tour.
3 *
4 * @author Helge Stallkamp
5 */
6
7define(['tour/tours', 'vc'], function(tourClass, vcClass){
8 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'>" +
15 "<button type='submit' title='Los!'><span>Los!</span></button>" +
16 "</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>";
hebasta75cfca52019-02-19 13:15:27 +010066
67 let template = document.createElement('template');
hebasta0c93d8e2019-05-15 12:06:16 +020068 html = introKorAP2.trim(); // Do not return a text node of whitespace as the result
hebasta75cfca52019-02-19 13:15:27 +010069 template.innerHTML = html;
hebasta0c93d8e2019-05-15 12:06:16 +020070 intrkorap = template.content;
hebasta75cfca52019-02-19 13:15:27 +010071
72 //TODO Add hint and vc-choose, they are not part of the generated file
73 describe('KorAP.GuidedTour', function(){
74 it('IDs and classes, that are needed for the guided tour should be in existence', function(){
75 expect(intrkorap.querySelector('#searchbar')).not.toBeNull();
76 expect(intrkorap.querySelector('#q-field')).not.toBeNull();
hebasta0c93d8e2019-05-15 12:06:16 +020077 expect(intrkorap.querySelector('#hint')).not.toBeNull();
78 expect(intrkorap.querySelector('#vc-choose')).not.toBeNull();
hebasta75cfca52019-02-19 13:15:27 +010079 expect(intrkorap.querySelector('#vc-view')).not.toBeNull();
80 expect(intrkorap.querySelector('#ql-field').parentNode).not.toBeNull();
Akrone9e5e832019-04-02 14:56:23 +020081 expect(intrkorap.querySelector('#glimpse')).not.toBeNull();
hebasta75cfca52019-02-19 13:15:27 +010082 expect(intrkorap.querySelector('#view-tutorial')).not.toBeNull();
83 expect(intrkorap.querySelector('#searchbar button[type=submit]')).not.toBeNull();
84 });
85
86
hebasta0c93d8e2019-05-15 12:06:16 +020087
hebasta75cfca52019-02-19 13:15:27 +010088 it('Guided Tour should be started and display steps and labels in the right order', function(){
89 let testTour = tourClass.guidedTour(intrkorap);
90 testTour.start();
91 let totalSteps = testTour.stepCount;
92
93 expect(document.querySelector(".introjs-tooltiptext").textContent).toEqual(loc.TOUR_sear1);
94 expect(document.querySelector(".introjs-skipbutton").textContent).toEqual(loc.TOUR_lskip);
95 expect(document.querySelector(".introjs-prevbutton").textContent).toEqual(loc.TOUR_lprev);
96 expect(document.querySelector(".introjs-nextbutton").textContent).toEqual(loc.TOUR_lnext);
97 testTour.exit();
98
99 for(let i = 2; i <= totalSteps; i++){
100 testTour.goToStepNumber(i);
101 expect(document.querySelector(".introjs-tooltiptext").textContent).toEqual(testTour.testIntros[i-1]);
102 if(i == totalSteps){
103 expect(document.querySelector('.introjs-donebutton').textContent).toEqual(loc.TOUR_ldone);
hebasta0c93d8e2019-05-15 12:06:16 +0200104 }
hebasta75cfca52019-02-19 13:15:27 +0100105 testTour.exit();
106 }
107 });
108 });
109}
110);