beatport 0.1.5 → 0.1.6
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.
- data/Gemfile +1 -1
- data/Gemfile.lock +5 -2
- data/README.rdoc +11 -1
- data/VERSION +1 -1
- data/beatport.gemspec +22 -36
- data/lib/beatport/catalog.rb +1 -0
- data/lib/beatport/catalog/artist.rb +12 -6
- data/lib/beatport/catalog/label.rb +16 -10
- data/lib/beatport/catalog/mix.rb +7 -0
- data/lib/beatport/item.rb +18 -0
- data/spec/catalog/account_type_spec.rb +11 -9
- data/spec/catalog/artist_spec.rb +56 -57
- data/spec/catalog/audio_format_spec.rb +12 -12
- data/spec/catalog/autocomplete_spec.rb +11 -9
- data/spec/catalog/chart_overview_spec.rb +14 -5
- data/spec/catalog/chart_spec.rb +11 -7
- data/spec/catalog/country_spec.rb +9 -3
- data/spec/catalog/currency_spec.rb +9 -3
- data/spec/catalog/genre_spec.rb +18 -21
- data/spec/catalog/item_type_spec.rb +8 -0
- data/spec/catalog/label_spec.rb +22 -12
- data/spec/catalog/mixed_spec.rb +9 -1
- data/spec/catalog/release_spec.rb +14 -9
- data/spec/catalog/search_spec.rb +21 -23
- data/spec/catalog/source_type_spec.rb +9 -3
- data/spec/catalog/track_spec.rb +9 -3
- data/spec/fixtures/{account_type_all.yml → account_type.yml} +38 -3
- data/spec/fixtures/artist.yml +555 -0
- data/spec/fixtures/{audio_format_all.yml → audio_format.yml} +73 -3
- data/spec/fixtures/autocomplete.yml +77 -0
- data/spec/fixtures/chart.yml +579 -0
- data/spec/fixtures/chart_overview.yml +41 -0
- data/spec/fixtures/{country_au.yml → country.yml} +3 -3
- data/spec/fixtures/{currency_all.yml → currency.yml} +3 -3
- data/spec/fixtures/genre.yml +273 -0
- data/spec/fixtures/item_type.yml +43 -0
- data/spec/fixtures/label.yml +372 -0
- data/spec/fixtures/mixed.yml +89 -0
- data/spec/fixtures/release.yml +1251 -0
- data/spec/fixtures/search.yml +315 -0
- data/spec/fixtures/{source_type_all.yml → source_type.yml} +4 -4
- data/spec/fixtures/track.yml +1124 -0
- data/spec/spec_helper.rb +7 -1
- metadata +24 -38
- data/spec/fixtures/account_type_visa.yml +0 -38
- data/spec/fixtures/artist_7181.yml +0 -43
- data/spec/fixtures/artist_7181_7182.yml +0 -44
- data/spec/fixtures/artist_7181_top_downloads.yml +0 -105
- data/spec/fixtures/artist_all.yml +0 -64
- data/spec/fixtures/artist_all_5_per_page.yml +0 -53
- data/spec/fixtures/artist_all_for_facets.yml +0 -38
- data/spec/fixtures/artist_all_return_facets.yml +0 -144
- data/spec/fixtures/artist_all_sorted.yml +0 -44
- data/spec/fixtures/audio_format_2.yml +0 -38
- data/spec/fixtures/audio_format_wav.yml +0 -38
- data/spec/fixtures/autocomplete_lutzen.yml +0 -41
- data/spec/fixtures/autocomplete_lutzen_page_3.yml +0 -39
- data/spec/fixtures/chart_15722.yml +0 -39
- data/spec/fixtures/genre_7.yml +0 -38
- data/spec/fixtures/genre_all.yml +0 -47
- data/spec/fixtures/genre_all_with_subgenres.yml +0 -62
- data/spec/fixtures/genre_invalid.yml +0 -38
- data/spec/fixtures/label_1390.yml +0 -43
- data/spec/fixtures/label_all.yml +0 -76
- data/spec/fixtures/release_164808.yml +0 -55
- data/spec/fixtures/search_ANJCDCO011D.yml +0 -38
- data/spec/fixtures/search_anjunadeep_genre_trance.yml +0 -101
- data/spec/fixtures/search_archipel.yml +0 -102
- data/spec/fixtures/search_believe_2004.yml +0 -220
- data/spec/fixtures/track_1217790.yml +0 -45
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -8,10 +8,11 @@ GEM
|
|
|
8
8
|
multi_json (~> 1.0)
|
|
9
9
|
multi_xml
|
|
10
10
|
i18n (0.6.1)
|
|
11
|
-
jeweler (1.
|
|
11
|
+
jeweler (1.8.4)
|
|
12
12
|
bundler (~> 1.0)
|
|
13
13
|
git (>= 1.2.5)
|
|
14
14
|
rake
|
|
15
|
+
rdoc
|
|
15
16
|
json (1.7.5)
|
|
16
17
|
log_buddy (0.7.0)
|
|
17
18
|
money (5.0.0)
|
|
@@ -20,6 +21,8 @@ GEM
|
|
|
20
21
|
multi_json (1.3.6)
|
|
21
22
|
multi_xml (0.5.1)
|
|
22
23
|
rake (0.9.2.2)
|
|
24
|
+
rdoc (3.12)
|
|
25
|
+
json (~> 1.4)
|
|
23
26
|
rspec (2.11.0)
|
|
24
27
|
rspec-core (~> 2.11.0)
|
|
25
28
|
rspec-expectations (~> 2.11.0)
|
|
@@ -38,7 +41,7 @@ DEPENDENCIES
|
|
|
38
41
|
bundler
|
|
39
42
|
fakeweb
|
|
40
43
|
httparty
|
|
41
|
-
jeweler
|
|
44
|
+
jeweler
|
|
42
45
|
log_buddy
|
|
43
46
|
money
|
|
44
47
|
rspec
|
data/README.rdoc
CHANGED
|
@@ -4,7 +4,17 @@ A ruby gem for accessing the Beatport API
|
|
|
4
4
|
|
|
5
5
|
http://api.beatport.com
|
|
6
6
|
|
|
7
|
-
Currently incomplete, but under
|
|
7
|
+
Currently incomplete, but under development.
|
|
8
|
+
|
|
9
|
+
{<img src="https://secure.travis-ci.org/mateomurphy/beatport.png" alt="Build Status" />}[http://travis-ci.org/mateomurphy/beatport]
|
|
10
|
+
|
|
11
|
+
== Facets
|
|
12
|
+
|
|
13
|
+
Many queries to beatport support facets, but they aren't properly documentated on their site. These are the ones I've found so far:
|
|
14
|
+
|
|
15
|
+
* genreName
|
|
16
|
+
* artistName (and not performerName)
|
|
17
|
+
* labelName
|
|
8
18
|
|
|
9
19
|
== Contributing to beatport
|
|
10
20
|
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.1.
|
|
1
|
+
0.1.6
|
data/beatport.gemspec
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = "beatport"
|
|
8
|
-
s.version = "0.1.
|
|
8
|
+
s.version = "0.1.6"
|
|
9
9
|
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["Mateo Murphy"]
|
|
12
|
-
s.date = "2012-
|
|
12
|
+
s.date = "2012-11-11"
|
|
13
13
|
s.description = "A ruby gem for accessing the beatport api"
|
|
14
14
|
s.email = "mateo.murphy@gmail.com"
|
|
15
15
|
s.extra_rdoc_files = [
|
|
@@ -48,6 +48,7 @@ Gem::Specification.new do |s|
|
|
|
48
48
|
"lib/beatport/catalog/keys.rb",
|
|
49
49
|
"lib/beatport/catalog/label.rb",
|
|
50
50
|
"lib/beatport/catalog/list.rb",
|
|
51
|
+
"lib/beatport/catalog/mix.rb",
|
|
51
52
|
"lib/beatport/catalog/mixed.rb",
|
|
52
53
|
"lib/beatport/catalog/part.rb",
|
|
53
54
|
"lib/beatport/catalog/recommendations.rb",
|
|
@@ -86,37 +87,22 @@ Gem::Specification.new do |s|
|
|
|
86
87
|
"spec/catalog/source_type_spec.rb",
|
|
87
88
|
"spec/catalog/track_spec.rb",
|
|
88
89
|
"spec/collection_spec.rb",
|
|
89
|
-
"spec/fixtures/
|
|
90
|
-
"spec/fixtures/
|
|
91
|
-
"spec/fixtures/
|
|
92
|
-
"spec/fixtures/
|
|
93
|
-
"spec/fixtures/
|
|
94
|
-
"spec/fixtures/
|
|
95
|
-
"spec/fixtures/
|
|
96
|
-
"spec/fixtures/
|
|
97
|
-
"spec/fixtures/
|
|
98
|
-
"spec/fixtures/
|
|
99
|
-
"spec/fixtures/
|
|
100
|
-
"spec/fixtures/
|
|
101
|
-
"spec/fixtures/
|
|
102
|
-
"spec/fixtures/
|
|
103
|
-
"spec/fixtures/
|
|
104
|
-
"spec/fixtures/
|
|
105
|
-
"spec/fixtures/country_au.yml",
|
|
106
|
-
"spec/fixtures/currency_all.yml",
|
|
107
|
-
"spec/fixtures/genre_7.yml",
|
|
108
|
-
"spec/fixtures/genre_all.yml",
|
|
109
|
-
"spec/fixtures/genre_all_with_subgenres.yml",
|
|
110
|
-
"spec/fixtures/genre_invalid.yml",
|
|
111
|
-
"spec/fixtures/label_1390.yml",
|
|
112
|
-
"spec/fixtures/label_all.yml",
|
|
113
|
-
"spec/fixtures/release_164808.yml",
|
|
114
|
-
"spec/fixtures/search_ANJCDCO011D.yml",
|
|
115
|
-
"spec/fixtures/search_anjunadeep_genre_trance.yml",
|
|
116
|
-
"spec/fixtures/search_archipel.yml",
|
|
117
|
-
"spec/fixtures/search_believe_2004.yml",
|
|
118
|
-
"spec/fixtures/source_type_all.yml",
|
|
119
|
-
"spec/fixtures/track_1217790.yml",
|
|
90
|
+
"spec/fixtures/account_type.yml",
|
|
91
|
+
"spec/fixtures/artist.yml",
|
|
92
|
+
"spec/fixtures/audio_format.yml",
|
|
93
|
+
"spec/fixtures/autocomplete.yml",
|
|
94
|
+
"spec/fixtures/chart.yml",
|
|
95
|
+
"spec/fixtures/chart_overview.yml",
|
|
96
|
+
"spec/fixtures/country.yml",
|
|
97
|
+
"spec/fixtures/currency.yml",
|
|
98
|
+
"spec/fixtures/genre.yml",
|
|
99
|
+
"spec/fixtures/item_type.yml",
|
|
100
|
+
"spec/fixtures/label.yml",
|
|
101
|
+
"spec/fixtures/mixed.yml",
|
|
102
|
+
"spec/fixtures/release.yml",
|
|
103
|
+
"spec/fixtures/search.yml",
|
|
104
|
+
"spec/fixtures/source_type.yml",
|
|
105
|
+
"spec/fixtures/track.yml",
|
|
120
106
|
"spec/item_spec.rb",
|
|
121
107
|
"spec/spec_helper.rb",
|
|
122
108
|
"spec/support/inflector_spec.rb",
|
|
@@ -136,7 +122,7 @@ Gem::Specification.new do |s|
|
|
|
136
122
|
s.add_runtime_dependency(%q<money>, [">= 0"])
|
|
137
123
|
s.add_development_dependency(%q<bundler>, [">= 0"])
|
|
138
124
|
s.add_development_dependency(%q<fakeweb>, [">= 0"])
|
|
139
|
-
s.add_development_dependency(%q<jeweler>, ["
|
|
125
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
|
140
126
|
s.add_development_dependency(%q<log_buddy>, [">= 0"])
|
|
141
127
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
|
142
128
|
s.add_development_dependency(%q<yard>, [">= 0"])
|
|
@@ -146,7 +132,7 @@ Gem::Specification.new do |s|
|
|
|
146
132
|
s.add_dependency(%q<money>, [">= 0"])
|
|
147
133
|
s.add_dependency(%q<bundler>, [">= 0"])
|
|
148
134
|
s.add_dependency(%q<fakeweb>, [">= 0"])
|
|
149
|
-
s.add_dependency(%q<jeweler>, ["
|
|
135
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
|
150
136
|
s.add_dependency(%q<log_buddy>, [">= 0"])
|
|
151
137
|
s.add_dependency(%q<rspec>, [">= 0"])
|
|
152
138
|
s.add_dependency(%q<yard>, [">= 0"])
|
|
@@ -157,7 +143,7 @@ Gem::Specification.new do |s|
|
|
|
157
143
|
s.add_dependency(%q<money>, [">= 0"])
|
|
158
144
|
s.add_dependency(%q<bundler>, [">= 0"])
|
|
159
145
|
s.add_dependency(%q<fakeweb>, [">= 0"])
|
|
160
|
-
s.add_dependency(%q<jeweler>, ["
|
|
146
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
|
161
147
|
s.add_dependency(%q<log_buddy>, [">= 0"])
|
|
162
148
|
s.add_dependency(%q<rspec>, [">= 0"])
|
|
163
149
|
s.add_dependency(%q<yard>, [">= 0"])
|
data/lib/beatport/catalog.rb
CHANGED
|
@@ -20,6 +20,7 @@ module Beatport
|
|
|
20
20
|
autoload :Keys, 'beatport/catalog/keys'
|
|
21
21
|
autoload :Label, 'beatport/catalog/label'
|
|
22
22
|
autoload :List, 'beatport/catalog/list'
|
|
23
|
+
autoload :Mix, 'beatport/catalog/mix'
|
|
23
24
|
autoload :Mixed, 'beatport/catalog/mixed'
|
|
24
25
|
autoload :Part, 'beatport/catalog/part'
|
|
25
26
|
autoload :Recommendations, 'beatport/catalog/recommendations'
|
|
@@ -6,13 +6,19 @@ module Beatport
|
|
|
6
6
|
has_one :images, Images
|
|
7
7
|
has_many :top_downloads, Track
|
|
8
8
|
# has_many :featured_releases, Release
|
|
9
|
-
|
|
10
|
-
def self.find(*args)
|
|
11
|
-
Client.retrieve 'artists', Artist, *args
|
|
12
|
-
end
|
|
13
9
|
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
class << self
|
|
11
|
+
def all(options = {})
|
|
12
|
+
Client.retrieve 'artists', Artist, options
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def find(*args)
|
|
16
|
+
Client.retrieve 'artists', Artist, *args
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def name_facet
|
|
20
|
+
:artist_name
|
|
21
|
+
end
|
|
16
22
|
end
|
|
17
23
|
|
|
18
24
|
def top_downloads(options = {})
|
|
@@ -8,18 +8,24 @@ module Beatport
|
|
|
8
8
|
has_many :most_popular_releases, Release
|
|
9
9
|
has_one :images, Images
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
class << self
|
|
12
|
+
def all(options = {})
|
|
13
|
+
Client.retrieve 'labels', Label, options
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def featured(*args)
|
|
17
|
+
Client.retrieve 'featured/labels', Label, *args
|
|
18
|
+
end
|
|
14
19
|
|
|
15
|
-
|
|
16
|
-
|
|
20
|
+
def find(*args)
|
|
21
|
+
Client.retrieve 'labels', Label, *args
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def name_facet
|
|
25
|
+
:label_name
|
|
26
|
+
end
|
|
17
27
|
end
|
|
18
|
-
|
|
19
|
-
def self.featured(*args)
|
|
20
|
-
Client.retrieve 'featured/labels', Label, *args
|
|
21
|
-
end
|
|
22
|
-
|
|
28
|
+
|
|
23
29
|
def releases(options)
|
|
24
30
|
options[:label_id] = id
|
|
25
31
|
Release.all(options)
|
data/lib/beatport/item.rb
CHANGED
|
@@ -20,6 +20,24 @@ module Beatport
|
|
|
20
20
|
return if respond_to?(var)
|
|
21
21
|
class_eval "def #{var}; @#{var}; end"
|
|
22
22
|
end
|
|
23
|
+
|
|
24
|
+
def find_by_name(name, *args)
|
|
25
|
+
raise "finding by name is not supported" unless respond_to?(:name_facet)
|
|
26
|
+
|
|
27
|
+
options = args.last || {}
|
|
28
|
+
options[:facets] ||= {}
|
|
29
|
+
options[:facets][name_facet] = name
|
|
30
|
+
results = find(options)
|
|
31
|
+
|
|
32
|
+
case results.length
|
|
33
|
+
when 0
|
|
34
|
+
nil
|
|
35
|
+
when 1
|
|
36
|
+
results.first
|
|
37
|
+
else
|
|
38
|
+
raise "find_by_name returned multiple results"
|
|
39
|
+
end
|
|
40
|
+
end
|
|
23
41
|
end
|
|
24
42
|
|
|
25
43
|
def initialize(data = {})
|
|
@@ -2,11 +2,17 @@ require 'spec_helper'
|
|
|
2
2
|
|
|
3
3
|
module Beatport::Catalog
|
|
4
4
|
describe AccountType do
|
|
5
|
+
before :each do
|
|
6
|
+
VCR.insert_cassette 'account_type'
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
after :each do
|
|
10
|
+
VCR.eject_cassette
|
|
11
|
+
end
|
|
12
|
+
|
|
5
13
|
describe 'structure' do
|
|
6
14
|
subject do
|
|
7
|
-
|
|
8
|
-
AccountType.all.first
|
|
9
|
-
end
|
|
15
|
+
AccountType.all.first
|
|
10
16
|
end
|
|
11
17
|
|
|
12
18
|
it { should be_an(AccountType) }
|
|
@@ -21,9 +27,7 @@ module Beatport::Catalog
|
|
|
21
27
|
|
|
22
28
|
describe '.all' do
|
|
23
29
|
subject do
|
|
24
|
-
|
|
25
|
-
AccountType.all
|
|
26
|
-
end
|
|
30
|
+
AccountType.all
|
|
27
31
|
end
|
|
28
32
|
|
|
29
33
|
its (:length) { should be > 1 }
|
|
@@ -38,9 +42,7 @@ module Beatport::Catalog
|
|
|
38
42
|
|
|
39
43
|
context "by name" do
|
|
40
44
|
subject do
|
|
41
|
-
|
|
42
|
-
AccountType.find('Visa')
|
|
43
|
-
end
|
|
45
|
+
AccountType.find('Visa')
|
|
44
46
|
end
|
|
45
47
|
|
|
46
48
|
its (:name) { should == "Visa" }
|
data/spec/catalog/artist_spec.rb
CHANGED
|
@@ -2,10 +2,16 @@ require 'spec_helper'
|
|
|
2
2
|
|
|
3
3
|
module Beatport::Catalog
|
|
4
4
|
describe Artist do
|
|
5
|
+
before :each do
|
|
6
|
+
VCR.insert_cassette 'artist'
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
after :each do
|
|
10
|
+
VCR.eject_cassette
|
|
11
|
+
end
|
|
12
|
+
|
|
5
13
|
describe 'structure' do
|
|
6
|
-
subject
|
|
7
|
-
VCR.use_cassette('artist_7181') { Artist.find(7181) }
|
|
8
|
-
end
|
|
14
|
+
subject { Artist.find(7181) }
|
|
9
15
|
|
|
10
16
|
it { should be_an(Artist) }
|
|
11
17
|
its (:id) { should == 7181 }
|
|
@@ -16,7 +22,7 @@ module Beatport::Catalog
|
|
|
16
22
|
its (:biography) { should == "" }
|
|
17
23
|
its (:'genres.length') { should be > 1 }
|
|
18
24
|
its (:'sub_genres.length') { should be > 1 }
|
|
19
|
-
its (:'top_downloads.length') {
|
|
25
|
+
its (:'top_downloads.length') { should be > 1 }
|
|
20
26
|
its (:'images.small.url') { should == "http://geo-media.beatport.com/image/491527.jpg" }
|
|
21
27
|
its (:'images.medium.url') { should == "http://geo-media.beatport.com/image/491530.jpg" }
|
|
22
28
|
its (:'images.large.url') { should == "http://geo-media.beatport.com/image/4686424.jpg" }
|
|
@@ -25,20 +31,16 @@ module Beatport::Catalog
|
|
|
25
31
|
|
|
26
32
|
describe '.find' do
|
|
27
33
|
context 'with a single id' do
|
|
28
|
-
subject
|
|
29
|
-
VCR.use_cassette('artist_7181') { Artist.find(7181) }
|
|
30
|
-
end
|
|
34
|
+
subject { Artist.find(7181) }
|
|
31
35
|
|
|
32
36
|
it { should be_an(Artist) }
|
|
33
37
|
its (:id) { should == 7181 }
|
|
34
38
|
end
|
|
35
39
|
|
|
36
40
|
context 'with multiple ids' do
|
|
37
|
-
subject
|
|
38
|
-
VCR.use_cassette('artist_7181_7182') { Artist.find(7181, 7182) }
|
|
39
|
-
end
|
|
41
|
+
subject { Artist.find(7181, 7182) }
|
|
40
42
|
|
|
41
|
-
#
|
|
43
|
+
# it { should be_a(Collection) }
|
|
42
44
|
its (:length) { should == 2 }
|
|
43
45
|
it "returns the requested artists" do
|
|
44
46
|
subject.map(&:id).should == [7181, 7182]
|
|
@@ -46,11 +48,9 @@ module Beatport::Catalog
|
|
|
46
48
|
end
|
|
47
49
|
|
|
48
50
|
context 'with an array of ids' do
|
|
49
|
-
subject
|
|
50
|
-
VCR.use_cassette('artist_7181_7182') { Artist.find(7181, 7182) }
|
|
51
|
-
end
|
|
51
|
+
subject { Artist.find(7181, 7182) }
|
|
52
52
|
|
|
53
|
-
#
|
|
53
|
+
# it { should be_a(Collection) }
|
|
54
54
|
its (:length) { should == 2 }
|
|
55
55
|
it "returns the requested artists" do
|
|
56
56
|
subject.map(&:id).should == [7181, 7182]
|
|
@@ -58,69 +58,68 @@ module Beatport::Catalog
|
|
|
58
58
|
end
|
|
59
59
|
end
|
|
60
60
|
|
|
61
|
+
describe '.find_by_name' do
|
|
62
|
+
subject { Artist.find_by_name('Above & Beyond') }
|
|
63
|
+
|
|
64
|
+
it { should be_an(Artist) }
|
|
65
|
+
its (:id) { should == 7181 }
|
|
66
|
+
end
|
|
67
|
+
|
|
61
68
|
describe '.all' do
|
|
62
69
|
it "should get arbitrary artists" do
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
artists.length.should == 10
|
|
66
|
-
end
|
|
70
|
+
artists = Artist.all
|
|
71
|
+
artists.length.should == 10
|
|
67
72
|
end
|
|
68
73
|
|
|
69
74
|
it "should get the first page with 5 artists per page" do
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
artists.per_page.should == 5
|
|
75
|
-
end
|
|
75
|
+
artists = Artist.all :per_page => 5, :page => 1
|
|
76
|
+
artists.length.should == 5
|
|
77
|
+
artists.page.should == 1
|
|
78
|
+
artists.per_page.should == 5
|
|
76
79
|
end
|
|
77
80
|
|
|
78
81
|
it "should get the first page with 5 artists per page, sorted by publish date and artist id, for the House genre" do
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
+
artists = Artist.all(:sort_by=> { :publish_date => 'asc', :artist_id => 'asc' }, :genre_id=> 5, :per_page=>5, :page=>1)
|
|
83
|
+
artists.length.should == 5
|
|
84
|
+
|
|
85
|
+
old_id = nil
|
|
86
|
+
old_date = artists.first.last_publish_date
|
|
87
|
+
|
|
88
|
+
artists.each do |artist|
|
|
89
|
+
old_id = nil if old_date.to_s != artist.last_publish_date.to_s
|
|
82
90
|
|
|
83
|
-
|
|
84
|
-
|
|
91
|
+
# beatport has some bad genre data?
|
|
92
|
+
# artist.genres.map(&:id).should include(5)
|
|
93
|
+
artist.id.should be >= old_id if old_id
|
|
94
|
+
artist.last_publish_date.should be >= old_date if old_date
|
|
85
95
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
# beatport has some bad genre data?
|
|
90
|
-
# artist.genres.map(&:id).should include(5)
|
|
91
|
-
artist.id.should be >= old_id if old_id
|
|
92
|
-
artist.last_publish_date.should be >= old_date if old_date
|
|
93
|
-
|
|
94
|
-
old_id = artist.id
|
|
95
|
-
old_date = artist.publish_date
|
|
96
|
-
end
|
|
96
|
+
old_id = artist.id
|
|
97
|
+
old_date = artist.publish_date
|
|
97
98
|
end
|
|
98
99
|
end
|
|
99
100
|
|
|
100
101
|
it "should get arbitrary artists with filter metadata for all genre names and artist names" do
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
end
|
|
102
|
+
artists = Artist.all :return_facets => ['genre_name', 'performer_name']
|
|
103
|
+
|
|
104
|
+
artists.facets['fields']['performer_name'].count.should be > 1
|
|
105
|
+
artists.facets['fields']['genre_name'].count.should be > 1
|
|
106
|
+
|
|
107
107
|
end
|
|
108
108
|
|
|
109
109
|
it "should get all trance artists for above & beyond" do
|
|
110
110
|
pending "Request doesn't return any results"
|
|
111
111
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
artists.
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
genres.should include('Trance')
|
|
121
|
-
end
|
|
112
|
+
artists = Artist.all :facets => {:genre_name => ['Trance', 'Progessive House']}
|
|
113
|
+
|
|
114
|
+
artists.each do |artist|
|
|
115
|
+
artists = artist['artists'].map { |a| a['name'] }
|
|
116
|
+
artists.should include("Above & Beyond")
|
|
117
|
+
|
|
118
|
+
genres = artist['genres'].map { |a| a['name'] }
|
|
119
|
+
genres.should include('Trance')
|
|
122
120
|
end
|
|
123
121
|
end
|
|
122
|
+
|
|
124
123
|
end
|
|
125
124
|
end
|
|
126
125
|
end
|