metal_archives 0.8.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +59 -7
  3. data/.rspec +1 -0
  4. data/.rubocop.yml +14 -0
  5. data/.travis.yml +11 -0
  6. data/Gemfile +2 -0
  7. data/{LICENSE → LICENSE.md} +0 -0
  8. data/README.md +77 -9
  9. data/Rakefile +5 -3
  10. data/lib/metal_archives.rb +8 -0
  11. data/lib/metal_archives/configuration.rb +28 -7
  12. data/lib/metal_archives/error.rb +37 -30
  13. data/lib/metal_archives/http_client.rb +21 -42
  14. data/lib/metal_archives/middleware/headers.rb +38 -0
  15. data/lib/metal_archives/middleware/rewrite_endpoint.rb +38 -0
  16. data/lib/metal_archives/models/artist.rb +51 -65
  17. data/lib/metal_archives/models/band.rb +41 -39
  18. data/lib/metal_archives/models/base_model.rb +88 -59
  19. data/lib/metal_archives/models/label.rb +7 -6
  20. data/lib/metal_archives/parsers/artist.rb +110 -99
  21. data/lib/metal_archives/parsers/band.rb +168 -156
  22. data/lib/metal_archives/parsers/label.rb +54 -52
  23. data/lib/metal_archives/parsers/parser.rb +73 -71
  24. data/lib/metal_archives/utils/collection.rb +7 -1
  25. data/lib/metal_archives/utils/lru_cache.rb +11 -4
  26. data/lib/metal_archives/utils/nil_date.rb +54 -0
  27. data/lib/metal_archives/utils/range.rb +16 -8
  28. data/lib/metal_archives/version.rb +3 -1
  29. data/metal_archives.gemspec +21 -11
  30. data/spec/configuration_spec.rb +101 -0
  31. data/spec/factories/artist_factory.rb +37 -0
  32. data/spec/factories/band_factory.rb +60 -0
  33. data/spec/factories/nil_date_factory.rb +9 -0
  34. data/spec/factories/range_factory.rb +8 -0
  35. data/spec/models/artist_spec.rb +142 -0
  36. data/spec/models/band_spec.rb +179 -0
  37. data/spec/models/base_model_spec.rb +217 -0
  38. data/spec/parser_spec.rb +19 -0
  39. data/spec/spec_helper.rb +111 -0
  40. data/spec/support/factory_girl.rb +5 -0
  41. data/spec/support/metal_archives.rb +26 -0
  42. data/spec/utils/collection_spec.rb +72 -0
  43. data/spec/utils/lru_cache_spec.rb +53 -0
  44. data/spec/utils/nil_date_spec.rb +98 -0
  45. data/spec/utils/range_spec.rb +62 -0
  46. metadata +142 -57
  47. data/test/base_model_test.rb +0 -111
  48. data/test/configuration_test.rb +0 -57
  49. data/test/parser_test.rb +0 -37
  50. data/test/property/artist_property_test.rb +0 -43
  51. data/test/property/band_property_test.rb +0 -94
  52. data/test/query/artist_query_test.rb +0 -109
  53. data/test/query/band_query_test.rb +0 -152
  54. data/test/test_helper.rb +0 -25
  55. data/test/utils/collection_test.rb +0 -51
  56. data/test/utils/lru_cache_test.rb +0 -22
  57. data/test/utils/range_test.rb +0 -42
metadata CHANGED
@@ -1,139 +1,197 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metal_archives
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Dejonckheere
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-01 00:00:00.000000000 Z
11
+ date: 2017-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '9.0'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '9.0'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '11.0'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '11.0'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rdoc
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: factory_girl
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
46
74
  - !ruby/object:Gem::Version
47
- version: '5.0'
75
+ version: '0'
48
76
  type: :development
49
77
  prerelease: false
50
78
  version_requirements: !ruby/object:Gem::Requirement
51
79
  requirements:
52
- - - "~>"
80
+ - - ">="
53
81
  - !ruby/object:Gem::Version
54
- version: '5.0'
82
+ version: '0'
55
83
  - !ruby/object:Gem::Dependency
56
- name: test-unit
84
+ name: faker
57
85
  requirement: !ruby/object:Gem::Requirement
