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.
- data/HISTORY.rdoc +8 -0
- data/PhiloLogicResponseDocumentation.txt +86 -0
- data/README.rdoc +54 -32
- data/Rakefile +26 -0
- data/lib/philologic-client/bibliography.rb +60 -0
- data/lib/philologic-client/collocation.rb +61 -0
- data/lib/philologic-client/concordance.rb +39 -0
- data/lib/philologic-client/document.rb +65 -0
- data/lib/philologic-client/frequency.rb +57 -0
- data/lib/philologic-client/frequency_row.rb +67 -0
- data/lib/philologic-client/link.rb +37 -0
- data/lib/philologic-client/occurrence.rb +79 -0
- data/lib/philologic-client/response.rb +63 -0
- data/lib/philologic-client/version.rb +1 -1
- data/lib/philologic-client.rb +102 -286
- data/test/data/bibliography.html +182 -0
- data/test/data/collocation.html +2594 -0
- data/test/data/concordance.html +758 -0
- data/test/data/frequency.html +73 -0
- data/test/data/navigation.html +69 -0
- data/test/data/object.html +20 -0
- data/test/test_bibliography.rb +78 -0
- data/test/test_client.rb +861 -0
- data/test/test_collocation.rb +76 -0
- data/test/test_concordance.rb +83 -0
- data/test/test_document.rb +127 -0
- data/test/test_frequency.rb +78 -0
- data/test/test_occurrence.rb +66 -0
- data/test/test_response.rb +41 -0
- metadata +55 -36
- data/doc/PhiloLogicResponseTemplates.txt +0 -46
- data/test/data/collocation_links.html +0 -145
- data/test/data/collocation_sartre.html +0 -67
- data/test/data/doc_file.html +0 -396
- data/test/data/frequency_links.html +0 -145
- data/test/data/frequency_sartre.html +0 -67
- data/test/data/query_sartre.html +0 -151
- data/test/data/root_file.html +0 -1851
- data/test/test_philologic_client.rb +0 -558
- 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
|
-
|