metal_archives 0.8.0 → 1.0.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.
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
@@ -1,51 +0,0 @@
1
- $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
- require 'test/unit'
3
-
4
- require 'metal_archives/utils/collection'
5
-
6
- class CollectionTest < Test::Unit::TestCase
7
- def test_each
8
- l = lambda do
9
- @i ||= 0
10
-
11
- return [] if @i >= 100
12
- items = (@i .. (@i + 9)).to_a
13
- @i += 10
14
-
15
- items
16
- end
17
-
18
- c = MetalArchives::Collection.new l
19
-
20
- i = 0
21
- c.each do |item|
22
- assert_equal i, item
23
- i += 1
24
- end
25
-
26
- assert_equal 100, i
27
- end
28
-
29
- def test_return
30
- l = lambda do
31
- @i ||= 0
32
-
33
- raise StandardError if @i >= 100
34
- items = (@i .. (@i + 9)).to_a
35
- @i += 10
36
-
37
- items
38
- end
39
-
40
- c = MetalArchives::Collection.new l
41
-
42
- i = 0
43
- c.each do |item|
44
- break if i == 99
45
- assert_equal i, item
46
- i += 1
47
- end
48
-
49
- assert_equal 99, i
50
- end
51
- end
@@ -1,22 +0,0 @@
1
- require_relative '../test_helper'
2
-
3
- class LruCacheTest < Test::Unit::TestCase
4
- def test_lru
5
- cache = MetalArchives::LRUCache.new 3
6
-
7
- cache[:a] = 'one'
8
- cache[:b] = 'two'
9
- cache[:c] = 'three'
10
-
11
- assert_equal 3, cache.instance_variable_get('@size')
12
-
13
- cache[:d] = 'four'
14
-
15
- assert_equal 3, cache.instance_variable_get('@size')
16
-
17
- assert_equal 'two', cache[:b]
18
- assert_equal 'three', cache[:c]
19
- assert_equal 'four', cache[:d]
20
- assert_equal nil, cache[:a]
21
- end
22
- end
@@ -1,42 +0,0 @@
1
- $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
- require 'test/unit'
3
-
4
- require 'metal_archives/utils/range'
5
-
6
- class RangeTest < Test::Unit::TestCase
7
- def test_basic_attributes
8
- range = MetalArchives::Range.new 3, 5
9
-
10
- assert_respond_to range, :begin
11
- assert_respond_to range, :end
12
-
13
- assert_equal 3, range.begin
14
- assert_equal 5, range.end
15
-
16
- assert range.begin?
17
- assert range.end?
18
- end
19
-
20
- def test_nil
21
- range = MetalArchives::Range.new nil, 5
22
-
23
- assert !range.begin?
24
- assert range.end?
25
-
26
- assert_equal nil, range.begin
27
- assert_equal 5, range.end
28
- end
29
-
30
- def test_comparable
31
- range1 = MetalArchives::Range.new(1, 3)
32
- range2 = MetalArchives::Range.new(1, 3)
33
- range3 = MetalArchives::Range.new(nil, 3)
34
- range4 = MetalArchives::Range.new(nil, 3)
35
- range5 = MetalArchives::Range.new(1, nil)
36
- range6 = MetalArchives::Range.new(1, nil)
37
-
38
- assert_equal range1, range2
39
- assert_equal range3, range4
40
- assert_equal range5, range6
41
- end
42
- end