bark 0.0.2
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 +7 -0
- data/.gitignore +43 -0
- data/.travis.yml +3 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +45 -0
- data/LICENSE.txt +4 -0
- data/README.md +96 -0
- data/Rakefile +10 -0
- data/bark.gemspec +39 -0
- data/lib/bark.rb +109 -0
- data/lib/bark/request.rb +77 -0
- data/lib/bark/request/graph_of_life.rb +76 -0
- data/lib/bark/request/studies.rb +82 -0
- data/lib/bark/request/taxonomy.rb +78 -0
- data/lib/bark/request/tnrs.rb +75 -0
- data/lib/bark/request/tree_of_life.rb +91 -0
- data/lib/bark/response.rb +51 -0
- data/lib/bark/version.rb +3 -0
- data/spec/lib/bark_spec.rb +87 -0
- data/spec/lib/request/graph_of_life_spec.rb +44 -0
- data/spec/lib/request/studies_spec.rb +74 -0
- data/spec/lib/request/taxonomy_spec.rb +44 -0
- data/spec/lib/request/tnrs_spec.rb +44 -0
- data/spec/lib/request/tree_of_life_spec.rb +44 -0
- data/spec/lib/request_spec.rb +20 -0
- data/spec/lib/response_spec.rb +22 -0
- data/spec/lib/shared_tests_spec.rb +29 -0
- data/spec/shared_tests.rb +87 -0
- data/spec/shared_tests_helper.rb +115 -0
- data/spec/spec_helper.rb +23 -0
- metadata +184 -0
@@ -0,0 +1,115 @@
|
|
1
|
+
# This module faciliates the use of shared tests used in R, Python, and herein.
|
2
|
+
#
|
3
|
+
# See https://github.com/OpenTreeOfLife/shared-api-tests
|
4
|
+
#
|
5
|
+
module SharedTestsHelper
|
6
|
+
|
7
|
+
# Instances are used to translate string-keyed hashes to symbolized keys.
|
8
|
+
class SymbolizableHash < Hash
|
9
|
+
include Hashie::Extensions::SymbolizeKeys
|
10
|
+
end
|
11
|
+
|
12
|
+
# The location/ of the .json files
|
13
|
+
TEST_SOURCE_BASE = ' https://raw.githubusercontent.com/OpenTreeOfLife/shared-api-tests/master/'
|
14
|
+
|
15
|
+
# Base filenames to test with.
|
16
|
+
TEST_FILES = %w{
|
17
|
+
graph_of_life
|
18
|
+
studies
|
19
|
+
taxonomy
|
20
|
+
tnrs
|
21
|
+
tree_of_life
|
22
|
+
}
|
23
|
+
|
24
|
+
# Each set of tests is instantiated as an OtTest.
|
25
|
+
class OtTest
|
26
|
+
# The name of the test, displayed in the specification
|
27
|
+
attr_accessor :name
|
28
|
+
|
29
|
+
# The API wrapper method name to to call.
|
30
|
+
attr_accessor :method
|
31
|
+
|
32
|
+
# A Hash of input values to be delivered in the JSON payload
|
33
|
+
attr_accessor :input
|
34
|
+
|
35
|
+
# A Hash of specifications, by keyword, i.e. the value of "tests"
|
36
|
+
#
|
37
|
+
# "tests": {
|
38
|
+
# "of_type":
|
39
|
+
# ["dict","Response is of wrong type"]
|
40
|
+
# ,
|
41
|
+
# "equals": [
|
42
|
+
# [["nearest_taxon_mrca_rank","'superorder'"],"Fails that nearest_taxon_mrca_rank contains superorder"]
|
43
|
+
# ],
|
44
|
+
# "contains": [
|
45
|
+
# ["nearest_taxon_mrca_ott_id","Doesn't contain nearest_taxon_mrca_ott_id"]
|
46
|
+
# ]
|
47
|
+
# }
|
48
|
+
#
|
49
|
+
attr_accessor :tests
|
50
|
+
|
51
|
+
# Translates specified types to Ruby types
|
52
|
+
RESULT_TYPE_CLASSES = {
|
53
|
+
'dict' => Hash
|
54
|
+
}
|
55
|
+
|
56
|
+
# Getter translation of the method attribute.
|
57
|
+
def method
|
58
|
+
@method.to_sym
|
59
|
+
end
|
60
|
+
|
61
|
+
# Translate the json result type provided in the json specification to a native Ruby value.
|
62
|
+
def result_type
|
63
|
+
if t = @tests['of_type']
|
64
|
+
RESULT_TYPE_CLASSES[t.first]
|
65
|
+
else
|
66
|
+
nil
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def self.build_test(name, attributes)
|
72
|
+
o = SharedTestsHelper::OtTest.new
|
73
|
+
o.name = name
|
74
|
+
o.method = attributes['test_function']
|
75
|
+
|
76
|
+
i = attributes['test_input']
|
77
|
+
|
78
|
+
if i.class == Hash
|
79
|
+
h = SymbolizableHash.new()
|
80
|
+
h.merge!(i)
|
81
|
+
input = h.symbolize_keys.to_h
|
82
|
+
elsif i == "null"
|
83
|
+
input = nil
|
84
|
+
else
|
85
|
+
raise "Invalid input type [#{i}]."
|
86
|
+
end
|
87
|
+
|
88
|
+
o.input = input
|
89
|
+
o.tests = attributes['tests']
|
90
|
+
|
91
|
+
o
|
92
|
+
end
|
93
|
+
|
94
|
+
shared_tests = {}
|
95
|
+
|
96
|
+
begin
|
97
|
+
# TODO: Nicely warn the user when the URL isn't present
|
98
|
+
TEST_FILES.each do |file|
|
99
|
+
shared_tests[file] = []
|
100
|
+
uri = URI(TEST_SOURCE_BASE + file + '.json')
|
101
|
+
json = JSON.parse(Net::HTTP.get_response(uri).body)
|
102
|
+
|
103
|
+
json.keys.each do |k|
|
104
|
+
shared_tests[file].push build_test(k, json[k])
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
rescue JSON::ParserError
|
109
|
+
puts "\n\n!! Warning, unable to build shared tests, some JSON doesn't parse."
|
110
|
+
end
|
111
|
+
|
112
|
+
# The Array of OtTest objects
|
113
|
+
SHARED_TESTS = shared_tests
|
114
|
+
|
115
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# require 'coveralls'
|
2
|
+
# Coveralls.wear!
|
3
|
+
|
4
|
+
# These are development helpers.
|
5
|
+
require 'awesome_print'
|
6
|
+
require 'byebug'
|
7
|
+
|
8
|
+
# These are required to run tests.
|
9
|
+
require 'bark'
|
10
|
+
require 'hashie'
|
11
|
+
require 'shared_tests_helper'
|
12
|
+
require 'shared_tests'
|
13
|
+
|
14
|
+
RSpec.configure do |config|
|
15
|
+
# Use color in STDOUT
|
16
|
+
config.color = true
|
17
|
+
|
18
|
+
# Use color not only in STDOUT but also in pagers and files
|
19
|
+
config.tty = true
|
20
|
+
|
21
|
+
# Use the specified formatter
|
22
|
+
config.formatter = :documentation # :progress, :html, :textmate
|
23
|
+
end
|
metadata
ADDED
@@ -0,0 +1,184 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bark
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Matt Yoder
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-09-24 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: json
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.8'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.8'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: hashie
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.3'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.3'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.5'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.5'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '10.3'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '10.3'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: byebug
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.4'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.4'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '3.1'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '3.1'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: awesome_print
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '1.2'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '1.2'
|
111
|
+
description: A wrapper on the Open Tree API, developed during the open tree hackathon
|
112
|
+
in September, 2014.
|
113
|
+
email:
|
114
|
+
- diapriid@gmail.com
|
115
|
+
executables: []
|
116
|
+
extensions: []
|
117
|
+
extra_rdoc_files: []
|
118
|
+
files:
|
119
|
+
- ".gitignore"
|
120
|
+
- ".travis.yml"
|
121
|
+
- Gemfile
|
122
|
+
- Gemfile.lock
|
123
|
+
- LICENSE.txt
|
124
|
+
- README.md
|
125
|
+
- Rakefile
|
126
|
+
- bark.gemspec
|
127
|
+
- lib/bark.rb
|
128
|
+
- lib/bark/request.rb
|
129
|
+
- lib/bark/request/graph_of_life.rb
|
130
|
+
- lib/bark/request/studies.rb
|
131
|
+
- lib/bark/request/taxonomy.rb
|
132
|
+
- lib/bark/request/tnrs.rb
|
133
|
+
- lib/bark/request/tree_of_life.rb
|
134
|
+
- lib/bark/response.rb
|
135
|
+
- lib/bark/version.rb
|
136
|
+
- spec/lib/bark_spec.rb
|
137
|
+
- spec/lib/request/graph_of_life_spec.rb
|
138
|
+
- spec/lib/request/studies_spec.rb
|
139
|
+
- spec/lib/request/taxonomy_spec.rb
|
140
|
+
- spec/lib/request/tnrs_spec.rb
|
141
|
+
- spec/lib/request/tree_of_life_spec.rb
|
142
|
+
- spec/lib/request_spec.rb
|
143
|
+
- spec/lib/response_spec.rb
|
144
|
+
- spec/lib/shared_tests_spec.rb
|
145
|
+
- spec/shared_tests.rb
|
146
|
+
- spec/shared_tests_helper.rb
|
147
|
+
- spec/spec_helper.rb
|
148
|
+
homepage: https://github.com/SpeciesFileGroup/bark
|
149
|
+
licenses:
|
150
|
+
- BSD
|
151
|
+
metadata: {}
|
152
|
+
post_install_message:
|
153
|
+
rdoc_options: []
|
154
|
+
require_paths:
|
155
|
+
- lib
|
156
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
157
|
+
requirements:
|
158
|
+
- - "~>"
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: '2.1'
|
161
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
162
|
+
requirements:
|
163
|
+
- - ">="
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: '0'
|
166
|
+
requirements: []
|
167
|
+
rubyforge_project:
|
168
|
+
rubygems_version: 2.2.2
|
169
|
+
signing_key:
|
170
|
+
specification_version: 4
|
171
|
+
summary: A Ruby wrapper on the Open Tree API.
|
172
|
+
test_files:
|
173
|
+
- spec/lib/bark_spec.rb
|
174
|
+
- spec/lib/request/graph_of_life_spec.rb
|
175
|
+
- spec/lib/request/studies_spec.rb
|
176
|
+
- spec/lib/request/taxonomy_spec.rb
|
177
|
+
- spec/lib/request/tnrs_spec.rb
|
178
|
+
- spec/lib/request/tree_of_life_spec.rb
|
179
|
+
- spec/lib/request_spec.rb
|
180
|
+
- spec/lib/response_spec.rb
|
181
|
+
- spec/lib/shared_tests_spec.rb
|
182
|
+
- spec/shared_tests.rb
|
183
|
+
- spec/shared_tests_helper.rb
|
184
|
+
- spec/spec_helper.rb
|