58
86
  requirements:
59
- - - "~>"
87
+ - - ">="
60
88
  - !ruby/object:Gem::Version
61
- version: '3.0'
89
+ version: '0'
62
90
  type: :development
63
91
  prerelease: false
64
92
  version_requirements: !ruby/object:Gem::Requirement
65
93
  requirements:
66
- - - "~>"
94
+ - - ">="
67
95
  - !ruby/object:Gem::Version
68
- version: '3.0'
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: coveralls
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: debase
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
69
139
  - !ruby/object:Gem::Dependency
70
140
  name: faraday
71
141
  requirement: !ruby/object:Gem::Requirement
72
142
  requirements:
73
- - - "~>"
143
+ - - ">="
74
144
  - !ruby/object:Gem::Version
75
- version: '0.9'
145
+ version: '0'
76
146
  type: :runtime
77
147
  prerelease: false
78
148
  version_requirements: !ruby/object:Gem::Requirement
79
149
  requirements:
80
- - - "~>"
150
+ - - ">="
81
151
  - !ruby/object:Gem::Version
82
- version: '0.9'
152
+ version: '0'
83
153
  - !ruby/object:Gem::Dependency
84
154
  name: faraday_throttler
85
155
  requirement: !ruby/object:Gem::Requirement
86
156
  requirements:
87
- - - "~>"
157
+ - - ">="
88
158
  - !ruby/object:Gem::Version
89
- version: 0.0.3
159
+ version: '0'
90
160
  type: :runtime
91
161
  prerelease: false
92
162
  version_requirements: !ruby/object:Gem::Requirement
93
163
  requirements:
94
- - - "~>"
164
+ - - ">="
95
165
  - !ruby/object:Gem::Version
96
- version: 0.0.3
166
+ version: '0'
97
167
  - !ruby/object:Gem::Dependency
98
168
  name: nokogiri
99
169
  requirement: !ruby/object:Gem::Requirement
100
170
  requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '1.6'
104
171
  - - ">="
105
172
  - !ruby/object:Gem::Version
106
- version: 1.6.8
173
+ version: '0'
107
174
  type: :runtime
108
175
  prerelease: false
109
176
  version_requirements: !ruby/object:Gem::Requirement
110
177
  requirements:
111
- - - "~>"
112
- - !ruby/object:Gem::Version
113
- version: '1.6'
114
178
  - - ">="
115
179
  - !ruby/object:Gem::Version
116
- version: 1.6.8
180
+ version: '0'
117
181
  - !ruby/object:Gem::Dependency
118
182
  name: countries
119
183
  requirement: !ruby/object:Gem::Requirement
120
184
  requirements:
121
- - - "~>"
122
- - !ruby/object:Gem::Version
123
- version: '1.2'
124
185
  - - ">="
125
186
  - !ruby/object:Gem::Version
126
- version: 1.2.5
187
+ version: '0'
127
188
  type: :runtime
128
189
  prerelease: false
129
190
  version_requirements: !ruby/object:Gem::Requirement
130
191
  requirements:
131
- - - "~>"
132
- - !ruby/object:Gem::Version
133
- version: '1.2'
134
192
  - - ">="
135
193
  - !ruby/object:Gem::Version
136
- version: 1.2.5
194
+ version: '0'
137
195
  description:
138
196
  email:
139
197
  - florian@floriandejonckheere.be
@@ -142,15 +200,20 @@ extensions: []
142
200
  extra_rdoc_files: []
143
201
  files:
144
202
  - ".gitignore"
203
+ - ".rspec"
204
+ - ".rubocop.yml"
205
+ - ".travis.yml"
145
206
  - CHANGELOG.md
146
207
  - Gemfile
147
- - LICENSE
208
+ - LICENSE.md
148
209
  - README.md
149
210
  - Rakefile
150
211
  - lib/metal_archives.rb
151
212
  - lib/metal_archives/configuration.rb
152
213
  - lib/metal_archives/error.rb
153
214
  - lib/metal_archives/http_client.rb
215
+ - lib/metal_archives/middleware/headers.rb
216
+ - lib/metal_archives/middleware/rewrite_endpoint.rb
154
217
  - lib/metal_archives/models/artist.rb
