metal-archives 0.1.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.
@@ -0,0 +1,142 @@
1
+ # coding: utf-8
2
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
3
+
4
+ describe "MetalArchives" do
5
+ context "has an Agent" do
6
+ context "searching by year" do
7
+ before do
8
+ search_results_html = File.open(File.dirname(__FILE__) + '/html/search_results.html')
9
+ @search_results = Nokogiri::HTML(search_results_html)
10
+ @mechanize = stub('Mechanize')
11
+ Mechanize.stub!(:new).and_return(@mechanize)
12
+ end
13
+
14
+ it "should GET the results page" do
15
+ @mechanize.stub!(:get).and_return(@search_results)
16
+ agent = MetalArchives::Agent.new
17
+
18
+ agent.search_by_year.should == @search_results
19
+ end
20
+
21
+ context "with a results page" do
22
+ it "should find the paginated result links" do
23
+ agent = MetalArchives::Agent.new
24
+ agent.stub!(:search_by_year).and_return(@search_results)
25
+
26
+ links = ['/advanced.php?release_year=2011']
27
+ (2..16).each do |i|
28
+ links << "/advanced.php?band_name=&band_status=&genre=&themes=&origin=0&location=&bandLabel=&release_name=&release_type=&label=&release_year=2011&p=#{i}"
29
+ end
30
+ agent.paginated_result_links.should == links
31
+ end
32
+
33
+ it "should find the album links" do
34
+ @mechanize.stub!(:get).and_return(@search_results)
35
+ agent = MetalArchives::Agent.new
36
+ agent.stub!(:search_by_year).and_return(@search_results)
37
+
38
+ links = [
39
+ "release.php?id=296061", "release.php?id=295756", "release.php?id=294429", "release.php?id=295451", "release.php?id=295197",
40
+ "release.php?id=289824", "release.php?id=295519", "release.php?id=295457", "release.php?id=288298", "release.php?id=296048",
41
+ "release.php?id=290116", "release.php?id=295059", "release.php?id=291931", "release.php?id=296081", "release.php?id=295301",
42
+ "release.php?id=294242", "release.php?id=294032", "release.php?id=295436", "release.php?id=295797", "release.php?id=294481",
43
+ "release.php?id=290911", "release.php?id=295988", "release.php?id=295717", "release.php?id=293534", "release.php?id=295111",
44
+ "release.php?id=290063", "release.php?id=294761", "release.php?id=293839", "release.php?id=295202", "release.php?id=294083",
45
+ "release.php?id=294702", "release.php?id=265276", "release.php?id=293421", "release.php?id=295295", "release.php?id=293910",
46
+ "release.php?id=295567", "release.php?id=296037", "release.php?id=296064", "release.php?id=288749", "release.php?id=290749",
47
+ "release.php?id=295806", "release.php?id=294017", "release.php?id=296098", "release.php?id=294092", "release.php?id=295551",
48
+ "release.php?id=290740", "release.php?id=295410", "release.php?id=293189", "release.php?id=296140", "release.php?id=291295"
49
+ ]
50
+ agent.album_links_from_url(agent.paginated_result_links.first).should == links
51
+ end
52
+ end
53
+ end
54
+
55
+ context "with an album page" do
56
+ context "with only a release year" do
57
+ it "should find the band information" do
58
+ search_results_html = File.open(File.dirname(__FILE__) + '/html/album_result.html')
59
+ @search_results = Nokogiri::HTML(search_results_html)
60
+ @mechanize = stub('Mechanize')
61
+ Mechanize.stub!(:new).and_return(@mechanize)
62
+ @mechanize.stub!(:get).and_return(@search_results)
63
+ agent = MetalArchives::Agent.new
64
+ album_link_from_url = "release.php?id=000001"
65
+
66
+ agent.album_from_url(album_link_from_url).should == {
67
+ :album => 'Fn-2+Fn-1=Fn',
68
+ :band => 'A Tree',
69
+ :label => 'Nazgûl Distro & Prod.',
70
+ :release_date => 'December 31st, 2011',
71
+ :release_type => 'Demo',
72
+ :url => 'release.php?id=000001'
73
+ }
74
+ end
75
+ end
76
+
77
+ context "with only a release month and year" do
78
+ it "should find the band information" do
79
+ search_results_html = File.open(File.dirname(__FILE__) + '/html/album_result3.html')
80
+ @search_results = Nokogiri::HTML(search_results_html)
81
+ @mechanize = stub('Mechanize')
82
+ Mechanize.stub!(:new).and_return(@mechanize)
83
+ @mechanize.stub!(:get).and_return(@search_results)
84
+ agent = MetalArchives::Agent.new
85
+ album_link_from_url = "release.php?id=000001"
86
+
87
+ agent.album_from_url(album_link_from_url).should == {
88
+ :album => 'Flesh Torn in Twilight',
89
+ :band => 'Acephalix',
90
+ :label => 'Deific Mourning',
91
+ :release_date => 'April 30th, 2011',
92
+ :release_type => 'Demo',
93
+ :url => 'release.php?id=000001'
94
+ }
95
+ end
96
+ end
97
+
98
+ context "with a release month, day, and year" do
99
+ it "should find the band information" do
100
+ search_results_html = File.open(File.dirname(__FILE__) + '/html/album_result2.html')
101
+ @search_results = Nokogiri::HTML(search_results_html)
102
+ @mechanize = stub('Mechanize')
103
+ Mechanize.stub!(:new).and_return(@mechanize)
104
+ @mechanize.stub!(:get).and_return(@search_results)
105
+ agent = MetalArchives::Agent.new
106
+ album_link_from_url = "release.php?id=000001"
107
+
108
+ agent.album_from_url(album_link_from_url).should == {
109
+ :album => 'The Mirror of Deliverance',
110
+ :band => 'A Dream of Poe',
111
+ :label => 'ARX Productions',
112
+ :release_date => 'February 25th, 2011',
113
+ :release_type => 'Full-length',
114
+ :url => 'release.php?id=000001'
115
+ }
116
+ end
117
+ end
118
+ end
119
+ end
120
+
121
+ it "ordinalizes a number" do
122
+ numbers = {
123
+ 1 => '1st',
124
+ 2 => '2nd',
125
+ 3 => '3rd',
126
+ 4 => '4th',
127
+ 5 => '5th',
128
+ 6 => '6th',
129
+ 7 => '7th',
130
+ 8 => '8th',
131
+ 9 => '9th',
132
+ 10 => '10th',
133
+ 32 => '32nd',
134
+ 43 => '43rd',
135
+ 64 => '64th',
136
+ 100 => '100th'
137
+ }
138
+ numbers.each do |k, v|
139
+ MetalArchives.ordinalize(k).should == v
140
+ end
141
+ end
142
+ end
@@ -0,0 +1,12 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'rspec'
4
+ require 'metal-archives'
5
+
6
+ # Requires supporting files with custom matchers and macros, etc,
7
+ # in ./support/ and its subdirectories.
8
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
9
+
10
+ RSpec.configure do |config|
11
+
12
+ end
metadata ADDED
@@ -0,0 +1,167 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: metal-archives
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 0
9
+ version: 0.1.0
10
+ platform: ruby
11
+ authors:
12
+ - Danny Olson
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-02-11 00:00:00 -08:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: mechanize
22
+ requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ version: "0"
30
+ type: :runtime
31
+ prerelease: false
32
+ version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
34
+ name: rspec
35
+ requirement: &id002 !ruby/object:Gem::Requirement
36
+ none: false
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ segments:
41
+ - 2
42
+ - 3
43
+ - 0
44
+ version: 2.3.0
45
+ type: :development
46
+ prerelease: false
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: bundler
50
+ requirement: &id003 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ segments:
56
+ - 1
57
+ - 0
58
+ - 0
59
+ version: 1.0.0
60
+ type: :development
61
+ prerelease: false
62
+ version_requirements: *id003
63
+ - !ruby/object:Gem::Dependency
64
+ name: jeweler
65
+ requirement: &id004 !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ~>
69
+ - !ruby/object:Gem::Version
70
+ segments:
71
+ - 1
72
+ - 5
73
+ - 2
74
+ version: 1.5.2
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: *id004
78
+ - !ruby/object:Gem::Dependency
79
+ name: rcov
80
+ requirement: &id005 !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ segments:
86
+ - 0
87
+ version: "0"
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *id005
91
+ - !ruby/object:Gem::Dependency
92
+ name: mechanize
93
+ requirement: &id006 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ~>
97
+ - !ruby/object:Gem::Version
98
+ segments:
99
+ - 1
100
+ - 0
101
+ - 0
102
+ version: 1.0.0
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: *id006
106
+ description: metal-archives provides an interface to search for album releases for a specific year, defaulting to the current one if none is provided.
107
+ email: dbolson@gmail.com
108
+ executables: []
109
+
110
+ extensions: []
111
+
112
+ extra_rdoc_files:
113
+ - LICENSE.txt
114
+ - README.rdoc
115
+ files:
116
+ - .document
117
+ - .rspec
118
+ - Gemfile
119
+ - Gemfile.lock
120
+ - LICENSE.txt
121
+ - README.rdoc
122
+ - Rakefile
123
+ - VERSION
124
+ - lib/metal-archives.rb
125
+ - metal-archives.gemspec
126
+ - spec/html/album_result.html
127
+ - spec/html/album_result2.html
128
+ - spec/html/album_result3.html
129
+ - spec/html/search_results.html
130
+ - spec/metal-archives_spec.rb
131
+ - spec/spec_helper.rb
132
+ has_rdoc: true
133
+ homepage: http://github.com/dbolson/metal-archives
134
+ licenses:
135
+ - MIT
136
+ post_install_message:
137
+ rdoc_options: []
138
+
139
+ require_paths:
140
+ - lib
141
+ required_ruby_version: !ruby/object:Gem::Requirement
142
+ none: false
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ hash: -2409445096831824830
147
+ segments:
148
+ - 0
149
+ version: "0"
150
+ required_rubygems_version: !ruby/object:Gem::Requirement
151
+ none: false
152
+ requirements:
153
+ - - ">="
154
+ - !ruby/object:Gem::Version
155
+ segments:
156
+ - 0
157
+ version: "0"
158
+ requirements: []
159
+
160
+ rubyforge_project:
161
+ rubygems_version: 1.3.7
162
+ signing_key:
163
+ specification_version: 3
164
+ summary: metal-archives provides a way to search http://metal-archives.org/ for album release information.
165
+ test_files:
166
+ - spec/metal-archives_spec.rb
167
+ - spec/spec_helper.rb