blob: 716022e96cc772d639d34f1b119b602488274f49 [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
353 // Close the match
354 m.close();
355 expect(e.classList.contains('active')).toBe(false);
356 expect(e["_match"]).not.toBe(undefined);
357
Nils Diewald58141332015-04-07 16:18:45 +0000358 });
359 });
Nils Diewalda297f062015-04-02 00:23:46 +0000360
Nils Diewald7c8ced22015-04-15 19:21:00 +0000361
362 describe('KorAP.MatchInfo', function () {
363
364 var matchClass = require('match');
365
366 var m = matchClass.create(match);
367 var info = m.info();
368
369 it('should contain a valid info', function () {
370 expect(m._info).toEqual(info);
371 });
372
373 var table1, table2;
374
375 // Async preparation
376 it('should fail to load a table async', function (done) {
377 expect(info).toBeTruthy();
378
Akron5b1a6af2018-02-05 15:41:16 +0100379 info.getTableData([], function (tablen) {
Akron671fdb92017-09-12 18:09:46 +0200380 table1 = tablen;
381 done();
Nils Diewald7c8ced22015-04-15 19:21:00 +0000382 });
383 });
384
Akron671fdb92017-09-12 18:09:46 +0200385
Nils Diewald7c8ced22015-04-15 19:21:00 +0000386 it('should\'nt be parsable (async)', function () {
387 expect(table1).not.toBeTruthy();
388 });
389
Akron671fdb92017-09-12 18:09:46 +0200390
Nils Diewald7c8ced22015-04-15 19:21:00 +0000391 it('should load a working table async', function(done) {
392 expect(info).toBeTruthy();
Akron5b1a6af2018-02-05 15:41:16 +0100393 info.getTableData(undefined, function (tablem) {
Akron671fdb92017-09-12 18:09:46 +0200394 table2 = tablem;
395 done();
Nils Diewald7c8ced22015-04-15 19:21:00 +0000396 });
397 });
398
Akron671fdb92017-09-12 18:09:46 +0200399
Nils Diewald7c8ced22015-04-15 19:21:00 +0000400 it('should parse into a table (async)', function () {
401 expect(table2).toBeTruthy();
402
403 expect(table2.length()).toBe(3);
404
405 expect(table2.getToken(0)).toBe("meist");
406 expect(table2.getToken(1)).toBe("deutlich");
407 expect(table2.getToken(2)).toBe("leistungsfähiger");
408
409 expect(table2.getValue(0, "cnx", "p")[0]).toBe("ADV");
410 expect(table2.getValue(0, "cnx", "syn")[0]).toBe("@PREMOD");
Akron916ec252016-11-10 17:06:32 +0100411 expect(table2.getValue(0, "mate", "l")[0]).toBe("meist");
412 expect(table2.getValue(0, "mate", "l")[1]).toBeUndefined();
Nils Diewald7c8ced22015-04-15 19:21:00 +0000413
414 expect(table2.getValue(2, "cnx", "l")[0]).toBe("fähig");
415 expect(table2.getValue(2, "cnx", "l")[1]).toBe("leistung");
416 });
417
Akron671fdb92017-09-12 18:09:46 +0200418
Nils Diewald7c8ced22015-04-15 19:21:00 +0000419 it('should parse into a table view', function () {
420 var matchElement = matchElementFactory();
421 expect(matchElement.tagName).toEqual('LI');
422
423 // Match
424 expect(matchElement.children[0].tagName).toEqual('DIV');
425
426 // snippet
427 expect(matchElement.children[0].children[0].tagName).toEqual('DIV');
428 expect(matchElement.children[0].children[0].classList.contains('snippet')).toBeTruthy();
429 expect(matchElement.children[0].children[0].firstChild.nodeValue).toEqual('check');
430
431 // reference
432 expect(matchElement.children[1].classList.contains('ref')).toBeTruthy();
433 expect(matchElement.children[1].firstChild.nodeValue).toEqual('me');
434
435 // not yet
436 expect(matchElement.children[0].children[1]).toBe(undefined);
437
438 var info = matchClass.create(matchElement).info();
Akron5b1a6af2018-02-05 15:41:16 +0100439 info.showTable();
Nils Diewald7c8ced22015-04-15 19:21:00 +0000440
441 // Match
442 expect(matchElement.children[0].tagName).toEqual('DIV');
443
444 // snippet
445 expect(matchElement.children[0].children[0].tagName).toEqual('DIV');
Akron5b1a6af2018-02-05 15:41:16 +0100446
Nils Diewald7c8ced22015-04-15 19:21:00 +0000447 expect(matchElement.children[0].children[0].classList.contains('snippet')).toBeTruthy();
Akron5b1a6af2018-02-05 15:41:16 +0100448
Nils Diewald7c8ced22015-04-15 19:21:00 +0000449 expect(matchElement.children[0].children[0].firstChild.nodeValue).toEqual('check');
450
451 // reference
Akron5b1a6af2018-02-05 15:41:16 +0100452 expect(matchElement.lastChild.classList.contains('ref')).toBeTruthy();
453 expect(matchElement.lastChild.firstChild.nodeValue).toEqual('me');
Nils Diewald7c8ced22015-04-15 19:21:00 +0000454
455 // now
Akron5b1a6af2018-02-05 15:41:16 +0100456 var infotable = matchElement.children[1];
Nils Diewald7c8ced22015-04-15 19:21:00 +0000457 expect(infotable.tagName).toEqual('DIV');
Akronaa7fce52017-06-30 21:15:18 +0200458
Nils Diewald7c8ced22015-04-15 19:21:00 +0000459 expect(infotable.classList.contains('matchinfo')).toBeTruthy();
460
461 expect(infotable.children[0].classList.contains('matchtable')).toBeTruthy();
Akron5b1a6af2018-02-05 15:41:16 +0100462 // expect(infotable.children[1].classList.contains('addtree')).toBeTruthy();
Nils Diewald7c8ced22015-04-15 19:21:00 +0000463 });
464
Akron671fdb92017-09-12 18:09:46 +0200465
Nils Diewald7c8ced22015-04-15 19:21:00 +0000466 var tree;
467 it('should parse into a tree (async) 1', function (done) {
468 var info = matchClass.create(match).info();
469 expect(info).toBeTruthy();
Akron5b1a6af2018-02-05 15:41:16 +0100470 info.getTreeData(undefined, undefined, "spans", function (treem) {
Akron671fdb92017-09-12 18:09:46 +0200471 tree = treem;
472 done();
Nils Diewald7c8ced22015-04-15 19:21:00 +0000473 });
474 });
475
Akron671fdb92017-09-12 18:09:46 +0200476
Nils Diewald7c8ced22015-04-15 19:21:00 +0000477 it('should parse into a tree (async) 2', function () {
478 expect(tree).toBeTruthy();
479 expect(tree.nodes()).toEqual(49);
480 });
Nils Diewalda297f062015-04-02 00:23:46 +0000481
Akron671fdb92017-09-12 18:09:46 +0200482
Akron98a933f2016-08-11 00:19:17 +0200483 var matchElement, info;
Akron5b1a6af2018-02-05 15:41:16 +0100484
Akron98a933f2016-08-11 00:19:17 +0200485 // var info, matchElement;
486 it('should parse into a tree view', function () {
Nils Diewald7c8ced22015-04-15 19:21:00 +0000487 matchElement = matchElementFactory();
488 expect(matchElement.tagName).toEqual('LI');
Nils Diewalda297f062015-04-02 00:23:46 +0000489
Nils Diewald7c8ced22015-04-15 19:21:00 +0000490 info = matchClass.create(matchElement).info();
Akron5b1a6af2018-02-05 15:41:16 +0100491 info.showTable();
Nils Diewalda297f062015-04-02 00:23:46 +0000492
Nils Diewald7c8ced22015-04-15 19:21:00 +0000493 // Match
494 expect(matchElement.children[0].tagName).toEqual('DIV');
Nils Diewalda297f062015-04-02 00:23:46 +0000495
Nils Diewald7c8ced22015-04-15 19:21:00 +0000496 // snippet
497 expect(matchElement.children[0].children[0].tagName).toEqual('DIV');
498 expect(matchElement.children[0].children[0].classList.contains('snippet')).toBeTruthy();
499 expect(matchElement.children[0].children[0].firstChild.nodeValue).toEqual('check');
Nils Diewalda297f062015-04-02 00:23:46 +0000500
Nils Diewald7c8ced22015-04-15 19:21:00 +0000501 // reference
Akron5b1a6af2018-02-05 15:41:16 +0100502 expect(matchElement.lastChild.classList.contains('ref')).toBeTruthy();
503 expect(matchElement.lastChild.firstChild.nodeValue).toEqual('me');
Nils Diewalda297f062015-04-02 00:23:46 +0000504
Nils Diewald7c8ced22015-04-15 19:21:00 +0000505 // now
Akron5b1a6af2018-02-05 15:41:16 +0100506 var infotable = matchElement.children[1];
Nils Diewald7c8ced22015-04-15 19:21:00 +0000507 expect(infotable.tagName).toEqual('DIV');
508 expect(infotable.classList.contains('matchinfo')).toBeTruthy();
509 expect(infotable.children[0].classList.contains('matchtable')).toBeTruthy();
Akron5b1a6af2018-02-05 15:41:16 +0100510 // expect(infotable.children[1].classList.contains('addtree')).toBeTruthy();
Nils Diewald7c8ced22015-04-15 19:21:00 +0000511 });
Nils Diewalda297f062015-04-02 00:23:46 +0000512
Akron671fdb92017-09-12 18:09:46 +0200513
Nils Diewald7c8ced22015-04-15 19:21:00 +0000514 it('should add a tree view async 1', function (done) {
515 expect(info).toBeTruthy();
Akron5b1a6af2018-02-05 15:41:16 +0100516 info.showTree('mate', 'beebop', "spans", function () {
Akron671fdb92017-09-12 18:09:46 +0200517 done();
Nils Diewald7c8ced22015-04-15 19:21:00 +0000518 });
519 });
520
Akron671fdb92017-09-12 18:09:46 +0200521
Nils Diewald7c8ced22015-04-15 19:21:00 +0000522 it('should add a tree view async 2', function () {
523 // With added tree
Akron5b1a6af2018-02-05 15:41:16 +0100524 var infotable = matchElement.children[1];
525
Nils Diewald7c8ced22015-04-15 19:21:00 +0000526 expect(infotable.tagName).toEqual('DIV');
527 expect(infotable.classList.contains('matchinfo')).toBeTruthy();
528 expect(infotable.children[0].classList.contains('matchtable')).toBeTruthy();
529 expect(infotable.children[1].classList.contains('addtree')).toBe(false);
530
531 var tree = infotable.children[1];
532 expect(tree.tagName).toEqual('DIV');
533 expect(tree.classList.contains('matchtree')).toBeTruthy();
534 expect(tree.children[0].tagName).toEqual('H6');
535 expect(tree.children[0].children[0].tagName).toEqual('SPAN');
536 expect(tree.children[0].children[0].firstChild.nodeValue).toEqual('mate');
537 expect(tree.children[0].children[1].tagName).toEqual('SPAN');
538 expect(tree.children[0].children[1].firstChild.nodeValue).toEqual('beebop');
539
540 expect(tree.children[1].tagName).toEqual('DIV');
Nils Diewald58141332015-04-07 16:18:45 +0000541 });
542 });
Nils Diewalda297f062015-04-02 00:23:46 +0000543
Nils Diewalda297f062015-04-02 00:23:46 +0000544
Nils Diewald7c8ced22015-04-15 19:21:00 +0000545 describe('KorAP.MatchTable', function () {
Nils Diewalda297f062015-04-02 00:23:46 +0000546
Nils Diewald7c8ced22015-04-15 19:21:00 +0000547 var matchClass = require('match');
Nils Diewalda297f062015-04-02 00:23:46 +0000548
Nils Diewald7c8ced22015-04-15 19:21:00 +0000549 var table;
550 it('should be retrieved async', function (done) {
551 var info = matchClass.create(match).info();
552 expect(info).toBeTruthy();
Akron5b1a6af2018-02-05 15:41:16 +0100553 info.getTableData(undefined, function (x) {
Akron671fdb92017-09-12 18:09:46 +0200554 table = x;
555 done();
Nils Diewald7c8ced22015-04-15 19:21:00 +0000556 });
557 });
Nils Diewalda297f062015-04-02 00:23:46 +0000558
Nils Diewald7c8ced22015-04-15 19:21:00 +0000559 it('should be rendered async', function () {
Akron5b1a6af2018-02-05 15:41:16 +0100560
561 var e = table.element().firstChild;
Nils Diewald7c8ced22015-04-15 19:21:00 +0000562 expect(e.nodeName).toBe('TABLE');
563 expect(e.children[0].nodeName).toBe('THEAD');
564 var tr = e.children[0].children[0];
565 expect(tr.nodeName).toBe('TR');
566 expect(tr.children[0].nodeName).toBe('TH');
Nils Diewald58141332015-04-07 16:18:45 +0000567
Nils Diewald7c8ced22015-04-15 19:21:00 +0000568 expect(tr.children[0].firstChild.nodeValue).toBe('Foundry');
569 expect(tr.children[1].firstChild.nodeValue).toBe('Layer');
570 expect(tr.children[2].firstChild.nodeValue).toBe('meist');
571 expect(tr.children[3].firstChild.nodeValue).toBe('deutlich');
572 expect(tr.children[4].firstChild.nodeValue).toBe('leistungsfähiger');
573
574 // first row
575 tr = e.children[1].children[0];
576 expect(tr.nodeName).toBe('TR');
577 expect(tr.getAttribute('tabindex')).toEqual('0');
578 expect(tr.children[0].nodeName).toBe('TH');
579 expect(tr.children[0].firstChild.nodeValue).toEqual('cnx');
580 expect(tr.children[1].firstChild.nodeValue).toEqual('l');
581 expect(tr.children[2].firstChild.nodeValue).toEqual('meist');
582 expect(tr.children[3].firstChild.nodeValue).toEqual('deutlich');
Akron47774c42017-07-03 20:14:55 +0200583 expect(tr.children[4].firstChild.firstChild.nodeValue).toEqual('fähig');
584 expect(tr.children[4].lastChild.firstChild.nodeValue).toEqual('leistung');
Nils Diewald7c8ced22015-04-15 19:21:00 +0000585
586 // second row
587 tr = e.children[1].children[1];
588 expect(tr.nodeName).toBe('TR');
589 expect(tr.getAttribute('tabindex')).toEqual('0');
590 expect(tr.children[0].nodeName).toBe('TH');
591 expect(tr.children[0].firstChild.nodeValue).toEqual('cnx');
592 expect(tr.children[1].firstChild.nodeValue).toEqual('p');
593 expect(tr.children[2].firstChild.nodeValue).toEqual('ADV');
594 expect(tr.children[3].firstChild.nodeValue).toEqual('A');
Akron47774c42017-07-03 20:14:55 +0200595 expect(tr.children[4].firstChild.firstChild.nodeValue).toEqual('A');
596 expect(tr.children[4].lastChild.firstChild.nodeValue).toEqual('ADJA');
Akronf2279c42017-12-21 13:48:46 +0100597
598 expect(tr.children[4].firstChild.getAttribute("title")).toEqual('Adjective');
599 expect(tr.children[2].getAttribute("title")).toEqual('Adverb');
600
Nils Diewald58141332015-04-07 16:18:45 +0000601 });
602 });
Nils Diewalda297f062015-04-02 00:23:46 +0000603
Nils Diewald7c8ced22015-04-15 19:21:00 +0000604 describe('KorAP.MatchTree', function () {
605 var tree;
606 var matchClass = require('match');
Nils Diewalda297f062015-04-02 00:23:46 +0000607
Nils Diewald7c8ced22015-04-15 19:21:00 +0000608 it('should be rendered async 1', function (done) {
609 var info = matchClass.create(match).info();
610 expect(info).toBeTruthy();
Akron5b1a6af2018-02-05 15:41:16 +0100611 info.getTreeData(undefined, undefined, "spans", function (y) {
Akron671fdb92017-09-12 18:09:46 +0200612 tree = y;
613 done();
Nils Diewald7c8ced22015-04-15 19:21:00 +0000614 });
615 });
Nils Diewalda297f062015-04-02 00:23:46 +0000616
Nils Diewald7c8ced22015-04-15 19:21:00 +0000617 it('should be rendered async 2', function () {
618 var e = tree.element();
619 expect(e.nodeName).toEqual('svg');
620 expect(e.getElementsByTagName('g').length).toEqual(48);
Nils Diewald58141332015-04-07 16:18:45 +0000621 });
622 });
Nils Diewalda297f062015-04-02 00:23:46 +0000623
Nils Diewald7c8ced22015-04-15 19:21:00 +0000624
625 describe('KorAP.MatchTreeItem', function () {
626 var matchTreeItemClass = require('match/treeitem');
627 it('should be initializable', function () {
628 var mi = matchTreeItemClass.create(['cnx/c', 'cnx', 'c'])
629 expect(mi.element().firstChild.nodeValue).toEqual('cnx/c');
630 expect(mi.lcField()).toEqual(' cnx/c');
631 expect(mi.foundry()).toEqual('cnx');
632 expect(mi.layer()).toEqual('c');
633 });
Nils Diewalda297f062015-04-02 00:23:46 +0000634 });
Nils Diewalda297f062015-04-02 00:23:46 +0000635
636
Akron671fdb92017-09-12 18:09:46 +0200637 describe('KorAP.MatchRelation', function () {
Akron41387d22018-02-02 18:10:06 +0100638 var relClass = require('match/treearc')
Akron671fdb92017-09-12 18:09:46 +0200639
640 var relExample = "<span class=\"context-left\"></span>" +
641 "<span class=\"match\">" +
642 " <span xml:id=\"token-GOE/AGA/01784-p199\">" +
643 " <span xlink:title=\"malt/d:ADV\" " +
644 " xlink:type=\"simple\" " +
645 " xlink:href=\"#token-GOE/AGA/01784-p199\">dann</span>" +
646 " </span>" +
647 " zog " +
648 " <span xlink:title=\"malt/d:SUBJ\" " +
649 " xlink:type=\"simple\" " +
650 " xlink:href=\"#token-GOE/AGA/01784-p199\">ich</span>" +
651 " <span xml:id=\"token-GOE/AGA/01784-p202\">" +
652 " <span xlink:title=\"malt/d:OBJA\" " +
653 " xlink:type=\"simple\" " +
654 " xlink:href=\"#token-GOE/AGA/01784-p199\">mich</span>" +
655 " </span>" +
656 "</span>" +
657 "<span class=\"context-right\"></span>";
658
659
660 it('should be initializable', function () {
661 var tree = relClass.create();
662 expect(tree.size()).toBe(0);
663 });
664
665 it('should be parse string data', function () {
666 var tree = relClass.create(relExample);
667 expect(tree.size()).toBe(4);
668 });
669
670
671 });
672
673
Nils Diewald7c8ced22015-04-15 19:21:00 +0000674 describe('KorAP.MatchTreeMenu', function () {
675 var matchTreeMenu = require('match/treemenu');
676 var matchTreeItem = require('match/treeitem');
677
678 it('should be initializable', function () {
Akron5b1a6af2018-02-05 15:41:16 +0100679 var menu = matchTreeMenu.create([
Akron671fdb92017-09-12 18:09:46 +0200680 ['cnx/c', 'cnx', 'c'],
681 ['xip/c', 'xip', 'c']
Nils Diewald7c8ced22015-04-15 19:21:00 +0000682 ]);
683
684 expect(menu.itemClass()).toEqual(matchTreeItem);
685 expect(menu.element().nodeName).toEqual('UL');
Akronaba7a5a2016-08-15 21:58:33 +0200686 expect(menu.element().classList.contains('visible')).toBeFalsy();
Nils Diewald7c8ced22015-04-15 19:21:00 +0000687 expect(menu.limit()).toEqual(6);
688 menu.show();
Akronaba7a5a2016-08-15 21:58:33 +0200689 expect(menu.element().classList.contains('visible')).toBeTruthy();
Akronc1457bf2015-06-11 19:24:00 +0200690 expect(menu.item(0).active()).toBe(false);
Nils Diewald7c8ced22015-04-15 19:21:00 +0000691 });
Nils Diewalda297f062015-04-02 00:23:46 +0000692 });
hebasta999d6c12018-04-23 12:44:59 +0200693
694 //Test display and sorting of meta information
695 describe('KorAP.Meta', function(){
696
697 var metaClass = require("match/meta");
698 var met = metaClass.create(match, fields);
699 var mel = met.element();
700
701 // Meta information should be parsed into a list
702 it('should parse in a meta view', function(){
703 expect(mel.tagName).toEqual('DL');
704 expect(mel.children[0].tagName).toEqual('DIV');
705 expect(mel.children[0].children[0].tagName).toEqual('DT');
706 expect(mel.children[0].children[0].attributes[0].name).toEqual('title');
707 expect(mel.children[0].children[1].tagName).toEqual('DD');
708
709 expect(mel.children[0].children[0].firstChild.nodeValue).toEqual('author');
710 expect(mel.children[0].children[1].firstChild.nodeValue).toEqual('Sprachpfleger, u.a.');
711 expect(mel.children[0].children[0].attributes[0].value).toEqual('author');
712 });
713
714
715 /* The keywords in the meta information list should be formatted to be able
716 to chose each keyword separately in the corpusByMatch assistant. */
717 it('keywords should be formatted', function(){
718
719 //type:string or type:keyword should b not relevant
720 expect(mel.children[1].children[1].classList.contains('metakeyvalues')).toBeTruthy;
721 expect(mel.children[1].children[1].children[0].tagName).toEqual('DIV');
722 expect(mel.children[1].children[1].children[0].firstChild.nodeValue).toEqual('corenlp');
723 expect(mel.children[1].children[1].children[1].tagName).toEqual('DIV');
724 expect(mel.children[1].children[1].children[1].firstChild.nodeValue).toEqual('corenlp\/constituency');
725
726 expect(mel.children[2].children[1].classList.contains('metakeyvalues')).toBeTruthy;
727 expect(mel.children[2].children[1].children[0].tagName).toEqual('DIV');
728 expect(mel.children[2].children[1].children[0].firstChild.nodeValue).toEqual('kultur');
729 expect(mel.children[2].children[1].children[1].tagName).toEqual('DIV');
730 expect(mel.children[2].children[1].children[1].firstChild.nodeValue).toEqual('film');
731 });
732
733
734 // Meta information should be sorted alphabetically
735 it('should be alphabetically sorted', function(){
736 var a = mel.children[0].children[0].firstChild.nodeValue;
737 var b = mel.children[1].children[0].firstChild.nodeValue;
738 var c = mel.children[2].children[0].firstChild.nodeValue;
739 expect(a.localeCompare(b)).toBe(-1);
740 expect(b.localeCompare(c)).toBe(-1);
741 });
742
743});
Nils Diewald7c8ced22015-04-15 19:21:00 +0000744 // table = view.toTable();
745 // table.sortBy('');
746 // table.element();
747 // tree = view.toTree();
748 // tree.element();
Nils Diewalda297f062015-04-02 00:23:46 +0000749});