155
218
  - lib/metal_archives/models/band.rb
156
219
  - lib/metal_archives/models/base_model.rb
@@ -161,20 +224,26 @@ files:
161
224
  - lib/metal_archives/parsers/parser.rb
162
225
  - lib/metal_archives/utils/collection.rb
163
226
  - lib/metal_archives/utils/lru_cache.rb
227
+ - lib/metal_archives/utils/nil_date.rb
164
228
  - lib/metal_archives/utils/range.rb
165
229
  - lib/metal_archives/version.rb
166
230
  - metal_archives.gemspec
167
- - test/base_model_test.rb
168
- - test/configuration_test.rb
169
- - test/parser_test.rb
170
- - test/property/artist_property_test.rb
171
- - test/property/band_property_test.rb
172
- - test/query/artist_query_test.rb
173
- - test/query/band_query_test.rb
174
- - test/test_helper.rb
175
- - test/utils/collection_test.rb
176
- - test/utils/lru_cache_test.rb
177
- - test/utils/range_test.rb
231
+ - spec/configuration_spec.rb
232
+ - spec/factories/artist_factory.rb
233
+ - spec/factories/band_factory.rb
234
+ - spec/factories/nil_date_factory.rb
235
+ - spec/factories/range_factory.rb
236
+ - spec/models/artist_spec.rb
237
+ - spec/models/band_spec.rb
238
+ - spec/models/base_model_spec.rb
239
+ - spec/parser_spec.rb
240
+ - spec/spec_helper.rb
241
+ - spec/support/factory_girl.rb
242
+ - spec/support/metal_archives.rb
243
+ - spec/utils/collection_spec.rb
244
+ - spec/utils/lru_cache_spec.rb
245
+ - spec/utils/nil_date_spec.rb
246
+ - spec/utils/range_spec.rb
178
247
  homepage: http://github.com/floriandejonckheere/metal_archives
179
248
  licenses:
180
249
  - MIT
@@ -195,8 +264,24 @@ required_rubygems_version: !ruby/object:Gem::Requirement
195
264
  version: '0'
196
265
  requirements: []
197
266
  rubyforge_project:
198
- rubygems_version: 2.6.8
267
+ rubygems_version: 2.6.12
199
268
  signing_key:
200
269
  specification_version: 4
201
270
  summary: Metal Archives Ruby API
