philologic-client 0.0.11 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. data/HISTORY.rdoc +8 -0
  2. data/PhiloLogicResponseDocumentation.txt +86 -0
  3. data/README.rdoc +54 -32
  4. data/Rakefile +26 -0
  5. data/lib/philologic-client/bibliography.rb +60 -0
  6. data/lib/philologic-client/collocation.rb +61 -0
  7. data/lib/philologic-client/concordance.rb +39 -0
  8. data/lib/philologic-client/document.rb +65 -0
  9. data/lib/philologic-client/frequency.rb +57 -0
  10. data/lib/philologic-client/frequency_row.rb +67 -0
  11. data/lib/philologic-client/link.rb +37 -0
  12. data/lib/philologic-client/occurrence.rb +79 -0
  13. data/lib/philologic-client/response.rb +63 -0
  14. data/lib/philologic-client/version.rb +1 -1
  15. data/lib/philologic-client.rb +102 -286
  16. data/test/data/bibliography.html +182 -0
  17. data/test/data/collocation.html +2594 -0
  18. data/test/data/concordance.html +758 -0
  19. data/test/data/frequency.html +73 -0
  20. data/test/data/navigation.html +69 -0
  21. data/test/data/object.html +20 -0
  22. data/test/test_bibliography.rb +78 -0
  23. data/test/test_client.rb +861 -0
  24. data/test/test_collocation.rb +76 -0
  25. data/test/test_concordance.rb +83 -0
  26. data/test/test_document.rb +127 -0
  27. data/test/test_frequency.rb +78 -0
  28. data/test/test_occurrence.rb +66 -0
  29. data/test/test_response.rb +41 -0
  30. metadata +55 -36
  31. data/doc/PhiloLogicResponseTemplates.txt +0 -46
  32. data/test/data/collocation_links.html +0 -145
  33. data/test/data/collocation_sartre.html +0 -67
  34. data/test/data/doc_file.html +0 -396
  35. data/test/data/frequency_links.html +0 -145
  36. data/test/data/frequency_sartre.html +0 -67
  37. data/test/data/query_sartre.html +0 -151
  38. data/test/data/root_file.html +0 -1851
  39. data/test/test_philologic_client.rb +0 -558
  40. data/test/test_philologic_link.rb +0 -101
