blob: b96734d3a49820fa159908d917c71c413d1e251f [file] [log] [blame]
Nils Diewald7c8ced22015-04-15 19:21:00 +00001// Regarding async:
2// http://stackoverflow.com/questions/16423156/getting-requirejs-to-work-with-jasmine
3
Nils Diewalda297f062015-04-02 00:23:46 +00004var available = [
5 'base/s=spans',
6 'corenlp/c=spans',
7 'corenlp/ne=tokens',
8 'corenlp/p=tokens',
9 'corenlp/s=spans',
10 'glemm/l=tokens',
11 'mate/l=tokens',
12 'mate/m=tokens',
13 'mate/p=tokens',
14 'opennlp/p=tokens',
15 'opennlp/s=spans',
16 'tt/l=tokens',
17 'tt/p=tokens',
18 'tt/s=spans'
19];
20
21var match = {
22 'corpusID' : 'WPD',
23 'docID' : 'UUU',
24 'textID' : '01912',
25 'matchID' : 'p121-122',
Akron0a6768f2016-07-13 18:00:43 +020026 'textSigle' : 'WPD/UUU/01912',
Nils Diewalda297f062015-04-02 00:23:46 +000027 'available' : available
28};
29
hebasta999d6c12018-04-23 12:44:59 +020030
31var fields = [
32 {
33 "@type": "koral:field",
34 "key": "author",
35 "type": "type:text",
36 "value": "Sprachpfleger, u.a."
37 },
38 {
39 "@type": "koral:field",
40 "key": "textClass",
41 "type": "type:keywords",
42 "value": ["kultur", "film"]
43 },
44 {
45 "@type":"koral:field",
46 "key":"foundries",
47 "type":"type:string",
48 "value":[
49 "corenlp",
50 "corenlp\/constituency",
51 "corenlp\/morpho",
52 "corenlp\/sentences",
53 "dereko",
54 "dereko\/structure",
55 "dereko\/structure\/base-sentences-paragraphs-pagebreaks",
56 "opennlp",
57 "opennlp\/morpho",
58 "opennlp\/sentences"
59 ]
60 }
61];
62
63
Nils Diewalda297f062015-04-02 00:23:46 +000064var snippet = "<span title=\"cnx/l:meist\">" +
Akron4e47d0b2017-07-03 17:58:37 +020065 " <span title=\"cnx/p:ADV\">" +
66 " <span title=\"cnx/syn:@PREMOD\">" +
67 " <span title=\"mate/l:meist\">" +
68 " <span title=\"mate/l:meist\">" +
69 " <span title=\"mate/p:ADV\">" +
70 " <span title=\"opennlp/p:ADV\">meist</span>" +
71 " </span>" +
72 " </span>" +
73 " </span>" +
74 " </span>" +
75 " </span>" +
76 "</span>" +
77 "<span title=\"cnx/l:deutlich\">" +
78 " <span title=\"cnx/p:A\">" +
79 " <span title=\"cnx/syn:@PREMOD\">" +
80 " <span title=\"mate/l:deutlich\">" +
81 " <span title=\"mate/m:degree:pos\">" +
82 " <span title=\"mate/p:ADJD\">" +
83 " <span title=\"opennlp/p:ADJD\">deutlich</span>" +
84 " </span>" +
85 " </span>" +
86 " </span>" +
87 " </span>" +
88 " </span>" +
89 "</span>" +
90 "<span title=\"cnx/l:fähig\">" +
91 " <span title=\"cnx/l:leistung\">" +
92 " <span title=\"cnx/p:A\">" +
93 " <span title=\"cnx/p:ADJA\">" +
94 " <span title=\"cnx/syn:@NH\">" +
95 " <span title=\"mate/l:leistungsfähig\">" +
96 " <span title=\"mate/m:degree:comp\">" +
97 " <span title=\"mate/p:ADJD\">" +
98 " <span title=\"opennlp/p:ADJD\">leistungsfähiger</span>" +
99 " </span>" +
100 " </span>" +
101 " </span>" +
102 " </span>" +
103 " </span>" +
104 " </span>" +
105 " </span>" +
106 "</span>";
Nils Diewalda297f062015-04-02 00:23:46 +0000107
108var treeSnippet =
109 "<span class=\"context-left\"></span>" +
110 "<span class=\"match\">" +
111 " <span title=\"xip/c:MC\">" +
112 " <span title=\"xip/c:TOP\">" +
113 " <span title=\"xip/c:PP\">" +
114 " <span title=\"xip/c:PREP\">Mit</span>" +
115 " <span title=\"xip/c:NP\">" +
116 " <span title=\"xip/c:DET\">dieser</span>" +
117 " <span title=\"xip/c:NPA\">" +
118 " <span title=\"xip/c:NOUN\">Methode</span>" +
119 " </span>" +
120 " </span>" +
121 " </span>" +
122 " <span title=\"xip/c:VERB\">ist</span>" +
Akron98a933f2016-08-11 00:19:17 +0200123 " <mark>" +
124 " <span title=\"xip/c:NP\">" +
125 " <span title=\"xip/c:PRON\">es</span>" +
126 " </span>" +
127 " <span title=\"xip/c:AP\">" +
128 " <span title=\"xip/c:ADV\">nun</span>" +
129 " <span title=\"xip/c:ADJ\">möglich</span>" +
130 " </span>" +
131 " </mark>" +
Nils Diewalda297f062015-04-02 00:23:46 +0000132 " <span title=\"xip/c:ADV\">z. B.</span>" +
133 " <span title=\"xip/c:NPA\">" +
134 " <span title=\"xip/c:NP\">" +
135 " <span title=\"xip/c:NOUN\">Voice</span>" +
136 " </span>" +
137 " </span>" + "(" +
138 " <span title=\"xip/c:INS\">" +
139 " <span title=\"xip/c:NPA\">" +
140 " <span title=\"xip/c:NP\">" +
141 " <span title=\"xip/c:NOUN\">Sprache</span>" +
142 " </span>" +
143 " </span>" +
144 " </span>" + ")" +
145 " <span title=\"xip/c:VERB\">bevorzugt</span>" +
146 " <span title=\"xip/c:PP\">" +
147 " <span title=\"xip/c:PREP\">in</span>" +
148 " <span title=\"xip/c:NP\">" +
149 " <span title=\"xip/c:PRON\">der</span>" +
150 " </span>" +
151 " <span title=\"xip/c:NPA\">" +
152 " <span title=\"xip/c:NP\">" +
153 " <span title=\"xip/c:NOUN\">Bridge</span>" +
154 " </span>" +
155 " </span>" +
156 " </span>" +
157 " <span title=\"xip/c:INFC\">" +
158 " <span title=\"xip/c:INS\">" +
159 " <span title=\"xip/c:VERB\">weiterzugeben</span>" +
160 " </span>" +
161 " </span>" +
162 " </span>" +
163 " </span>" +
164 "</span>" +
165 "<span class=\"context-right\"></span>";
166
167
168function matchElementFactory () {
169 var me = document.createElement('li');
170
171 me.setAttribute(
172 'data-available-info',
173 'base/s=spans corenlp/c=spans corenlp/ne=tokens corenlp/p=tokens' +
174 ' corenlp/s=spans glemm/l=tokens mate/l=tokens mate/m=tokens' +
175 ' mate/p=tokens opennlp/p=tokens opennlp/s=spans tt/l=tokens' +
176 ' tt/p=tokens tt/s=spans');
177
178 me.setAttribute('data-corpus-id', 'WPD');
179 me.setAttribute('data-doc-id', 'FFF');
180 me.setAttribute('data-text-id', '01460');
Akron0a6768f2016-07-13 18:00:43 +0200181 me.setAttribute('data-text-sigle', 'WPD/FFF/01460');
Nils Diewalda297f062015-04-02 00:23:46 +0000182 me.setAttribute('data-match-id', 'p119-120');
183 me.innerHTML = '<div><div class="snippet">check</div></div><p class="ref">me</p>';
184 return me;
185};
186
Akroncdb0baa2016-11-07 01:52:11 +0100187function matchElementReal () {
188 var me = document.createElement('em');
189 me.innerHTML =
190 '<li data-match-id="p85183-85184"' +
191 ' data-text-sigle="GOE/AGI/00000"' +
192 ' data-available-info="base/s=spans corenlp/c=spans corenlp/p=tokens corenlp/s=spans dereko/s=spans malt/d=rels opennlp/p=tokens opennlp/s=spans tt/l=tokens tt/p=tokens tt/s=spans"' +
193 ' data-info="{&quot;UID&quot;:0,&quot;author&quot;:&quot;Goethe, Johann Wolfgang von&quot;,&quot;corpusID&quot;:null,&quot;corpusSigle&quot;:&quot;GOE&quot;,&quot;docID&quot;:null,&quot;docSigle&quot;:&quot;GOE\/AGI&quot;,&quot;layerInfos&quot;:&quot;base\/s=spans corenlp\/c=spans corenlp\/p=tokens corenlp\/s=spans dereko\/s=spans malt\/d=rels opennlp\/p=tokens opennlp\/s=spans tt\/l=tokens tt\/p=tokens tt\/s=spans&quot;,&quot;matchID&quot;:&quot;match-GOE\/AGI\/00000-p85183-85184&quot;,&quot;pubDate&quot;:&quot;1982&quot;,&quot;pubPlace&quot;:&quot;München&quot;,&quot;subTitle&quot;:&quot;Auch ich in Arkadien!&quot;,&quot;textID&quot;:null,&quot;textSigle&quot;:&quot;GOE\/AGI\/00000&quot;,&quot;title&quot;:&quot;Italienische Reise&quot;}"' +
194 ' id="GOE/AGI/00000#p85183-85184">' +
195 '<div>' +
196 '<div class="flag"></div>' +
197 '<div class="snippet startMore endMore"><span class="context-left"><span class="more"></span>keine großen Flächen, aber sanft gegeneinander laufende Berg- und Hügelrücken, durchgängig mit Weizen und Gerste bestellt, die eine ununterbrochene Masse von Fruchtbarkeit dem Auge darbieten. der diesen Pflanzen geeignete Boden wird so genutzt und so geschont, daß man nirgends einen </span><span class="match"><mark>Baum</mark></span><span class="context-right"> sieht, ja, alle die kleinen Ortschaften und Wohnungen liegen auf Rücken der Hügel, wo eine hinstreichende Reihe Kalkfelsen den Boden ohnehin unbrauchbar macht. dort wohnen die Weiber das ganze Jahr, mit Spinnen und Weben beschäftigt, die Männer hingegen bringen zur<span class="more"></span></span></div>' +
198 '</div>' +
199 '<p class="ref"><strong>Italienische Reise</strong> von Goethe, Johann Wolfgang von (<time datetime="1982">1982</time>) <span class="sigle">[GOE/AGI/00000]</span> </p>' +
200 '</li>';
201 return me.firstChild;
202};
Nils Diewalda297f062015-04-02 00:23:46 +0000203
hebasta999d6c12018-04-23 12:44:59 +0200204
Akronf2279c42017-12-21 13:48:46 +0100205define(['match', 'hint/foundries/cnx', 'hint/foundries/mate'], function () {
Nils Diewald58141332015-04-07 16:18:45 +0000206
Nils Diewald7c8ced22015-04-15 19:21:00 +0000207 // Override getMatchInfo API call
208 KorAP.API.getMatchInfo = function (x, param, cb) {
209 if (param['spans'] === undefined || param['spans'] === false)
210 cb({ "snippet": snippet });
211 else
212 cb({ "snippet": treeSnippet });
Nils Diewalda297f062015-04-02 00:23:46 +0000213 };
Akron671fdb92017-09-12 18:09:46 +0200214
Nils Diewald7c8ced22015-04-15 19:21:00 +0000215 describe('KorAP.InfoLayer', function () {
216
217 var infoClass = require('match/infolayer');
Nils Diewalda297f062015-04-02 00:23:46 +0000218
Nils Diewald7c8ced22015-04-15 19:21:00 +0000219 it('should be initializable', function () {
220 expect(
Akron671fdb92017-09-12 18:09:46 +0200221 function() { infoClass.create() }
Nils Diewald7c8ced22015-04-15 19:21:00 +0000222 ).toThrow(new Error("Missing parameters"));
Nils Diewalda297f062015-04-02 00:23:46 +0000223
Nils Diewald7c8ced22015-04-15 19:21:00 +0000224 expect(
Akron671fdb92017-09-12 18:09:46 +0200225 function() { infoClass.create("base") }
Nils Diewald7c8ced22015-04-15 19:21:00 +0000226 ).toThrow(new Error("Missing parameters"));
Nils Diewalda297f062015-04-02 00:23:46 +0000227
Nils Diewald7c8ced22015-04-15 19:21:00 +0000228 var layer = infoClass.create("base", "s");
229 expect(layer).toBeTruthy();
230 expect(layer.foundry).toEqual("base");
231 expect(layer.layer).toEqual("s");
232 expect(layer.type).toEqual("tokens");
Nils Diewalda297f062015-04-02 00:23:46 +0000233
Nils Diewald7c8ced22015-04-15 19:21:00 +0000234 layer = infoClass.create("cnx", "syn", "spans");
235 expect(layer).toBeTruthy();
236 expect(layer.foundry).toEqual("cnx");
237 expect(layer.layer).toEqual("syn");
238 expect(layer.type).toEqual("spans");
Nils Diewald58141332015-04-07 16:18:45 +0000239 });
240 });
Nils Diewalda297f062015-04-02 00:23:46 +0000241
Nils Diewalda297f062015-04-02 00:23:46 +0000242
Nils Diewald7c8ced22015-04-15 19:21:00 +0000243 describe('KorAP.Match', function () {
244 var match = {
245 'corpusID' : 'WPD',
246 'docID' : 'UUU',
247 'textID' : '01912',
248 'matchID' : 'p121-122',
Akron0a6768f2016-07-13 18:00:43 +0200249 'textSigle' : 'WPD/UUU/01912',
Nils Diewald7c8ced22015-04-15 19:21:00 +0000250 'available' : available
251 };
252
253 var matchClass = require('match');
254
255 it('should be initializable by Object', function () {
256 expect(function() {
Akron671fdb92017-09-12 18:09:46 +0200257 matchClass.create()
Nils Diewald7c8ced22015-04-15 19:21:00 +0000258 }).toThrow(new Error('Missing parameters'));
259
260 expect(matchClass.create(match)).toBeTruthy();
261
262 var m = matchClass.create(match);
Akron0a6768f2016-07-13 18:00:43 +0200263 expect(m.textSigle).toEqual("WPD/UUU/01912");
Nils Diewald7c8ced22015-04-15 19:21:00 +0000264 expect(m.matchID).toEqual("p121-122");
265
266 // /corpus/WPD/UUU.01912/p121-122/matchInfo?spans=false&foundry=*
267 var m = matchClass.create(match);
268
269 // Spans:
270 var spans = m.getSpans();
271 expect(spans[0].foundry).toEqual("base");
272 expect(spans[0].layer).toEqual("s");
273
274 expect(spans[1].foundry).toEqual("corenlp");
275 expect(spans[1].layer).toEqual("c");
276
277 expect(spans[2].foundry).toEqual("corenlp");
278 expect(spans[2].layer).toEqual("s");
279
280 expect(spans[spans.length-1].foundry).toEqual("tt");
281 expect(spans[spans.length-1].layer).toEqual("s");
282
283 // Tokens:
284 var tokens = m.getTokens();
285 expect(tokens[0].foundry).toEqual("corenlp");
286 expect(tokens[0].layer).toEqual("ne");
287
288 expect(tokens[1].foundry).toEqual("corenlp");
289 expect(tokens[1].layer).toEqual("p");
290
291 expect(tokens[tokens.length-1].foundry).toEqual("tt");
292 expect(tokens[tokens.length-1].layer).toEqual("p");
Nils Diewald58141332015-04-07 16:18:45 +0000293 });
Nils Diewalda297f062015-04-02 00:23:46 +0000294
295
Akroncdb0baa2016-11-07 01:52:11 +0100296 it('should be initializable by Node 1', function () {
Nils Diewald7c8ced22015-04-15 19:21:00 +0000297 var m = matchClass.create(matchElementFactory());
Akron0a6768f2016-07-13 18:00:43 +0200298 expect(m.textSigle).toEqual("WPD/FFF/01460");
Nils Diewald7c8ced22015-04-15 19:21:00 +0000299 expect(m.matchID).toEqual("p119-120");
Nils Diewalda297f062015-04-02 00:23:46 +0000300
Nils Diewald7c8ced22015-04-15 19:21:00 +0000301 // Spans:
302 var spans = m.getSpans();
303 expect(spans[0].foundry).toEqual("base");
304 expect(spans[0].layer).toEqual("s");
Nils Diewalda297f062015-04-02 00:23:46 +0000305
Nils Diewald7c8ced22015-04-15 19:21:00 +0000306 expect(spans[1].foundry).toEqual("corenlp");
307 expect(spans[1].layer).toEqual("c");
Nils Diewalda297f062015-04-02 00:23:46 +0000308
Nils Diewald7c8ced22015-04-15 19:21:00 +0000309 expect(spans[2].foundry).toEqual("corenlp");
310 expect(spans[2].layer).toEqual("s");
Nils Diewalda297f062015-04-02 00:23:46 +0000311
Nils Diewald7c8ced22015-04-15 19:21:00 +0000312 expect(spans[spans.length-1].foundry).toEqual("tt");
313 expect(spans[spans.length-1].layer).toEqual("s");
Nils Diewalda297f062015-04-02 00:23:46 +0000314
Nils Diewald7c8ced22015-04-15 19:21:00 +0000315 // Tokens:
316 var tokens = m.getTokens();
317 expect(tokens[0].foundry).toEqual("corenlp");
318 expect(tokens[0].layer).toEqual("ne");
Nils Diewalda297f062015-04-02 00:23:46 +0000319
Nils Diewald7c8ced22015-04-15 19:21:00 +0000320 expect(tokens[1].foundry).toEqual("corenlp");
321 expect(tokens[1].layer).toEqual("p");
Nils Diewalda297f062015-04-02 00:23:46 +0000322
Nils Diewald7c8ced22015-04-15 19:21:00 +0000323 expect(tokens[tokens.length-1].foundry).toEqual("tt");
324 expect(tokens[tokens.length-1].layer).toEqual("p");
Nils Diewalda297f062015-04-02 00:23:46 +0000325
Nils Diewald7c8ced22015-04-15 19:21:00 +0000326 });
Nils Diewalda297f062015-04-02 00:23:46 +0000327
Akroncdb0baa2016-11-07 01:52:11 +0100328 it('should be initializable by Node 2', function () {
329 var ele = matchElementReal();
330 var m = matchClass.create(ele);
331 expect(m.textSigle).toEqual("GOE/AGI/00000");
332 expect(m.matchID).toEqual("p85183-85184");
333 });
334
335
Nils Diewald7c8ced22015-04-15 19:21:00 +0000336 it('should react to gui actions', function () {
337 var e = matchElementFactory();
Nils Diewalda297f062015-04-02 00:23:46 +0000338
Nils Diewald7c8ced22015-04-15 19:21:00 +0000339 expect(e.classList.contains('active')).toBe(false);
340 expect(e["_match"]).toBe(undefined);
Nils Diewalda297f062015-04-02 00:23:46 +0000341
Nils Diewald7c8ced22015-04-15 19:21:00 +0000342 var m = matchClass.create(e);
343
344 expect(e.classList.contains('active')).toBe(false);
345 expect(e["_match"]).not.toBe(undefined);
346
347 // Open the match
348 m.open();
349
350 expect(e.classList.contains('active')).toBe(true);
351 expect(e["_match"]).not.toBe(undefined);
352
Akronbfe912c2018-07-17 19:30:52 +0200353 actions = e.querySelector("p.ref > div.action.button-group").children;
Akrond141a362018-07-10 18:12:13 +0200354
Akronbfe912c2018-07-17 19:30:52 +0200355 expect(actions[0].getAttribute("class")).toEqual("metatable");
Akronc296ca22018-04-24 16:35:26 +0200356 expect(actions[1].getAttribute("class")).toEqual("info");
357 expect(actions[2].getAttribute("class")).toEqual("tree");
358
Nils Diewald7c8ced22015-04-15 19:21:00 +0000359 // Close the match
360 m.close();
361 expect(e.classList.contains('active')).toBe(false);
362 expect(e["_match"]).not.toBe(undefined);
Nils Diewald58141332015-04-07 16:18:45 +0000363 });
Nils Diewalda297f062015-04-02 00:23:46 +0000364
Akronc296ca22018-04-24 16:35:26 +0200365 it('should open tree menu', function () {
366 var e = matchElementFactory();
367 var m = matchClass.create(e);
368 m.open();
Akronbfe912c2018-07-17 19:30:52 +0200369 var relation = e.querySelector("p.ref > div.action.button-group > span:nth-of-type(3)");
Akronc296ca22018-04-24 16:35:26 +0200370 expect(relation.getAttribute("class")).toEqual("tree");
Akron52ed22d2018-07-11 17:05:19 +0200371 expect(document.getElementsByClassName("button-group-list").length).toEqual(0);
Akronc296ca22018-04-24 16:35:26 +0200372
373 expect(document.activeElement.tagName).toEqual("BODY");
374
375 // Show menu
376 relation.click();
Akron52ed22d2018-07-11 17:05:19 +0200377 expect(document.getElementsByClassName("button-group-list").length).toEqual(1);
Akronc296ca22018-04-24 16:35:26 +0200378
379 expect(document.activeElement.tagName).toEqual("UL");
380
381 // Choose first tree
Akron52ed22d2018-07-11 17:05:19 +0200382 document.getElementsByClassName("button-group-list")[0].getElementsByTagName("li")[1].click();
Akronc296ca22018-04-24 16:35:26 +0200383 expect(e.querySelector("div.matchinfo div.matchtree h6 span").innerText).toEqual("corenlp");
384
385 // This should blur the focus
386 expect(document.activeElement.tagName).toEqual("BODY");
387 });
388
389 });
Nils Diewald7c8ced22015-04-15 19:21:00 +0000390
Akron7f9a6a32018-07-18 15:05:23 +0200391 describe('KorAP.TableView', function () {
Nils Diewald7c8ced22015-04-15 19:21:00 +0000392
393 var matchClass = require('match');
Akron7f9a6a32018-07-18 15:05:23 +0200394 var tableClass = require('view/match/tokentable');
Nils Diewald7c8ced22015-04-15 19:21:00 +0000395
Akron7f9a6a32018-07-18 15:05:23 +0200396 var table;
Nils Diewald7c8ced22015-04-15 19:21:00 +0000397
Akron7f9a6a32018-07-18 15:05:23 +0200398 var matchObj = matchClass.create(match);
399 var tableObj = tableClass.create(matchObj);
Nils Diewald7c8ced22015-04-15 19:21:00 +0000400
401 var table1, table2;
402
Nils Diewald7c8ced22015-04-15 19:21:00 +0000403 it('should fail to load a table async', function (done) {
Akron7f9a6a32018-07-18 15:05:23 +0200404 expect(tableObj).toBeTruthy();
Nils Diewald7c8ced22015-04-15 19:21:00 +0000405
Akron7f9a6a32018-07-18 15:05:23 +0200406 tableObj.getData([], function (tablen) {
Akron671fdb92017-09-12 18:09:46 +0200407 table1 = tablen;
408 done();
Nils Diewald7c8ced22015-04-15 19:21:00 +0000409 });
410 });
411
Akron671fdb92017-09-12 18:09:46 +0200412
Nils Diewald7c8ced22015-04-15 19:21:00 +0000413 it('should\'nt be parsable (async)', function () {
414 expect(table1).not.toBeTruthy();
415 });
416
Nils Diewald7c8ced22015-04-15 19:21:00 +0000417
Nils Diewald7c8ced22015-04-15 19:21:00 +0000418 it('should be retrieved async', function (done) {
Akron7f9a6a32018-07-18 15:05:23 +0200419 expect(tableObj).toBeTruthy();
420 tableObj.getData(undefined, function (x) {
Akron671fdb92017-09-12 18:09:46 +0200421 table = x;
422 done();
Nils Diewald7c8ced22015-04-15 19:21:00 +0000423 });
424 });
Nils Diewalda297f062015-04-02 00:23:46 +0000425
Akron7f9a6a32018-07-18 15:05:23 +0200426 it('should parse into a table (async)', function () {
427 expect(table).toBeTruthy();
Akron5b1a6af2018-02-05 15:41:16 +0100428
Akron7f9a6a32018-07-18 15:05:23 +0200429 expect(table.length()).toBe(3);
430
431 expect(table.getToken(0)).toBe("meist");
432 expect(table.getToken(1)).toBe("deutlich");
433 expect(table.getToken(2)).toBe("leistungsfähiger");
434
435 expect(table.getValue(0, "cnx", "p")[0]).toBe("ADV");
436 expect(table.getValue(0, "cnx", "syn")[0]).toBe("@PREMOD");
437 expect(table.getValue(0, "mate", "l")[0]).toBe("meist");
438 expect(table.getValue(0, "mate", "l")[1]).toBeUndefined();
439
440 expect(table.getValue(2, "cnx", "l")[0]).toBe("fähig");
441 expect(table.getValue(2, "cnx", "l")[1]).toBe("leistung");
442 });
443
444 it('should be rendered async', function () {
Akron5b1a6af2018-02-05 15:41:16 +0100445 var e = table.element().firstChild;
Nils Diewald7c8ced22015-04-15 19:21:00 +0000446 expect(e.nodeName).toBe('TABLE');
447 expect(e.children[0].nodeName).toBe('THEAD');
448 var tr = e.children[0].children[0];
449 expect(tr.nodeName).toBe('TR');
450 expect(tr.children[0].nodeName).toBe('TH');
Nils Diewald58141332015-04-07 16:18:45 +0000451
Nils Diewald7c8ced22015-04-15 19:21:00 +0000452 expect(tr.children[0].firstChild.nodeValue).toBe('Foundry');
453 expect(tr.children[1].firstChild.nodeValue).toBe('Layer');
454 expect(tr.children[2].firstChild.nodeValue).toBe('meist');
455 expect(tr.children[3].firstChild.nodeValue).toBe('deutlich');
456 expect(tr.children[4].firstChild.nodeValue).toBe('leistungsfähiger');
457
458 // first row
459 tr = e.children[1].children[0];
460 expect(tr.nodeName).toBe('TR');
461 expect(tr.getAttribute('tabindex')).toEqual('0');
462 expect(tr.children[0].nodeName).toBe('TH');
463 expect(tr.children[0].firstChild.nodeValue).toEqual('cnx');
464 expect(tr.children[1].firstChild.nodeValue).toEqual('l');
465 expect(tr.children[2].firstChild.nodeValue).toEqual('meist');
466 expect(tr.children[3].firstChild.nodeValue).toEqual('deutlich');
Akron47774c42017-07-03 20:14:55 +0200467 expect(tr.children[4].firstChild.firstChild.nodeValue).toEqual('fähig');
468 expect(tr.children[4].lastChild.firstChild.nodeValue).toEqual('leistung');
Nils Diewald7c8ced22015-04-15 19:21:00 +0000469
470 // second row
471 tr = e.children[1].children[1];
472 expect(tr.nodeName).toBe('TR');
473 expect(tr.getAttribute('tabindex')).toEqual('0');
474 expect(tr.children[0].nodeName).toBe('TH');
475 expect(tr.children[0].firstChild.nodeValue).toEqual('cnx');
476 expect(tr.children[1].firstChild.nodeValue).toEqual('p');
477 expect(tr.children[2].firstChild.nodeValue).toEqual('ADV');
478 expect(tr.children[3].firstChild.nodeValue).toEqual('A');
Akron47774c42017-07-03 20:14:55 +0200479 expect(tr.children[4].firstChild.firstChild.nodeValue).toEqual('A');
480 expect(tr.children[4].lastChild.firstChild.nodeValue).toEqual('ADJA');
Akronf2279c42017-12-21 13:48:46 +0100481
482 expect(tr.children[4].firstChild.getAttribute("title")).toEqual('Adjective');
483 expect(tr.children[2].getAttribute("title")).toEqual('Adverb');
484
Nils Diewald58141332015-04-07 16:18:45 +0000485 });
Akron7f9a6a32018-07-18 15:05:23 +0200486
487
488 it('should parse into a table view (sync)', function () {
489 var matchElement = matchElementFactory();
490 expect(matchElement.tagName).toEqual('LI');
491
492 // Match
493 expect(matchElement.children[0].tagName).toEqual('DIV');
494
495 // snippet
496 expect(matchElement.children[0].children[0].tagName).toEqual('DIV');
497 expect(matchElement.children[0].children[0].classList.contains('snippet')).toBeTruthy();
498 expect(matchElement.children[0].children[0].firstChild.nodeValue).toEqual('check');
499
500 // reference
501 expect(matchElement.children[1].classList.contains('ref')).toBeTruthy();
502 expect(matchElement.children[1].firstChild.nodeValue).toEqual('me');
503
504 // not yet
505 expect(matchElement.children[0].children[1]).toBe(undefined);
506
507 /*
508 var info = matchClass.create(matchElement).info();
509 info.showTable();
510 */
511 var matchObj = matchClass.create(matchElement);
512 matchObj.open();
513
514 // Match
515 expect(matchElement.children[0].tagName).toEqual('DIV');
516
517 // snippet
518 expect(matchElement.children[0].children[0].tagName).toEqual('DIV');
519
520 expect(matchElement.children[0].children[0].classList.contains('snippet')).toBeTruthy();
521
522 expect(matchElement.children[0].children[0].firstChild.nodeValue).toEqual('check');
523
524 // reference
525
526 expect(matchElement.children[2].classList.contains('ref')).toBeTruthy();
527 expect(matchElement.children[2].childNodes[1].nodeValue).toEqual('me');
528
529 // Add table
530 matchObj.panel.addTable();
531
532 // now
533 var infotable = matchElement.children[1];
534 expect(infotable.tagName).toEqual('DIV');
535
536 expect(infotable.classList.contains('matchinfo')).toBeTruthy();
537
538 expect(infotable.firstChild.firstChild.firstChild.classList.contains('matchtable')).toBeTruthy();
539
540 // expect(infotable.children[1].classList.contains('addtree')).toBeTruthy();
541 });
542
Nils Diewald58141332015-04-07 16:18:45 +0000543 });
Nils Diewalda297f062015-04-02 00:23:46 +0000544
Akron7f9a6a32018-07-18 15:05:23 +0200545 describe('KorAP.RelationsView', function () {
Nils Diewald7c8ced22015-04-15 19:21:00 +0000546 var tree;
547 var matchClass = require('match');
Akron7f9a6a32018-07-18 15:05:23 +0200548 var relClass = require('view/match/relations');
549 var panelClass = require('panel/match');
Nils Diewalda297f062015-04-02 00:23:46 +0000550
Nils Diewald7c8ced22015-04-15 19:21:00 +0000551 it('should be rendered async 1', function (done) {
Akron7f9a6a32018-07-18 15:05:23 +0200552 var matchObj = matchClass.create(match);
553 var relObj = relClass.create(matchObj);
554 expect(relObj).toBeTruthy();
555 relObj.getData(undefined, undefined, "spans", function (y) {
Akron671fdb92017-09-12 18:09:46 +0200556 tree = y;
557 done();
Nils Diewald7c8ced22015-04-15 19:21:00 +0000558 });
559 });
Nils Diewalda297f062015-04-02 00:23:46 +0000560
Nils Diewald7c8ced22015-04-15 19:21:00 +0000561 it('should be rendered async 2', function () {
Akron7f9a6a32018-07-18 15:05:23 +0200562 expect(tree).toBeTruthy();
563 expect(tree.nodes()).toEqual(49);
564
Nils Diewald7c8ced22015-04-15 19:21:00 +0000565 var e = tree.element();
566 expect(e.nodeName).toEqual('svg');
567 expect(e.getElementsByTagName('g').length).toEqual(48);
Nils Diewald58141332015-04-07 16:18:45 +0000568 });
Akron7f9a6a32018-07-18 15:05:23 +0200569
570
571 it('should add a tree view async 2', function () {
572 var matchElement = matchElementFactory();
573 var matchObj = matchClass.create(matchElement);
574 matchObj.open();
575 matchObj.panel.addTree('mate', 'beebop', 'spans', function () {
576 done();
577 });
578
579 // With added tree
580 var tree = matchElement.children[1].firstChild.firstChild.firstChild;
581 expect(tree.tagName).toEqual('DIV');
582 expect(tree.classList.contains('matchtree')).toBeTruthy();
583 expect(tree.children[0].tagName).toEqual('H6');
584 expect(tree.children[0].children[0].tagName).toEqual('SPAN');
585 expect(tree.children[0].children[0].firstChild.nodeValue).toEqual('mate');
586 expect(tree.children[0].children[1].tagName).toEqual('SPAN');
587 expect(tree.children[0].children[1].firstChild.nodeValue).toEqual('beebop');
588
589 expect(tree.children[1].tagName).toEqual('DIV');
590 });
591
Nils Diewald58141332015-04-07 16:18:45 +0000592 });
Nils Diewalda297f062015-04-02 00:23:46 +0000593
Nils Diewald7c8ced22015-04-15 19:21:00 +0000594
595 describe('KorAP.MatchTreeItem', function () {
596 var matchTreeItemClass = require('match/treeitem');
597 it('should be initializable', function () {
598 var mi = matchTreeItemClass.create(['cnx/c', 'cnx', 'c'])
599 expect(mi.element().firstChild.nodeValue).toEqual('cnx/c');
600 expect(mi.lcField()).toEqual(' cnx/c');
601 expect(mi.foundry()).toEqual('cnx');
602 expect(mi.layer()).toEqual('c');
603 });
Nils Diewalda297f062015-04-02 00:23:46 +0000604 });
Nils Diewalda297f062015-04-02 00:23:46 +0000605
606
Akron671fdb92017-09-12 18:09:46 +0200607 describe('KorAP.MatchRelation', function () {
Akron41387d22018-02-02 18:10:06 +0100608 var relClass = require('match/treearc')
Akron671fdb92017-09-12 18:09:46 +0200609
610 var relExample = "<span class=\"context-left\"></span>" +
611 "<span class=\"match\">" +
612 " <span xml:id=\"token-GOE/AGA/01784-p199\">" +
613 " <span xlink:title=\"malt/d:ADV\" " +
614 " xlink:type=\"simple\" " +
615 " xlink:href=\"#token-GOE/AGA/01784-p199\">dann</span>" +
616 " </span>" +
617 " zog " +
618 " <span xlink:title=\"malt/d:SUBJ\" " +
619 " xlink:type=\"simple\" " +
620 " xlink:href=\"#token-GOE/AGA/01784-p199\">ich</span>" +
621 " <span xml:id=\"token-GOE/AGA/01784-p202\">" +
622 " <span xlink:title=\"malt/d:OBJA\" " +
623 " xlink:type=\"simple\" " +
624 " xlink:href=\"#token-GOE/AGA/01784-p199\">mich</span>" +
625 " </span>" +
626 "</span>" +
627 "<span class=\"context-right\"></span>";
628
629
630 it('should be initializable', function () {
631 var tree = relClass.create();
632 expect(tree.size()).toBe(0);
633 });
634
635 it('should be parse string data', function () {
636 var tree = relClass.create(relExample);
637 expect(tree.size()).toBe(4);
638 });
Akron671fdb92017-09-12 18:09:46 +0200639 });
640
641
Nils Diewald7c8ced22015-04-15 19:21:00 +0000642 describe('KorAP.MatchTreeMenu', function () {
Akron52ed22d2018-07-11 17:05:19 +0200643 var matchTreeMenu = require('buttongroup/menu');
Nils Diewald7c8ced22015-04-15 19:21:00 +0000644 var matchTreeItem = require('match/treeitem');
645
646 it('should be initializable', function () {
Akron5b1a6af2018-02-05 15:41:16 +0100647 var menu = matchTreeMenu.create([
Akron671fdb92017-09-12 18:09:46 +0200648 ['cnx/c', 'cnx', 'c'],
649 ['xip/c', 'xip', 'c']
Akron52ed22d2018-07-11 17:05:19 +0200650 ], matchTreeItem);
Nils Diewald7c8ced22015-04-15 19:21:00 +0000651
652 expect(menu.itemClass()).toEqual(matchTreeItem);
653 expect(menu.element().nodeName).toEqual('UL');
Akronaba7a5a2016-08-15 21:58:33 +0200654 expect(menu.element().classList.contains('visible')).toBeFalsy();
Nils Diewald7c8ced22015-04-15 19:21:00 +0000655 expect(menu.limit()).toEqual(6);
656 menu.show();
Akronaba7a5a2016-08-15 21:58:33 +0200657 expect(menu.element().classList.contains('visible')).toBeTruthy();
Akronc1457bf2015-06-11 19:24:00 +0200658 expect(menu.item(0).active()).toBe(false);
Nils Diewald7c8ced22015-04-15 19:21:00 +0000659 });
Nils Diewalda297f062015-04-02 00:23:46 +0000660 });
hebasta999d6c12018-04-23 12:44:59 +0200661
662 //Test display and sorting of meta information
663 describe('KorAP.Meta', function(){
664
665 var metaClass = require("match/meta");
666 var met = metaClass.create(match, fields);
667 var mel = met.element();
668
669 // Meta information should be parsed into a list
670 it('should parse in a meta view', function(){
671 expect(mel.tagName).toEqual('DL');
672 expect(mel.children[0].tagName).toEqual('DIV');
673 expect(mel.children[0].children[0].tagName).toEqual('DT');
674 expect(mel.children[0].children[0].attributes[0].name).toEqual('title');
675 expect(mel.children[0].children[1].tagName).toEqual('DD');
676
677 expect(mel.children[0].children[0].firstChild.nodeValue).toEqual('author');
678 expect(mel.children[0].children[1].firstChild.nodeValue).toEqual('Sprachpfleger, u.a.');
679 expect(mel.children[0].children[0].attributes[0].value).toEqual('author');
680 });
681
682
683 /* The keywords in the meta information list should be formatted to be able
684 to chose each keyword separately in the corpusByMatch assistant. */
685 it('keywords should be formatted', function(){
686
687 //type:string or type:keyword should b not relevant
688 expect(mel.children[1].children[1].classList.contains('metakeyvalues')).toBeTruthy;
689 expect(mel.children[1].children[1].children[0].tagName).toEqual('DIV');
690 expect(mel.children[1].children[1].children[0].firstChild.nodeValue).toEqual('corenlp');
691 expect(mel.children[1].children[1].children[1].tagName).toEqual('DIV');
692 expect(mel.children[1].children[1].children[1].firstChild.nodeValue).toEqual('corenlp\/constituency');
693
694 expect(mel.children[2].children[1].classList.contains('metakeyvalues')).toBeTruthy;
695 expect(mel.children[2].children[1].children[0].tagName).toEqual('DIV');
696 expect(mel.children[2].children[1].children[0].firstChild.nodeValue).toEqual('kultur');
697 expect(mel.children[2].children[1].children[1].tagName).toEqual('DIV');
698 expect(mel.children[2].children[1].children[1].firstChild.nodeValue).toEqual('film');
699 });
700
701
702 // Meta information should be sorted alphabetically
703 it('should be alphabetically sorted', function(){
704 var a = mel.children[0].children[0].firstChild.nodeValue;
705 var b = mel.children[1].children[0].firstChild.nodeValue;
706 var c = mel.children[2].children[0].firstChild.nodeValue;
707 expect(a.localeCompare(b)).toBe(-1);
708 expect(b.localeCompare(c)).toBe(-1);
709 });
710
711});
Nils Diewald7c8ced22015-04-15 19:21:00 +0000712 // table = view.toTable();
713 // table.sortBy('');
714 // table.element();
715 // tree = view.toTree();
716 // tree.element();
Nils Diewalda297f062015-04-02 00:23:46 +0000717});