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.
@@ -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
@@ -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