202
- test_files: []
271
+ test_files:
272
+ - spec/configuration_spec.rb
273
+ - spec/factories/artist_factory.rb
274
+ - spec/factories/band_factory.rb
275
+ - spec/factories/nil_date_factory.rb
276
+ - spec/factories/range_factory.rb
277
+ - spec/models/artist_spec.rb
278
+ - spec/models/band_spec.rb
279
+ - spec/models/base_model_spec.rb
280
+ - spec/parser_spec.rb
281
+ - spec/spec_helper.rb
282
+ - spec/support/factory_girl.rb
283
+ - spec/support/metal_archives.rb
284
+ - spec/utils/collection_spec.rb
285
+ - spec/utils/lru_cache_spec.rb
286
+ - spec/utils/nil_date_spec.rb
287
+ - spec/utils/range_spec.rb
@@ -1,111 +0,0 @@
1
- require 'test_helper'
2
-
3
- require 'metal_archives/models/base_model'
4
-
5
- ##
6
- # Sample model without :id property
7
- #
8
- class ModelOne < MetalArchives::BaseModel
9
- property :property_one
10
- end
11
-
12
- ##
13
- # Sample model without :assemble method
14
- #
15
- class ModelTwo < MetalArchives::BaseModel
16
- property :id
17
- property :property_one
18
- end
19
-
20
- ##
21
- # Sample complete model
22
- #
23
- class ModelThree < MetalArchives::BaseModel
24
- property :id
25
- property :property_one
26
-
27
- def assemble
28
- instance_variable_set "@property_one", 'Property One'
29
- end
30
- end
31
-
32
- ##
33
- # Sample complete model
34
- #
35
- class ModelFour < MetalArchives::BaseModel
36
- property :id
37
- property :property_one
38
-
39
- def assemble
40
- instance_variable_set "@property_one", 'Property One'
41
- end
42
- end
43
-
44
- ##
45
- # BaseModel tests
46
- #
47
- class BaseModelTest < Test::Unit::TestCase
48
- def test_need_id
49
- assert_raise MetalArchives::Errors::NotImplementedError do
50
- ModelOne.new(:property_one => 'foo')
51
- end
52
- end
53
-
54
- def test_need_assemble
55
- assert_raise MetalArchives::Errors::NotImplementedError do
56
- ModelTwo.new(:id => 'foo').property_one
57
- end
58
- end
59
-
60
- def test_constructor
61
- model = ModelThree.new(:id => 'foo', :property_one => 'bar')
62
-
63
- assert model.instance_variable_defined? '@id'
64
- assert model.instance_variable_defined? '@property_one'
65
- assert !model.instance_variable_defined?('@property_two')
66
- end
67
-
68
- def test_methods
69
- model = ModelThree.new(:id => 'foo')
70
-
71
- assert_respond_to model, :id
72
- assert_respond_to model, :id?
73
- assert_respond_to model, :id=
74
-
75
- assert_respond_to model, :property_one
76
- assert_respond_to model, :property_one?
77
- assert_respond_to model, :property_one=
78
- end
79
-
80
- def test_assemble
81
- model = ModelThree.new :id => 'foo'
82
-
83
- assert_equal 'foo', model.id
84
- assert_equal 'Property One', model.property_one
85
- end
86
-
87
- def test_lazy_load
88
- model = ModelThree.new :id => 'foo'
89
-
90
- assert model.instance_variable_defined? '@id'
91
- assert !model.instance_variable_defined?('@property_one')
92
-
93
- model.property_one
94
-
95
- assert model.instance_variable_defined? '@id'
96
- assert model.instance_variable_defined? '@property_one'
97
- assert_equal 'Property One', model.property_one
98
- end
99
-
100
- def test_equality
101
- m1 = ModelThree.new :id => 'id_one'
102
- m2 = ModelThree.new :id => 'id_one'
103
- m3 = ModelThree.new :id => 'id_two'
104
- m4 = ModelFour.new :id => 'id_one'
105
-
106
- assert_equal m1, m2
107
- assert_not_equal m2, m3
108
- assert_not_equal m1, m3
109
- assert_not_equal m1, m4
110
- end
111
- end
@@ -1,57 +0,0 @@
1
- $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
- require 'test/unit'
3
-
4
- require 'metal_archives'
5
- require 'metal_archives/error'
6
-
7
- ##
8
- # Configuration tests
9
- #
10
- class ConfigurationTest < Test::Unit::TestCase
11
- def setup
12
- MetalArchives.config = nil
13
- end
14
-
15
- def test_no_configuration
16
- assert_raise MetalArchives::Errors::InvalidConfigurationError do
17
- MetalArchives::Band.search 'some_name'
18
- end
19
- end
20
-
21
- def test_missing_app_name
22
- assert_raise MetalArchives::Errors::InvalidConfigurationError do
23
- MetalArchives.configure do |c|
24
- c.app_version = MetalArchives::VERSION
25
- c.app_contact = `git config user.email`.chomp || 'user@example.com'
26
- end
27
- end
28
- end
29
-
30
- def test_missing_app_version
31
- assert_raise MetalArchives::Errors::InvalidConfigurationError do
32
- MetalArchives.configure do |c|
33
- c.app_name = 'MetalArchivesGemTestSuite'
34
- c.app_contact = `git config user.email`.chomp || 'user@example.com'
35
- end
36
- end
37
- end
38
-
39
- def test_missing_app_contact
40
- assert_raise MetalArchives::Errors::InvalidConfigurationError do
41
- MetalArchives.configure do |c|
42
- c.app_name = 'MetalArchivesGemTestSuite'
43
- c.app_version = MetalArchives::VERSION
44
- end
45
- end
46
- end
47
-
48
- def test_full_configuration
49
- assert_nothing_raised do
50
- MetalArchives.configure do |c|
51
- c.app_name = 'MetalArchivesGemTestSuite'
52
- c.app_version = MetalArchives::VERSION
53
- c.app_contact = `git config user.email`.chomp || 'user@example.com'
54
- end
55
- end
56
- end
57
- end