unipept 0.8.0 → 0.9.0
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.
- checksums.yaml +4 -4
- data/.travis.yml +2 -0
- data/README.md +4 -4
- data/VERSION +1 -1
- data/lib/commands/unipept/api_runner.rb +64 -70
- data/lib/commands/unipept/pept2lca.rb +1 -1
- data/lib/commands/unipept/pept2prot.rb +1 -1
- data/lib/commands/unipept/pept2taxa.rb +1 -1
- data/lib/commands/unipept/taxa2lca.rb +1 -1
- data/lib/commands/unipept/taxonomy.rb +1 -1
- data/lib/commands/unipept.rb +6 -2
- data/lib/formatters.rb +91 -86
- data/lib/output_writer.rb +13 -0
- data/lib/server_message.rb +45 -0
- data/test/commands/unipept/test_api_runner.rb +28 -122
- data/test/commands/unipept/test_pept2lca.rb +52 -2
- data/test/commands/unipept/test_pept2prot.rb +40 -3
- data/test/commands/unipept/test_pept2taxa.rb +40 -3
- data/test/commands/unipept/test_taxa2lca.rb +26 -2
- data/test/commands/unipept/test_taxonomy.rb +39 -2
- data/test/test_formatters.rb +83 -13
- data/test/test_output_writer.rb +29 -0
- data/test/test_server_message.rb +92 -0
- data/unipept.gemspec +7 -4
- metadata +6 -3
- data/test/test_base.rb +0 -6
@@ -14,7 +14,6 @@ module Unipept
|
|
14
14
|
assert_equal(%w(a b c), runner.arguments)
|
15
15
|
assert(!runner.configuration.nil?)
|
16
16
|
assert_equal('http://test_host/api/v1/test.json', runner.url)
|
17
|
-
assert_equal('http://test_host/api/v1/messages.json', runner.message_url)
|
18
17
|
assert(/Unipept CLI - unipept [0-9]\.[0-9]\.[0-9]/.match runner.user_agent)
|
19
18
|
end
|
20
19
|
|
@@ -108,8 +107,35 @@ module Unipept
|
|
108
107
|
assert_equal(%w(a b c), output)
|
109
108
|
end
|
110
109
|
|
110
|
+
def test_default_batch_size
|
111
|
+
assert_raises NotImplementedError do
|
112
|
+
new_runner.default_batch_size
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
111
116
|
def test_batch_size
|
112
|
-
|
117
|
+
r = new_runner
|
118
|
+
def r.default_batch_size
|
119
|
+
100
|
120
|
+
end
|
121
|
+
assert_equal(100, r.batch_size)
|
122
|
+
end
|
123
|
+
|
124
|
+
def test_argument_batch_size
|
125
|
+
runner = new_runner('test', host: 'http://param_host', batch: '123')
|
126
|
+
assert_equal(123, runner.batch_size)
|
127
|
+
end
|
128
|
+
|
129
|
+
def test_number_of_parallel_requests
|
130
|
+
assert_equal(10, new_runner.concurrent_requests)
|
131
|
+
runner = new_runner('test', host: 'http://param_host', parallel: '123')
|
132
|
+
assert_equal(123, runner.concurrent_requests)
|
133
|
+
end
|
134
|
+
|
135
|
+
def test_queue_size
|
136
|
+
assert_equal(200, new_runner.queue_size)
|
137
|
+
runner = new_runner('test', host: 'http://param_host', parallel: '100')
|
138
|
+
assert_equal(2000, runner.queue_size)
|
113
139
|
end
|
114
140
|
|
115
141
|
def test_default_formatter
|
@@ -152,24 +178,6 @@ module Unipept
|
|
152
178
|
assert_equal([/^field.*$/], runner.selected_fields)
|
153
179
|
end
|
154
180
|
|
155
|
-
def test_never_recently_fetched
|
156
|
-
runner = new_runner
|
157
|
-
runner.configuration.delete('last_fetch_date')
|
158
|
-
assert(!runner.recently_fetched?)
|
159
|
-
end
|
160
|
-
|
161
|
-
def test_old_recently_fetched
|
162
|
-
runner = new_runner
|
163
|
-
runner.configuration['last_fetch_date'] = Time.now - 60 * 60 * 25
|
164
|
-
assert(!runner.recently_fetched?)
|
165
|
-
end
|
166
|
-
|
167
|
-
def test_recently_recently_fetched
|
168
|
-
runner = new_runner
|
169
|
-
runner.configuration['last_fetch_date'] = Time.now - 60 * 60 * 1
|
170
|
-
assert(runner.recently_fetched?)
|
171
|
-
end
|
172
|
-
|
173
181
|
def test_basic_construct_request_body
|
174
182
|
runner = new_runner('test', host: 'http://param_host')
|
175
183
|
body = runner.construct_request_body('test')
|
@@ -215,104 +223,6 @@ module Unipept
|
|
215
223
|
assert_equal(false, body[:names])
|
216
224
|
end
|
217
225
|
|
218
|
-
def test_print_server_message
|
219
|
-
runner = new_runner
|
220
|
-
runner.stub(:recently_fetched?, false) do
|
221
|
-
runner.stub(:fetch_server_message, 'message') do
|
222
|
-
out, _err = capture_io_while do
|
223
|
-
def $stdout.tty?
|
224
|
-
true
|
225
|
-
end
|
226
|
-
runner.print_server_message
|
227
|
-
end
|
228
|
-
assert_equal('message', out.chomp)
|
229
|
-
end
|
230
|
-
end
|
231
|
-
end
|
232
|
-
|
233
|
-
def test_quiet_print_server_message
|
234
|
-
runner = new_runner('test', host: 'bla', quiet: true)
|
235
|
-
runner.stub(:recently_fetched?, false) do
|
236
|
-
runner.stub(:fetch_server_message, 'message') do
|
237
|
-
out, _err = capture_io_while do
|
238
|
-
def $stdout.tty?
|
239
|
-
true
|
240
|
-
end
|
241
|
-
$stdout.tty?
|
242
|
-
runner.print_server_message
|
243
|
-
end
|
244
|
-
assert_equal('', out)
|
245
|
-
end
|
246
|
-
end
|
247
|
-
end
|
248
|
-
|
249
|
-
def test_no_tty_print_server_message
|
250
|
-
runner = new_runner
|
251
|
-
runner.stub(:recently_fetched?, false) do
|
252
|
-
runner.stub(:fetch_server_message, 'message') do
|
253
|
-
out, _err = capture_io_while do
|
254
|
-
def $stdout.tty?
|
255
|
-
false
|
256
|
-
end
|
257
|
-
runner.print_server_message
|
258
|
-
end
|
259
|
-
assert_equal('', out)
|
260
|
-
end
|
261
|
-
end
|
262
|
-
end
|
263
|
-
|
264
|
-
def test_recent_print_server_message
|
265
|
-
runner = new_runner
|
266
|
-
runner.stub(:recently_fetched?, true) do
|
267
|
-
runner.stub(:fetch_server_message, 'message') do
|
268
|
-
out, _err = capture_io_while do
|
269
|
-
def $stdout.tty?
|
270
|
-
true
|
271
|
-
end
|
272
|
-
runner.print_server_message
|
273
|
-
end
|
274
|
-
assert_equal('', out)
|
275
|
-
end
|
276
|
-
end
|
277
|
-
end
|
278
|
-
|
279
|
-
def test_empty_print_server_message
|
280
|
-
runner = new_runner
|
281
|
-
runner.stub(:recently_fetched?, false) do
|
282
|
-
runner.stub(:fetch_server_message, '') do
|
283
|
-
out, _err = capture_io_while do
|
284
|
-
def $stdout.tty?
|
285
|
-
true
|
286
|
-
end
|
287
|
-
runner.print_server_message
|
288
|
-
end
|
289
|
-
assert_equal('', out)
|
290
|
-
end
|
291
|
-
end
|
292
|
-
end
|
293
|
-
|
294
|
-
def test_fetch_server_message
|
295
|
-
runner = new_runner('test', host: 'http://api.unipept.ugent.be')
|
296
|
-
assert(!runner.fetch_server_message.nil?)
|
297
|
-
end
|
298
|
-
|
299
|
-
def test_stdout_write_to_output
|
300
|
-
runner = new_runner
|
301
|
-
out, _err = capture_io_while do
|
302
|
-
runner.write_to_output('hello world')
|
303
|
-
end
|
304
|
-
assert_equal('hello world', out.chomp)
|
305
|
-
end
|
306
|
-
|
307
|
-
def test_file_write_to_output
|
308
|
-
runner = new_runner('test', host: 'test', output: 'output_file')
|
309
|
-
out, _err = capture_io_while do
|
310
|
-
runner.write_to_output('hello world')
|
311
|
-
end
|
312
|
-
assert_equal('', out)
|
313
|
-
assert_equal('hello world', IO.foreach('output_file').next.chomp)
|
314
|
-
end
|
315
|
-
|
316
226
|
def test_glob_to_regex
|
317
227
|
runner = new_runner
|
318
228
|
assert(/^simple$/, runner.glob_to_regex('simple'))
|
@@ -418,9 +328,6 @@ module Unipept
|
|
418
328
|
def test_run
|
419
329
|
runner = new_runner('taxonomy', host: 'http://api.unipept.ugent.be')
|
420
330
|
out, err = capture_io_while do
|
421
|
-
def runner.print_server_message
|
422
|
-
puts 'server message'
|
423
|
-
end
|
424
331
|
def runner.input_iterator
|
425
332
|
%w(0 1 2).each
|
426
333
|
end
|
@@ -431,7 +338,6 @@ module Unipept
|
|
431
338
|
end
|
432
339
|
lines = out.each_line
|
433
340
|
assert_equal('', err)
|
434
|
-
assert_equal('server message', lines.next.chomp)
|
435
341
|
assert(lines.next.start_with? 'taxon_id')
|
436
342
|
assert(lines.next.start_with? '1,root')
|
437
343
|
assert(lines.next.start_with? '2,Bacteria')
|
@@ -2,12 +2,24 @@ require_relative '../../../lib/commands'
|
|
2
2
|
|
3
3
|
module Unipept
|
4
4
|
class UnipeptPept2lcaTestCase < Unipept::TestCase
|
5
|
+
def test_default_batch_size
|
6
|
+
command = Cri::Command.define { name 'pept2lca' }
|
7
|
+
pept2lca = Commands::Pept2lca.new({ host: 'http://api.unipept.ugent.be' }, [], command)
|
8
|
+
assert_equal(1000, pept2lca.default_batch_size)
|
9
|
+
pept2lca.options[:all] = true
|
10
|
+
assert_equal(100, pept2lca.default_batch_size)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_argument_batch_size
|
14
|
+
command = Cri::Command.define { name 'pept2lca' }
|
15
|
+
pept2lca = Commands::Pept2lca.new({ host: 'http://api.unipept.ugent.be', batch: '123' }, [], command)
|
16
|
+
assert_equal(123, pept2lca.batch_size)
|
17
|
+
end
|
18
|
+
|
5
19
|
def test_batch_size
|
6
20
|
command = Cri::Command.define { name 'pept2lca' }
|
7
21
|
pept2lca = Commands::Pept2lca.new({ host: 'http://api.unipept.ugent.be' }, [], command)
|
8
22
|
assert_equal(1000, pept2lca.batch_size)
|
9
|
-
pept2lca.options[:all] = true
|
10
|
-
assert_equal(100, pept2lca.batch_size)
|
11
23
|
end
|
12
24
|
|
13
25
|
def test_help
|
@@ -36,5 +48,43 @@ module Unipept
|
|
36
48
|
assert(lines.next.start_with? 'AALTER,1,root,no rank')
|
37
49
|
assert_raises(StopIteration) { lines.next }
|
38
50
|
end
|
51
|
+
|
52
|
+
def test_run_with_fasta_multiple_batches
|
53
|
+
out, err = capture_io_while do
|
54
|
+
Commands::Unipept.run(%w(pept2lca --host http://api.unipept.ugent.be --batch 2 >test AALTER AALER >tost AALTER))
|
55
|
+
end
|
56
|
+
lines = out.each_line
|
57
|
+
assert_equal('', err)
|
58
|
+
assert(lines.next.start_with? 'fasta_header,peptide,taxon_id')
|
59
|
+
assert(lines.next.start_with? '>test,AALTER,1,root,no rank')
|
60
|
+
assert(lines.next.start_with? '>test,AALER,1,root,no rank')
|
61
|
+
assert(lines.next.start_with? '>tost,AALTER,1,root,no rank')
|
62
|
+
assert_raises(StopIteration) { lines.next }
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_run_with_fasta_multiple_batches_json
|
66
|
+
out, err = capture_io_while do
|
67
|
+
Commands::Unipept.run(%w(pept2lca --host http://api.unipept.ugent.be --batch 2 --format json >test AALTER AALER >tost AALTER))
|
68
|
+
end
|
69
|
+
lines = out.each_line
|
70
|
+
assert_equal('', err)
|
71
|
+
output = lines.to_a.join('').chomp
|
72
|
+
assert(output.start_with? '[')
|
73
|
+
assert(output.end_with? ']')
|
74
|
+
assert(!output.include?('}{'))
|
75
|
+
assert(output.include? 'fasta_header')
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_run_with_fasta_multiple_batches_xml
|
79
|
+
out, err = capture_io_while do
|
80
|
+
Commands::Unipept.run(%w(pept2lca --host http://api.unipept.ugent.be --batch 2 --format xml >test AALTER AALER >tost AALTER))
|
81
|
+
end
|
82
|
+
lines = out.each_line
|
83
|
+
assert_equal('', err)
|
84
|
+
output = lines.to_a.join('').chomp
|
85
|
+
assert(output.start_with? '<results>')
|
86
|
+
assert(output.end_with? '</results>')
|
87
|
+
assert(output.include? '<fasta_header>')
|
88
|
+
end
|
39
89
|
end
|
40
90
|
end
|
@@ -2,12 +2,12 @@ require_relative '../../../lib/commands'
|
|
2
2
|
|
3
3
|
module Unipept
|
4
4
|
class UnipeptPept2protTestCase < Unipept::TestCase
|
5
|
-
def
|
5
|
+
def test_default_batch_size
|
6
6
|
command = Cri::Command.define { name 'pept2prot' }
|
7
7
|
pept2prot = Commands::Pept2prot.new({ host: 'http://api.unipept.ugent.be' }, [], command)
|
8
|
-
assert_equal(10, pept2prot.
|
8
|
+
assert_equal(10, pept2prot.default_batch_size)
|
9
9
|
pept2prot.options[:all] = true
|
10
|
-
assert_equal(5, pept2prot.
|
10
|
+
assert_equal(5, pept2prot.default_batch_size)
|
11
11
|
end
|
12
12
|
|
13
13
|
def test_help
|
@@ -35,5 +35,42 @@ module Unipept
|
|
35
35
|
assert(lines.next.start_with? 'peptide,uniprot_id,taxon_id')
|
36
36
|
assert(lines.next.start_with? 'ENFVYIAK,')
|
37
37
|
end
|
38
|
+
|
39
|
+
def test_run_with_fasta_multiple_batches
|
40
|
+
out, err = capture_io_while do
|
41
|
+
Commands::Unipept.run(%w(pept2prot --host http://api.unipept.ugent.be --batch 2 >test EGGAGSSTGQR ENFVYIAK >tost EGGAGSSTGQR))
|
42
|
+
end
|
43
|
+
lines = out.each_line
|
44
|
+
assert_equal('', err)
|
45
|
+
assert(lines.next.start_with? 'fasta_header,peptide,uniprot_id,taxon_id')
|
46
|
+
assert(lines.select { |line| line.start_with? '>test,EGGAGSSTGQR,' }.size >= 1)
|
47
|
+
assert(lines.select { |line| line.start_with? '>test,ENFVYIAK,' }.size >= 1)
|
48
|
+
assert(lines.select { |line| line.start_with? '>tost,EGGAGSSTGQR,' }.size >= 1)
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_run_with_fasta_multiple_batches_json
|
52
|
+
out, err = capture_io_while do
|
53
|
+
Commands::Unipept.run(%w(pept2prot --host http://api.unipept.ugent.be --batch 2 --format json >test EGGAGSSTGQR ENFVYIAK >tost EGGAGSSTGQR))
|
54
|
+
end
|
55
|
+
lines = out.each_line
|
56
|
+
assert_equal('', err)
|
57
|
+
output = lines.to_a.join('').chomp
|
58
|
+
assert(output.start_with? '[')
|
59
|
+
assert(output.end_with? ']')
|
60
|
+
assert(!output.include?('}{'))
|
61
|
+
assert(output.include? 'fasta_header')
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_run_with_fasta_multiple_batches_xml
|
65
|
+
out, err = capture_io_while do
|
66
|
+
Commands::Unipept.run(%w(pept2prot --host http://api.unipept.ugent.be --batch 2 --format xml >test EGGAGSSTGQR ENFVYIAK >tost EGGAGSSTGQR))
|
67
|
+
end
|
68
|
+
lines = out.each_line
|
69
|
+
assert_equal('', err)
|
70
|
+
output = lines.to_a.join('').chomp
|
71
|
+
assert(output.start_with? '<results>')
|
72
|
+
assert(output.end_with? '</results>')
|
73
|
+
assert(output.include? '<fasta_header>')
|
74
|
+
end
|
38
75
|
end
|
39
76
|
end
|
@@ -2,12 +2,12 @@ require_relative '../../../lib/commands'
|
|
2
2
|
|
3
3
|
module Unipept
|
4
4
|
class UnipeptPept2taxaTestCase < Unipept::TestCase
|
5
|
-
def
|
5
|
+
def test_default_batch_size
|
6
6
|
command = Cri::Command.define { name 'pept2taxa' }
|
7
7
|
pept2taxa = Commands::Pept2taxa.new({ host: 'http://api.unipept.ugent.be' }, [], command)
|
8
|
-
assert_equal(10, pept2taxa.
|
8
|
+
assert_equal(10, pept2taxa.default_batch_size)
|
9
9
|
pept2taxa.options[:all] = true
|
10
|
-
assert_equal(5, pept2taxa.
|
10
|
+
assert_equal(5, pept2taxa.default_batch_size)
|
11
11
|
end
|
12
12
|
|
13
13
|
def test_help
|
@@ -35,5 +35,42 @@ module Unipept
|
|
35
35
|
assert(lines.next.start_with? 'peptide,taxon_id,taxon_name,taxon_rank')
|
36
36
|
assert(lines.next.start_with? 'ENFVYIAK,')
|
37
37
|
end
|
38
|
+
|
39
|
+
def test_run_with_fasta_multiple_batches
|
40
|
+
out, err = capture_io_while do
|
41
|
+
Commands::Unipept.run(%w(pept2taxa --host http://api.unipept.ugent.be --batch 2 >test EGGAGSSTGQR ENFVYIAK >tost EGGAGSSTGQR))
|
42
|
+
end
|
43
|
+
lines = out.each_line
|
44
|
+
assert_equal('', err)
|
45
|
+
assert(lines.next.start_with? 'fasta_header,peptide,taxon_id,taxon_name,taxon_rank')
|
46
|
+
assert(lines.select { |line| line.start_with? '>test,EGGAGSSTGQR,' }.size >= 1)
|
47
|
+
assert(lines.select { |line| line.start_with? '>test,ENFVYIAK,' }.size >= 1)
|
48
|
+
assert(lines.select { |line| line.start_with? '>tost,EGGAGSSTGQR,' }.size >= 1)
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_run_with_fasta_multiple_batches_json
|
52
|
+
out, err = capture_io_while do
|
53
|
+
Commands::Unipept.run(%w(pept2taxa --host http://api.unipept.ugent.be --batch 2 --format json >test EGGAGSSTGQR ENFVYIAK >tost EGGAGSSTGQR))
|
54
|
+
end
|
55
|
+
lines = out.each_line
|
56
|
+
assert_equal('', err)
|
57
|
+
output = lines.to_a.join('').chomp
|
58
|
+
assert(output.start_with? '[')
|
59
|
+
assert(output.end_with? ']')
|
60
|
+
assert(!output.include?('}{'))
|
61
|
+
assert(output.include? 'fasta_header')
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_run_with_fasta_multiple_batches_xml
|
65
|
+
out, err = capture_io_while do
|
66
|
+
Commands::Unipept.run(%w(pept2taxa --host http://api.unipept.ugent.be --batch 2 --format xml >test EGGAGSSTGQR ENFVYIAK >tost EGGAGSSTGQR))
|
67
|
+
end
|
68
|
+
lines = out.each_line
|
69
|
+
assert_equal('', err)
|
70
|
+
output = lines.to_a.join('').chomp
|
71
|
+
assert(output.start_with? '<results>')
|
72
|
+
assert(output.end_with? '</results>')
|
73
|
+
assert(output.include? '<fasta_header>')
|
74
|
+
end
|
38
75
|
end
|
39
76
|
end
|
@@ -2,11 +2,11 @@ require_relative '../../../lib/commands'
|
|
2
2
|
|
3
3
|
module Unipept
|
4
4
|
class UnipeptTaxa2lcaTestCase < Unipept::TestCase
|
5
|
-
def
|
5
|
+
def test_default_batch_size
|
6
6
|
command = Cri::Command.define { name 'taxa2lca' }
|
7
7
|
taxa2lca = Commands::Taxa2lca.new({ host: 'http://api.unipept.ugent.be' }, [], command)
|
8
8
|
assert_raises RuntimeError do
|
9
|
-
taxa2lca.
|
9
|
+
taxa2lca.default_batch_size
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
@@ -35,5 +35,29 @@ module Unipept
|
|
35
35
|
assert(lines.next.start_with? 'taxon_id,taxon_name,taxon_rank')
|
36
36
|
assert(lines.next.start_with? '1678,Bifidobacterium,genus')
|
37
37
|
end
|
38
|
+
|
39
|
+
def test_run_xml
|
40
|
+
out, err = capture_io_while do
|
41
|
+
Commands::Unipept.run(%w(taxa2lca --host http://api.unipept.ugent.be --format xml 216816 1680))
|
42
|
+
end
|
43
|
+
lines = out.each_line
|
44
|
+
output = lines.to_a.join('').chomp
|
45
|
+
assert_equal('', err)
|
46
|
+
assert(output.start_with? '<results>')
|
47
|
+
assert(output.end_with? '</results>')
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_run_json
|
51
|
+
out, err = capture_io_while do
|
52
|
+
Commands::Unipept.run(%w(taxa2lca --host http://api.unipept.ugent.be --format json 216816 1680))
|
53
|
+
end
|
54
|
+
lines = out.each_line
|
55
|
+
output = lines.to_a.join('').chomp
|
56
|
+
assert_equal('', err)
|
57
|
+
assert(output.start_with? '[')
|
58
|
+
assert(output.end_with? ']')
|
59
|
+
assert(!output.include?('}{'))
|
60
|
+
assert(!output.include?(']['))
|
61
|
+
end
|
38
62
|
end
|
39
63
|
end
|
@@ -2,10 +2,10 @@ require_relative '../../../lib/commands'
|
|
2
2
|
|
3
3
|
module Unipept
|
4
4
|
class UnipeptTaxonomyTestCase < Unipept::TestCase
|
5
|
-
def
|
5
|
+
def test_default_batch_size
|
6
6
|
command = Cri::Command.define { name 'taxonomy' }
|
7
7
|
taxonomy = Commands::Taxonomy.new({ host: 'http://api.unipept.ugent.be' }, [], command)
|
8
|
-
assert_equal(100, taxonomy.
|
8
|
+
assert_equal(100, taxonomy.default_batch_size)
|
9
9
|
end
|
10
10
|
|
11
11
|
def test_help
|
@@ -33,5 +33,42 @@ module Unipept
|
|
33
33
|
assert(lines.next.start_with? 'taxon_id,taxon_name,taxon_rank')
|
34
34
|
assert(lines.next.start_with? '1,root,no rank')
|
35
35
|
end
|
36
|
+
|
37
|
+
def test_run_with_fasta_multiple_batches
|
38
|
+
out, err = capture_io_while do
|
39
|
+
Commands::Unipept.run(%w(taxonomy --host http://api.unipept.ugent.be --batch 2 >test 1 216816 >tost 1))
|
40
|
+
end
|
41
|
+
lines = out.each_line
|
42
|
+
assert_equal('', err)
|
43
|
+
assert(lines.next.start_with? 'fasta_header,taxon_id,taxon_name,taxon_rank')
|
44
|
+
assert(lines.select { |line| line.start_with? '>test,1,' }.size >= 1)
|
45
|
+
assert(lines.select { |line| line.start_with? '>test,216816,' }.size >= 1)
|
46
|
+
assert(lines.select { |line| line.start_with? '>tost,1,' }.size >= 1)
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_run_with_fasta_multiple_batches_json
|
50
|
+
out, err = capture_io_while do
|
51
|
+
Commands::Unipept.run(%w(taxonomy --host http://api.unipept.ugent.be --batch 2 --format json >test 1 216816 >tost 1))
|
52
|
+
end
|
53
|
+
lines = out.each_line
|
54
|
+
assert_equal('', err)
|
55
|
+
output = lines.to_a.join('').chomp
|
56
|
+
assert(output.start_with? '[')
|
57
|
+
assert(output.end_with? ']')
|
58
|
+
assert(!output.include?('}{'))
|
59
|
+
assert(output.include? 'fasta_header')
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_run_with_fasta_multiple_batches_xml
|
63
|
+
out, err = capture_io_while do
|
64
|
+
Commands::Unipept.run(%w(taxonomy --host http://api.unipept.ugent.be --batch 2 --format xml >test 1 216816 >tost 1))
|
65
|
+
end
|
66
|
+
lines = out.each_line
|
67
|
+
assert_equal('', err)
|
68
|
+
output = lines.to_a.join('').chomp
|
69
|
+
assert(output.start_with? '<results>')
|
70
|
+
assert(output.end_with? '</results>')
|
71
|
+
assert(output.include? '<fasta_header>')
|
72
|
+
end
|
36
73
|
end
|
37
74
|
end
|
data/test/test_formatters.rb
CHANGED
@@ -33,20 +33,60 @@ module Unipept
|
|
33
33
|
assert_equal('csv', formatter.type)
|
34
34
|
end
|
35
35
|
|
36
|
+
def test_group_by_first_key
|
37
|
+
array = [{ key1: 'v1', key2: 'v2' }, { key1: 'v1', key2: 'v3' }, { key1: 'v4', key2: 'v2' }]
|
38
|
+
grouped = formatter.group_by_first_key(array)
|
39
|
+
assert_equal({ 'v1' => [{ key1: 'v1', key2: 'v2' }, { key1: 'v1', key2: 'v3' }], 'v4' => [{ key1: 'v4', key2: 'v2' }] }, grouped)
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_integrate_fasta_headers
|
43
|
+
fasta = [['>test', '5']]
|
44
|
+
object = [TestObject.test_object, TestObject.test_object]
|
45
|
+
integrated = Array.new(2, { fasta_header: '>test' }.merge(TestObject.test_object))
|
46
|
+
assert_equal(integrated, formatter.integrate_fasta_headers(object, fasta))
|
47
|
+
end
|
48
|
+
|
36
49
|
def formatter
|
37
50
|
Formatter.new
|
38
51
|
end
|
39
52
|
|
40
53
|
def test_header
|
41
|
-
|
54
|
+
assert_raises NotImplementedError do
|
55
|
+
formatter.header(TestObject.test_object, nil)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_footer
|
60
|
+
assert_raises NotImplementedError do
|
61
|
+
formatter.footer
|
62
|
+
end
|
42
63
|
end
|
43
64
|
|
44
65
|
def test_type
|
45
|
-
|
66
|
+
assert_raises NotImplementedError do
|
67
|
+
formatter.type
|
68
|
+
end
|
46
69
|
end
|
47
70
|
|
48
71
|
def test_format
|
49
|
-
|
72
|
+
f = formatter
|
73
|
+
def f.integrate_fasta_headers(_a, _b)
|
74
|
+
puts 'header'
|
75
|
+
end
|
76
|
+
def f.convert(_a, _b)
|
77
|
+
'body'
|
78
|
+
end
|
79
|
+
assert_equal('body', f.format(TestObject.test_object, nil, false))
|
80
|
+
out, _err = capture_io_while do
|
81
|
+
assert_equal('body', f.format(TestObject.test_object, [], false))
|
82
|
+
end
|
83
|
+
assert_equal('header', out.chomp)
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_convert
|
87
|
+
assert_raises NotImplementedError do
|
88
|
+
formatter.convert(TestObject.test_object, false)
|
89
|
+
end
|
50
90
|
end
|
51
91
|
end
|
52
92
|
|
@@ -56,15 +96,27 @@ module Unipept
|
|
56
96
|
end
|
57
97
|
|
58
98
|
def test_header
|
59
|
-
assert_equal('', formatter.header(TestObject.test_object))
|
99
|
+
assert_equal('[', formatter.header(TestObject.test_object, nil))
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_footer
|
103
|
+
assert_equal("]\n", formatter.footer)
|
60
104
|
end
|
61
105
|
|
62
106
|
def test_type
|
63
107
|
assert_equal('json', formatter.type)
|
64
108
|
end
|
65
109
|
|
66
|
-
def
|
67
|
-
assert_equal(TestObject.as_json, formatter.
|
110
|
+
def test_convert
|
111
|
+
assert_equal(TestObject.as_json, formatter.convert([TestObject.test_object], true))
|
112
|
+
assert_equal(',' + TestObject.as_json, formatter.convert([TestObject.test_object], false))
|
113
|
+
end
|
114
|
+
|
115
|
+
def test_format_with_fasta
|
116
|
+
fasta = [['>test', '5']]
|
117
|
+
output = formatter.format([TestObject.test_object], fasta, true)
|
118
|
+
json = '{"fasta_header":">test","integer":5,"string":"string","list":["a",2,false]}'
|
119
|
+
assert_equal(json, output)
|
68
120
|
end
|
69
121
|
end
|
70
122
|
|
@@ -80,21 +132,26 @@ module Unipept
|
|
80
132
|
assert_equal('fasta_header,' + TestObject.as_csv_header, formatter.header(object, fasta))
|
81
133
|
end
|
82
134
|
|
135
|
+
def test_footer
|
136
|
+
assert_equal('', formatter.footer)
|
137
|
+
end
|
138
|
+
|
83
139
|
def test_type
|
84
140
|
assert_equal('csv', formatter.type)
|
85
141
|
end
|
86
142
|
|
87
|
-
def
|
143
|
+
def test_convert
|
88
144
|
object = [TestObject.test_object, TestObject.test_object]
|
89
145
|
csv = [TestObject.as_csv, TestObject.as_csv, ''].join("\n")
|
90
|
-
assert_equal(csv, formatter.
|
146
|
+
assert_equal(csv, formatter.convert(object, true))
|
147
|
+
assert_equal(csv, formatter.convert(object, false))
|
91
148
|
end
|
92
149
|
|
93
150
|
def test_format_with_fasta
|
94
151
|
fasta = [['>test', '5']]
|
95
152
|
object = [TestObject.test_object, TestObject.test_object]
|
96
153
|
csv = ['>test,' + TestObject.as_csv, '>test,' + TestObject.as_csv, ''].join("\n")
|
97
|
-
assert_equal(csv, formatter.format(object, fasta))
|
154
|
+
assert_equal(csv, formatter.format(object, fasta, false))
|
98
155
|
end
|
99
156
|
end
|
100
157
|
|
@@ -104,15 +161,28 @@ module Unipept
|
|
104
161
|
end
|
105
162
|
|
106
163
|
def test_header
|
107
|
-
assert_equal('', formatter.header(TestObject.test_object))
|
164
|
+
assert_equal('<results>', formatter.header(TestObject.test_object))
|
165
|
+
end
|
166
|
+
|
167
|
+
def test_footer
|
168
|
+
assert_equal("</results>\n", formatter.footer)
|
108
169
|
end
|
109
170
|
|
110
171
|
def test_type
|
111
172
|
assert_equal('xml', formatter.type)
|
112
173
|
end
|
113
174
|
|
114
|
-
def
|
115
|
-
|
175
|
+
def test_convert
|
176
|
+
xml = '<result>' + TestObject.as_xml + '</result>'
|
177
|
+
assert_equal(xml, formatter.convert([TestObject.test_object], true))
|
178
|
+
assert_equal(xml, formatter.convert([TestObject.test_object], false))
|
179
|
+
end
|
180
|
+
|
181
|
+
def test_format_with_fasta
|
182
|
+
fasta = [['>test', '5']]
|
183
|
+
output = formatter.format([TestObject.test_object], fasta, false)
|
184
|
+
xml = '<result><fasta_header>>test</fasta_header>' + TestObject.as_xml + '</result>'
|
185
|
+
assert_equal(xml, output)
|
116
186
|
end
|
117
187
|
end
|
118
188
|
|
@@ -126,7 +196,7 @@ module Unipept
|
|
126
196
|
end
|
127
197
|
|
128
198
|
def self.as_xml
|
129
|
-
'<integer>5</integer><string>string</string><list
|
199
|
+
'<integer>5</integer><string>string</string><list><item>a</item><item>2</item><item>false</item></list>'
|
130
200
|
end
|
131
201
|
|
132
202
|
def self.as_csv
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require_relative '../lib/output_writer'
|
2
|
+
|
3
|
+
module Unipept
|
4
|
+
class OutputWriterTestCase < Unipept::TestCase
|
5
|
+
def test_init
|
6
|
+
assert_equal($stdout, OutputWriter.new(nil).output)
|
7
|
+
assert_equal(File, OutputWriter.new('output.txt').output.class)
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_stdout_write_to_output
|
11
|
+
out, _err = capture_io_while do
|
12
|
+
writer = OutputWriter.new(nil)
|
13
|
+
writer.write_line('hello world')
|
14
|
+
writer.output.flush
|
15
|
+
end
|
16
|
+
assert_equal('hello world', out.chomp)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_file_write_to_output
|
20
|
+
out, _err = capture_io_while do
|
21
|
+
writer = OutputWriter.new('output_file')
|
22
|
+
writer.write_line('hello world')
|
23
|
+
writer.output.flush
|
24
|
+
end
|
25
|
+
assert_equal('', out)
|
26
|
+
assert_equal('hello world', IO.foreach('output_file').next.chomp)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|