@@ -1,558 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'simplecov'
4
- SimpleCov.start
5
-
6
- require 'philologic-client'
7
- require 'test/unit'
8
- require 'mocha'
9
-
10
-
11
- class TestPhilologicClient < Test::Unit::TestCase
12
-
13
- def setup
14
- @test_dir = File.expand_path( File.dirname(__FILE__) )
15
- @data_dir = File.expand_path( File.join( @test_dir, 'data' ) )
16
-
17
- @doc_path = 'doc_file.html'
18
- @doc_file = File.join( @data_dir, @doc_path )
19
-
20
- @endpoint = @data_dir
21
-
22
- @coll_path = 'collocation_sartre.html'
23
- @coll_file = File.join( @data_dir, @coll_path )
24
-
25
- @coll_links_path = 'collocation_links.html'
26
- @coll_links_file = File.join( @data_dir, @coll_links_path )
27
-
28
- @freq_path = 'frequency_sartre.html'
29
- @freq_file = File.join( @data_dir, @freq_path )
30
-
31
- @freq_links_path = 'frequency_links.html'
32
- @freq_links_file = File.join( @data_dir, @freq_links_path )
33
-
34
- @root_path = 'root_file.html'
35
- @root_file = File.join( @data_dir, @root_path )
36
-
37
- @query_path = 'query_sartre.html'
38
- @query_file = File.join( @data_dir, @query_path )
39
- end
40
-
41
-
42
- # TODO Is there a point to this?
43
- def test_initialization
44
- blockable = false
45
- client = Philologic::Client.new do |client|
46
- assert_kind_of Philologic::Client, client
47
- blockable = true
48
- end
49
- assert blockable, 'works as block'
50
- assert_kind_of Philologic::Client, client
51
- assert_kind_of Philologic::Client, Philologic::Client.new
52
- end
53
-
54
- def test_initialization_with_endpoint
55
- blockable = false
56
- client = Philologic::Client.new(@endpoint) do |client|
57
- assert_kind_of Philologic::Client, client
58
- blockable = true
59
- assert_not_nil client.endpoint
60
- assert_equal @endpoint, client.endpoint
61
- end
62
- assert blockable, 'works as block'
63
- assert_kind_of Philologic::Client, client
64
- assert_kind_of Philologic::Client, Philologic::Client.new
65
- assert_not_nil client.endpoint
66
- assert_equal @endpoint, client.endpoint
67
- end
68
-
69
- def test_encoding_accessor
70
- Philologic::Client.new do |client|
71
- assert_equal Philologic::Client::DEFAULT_ENCODING, client.encoding
72
- assert_equal 'foo', client.encoding = 'foo'
73
- assert_equal 'foo', client.encoding
74
- end
75
- end
76
-
77
- def test_endpoint_accessor
78
- Philologic::Client.new do |client|
79
- assert_nil client.endpoint, 'defaults to nil'
80
- assert_equal @endpoint, client.endpoint = @endpoint, 'returns value on set'
81
- assert_equal @endpoint, client.endpoint, 'returns value on get'
82
- end
83
- end
84
-
85
- def test_get_children_without_an_endpoint
86
- Philologic::Client.new do |client|
87
- assert_raises(RuntimeError) { client.children }
88
- end
89
- end
90
-
91
- def test_get_document_without_an_endpoint
92
- Philologic::Client.new do |client|
93
- assert_raises(RuntimeError) { client.document }
94
- end
95
- end
96
-
97
- def test_get_children
98
- Philologic::Client.new do |client|
99
- h = Nokogiri::HTML( open(@root_file) )
100
- children = client.send( :_parse, Nokogiri::HTML( open(@root_file) ) )
101
- client.stubs(:_get).with('/').returns(children)
102
- assert_equal children, client.children
103
- end
104
- end
105
-
106
- def test_get_document
107
- Philologic::Client.new do |client|
108
- doc = client.send( :_parse, Nokogiri::HTML( open(@doc_file) ) )
109
- client.expects(:_get).with(@doc_path).returns(doc)
110
- assert_equal doc, client.document(@doc_path)
111
- end
112
- end
113
-
114
- def test_parse_children
115
- Philologic::Client.new do |client|
116
- client.endpoint = @endpoint
117
- children = client.children(@root_path)
118
- assert_not_nil children
119
- assert_kind_of Array, children
120
- assert_equal 1845, children.size
121
- children.each do |child|
122
- assert_kind_of Philologic::Link, child
123
- assert_equal 'philologic_cite', child['class']
124
- assert_not_nil child['href']
125
- assert_nil child['some random attribute']
126
- assert_not_nil child['author']
127
- assert_not_nil child['filename']
128
- assert_not_nil child['title']
129
- assert_not_nil child.text
130
- end
131
-
132
- assert_equal './1/0/0/0/0/0/0', children.first['href']
133
- assert_equal 'Conon, de Béthune, ca. 1160-1219 or 20.', children.first['author']
134
- assert_equal 'Les Chansons', children.first['title']
135
- assert_equal 'TLF.0.tei', children.first['filename']
136
- assert_match /^Conon, de Béthune, ca. 1160-1219 or 20./, children.first.text
137
- assert_equal './1/0/0/0/0/0/0 | Les Chansons | Conon, de Béthune, ca. 1160-1219 or 20.', children.first.to_s
138
-
139
- assert_equal './1845/0/0/0/0/0/0', children.last['href']
140
- assert_equal 'Sartre J.-P.', children.last['author']
141
- assert_equal 'Les Mots', children.last['title']
142
- assert_equal 'TLF.1879.tei', children.last['filename']
143
- assert_equal "Sartre J.-P., Les Mots: TLF.1879.tei", children.last.text
144
- assert_equal './1845/0/0/0/0/0/0 | Les Mots | Sartre J.-P.', children.last.to_s
145
-
146
- end
147
- end
148
-
149
- def test_parse_document
150
- Philologic::Client.new do |client|
151
- client.endpoint = @endpoint
152
- doc = client.document(@doc_path)
153
- assert_not_nil doc
154
-
155
- assert_kind_of Philologic::Document, doc
156
- assert_equal 'philologic_object', doc['class']
157
- assert_nil doc['some random attribute']
158
- assert_kind_of String, doc.html
159
- assert_match /^<div class="context_container" id="1">/, doc.html
160
- assert_match %r{par tans la verité." </div>}, doc.html
161
- assert_kind_of String, doc.text
162
- assert_match /^Conon, de Béthune/, doc.text
163
- assert_match /verité." $/, doc.text
164
- end
165
- end
166
-
167
- def test_get_document_from_cite_through_client
168
- Philologic::Client.new do |client|
169
- client.endpoint = @endpoint
170
- child = client.children(@root_path).first
171
- assert_not_nil child
172
- assert_kind_of Philologic::Link, child
173
- doc = client.send( :_parse, Nokogiri::HTML( open(@doc_file) ) )
174
- client.stubs(:_get).with('./1/0/0/0/0/0/0').returns(doc) # TODO Improve
175
- assert_equal doc, client.document( child['href'] )
176
- end
177
- end
178
-
179
- def test_get_document_from_cite
180
- Philologic::Client.new do |client|
181
- client.endpoint = @endpoint
182
- child = client.children(@root_path).first
183
- assert_not_nil child
184
- assert_kind_of Philologic::Link, child
185
- doc = client.send( :_parse, Nokogiri::HTML( open(@doc_file) ) )
186
- client.stubs(:_get).with('./1/0/0/0/0/0/0').returns(doc) # TODO Improve
187
- assert_equal doc, child.document
188
- end
189
- end
190
-
191
- def test_underscore_query
192
- Philologic::Client.new(@endpoint) do |client|
193
- doc = client.send( :_parse, Nokogiri::HTML( open(@query_file) ) )
194
- client.stubs(:_get).with('?query=sartre').returns(doc)
195
- assert_equal doc, client.send( :_query, :query => 'sartre' )
196
- end
197
- end
198
-
199
- def test_underscore_build_query_with_invalid_queries
200
- Philologic::Client.new(@endpoint) do |client|
201
- assert_raise(RuntimeError, 'no query specified') { client.send(:_build_query, nil) }
202
- assert_raise(RuntimeError, 'no query specified') { client.send(:_build_query, {}) }
203
- assert_raise(RuntimeError, 'no query specified') { client.send(:_build_query, []) }
204
- assert_raise(RuntimeError, 'no query specified') { client.send(:_build_query, '') }
205
- assert_raise(RuntimeError, 'no query specified') { client.send(:_build_query, 'foo') }
206
- end
207
- end
208
-
209
- def test_underscore_build_query
210
- Philologic::Client.new(@endpoint) do |client|
211
- assert_equal '?query=sartre', client.send( :_build_query, :query => 'sartre' )
212
- assert_equal '?foo=bar&query=sartre', client.send( :_build_query, :query => 'sartre', :foo => 'bar' )
213
- end
214
- end
215
-
216
- def test_search_with_invalid_queries
217
- Philologic::Client.new(@endpoint) do |client|
218
- [ nil, [], {}, '', [ '' ], [ nil ], Object.new ].each do |q|
219
- assert_raise(RuntimeError, 'invalid query') { client.search(q) }
220
- end
221
- end
222
- end
223
-
224
- def test_search
225
- Philologic::Client.new(@endpoint) do |client|
226
- doc = client.send( :_parse, Nokogiri::HTML( open(@query_file) ) )
227
- client.stubs(:_get).with('?query=sartre').returns(doc)
228
-
229
- results = client.search('sartre')
230
-
231
- assert_not_nil results
232
- assert_kind_of Array, results
233
- assert_equal 50, results.size
234
- results.each do |result|
235
- assert_kind_of Philologic::Link, result
236
- assert_equal 'philologic_occurence', result['class']
237
- assert_not_nil result['href']
238
- assert_nil result['some random attribute']
239
- assert_not_nil result['author']
240
- assert_nil result['filename']
241
- assert_not_nil result['title']
242
- assert_not_nil result.text
243
- end
244
-
245
- assert_equal './54/1/0/0', results.first['href']
246
- assert_equal 'Peiresc N. de', results.first['author']
247
- assert_equal 'Lettres T. 6 1602-1637', results.first['title']
248
- assert_match /^Peiresc N. de, Lettre/, results.first.text
249
- assert_equal './54/1/0/0 | Lettres T. 6 1602-1637 | Peiresc N. de', results.first.to_s
250
-
251
- assert_equal './1792/11/0/0', results.last['href']
252
- assert_equal 'Gide A.', results.last['author']
253
- assert_equal 'Journal 1939-1949', results.last['title']
254
- assert_nil results.last['filename']
255
- assert_match /^Gide A., Journal 193/, results.last.text
256
- assert_equal './1792/11/0/0 | Journal 1939-1949 | Gide A.', results.last.to_s
257
-
258
- end
259
- end
260
-
261
- def test_search_with_key_value_pairs
262
- Philologic::Client.new(@endpoint) do |client|
263
- doc = client.send( :_parse, Nokogiri::HTML( open(@query_file) ) )
264
- client.stubs(:_get).with('?query=sartre').returns(doc)
265
-
266
- results = client.search( :query => 'sartre' )
267
-
268
- assert_not_nil results
269
- assert_kind_of Array, results
270
- assert_equal 50, results.size
271
- results.each do |result|
272
- assert_kind_of Philologic::Link, result
273
- assert_equal 'philologic_occurence', result['class']
274
- assert_not_nil result['href']
275
- assert_nil result['some random attribute']
276
- assert_not_nil result['author']
277
- assert_nil result['filename']
278
- assert_not_nil result['title']
279
- assert_not_nil result.text
280
- end
281
-
282
- assert_equal './54/1/0/0', results.first['href']
283
- assert_equal 'Peiresc N. de', results.first['author']
284
- assert_equal 'Lettres T. 6 1602-1637', results.first['title']
285
- assert_nil results.first['filename']
286
- assert_match /^Peiresc N. de/, results.first.text
287
- assert_equal './54/1/0/0 | Lettres T. 6 1602-1637 | Peiresc N. de', results.first.to_s
288
-
289
- assert_equal './1792/11/0/0', results.last['href']
290
- assert_equal 'Gide A.', results.last['author']
291
- assert_equal 'Journal 1939-1949', results.last['title']
292
- assert_nil results.last['filename']
293
- assert_match /^Gide A., Journal /, results.last.text
294
- assert_equal './1792/11/0/0 | Journal 1939-1949 | Gide A.', results.last.to_s
295
-
296
- end
297
- end
298
-
299
- def test_frequency_search_with_invalid_queries
300
- Philologic::Client.new(@endpoint) do |client|
301
- [ nil, [], {}, '', [ '' ], [ nil ], Object.new ].each do |q|
302
- assert_raise(RuntimeError, 'invalid query') { client.frequency(q) }
303
- end
304
- end
305
- end
306
-
307
- def test_frequency_search
308
- Philologic::Client.new(@endpoint) do |client|
309
- doc = client.send( :_parse, Nokogiri::HTML( open(@freq_file) ) )
310
- client.stubs(:_get).with('?query=sartre&report=frequency').returns(doc)
311
-
312
- results = client.frequency('sartre')
313
-
314
- assert_not_nil results
315
- assert_kind_of Array, results
316
- assert_equal 15, results.size
317
- results.each do |result|
318
- assert_kind_of Philologic::TableRow, result
319
- assert_equal 'philologic_frequency_row', result['class']
320
- assert_nil result['href']
321
- assert_nil result['some random attribute']
322
- assert_nil result['author']
323
- assert_nil result['filename']
324
- assert_nil result['title']
325
- assert_not_nil result.count
326
- assert_not_nil result.field
327
- assert_not_nil result.href
328
- assert_not_nil result.text
329
- end
330
-
331
- assert_equal 'author', results.first.field
332
- assert_equal 48, results.first.count
333
- assert_equal './?query=sartre&author=Beauvoir+S.+de&title=', results.first.href
334
- assert_equal 'Beauvoir S. de', results.first.text
335
- assert_equal 'author | 48 | Beauvoir S. de', results.first.to_s
336
-
337
- assert_equal 'author', results.last.field
338
- assert_equal 1, results.last.count
339
- assert_equal './?query=sartre&author=Schaeffer+P.&title=', results.last.href
340
- assert_equal 'Schaeffer P.', results.last.text
341
- assert_equal 'author | 1 | Schaeffer P.', results.last.to_s
342
- end
343
- end
344
-
345
- def test_frequency_search_with_key_value_pairs
346
- Philologic::Client.new(@endpoint) do |client|
347
- doc = client.send( :_parse, Nokogiri::HTML( open(@freq_file) ) )
348
- client.stubs(:_get).with('?query=sartre&report=frequency').returns(doc)
349
-
350
- results = client.frequency( :query => 'sartre' )
351
-
352
- assert_not_nil results
353
- assert_kind_of Array, results
354
- assert_equal 15, results.size
355
- results.each do |result|
356
- assert_kind_of Philologic::TableRow, result
357
- assert_equal 'philologic_frequency_row', result['class']
358
- assert_nil result['href']
359
- assert_nil result['some random attribute']
360
- assert_nil result['author']
361
- assert_nil result['filename']
362
- assert_nil result['title']
363
- assert_not_nil result.count
364
- assert_not_nil result.field
365
- assert_not_nil result.href
366
- assert_not_nil result.text
367
- end
368
-
369
- assert_equal 'author', results.first.field
370
- assert_equal 48, results.first.count
371
- assert_equal './?query=sartre&author=Beauvoir+S.+de&title=', results.first.href
372
- assert_equal 'Beauvoir S. de', results.first.text
373
- assert_equal 'author | 48 | Beauvoir S. de', results.first.to_s
374
-
375
- assert_equal 'author', results.last.field
376
- assert_equal 1, results.last.count
377
- assert_equal './?query=sartre&author=Schaeffer+P.&title=', results.last.href
378
- assert_equal 'Schaeffer P.', results.last.text
379
- assert_equal 'author | 1 | Schaeffer P.', results.last.to_s
380
-
381
- end
382
- end
383
-
384
- def test_philologic_frequency_tablerow_links
385
- Philologic::Client.new(@endpoint) do |client|
386
- freq_doc = client.send( :_parse, Nokogiri::HTML( open(@freq_file) ) )
387
- freq_links_doc = client.send( :_parse, Nokogiri::HTML( open(@freq_links_file) ) )
388
- client.stubs(:_get).with('?query=sartre&report=frequency').returns(freq_doc)
389
- client.stubs(:_get).with('?author=Beauvoir+S.+de&query=sartre&title=').returns(freq_links_doc)
390
-
391
- results = client.frequency( :query => 'sartre' )
392
- assert_not_nil results
393
-
394
- links = results.first.links
395
-
396
- assert_not_nil links
397
- assert_kind_of Array, links
398
- assert_equal 48, links.size
399
-
400
- links.each do |link|
401
- assert_kind_of Philologic::Link, link
402
- assert_equal 'philologic_occurence', link['class']
403
- assert_not_nil link['href']
404
- assert_nil link['some random attribute']
405
- assert_not_nil link['author']
406
- assert_nil link['filename']
407
- assert_not_nil link['title']
408
- assert_not_nil link.text
409
- end
410
-
411
- assert_equal './1839/3/0/0', links.first['href']
412
- assert_equal 'Beauvoir S. de', links.first['author']
413
- assert_equal 'Memoires Jeune Fille Rangee', links.first['title']
414
- assert_nil links.first['filename']
415
- assert_match /^Beauvoir S. de/, links.first.text
416
- assert_equal './1839/3/0/0 | Memoires Jeune Fille Rangee | Beauvoir S. de', links.first.to_s
417
-
418
- assert_equal './1839/4/0/0', links.last['href']
419
- assert_equal 'Beauvoir S. de', links.last['author']
420
- assert_equal 'Memoires Jeune Fille Rangee', links.last['title']
421
- assert_nil links.last['filename']
422
- assert_match /^Beauvoir S. de,/, links.last.text
423
- assert_equal './1839/4/0/0 | Memoires Jeune Fille Rangee | Beauvoir S. de', links.last.to_s
424
-
425
- end
426
- end
427
-
428
- def test_collocation_search_with_invalid_queries
429
- Philologic::Client.new(@endpoint) do |client|
430
- [ nil, [], {}, '', [ '' ], [ nil ], Object.new ].each do |q|
431
- assert_raise(RuntimeError, 'invalid query') { client.collocation(q) }
432
- end
433
- end
434
- end
435
-
436
- def test_collocation_search
437
- Philologic::Client.new(@endpoint) do |client|
438
- doc = client.send( :_parse, Nokogiri::HTML( open(@coll_file) ) )
439
- client.stubs(:_get).with('?field=collocates&query=sartre&report=frequency').returns(doc)
440
-
441
- results = client.collocation('sartre')
442
-
443
- assert_not_nil results
444
- assert_kind_of Array, results
445
- assert_equal 15, results.size
446
- results.each do |result|
447
- assert_kind_of Philologic::TableRow, result
448
- assert_equal 'philologic_frequency_row', result['class']
449
- assert_nil result['href']
450
- assert_nil result['some random attribute']
451
- assert_nil result['author']
452
- assert_nil result['filename']
453
- assert_nil result['title']
454
- assert_not_nil result.count
455
- assert_not_nil result.field
456
- assert_not_nil result.href
457
- assert_not_nil result.text
458
- end
459
-
460
- assert_equal 'author', results.first.field
461
- assert_equal 48, results.first.count
462
- assert_equal './?query=sartre&author=Beauvoir+S.+de&title=', results.first.href
463
- assert_equal 'Beauvoir S. de', results.first.text
464
- assert_equal 'author | 48 | Beauvoir S. de', results.first.to_s
465
-
466
- assert_equal 'author', results.last.field
467
- assert_equal 1, results.last.count
468
- assert_equal './?query=sartre&author=Schaeffer+P.&title=', results.last.href
469
- assert_equal 'Schaeffer P.', results.last.text
470
- assert_equal 'author | 1 | Schaeffer P.', results.last.to_s
471
- end
472
- end
473
-
474
- def test_collocation_search_with_key_value_pairs
475
- Philologic::Client.new(@endpoint) do |client|
476
- doc = client.send( :_parse, Nokogiri::HTML( open(@coll_file) ) )
477
- client.stubs(:_get).with('?field=collocates&query=sartre&report=frequency').returns(doc)
478
-
479
- results = client.collocation( :query => 'sartre' )
480
-
481
- assert_not_nil results
482
- assert_kind_of Array, results
483
- assert_equal 15, results.size
484
- results.each do |result|
485
- assert_kind_of Philologic::TableRow, result
486
- assert_equal 'philologic_frequency_row', result['class']
487
- assert_nil result['href']
488
- assert_nil result['some random attribute']
489
- assert_nil result['author']
490
- assert_nil result['filename']
491
- assert_nil result['title']
492
- assert_not_nil result.count
493
- assert_not_nil result.field
494
- assert_not_nil result.href
495
- assert_not_nil result.text
496
- end
497
-
498
- assert_equal 'author', results.first.field
499
- assert_equal 48, results.first.count
500
- assert_equal './?query=sartre&author=Beauvoir+S.+de&title=', results.first.href
501
- assert_equal 'Beauvoir S. de', results.first.text
502
- assert_equal 'author | 48 | Beauvoir S. de', results.first.to_s
503
-
504
- assert_equal 'author', results.last.field
505
- assert_equal 1, results.last.count
506
- assert_equal './?query=sartre&author=Schaeffer+P.&title=', results.last.href
507
- assert_equal 'Schaeffer P.', results.last.text
508
- assert_equal 'author | 1 | Schaeffer P.', results.last.to_s
509
-
510
- end
511
- end
512
-
513
- def test_philologic_collocation_tablerow_links
514
- Philologic::Client.new(@endpoint) do |client|
515
- coll_doc = client.send( :_parse, Nokogiri::HTML( open(@coll_file) ) )
516
- coll_links_doc = client.send( :_parse, Nokogiri::HTML( open(@coll_links_file) ) )
517
- client.stubs(:_get).with('?field=collocates&query=sartre&report=frequency').returns(coll_doc)
518
- client.stubs(:_get).with('?author=Beauvoir+S.+de&query=sartre&title=').returns(coll_links_doc)
519
-
520
- results = client.collocation( :query => 'sartre' )
521
- assert_not_nil results
522
-
523
- links = results.first.links
524
-
525
- assert_not_nil links
526
- assert_kind_of Array, links
527
- assert_equal 48, links.size
528
-
529
- links.each do |link|
530
- assert_kind_of Philologic::Link, link
531
- assert_equal 'philologic_occurence', link['class']
532
- assert_not_nil link['href']
533
- assert_nil link['some random attribute']
534
- assert_not_nil link['author']
535
- assert_nil link['filename']
536
- assert_not_nil link['title']
537
- assert_not_nil link.text
538
- end
539
-
540
- assert_equal './1839/3/0/0', links.first['href']
541
- assert_equal 'Beauvoir S. de', links.first['author']
542
- assert_equal 'Memoires Jeune Fille Rangee', links.first['title']
543
- assert_nil links.first['filename']
544
- assert_match /^Beauvoir S. de/, links.first.text
545
- assert_equal './1839/3/0/0 | Memoires Jeune Fille Rangee | Beauvoir S. de', links.first.to_s
546
-
547
- assert_equal './1839/4/0/0', links.last['href']
548
- assert_equal 'Beauvoir S. de', links.last['author']
549
- assert_equal 'Memoires Jeune Fille Rangee', links.last['title']
550
- assert_nil links.last['filename']
551
- assert_match /^Beauvoir S. de/, links.last.text
552
- assert_equal './1839/4/0/0 | Memoires Jeune Fille Rangee | Beauvoir S. de', links.last.to_s
553
-
554
- end
555
- end
556
-
557
- end
558
-
@@ -1,101 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'simplecov'
4
- SimpleCov.start
5
-
6
- require 'philologic-client'
7
- require 'test/unit'
8
-
9
-
10
- class TestPhilologicLink < Test::Unit::TestCase
11
-
12
- def setup
13
- @endpoint = File.expand_path( File.join( File.dirname(__FILE__), 'data' ) )
14
- @client = Philologic::Client.new(@endpoint)
15
- @doc = Nokogiri::HTML("")
16
- end
17
-
18
-
19
- def test_initialization_with_nil_client
20
- assert_raise(RuntimeError, 'nil client') { Philologic::Link.new( nil, @doc ) }
21
- end
22
-
23
- def test_initialization_with_nil_document
24
- assert_raise(RuntimeError, 'nil document') { Philologic::Link.new( @client, nil ) }
25
- end
26
-
27
- def test_philologic_cite
28
- html = <<EOHTML;
29
- <a class='philologic_cite' href='./1/0/0/0/0/0/0'>
30
- <span class='philologic_property' title='author'>Conon, de Béthune, ca. 1160-1219 or 20.</span>,
31
- <span class='philologic_property' title='title'>Les Chansons</span>:
32
- <span class='philologic_property' title='filename'>TLF.0.tei</span>
33
- </a>
34
- EOHTML
35
- link = Philologic::Link.new( @client, Nokogiri::XML(html).css('a.philologic_cite').first )
36
-
37
- assert_kind_of Philologic::Link, link
38
-
39
- assert_not_nil link['class']
40
- assert_equal 'philologic_cite', link['class']
41
-
42
- assert_not_nil link['href']
43
- assert_equal './1/0/0/0/0/0/0', link['href']
44
-
45
- assert_not_nil link['author']
46
- assert_equal 'Conon, de Béthune, ca. 1160-1219 or 20.', link['author']
47
-
48
- assert_not_nil link['title']
49
- assert_equal 'Les Chansons', link['title']
50
-
51
- assert_not_nil link['filename']
52
- assert_equal 'TLF.0.tei', link['filename']
53
-
54
- assert_nil link['some random attribute']
55
-
56
- assert_equal "Conon, de Béthune, ca. 1160-1219 or 20.,\n Les Chansons:\n TLF.0.tei", link.text
57
-
58
- assert_equal './1/0/0/0/0/0/0 | Les Chansons | Conon, de Béthune, ca. 1160-1219 or 20.', link.to_s
59
- end
60
-
61
- def test_philologic_occurence
62
- html = <<EOHTML;
63
- <li class='philologic_occurence'>
64
- <a class='philologic_cite' href='./54/1/0/0'>
65
- <span class='philologic_property' title='author'>Peiresc N. de</span>,
66
- <span class='philologic_property' title='title'>Lettres T. 6 1602-1637</span>
67
- <span class='philologic_property' title='date'>(1625)</span>
68
- </a>
69
- ...re pas l'adresse directement à nous ny à voz lettres ny au pacquet, mais à Monsieur
70
- <span class="hilite">Sartre</span>
71
- respondent de Monsr Segnier qui nous les rendra gentilment. Car je...
72
- </li>
73
- EOHTML
74
- link = Philologic::Link.new( @client, Nokogiri::XML(html).css('li.philologic_occurence').first )
75
-
76
- assert_kind_of Philologic::Link, link
77
-
78
- assert_not_nil link['class']
79
- assert_equal 'philologic_occurence', link['class']
80
-
81
- assert_not_nil link['href']
82
- assert_equal './54/1/0/0', link['href']
83
-
84
- assert_not_nil link['author']
85
- assert_equal 'Peiresc N. de', link['author']
86
-
87
- assert_not_nil link['title']
88
- assert_equal 'Lettres T. 6 1602-1637', link['title']
89
-
90
- assert_nil link['filename']
91
-
92
- assert_nil link['some random attribute']
93
-
94
- assert_match /^Peiresc N. de,/, link.text
95
- assert_match /ntilment. Car je\.\.\.$/, link.text
96
-
97
- assert_equal './54/1/0/0 | Lettres T. 6 1602-1637 | Peiresc N. de', link.to_s
98
- end
99
-
100
- end
101
-