7digital 0.0.7 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +8 -1
- data/lib/sevendigital.rb +4 -2
- data/lib/sevendigital/api_operator.rb +92 -94
- data/lib/sevendigital/api_operator_cached.rb +55 -33
- data/lib/sevendigital/api_request.rb +50 -54
- data/lib/sevendigital/client.rb +15 -6
- data/lib/sevendigital/client_configuration.rb +0 -3
- data/lib/sevendigital/client_digestors.rb +15 -0
- data/lib/sevendigital/client_managers.rb +11 -1
- data/lib/sevendigital/digestion_tract/api_response_digestor.rb +31 -40
- data/lib/sevendigital/digestion_tract/artist_digestor.rb +16 -13
- data/lib/sevendigital/digestion_tract/basket_digestor.rb +5 -5
- data/lib/sevendigital/digestion_tract/basket_item_digestor.rb +12 -12
- data/lib/sevendigital/digestion_tract/chart_item_digestor.rb +17 -11
- data/lib/sevendigital/digestion_tract/country_digestor.rb +16 -0
- data/lib/sevendigital/digestion_tract/digestor.rb +82 -28
- data/lib/sevendigital/digestion_tract/download_url_digestor.rb +10 -7
- data/lib/sevendigital/digestion_tract/format_digestor.rb +11 -9
- data/lib/sevendigital/digestion_tract/label_digestor.rb +8 -7
- data/lib/sevendigital/digestion_tract/list_digestor.rb +24 -0
- data/lib/sevendigital/digestion_tract/list_item_digestor.rb +26 -0
- data/lib/sevendigital/digestion_tract/locker_digestor.rb +9 -5
- data/lib/sevendigital/digestion_tract/locker_release_digestor.rb +13 -7
- data/lib/sevendigital/digestion_tract/locker_track_digestor.rb +13 -9
- data/lib/sevendigital/digestion_tract/oauth_access_token_digestor.rb +7 -3
- data/lib/sevendigital/digestion_tract/oauth_request_token_digestor.rb +7 -3
- data/lib/sevendigital/digestion_tract/pager_digestor.rb +13 -9
- data/lib/sevendigital/digestion_tract/price_digestor.rb +15 -12
- data/lib/sevendigital/digestion_tract/release_digestor.rb +26 -34
- data/lib/sevendigital/digestion_tract/tag_digestor.rb +8 -7
- data/lib/sevendigital/digestion_tract/track_digestor.rb +27 -28
- data/lib/sevendigital/digestion_tract/user_card_digestor.rb +9 -8
- data/lib/sevendigital/digestion_tract/user_digestor.rb +8 -7
- data/lib/sevendigital/management/artist_manager.rb +9 -11
- data/lib/sevendigital/management/basket_manager.rb +4 -4
- data/lib/sevendigital/management/country_manager.rb +11 -0
- data/lib/sevendigital/management/list_manager.rb +18 -0
- data/lib/sevendigital/management/oauth_manager.rb +2 -2
- data/lib/sevendigital/management/release_manager.rb +9 -11
- data/lib/sevendigital/management/tag_manager.rb +1 -1
- data/lib/sevendigital/management/track_manager.rb +4 -5
- data/lib/sevendigital/management/user_card_manager.rb +2 -2
- data/lib/sevendigital/management/user_manager.rb +9 -4
- data/lib/sevendigital/model/api_response.rb +12 -4
- data/lib/sevendigital/model/artist.rb +5 -0
- data/lib/sevendigital/model/list.rb +5 -0
- data/lib/sevendigital/model/list_item.rb +9 -0
- data/lib/sevendigital/model/release.rb +2 -2
- data/lib/sevendigital/model/sevendigital_object.rb +1 -1
- data/lib/sevendigital/model/user.rb +12 -1
- data/lib/sevendigital/pager.rb +2 -6
- data/lib/sevendigital/version.rb +1 -1
- data/spec/api_operator_cached_spec.rb +14 -14
- data/spec/api_operator_spec.rb +18 -34
- data/spec/digestion_tract/api_response_digestor_spec.rb +26 -25
- data/spec/digestion_tract/artist_digestor_spec.rb +9 -9
- data/spec/digestion_tract/basket_digestor_spec.rb +2 -2
- data/spec/digestion_tract/basket_item_digestor_spec.rb +4 -4
- data/spec/digestion_tract/chart_digestor_spec.rb +4 -4
- data/spec/digestion_tract/country_digestor_spec.rb +33 -0
- data/spec/digestion_tract/digestor_spec.rb +34 -0
- data/spec/digestion_tract/download_url_digestor_spec.rb +2 -2
- data/spec/digestion_tract/format_digestor_spec.rb +2 -2
- data/spec/digestion_tract/label_digestor_spec.rb +2 -2
- data/spec/digestion_tract/list_digestor_spec.rb +32 -0
- data/spec/digestion_tract/list_item_digestor_spec.rb +80 -0
- data/spec/digestion_tract/locker_digestor_spec.rb +2 -2
- data/spec/digestion_tract/locker_release_digestor_spec.rb +5 -5
- data/spec/digestion_tract/locker_track_digestor_spec.rb +4 -4
- data/spec/digestion_tract/oauth_access_token_digestor_spec.rb +2 -2
- data/spec/digestion_tract/oauth_request_token_digestor_spec.rb +2 -2
- data/spec/digestion_tract/pager_digestor_spec.rb +3 -3
- data/spec/digestion_tract/price_digestor_spec.rb +4 -4
- data/spec/digestion_tract/release_digestor_spec.rb +19 -5
- data/spec/digestion_tract/tag_digestor_spec.rb +3 -3
- data/spec/digestion_tract/track_digestor_spec.rb +4 -4
- data/spec/digestion_tract/user_card_digestor_spec.rb +5 -5
- data/spec/digestion_tract/user_digestor_spec.rb +4 -6
- data/spec/integration/artist_spec.rb +86 -0
- data/spec/integration/country_spec.rb +18 -0
- data/spec/integration/list_spec.rb +22 -0
- data/spec/integration/purchasing_spec.rb +24 -0
- data/spec/integration/release_spec.rb +34 -0
- data/spec/integration/sevendigital_spec.yml +5 -0
- data/spec/integration/track_spec.rb +23 -0
- data/spec/integration/user_spec.rb +22 -0
- data/spec/management/artist_manager_spec.rb +32 -11
- data/spec/management/basket_manager_spec.rb +4 -4
- data/spec/management/country_manager_spec.rb +34 -0
- data/spec/management/list_manager_spec.rb +27 -0
- data/spec/management/oauth_manager_spec.rb +4 -4
- data/spec/management/release_manager_spec.rb +13 -13
- data/spec/management/tag_manager_spec.rb +1 -1
- data/spec/management/track_manager_spec.rb +4 -4
- data/spec/management/user_card_manager_spec.rb +2 -2
- data/spec/management/user_manager_spec.rb +20 -4
- data/spec/model/api_response_spec.rb +3 -3
- data/spec/model/artist_spec.rb +2 -2
- data/spec/model/sevendigital_object_spec.rb +4 -4
- data/spec/model/user_spec.rb +21 -0
- data/spec/spec_helper.rb +31 -11
- data/spec/test-xml/methods/country/resolve.xml +7 -0
- data/spec/test-xml/methods/editorial/list.xml +171 -0
- data/spec/test-xml/methods/user/details.xml +5 -0
- data/spec/test-xml/objects/artist.xml +1 -0
- data/spec/test-xml/objects/list.xml +89 -0
- data/spec/test-xml/objects/list_item_list.xml +86 -0
- data/spec/test-xml/objects/list_item_release.xml +14 -0
- data/spec/test-xml/objects/nested_release_list.xml +23 -0
- metadata +126 -273
- data/lib/sevendigital/peachy_patchy.rb +0 -9
- data/lib/sevendigital/proxy_police.rb +0 -28
- data/spec/coverage/assets/0.3.9/app.js +0 -66
- data/spec/coverage/assets/0.3.9/fancybox/blank.gif +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_close.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_loading.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_nav_left.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_nav_right.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_e.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_n.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_ne.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_nw.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_s.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_se.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_sw.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_w.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_title_left.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_title_main.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_title_over.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_title_right.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancybox-x.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancybox-y.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancybox.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.css +0 -363
- data/spec/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.pack.js +0 -44
- data/spec/coverage/assets/0.3.9/favicon.png +0 -0
- data/spec/coverage/assets/0.3.9/jquery-1.4.2.min.js +0 -155
- data/spec/coverage/assets/0.3.9/jquery.dataTables.min.js +0 -152
- data/spec/coverage/assets/0.3.9/jquery.timeago.js +0 -141
- data/spec/coverage/assets/0.3.9/jquery.url.js +0 -174
- data/spec/coverage/assets/0.3.9/loading.gif +0 -0
- data/spec/coverage/assets/0.3.9/magnify.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_222222_256x240.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_454545_256x240.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_888888_256x240.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/jquery-ui-1.8.4.custom.css +0 -295
- data/spec/coverage/assets/0.3.9/stylesheet.css +0 -341
- data/spec/coverage/index.html +0 -47481
- data/spec/coverage/resultset.yml +0 -3556
- data/spec/model/coverage/assets/0.3.9/app.js +0 -66
- data/spec/model/coverage/assets/0.3.9/fancybox/blank.gif +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_close.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_loading.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_nav_left.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_nav_right.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_e.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_n.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_ne.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_nw.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_s.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_se.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_sw.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_w.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_left.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_main.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_over.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_right.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancybox-x.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancybox-y.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancybox.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.css +0 -363
- data/spec/model/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.pack.js +0 -44
- data/spec/model/coverage/assets/0.3.9/favicon.png +0 -0
- data/spec/model/coverage/assets/0.3.9/jquery-1.4.2.min.js +0 -155
- data/spec/model/coverage/assets/0.3.9/jquery.dataTables.min.js +0 -152
- data/spec/model/coverage/assets/0.3.9/jquery.timeago.js +0 -141
- data/spec/model/coverage/assets/0.3.9/jquery.url.js +0 -174
- data/spec/model/coverage/assets/0.3.9/loading.gif +0 -0
- data/spec/model/coverage/assets/0.3.9/magnify.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_222222_256x240.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_454545_256x240.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_888888_256x240.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/jquery-ui-1.8.4.custom.css +0 -295
- data/spec/model/coverage/assets/0.3.9/stylesheet.css +0 -341
- data/spec/model/coverage/index.html +0 -8637
- data/spec/model/coverage/resultset.yml +0 -642
- data/spec/pager_spec.rb +0 -7
- data/spec/peachy_spec_helper_patch.rb +0 -7
- data/spec/proxy_police_spec.rb +0 -70
- data/spec/sevendigital_spec.rb +0 -51
- data/spec/sevendigital_spec.yml +0 -5
@@ -0,0 +1,22 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
3
|
+
require 'date'
|
4
|
+
|
5
|
+
describe "User integration tests" do
|
6
|
+
|
7
|
+
before do
|
8
|
+
@api_client = Sevendigital::Client.new(
|
9
|
+
File.join(File.dirname(__FILE__),"sevendigital_spec.yml"),
|
10
|
+
:verbose => "verbose"
|
11
|
+
)
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should fail to sign up an existing user" do
|
16
|
+
running {user = @api_client.user.sign_up("filip@7digital.com", "£$%^&*()_+")}.should raise_error(Sevendigital::SevendigitalError) { |error|
|
17
|
+
error.error_message.should == "User with given email already exists"
|
18
|
+
error.error_code.should == 2003
|
19
|
+
}
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -11,10 +11,10 @@ describe "ArtistManager" do
|
|
11
11
|
it "get_details should call artist/details api method and return digested artist" do
|
12
12
|
an_artist_id = 123
|
13
13
|
an_artist = Sevendigital::Artist.new(@client)
|
14
|
-
an_api_response = fake_api_response("
|
14
|
+
an_api_response = fake_api_response("artist/details")
|
15
15
|
|
16
16
|
mock_client_digestor(@client, :artist_digestor) \
|
17
|
-
.should_receive(:
|
17
|
+
.should_receive(:from_xml_doc).with(an_api_response.item_xml("artist")).and_return(an_artist)
|
18
18
|
|
19
19
|
@client.should_receive(:make_api_request) \
|
20
20
|
.with(:GET, "artist/details", {:artistId => an_artist_id}, {}) \
|
@@ -30,7 +30,7 @@ describe "ArtistManager" do
|
|
30
30
|
an_api_response = fake_api_response("artist/releases")
|
31
31
|
|
32
32
|
mock_client_digestor(@client, :release_digestor) \
|
33
|
-
.should_receive(:
|
33
|
+
.should_receive(:list_from_xml_doc).with(an_api_response.item_xml("releases")).and_return(a_list_of_releases)
|
34
34
|
|
35
35
|
@client.should_receive(:make_api_request) \
|
36
36
|
.with(:GET, "artist/releases", {:artistId => an_artist_id}, {}) \
|
@@ -46,7 +46,7 @@ describe "ArtistManager" do
|
|
46
46
|
an_api_response = fake_api_response("artist/toptracks")
|
47
47
|
|
48
48
|
mock_client_digestor(@client, :track_digestor) \
|
49
|
-
.should_receive(:
|
49
|
+
.should_receive(:list_from_xml_doc).with(an_api_response.item_xml("tracks")).and_return(a_top_tracks_list)
|
50
50
|
|
51
51
|
@client.should_receive(:make_api_request) \
|
52
52
|
.with(:GET, "artist/topTracks", {:artistId => an_artist_id}, {}) \
|
@@ -63,7 +63,7 @@ describe "ArtistManager" do
|
|
63
63
|
an_api_response = fake_api_response("artist/similar")
|
64
64
|
|
65
65
|
mock_client_digestor(@client, :artist_digestor) \
|
66
|
-
.should_receive(:
|
66
|
+
.should_receive(:list_from_xml_doc).with(an_api_response.item_xml("artists")).and_return(a_similar_artists_list)
|
67
67
|
|
68
68
|
@client.should_receive(:make_api_request) \
|
69
69
|
.with(:GET, "artist/similar", {:artistId => an_artist_id}, {}) \
|
@@ -81,8 +81,8 @@ describe "ArtistManager" do
|
|
81
81
|
a_release_list = []
|
82
82
|
|
83
83
|
mock_client_digestor(@client, :artist_digestor) \
|
84
|
-
.should_receive(:
|
85
|
-
.with(an_api_response.
|
84
|
+
.should_receive(:nested_list_from_xml_doc) \
|
85
|
+
.with(an_api_response.item_xml("taggedResults"), :taggedItem, :artist) \
|
86
86
|
.and_return(a_release_list)
|
87
87
|
|
88
88
|
@client.should_receive(:make_api_request) \
|
@@ -94,6 +94,27 @@ describe "ArtistManager" do
|
|
94
94
|
|
95
95
|
end
|
96
96
|
|
97
|
+
it "search should call artist/search api method and digest the nested artist list from response" do
|
98
|
+
|
99
|
+
query = "radiohead"
|
100
|
+
api_response = fake_api_response("artist/search")
|
101
|
+
an_artist_list = []
|
102
|
+
|
103
|
+
mock_client_digestor(@client, :artist_digestor) \
|
104
|
+
.should_receive(:nested_list_from_xml_doc) \
|
105
|
+
.with(api_response.item_xml("searchResults"), :searchResult, :artist) \
|
106
|
+
.and_return(an_artist_list)
|
107
|
+
|
108
|
+
@client.should_receive(:make_api_request) \
|
109
|
+
.with(:GET, "artist/search", {:q => query}, {}) \
|
110
|
+
.and_return(api_response)
|
111
|
+
|
112
|
+
artists = @artist_manager.search(query)
|
113
|
+
artists.should == an_artist_list
|
114
|
+
|
115
|
+
end
|
116
|
+
|
117
|
+
|
97
118
|
it "browse should call artist/browse api method and digest the artist list from response" do
|
98
119
|
|
99
120
|
letter = "ra"
|
@@ -101,8 +122,8 @@ describe "ArtistManager" do
|
|
101
122
|
an_artist_list = []
|
102
123
|
|
103
124
|
mock_client_digestor(@client, :artist_digestor) \
|
104
|
-
.should_receive(:
|
105
|
-
.with(an_api_response.
|
125
|
+
.should_receive(:list_from_xml_doc) \
|
126
|
+
.with(an_api_response.item_xml("artists")) \
|
106
127
|
.and_return(an_artist_list)
|
107
128
|
|
108
129
|
@client.should_receive(:make_api_request) \
|
@@ -121,7 +142,7 @@ describe "ArtistManager" do
|
|
121
142
|
a_chart = [Sevendigital::ChartItem.new(@client)]
|
122
143
|
|
123
144
|
mock_client_digestor(@client, :chart_item_digestor) \
|
124
|
-
.should_receive(:
|
145
|
+
.should_receive(:list_from_xml_doc).with(api_response.item_xml("chart")).and_return(a_chart)
|
125
146
|
|
126
147
|
@client.should_receive(:make_api_request) \
|
127
148
|
.with(:GET, "artist/chart", {}, {}) \
|
@@ -139,7 +160,7 @@ describe "ArtistManager" do
|
|
139
160
|
options = {:page => 1}
|
140
161
|
|
141
162
|
mock_client_digestor(@client, :tag_digestor) \
|
142
|
-
.should_receive(:
|
163
|
+
.should_receive(:list_from_xml_doc).with(an_api_response.item_xml("tags")).and_return(a_list_of_tags)
|
143
164
|
|
144
165
|
@client.should_receive(:make_api_request) \
|
145
166
|
.with(:GET, "artist/tags", {:artistId => an_artist_id}, options) \
|
@@ -14,7 +14,7 @@ describe "BasketManager" do
|
|
14
14
|
an_api_response = fake_api_response("basket/index")
|
15
15
|
|
16
16
|
mock_client_digestor(@client, :basket_digestor) \
|
17
|
-
.should_receive(:
|
17
|
+
.should_receive(:from_xml_doc).with(an_api_response.item_xml("basket")).and_return(a_basket)
|
18
18
|
|
19
19
|
@client.should_receive(:make_api_request) \
|
20
20
|
.with(:GET, "basket", {:basketId => a_basket_id}, {}) \
|
@@ -29,7 +29,7 @@ describe "BasketManager" do
|
|
29
29
|
an_api_response = fake_api_response("basket/create")
|
30
30
|
|
31
31
|
mock_client_digestor(@client, :basket_digestor) \
|
32
|
-
.should_receive(:
|
32
|
+
.should_receive(:from_xml_doc).with(an_api_response.item_xml("basket")).and_return(a_basket)
|
33
33
|
|
34
34
|
@client.should_receive(:make_api_request) \
|
35
35
|
.with(:GET, "basket/create", {}, {}) \
|
@@ -47,7 +47,7 @@ describe "BasketManager" do
|
|
47
47
|
an_api_response = fake_api_response("basket/additem")
|
48
48
|
|
49
49
|
mock_client_digestor(@client, :basket_digestor) \
|
50
|
-
.should_receive(:
|
50
|
+
.should_receive(:from_xml_doc).with(an_api_response.item_xml("basket")).and_return(a_basket)
|
51
51
|
|
52
52
|
@client.should_receive(:make_api_request) \
|
53
53
|
.with(:GET, "basket/addItem", {:basketId => a_basket_id, :releaseId => a_release_id, :trackId => a_track_id}, {}) \
|
@@ -64,7 +64,7 @@ describe "BasketManager" do
|
|
64
64
|
an_api_response = fake_api_response("basket/removeitem")
|
65
65
|
|
66
66
|
mock_client_digestor(@client, :basket_digestor) \
|
67
|
-
.should_receive(:
|
67
|
+
.should_receive(:from_xml_doc).with(an_api_response.item_xml("basket")).and_return(a_basket)
|
68
68
|
|
69
69
|
@client.should_receive(:make_api_request) \
|
70
70
|
.with(:GET, "basket/removeItem", {:basketId => a_basket_id, :itemId => an_item_id}, {}) \
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'date'
|
3
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
4
|
+
|
5
|
+
describe "CountryManager" do
|
6
|
+
|
7
|
+
before do
|
8
|
+
|
9
|
+
@client = stub(Sevendigital::Client)
|
10
|
+
@client.stub!(:operator).and_return(mock(Sevendigital::ApiOperator))
|
11
|
+
@country_manager = Sevendigital::CountryManager.new(@client)
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
it "resolve should call country/resolve api method and digest the country code from response" do
|
17
|
+
|
18
|
+
an_api_response = fake_api_response("country/resolve")
|
19
|
+
a_country_code = 'XX'
|
20
|
+
an_ip_address = '127.0.0.1'
|
21
|
+
|
22
|
+
mock_client_digestor(@client, :country_digestor) \
|
23
|
+
.should_receive(:from_xml_doc).with(an_api_response.item_xml("GeoIpLookup") ).and_return(a_country_code)
|
24
|
+
|
25
|
+
@client.should_receive(:make_api_request) \
|
26
|
+
.with(:GET, "country/resolve", {:ipaddress => an_ip_address}, {}) \
|
27
|
+
.and_return(an_api_response)
|
28
|
+
|
29
|
+
|
30
|
+
@country_manager.resolve(an_ip_address).should == a_country_code
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe "ListManager" do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@client = stub(Sevendigital::Client)
|
7
|
+
@client.stub!(:operator).and_return(mock(Sevendigital::ApiOperator))
|
8
|
+
@list_manager = Sevendigital::ListManager.new(@client)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "get_editorial_list should call editorial/list api method and return digested list" do
|
12
|
+
an_editorial_list_key = "featured"
|
13
|
+
an_editorial_list = Sevendigital::List.new(@client)
|
14
|
+
an_api_response = fake_api_response("editorial/list")
|
15
|
+
|
16
|
+
mock_client_digestor(@client, :list_digestor) \
|
17
|
+
.should_receive(:from_xml_doc).with(an_api_response.item_xml("list")).and_return(an_editorial_list)
|
18
|
+
|
19
|
+
@client.should_receive(:make_api_request) \
|
20
|
+
.with(:GET, "editorial/list", {:key => an_editorial_list_key}, {}) \
|
21
|
+
.and_return(an_api_response)
|
22
|
+
|
23
|
+
list = @list_manager.get_editorial_list(an_editorial_list_key)
|
24
|
+
list.should == an_editorial_list
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -17,8 +17,8 @@ describe "OAuthManager" do
|
|
17
17
|
digestor = mock(Sevendigital::OAuthRequestTokenDigestor)
|
18
18
|
@client.stub!(:oauth_request_token_digestor).and_return(digestor)
|
19
19
|
|
20
|
-
digestor.should_receive(:
|
21
|
-
.with(an_api_response.
|
20
|
+
digestor.should_receive(:from_xml_doc) \
|
21
|
+
.with(an_api_response.item_xml("oauth_request_token")) \
|
22
22
|
.and_return(fake_token)
|
23
23
|
|
24
24
|
@client.should_receive(:make_signed_api_request) \
|
@@ -39,8 +39,8 @@ describe "OAuthManager" do
|
|
39
39
|
digestor = mock(Sevendigital::OAuthAccessTokenDigestor)
|
40
40
|
@client.stub!(:oauth_access_token_digestor).and_return(digestor)
|
41
41
|
|
42
|
-
digestor.should_receive(:
|
43
|
-
.with(an_api_response.
|
42
|
+
digestor.should_receive(:from_xml_doc) \
|
43
|
+
.with(an_api_response.item_xml("oauth_access_token")) \
|
44
44
|
.and_return(fake_token)
|
45
45
|
|
46
46
|
@client.should_receive(:make_signed_api_request) \
|
@@ -18,7 +18,7 @@ describe "ReleaseManager" do
|
|
18
18
|
a_release = Sevendigital::Release.new(@client)
|
19
19
|
|
20
20
|
mock_client_digestor(@client, :release_digestor) \
|
21
|
-
.should_receive(:
|
21
|
+
.should_receive(:from_xml_doc).with(api_response.item_xml("release")).and_return(a_release)
|
22
22
|
|
23
23
|
@client.should_receive(:make_api_request) \
|
24
24
|
.with(:GET, "release/details", {:releaseId => expected_release_id}, {}) \
|
@@ -35,7 +35,7 @@ describe "ReleaseManager" do
|
|
35
35
|
a_track_list = []
|
36
36
|
|
37
37
|
mock_client_digestor(@client, :track_digestor) \
|
38
|
-
.should_receive(:
|
38
|
+
.should_receive(:list_from_xml_doc).with(api_response.item_xml("tracks")).and_return(a_track_list)
|
39
39
|
|
40
40
|
@client.should_receive(:make_api_request) \
|
41
41
|
.with(:GET, "release/tracks", {:releaseId=>a_release_id}, expected_options) \
|
@@ -53,7 +53,7 @@ describe "ReleaseManager" do
|
|
53
53
|
a_track_list = []
|
54
54
|
|
55
55
|
mock_client_digestor(@client, :track_digestor) \
|
56
|
-
.should_receive(:
|
56
|
+
.should_receive(:list_from_xml_doc).with(api_response.item_xml("tracks")).and_return(a_track_list)
|
57
57
|
|
58
58
|
@client.should_receive(:make_api_request) \
|
59
59
|
.with(:GET, "release/tracks", {:releaseId => a_release_id}, {:page_size => 100}) \
|
@@ -71,7 +71,7 @@ describe "ReleaseManager" do
|
|
71
71
|
a_chart = []
|
72
72
|
|
73
73
|
mock_client_digestor(@client, :chart_item_digestor) \
|
74
|
-
.should_receive(:
|
74
|
+
.should_receive(:list_from_xml_doc).with(api_response.item_xml("chart")).and_return(a_chart)
|
75
75
|
|
76
76
|
@client.should_receive(:make_api_request) \
|
77
77
|
.with(:GET, "release/chart", {}, {}) \
|
@@ -89,7 +89,7 @@ describe "ReleaseManager" do
|
|
89
89
|
a_release_list = []
|
90
90
|
|
91
91
|
mock_client_digestor(@client, :release_digestor) \
|
92
|
-
.should_receive(:
|
92
|
+
.should_receive(:list_from_xml_doc).with(api_response.item_xml("releases")).and_return(a_release_list)
|
93
93
|
|
94
94
|
@client.should_receive(:make_api_request) \
|
95
95
|
.with(:GET, "release/byDate", {:fromDate => from_date.strftime("%Y%m%d"), :toDate => to_date.strftime("%Y%m%d")}, {}) \
|
@@ -106,7 +106,7 @@ describe "ReleaseManager" do
|
|
106
106
|
a_release_list = []
|
107
107
|
|
108
108
|
mock_client_digestor(@client, :release_digestor) \
|
109
|
-
.should_receive(:
|
109
|
+
.should_receive(:list_from_xml_doc).with(api_response.item_xml("releases")).and_return(a_release_list)
|
110
110
|
|
111
111
|
@client.should_receive(:make_api_request) \
|
112
112
|
.with(:GET, "release/byDate", {}, {}) \
|
@@ -124,8 +124,8 @@ describe "ReleaseManager" do
|
|
124
124
|
a_release_list = []
|
125
125
|
|
126
126
|
mock_client_digestor(@client, :release_digestor) \
|
127
|
-
.should_receive(:
|
128
|
-
.with(api_response.
|
127
|
+
.should_receive(:nested_list_from_xml_doc) \
|
128
|
+
.with(api_response.item_xml("recommendations"), :recommendedItem, :release) \
|
129
129
|
.and_return(a_release_list)
|
130
130
|
|
131
131
|
@client.should_receive(:make_api_request) \
|
@@ -144,8 +144,8 @@ describe "ReleaseManager" do
|
|
144
144
|
a_release_list = []
|
145
145
|
|
146
146
|
mock_client_digestor(@client, :release_digestor) \
|
147
|
-
.should_receive(:
|
148
|
-
.with(api_response.
|
147
|
+
.should_receive(:nested_list_from_xml_doc) \
|
148
|
+
.with(api_response.item_xml("taggedResults"), :taggedItem, :release) \
|
149
149
|
.and_return(a_release_list)
|
150
150
|
|
151
151
|
@client.should_receive(:make_api_request) \
|
@@ -164,8 +164,8 @@ describe "ReleaseManager" do
|
|
164
164
|
a_release_list = []
|
165
165
|
|
166
166
|
mock_client_digestor(@client, :release_digestor) \
|
167
|
-
.should_receive(:
|
168
|
-
.with(api_response.
|
167
|
+
.should_receive(:nested_list_from_xml_doc) \
|
168
|
+
.with(api_response.item_xml("searchResults"), :searchResult, :release) \
|
169
169
|
.and_return(a_release_list)
|
170
170
|
|
171
171
|
@client.should_receive(:make_api_request) \
|
@@ -184,7 +184,7 @@ describe "ReleaseManager" do
|
|
184
184
|
a_tag_list = []
|
185
185
|
|
186
186
|
mock_client_digestor(@client, :tag_digestor) \
|
187
|
-
.should_receive(:
|
187
|
+
.should_receive(:list_from_xml_doc).with(api_response.item_xml("tags")).and_return(a_tag_list)
|
188
188
|
|
189
189
|
@client.should_receive(:make_api_request) \
|
190
190
|
.with(:GET, "release/tags", {:releaseId=>a_release_id}, expected_options) \
|
@@ -19,7 +19,7 @@ describe "TagManager" do
|
|
19
19
|
a_tag_list = [Sevendigital::Tag.new]
|
20
20
|
|
21
21
|
mock_client_digestor(@client, :tag_digestor) \
|
22
|
-
.should_receive(:
|
22
|
+
.should_receive(:list_from_xml_doc).with(an_api_response.item_xml("tags") ).and_return(a_tag_list)
|
23
23
|
|
24
24
|
@client.should_receive(:make_api_request) \
|
25
25
|
.with(:GET, "tag", {}, {}) \
|
@@ -18,7 +18,7 @@ describe "TrackManager" do
|
|
18
18
|
a_track = Sevendigital::Track.new(@client)
|
19
19
|
|
20
20
|
mock_client_digestor(@client, :track_digestor) \
|
21
|
-
.should_receive(:
|
21
|
+
.should_receive(:from_xml_doc).with(an_api_response.item_xml("track")).and_return(a_track)
|
22
22
|
|
23
23
|
@client.should_receive(:make_api_request) \
|
24
24
|
.with(:GET, "track/details", {:trackId => a_track_id}, {}) \
|
@@ -54,7 +54,7 @@ describe "TrackManager" do
|
|
54
54
|
a_chart = []
|
55
55
|
|
56
56
|
mock_client_digestor(@client, :chart_item_digestor) \
|
57
|
-
.should_receive(:
|
57
|
+
.should_receive(:list_from_xml_doc).with(an_api_response.item_xml("chart")).and_return(a_chart)
|
58
58
|
|
59
59
|
@client.should_receive(:make_api_request) \
|
60
60
|
.with(:GET, "track/chart", {}, {}) \
|
@@ -90,8 +90,8 @@ describe "TrackManager" do
|
|
90
90
|
a_track_list = [Sevendigital::Track.new(@client)]
|
91
91
|
|
92
92
|
mock_client_digestor(@client, :track_digestor) \
|
93
|
-
.should_receive(:
|
94
|
-
.with(an_api_response.
|
93
|
+
.should_receive(:nested_list_from_xml_doc) \
|
94
|
+
.with(an_api_response.item_xml("searchResults"), :searchResult, :track) \
|
95
95
|
.and_return(a_track_list)
|
96
96
|
|
97
97
|
@client.should_receive(:make_api_request) \
|
@@ -15,7 +15,7 @@ describe "UserCardManager" do
|
|
15
15
|
options = {:pagesize => 20 }
|
16
16
|
|
17
17
|
mock_client_digestor(@client, :user_card_digestor) \
|
18
|
-
.should_receive(:
|
18
|
+
.should_receive(:list_from_xml_doc).with(an_api_response.item_xml("cards")).and_return(a_card_list)
|
19
19
|
|
20
20
|
@client.should_receive(:make_signed_api_request) \
|
21
21
|
.with(:GET, "user/payment/card", {}, options, a_token) \
|
@@ -41,7 +41,7 @@ describe "UserCardManager" do
|
|
41
41
|
options = {:pagesize => 20 }
|
42
42
|
|
43
43
|
mock_client_digestor(@client, :user_card_digestor) \
|
44
|
-
.should_receive(:
|
44
|
+
.should_receive(:from_xml_doc).with(an_api_response.item_xml("card")).and_return(a_card)
|
45
45
|
|
46
46
|
@client.should_receive(:make_signed_api_request) \
|
47
47
|
.with(:POST, "user/payment/card/add", {
|
@@ -21,6 +21,22 @@ describe "UserManager" do
|
|
21
21
|
@user_manager = Sevendigital::UserManager.new(@client)
|
22
22
|
end
|
23
23
|
|
24
|
+
it "get_details should call user/details api method and return user's email" do
|
25
|
+
an_api_response = fake_api_response("user/details")
|
26
|
+
a_token = OAuth::AccessToken.new(nil, "token", "token_secret")
|
27
|
+
fake_user = [Sevendigital::User.new(@client)]
|
28
|
+
options = {:sort => "random"}
|
29
|
+
|
30
|
+
mock_client_digestor(@client, :user_digestor) \
|
31
|
+
.should_receive(:from_xml_doc).with(an_api_response.item_xml("user")).and_return(fake_user)
|
32
|
+
|
33
|
+
@client.should_receive(:make_signed_api_request) \
|
34
|
+
.with(:GET, "user/details", {}, options, a_token) \
|
35
|
+
.and_return(an_api_response)
|
36
|
+
|
37
|
+
@user_manager.get_details(a_token, options).should == fake_user
|
38
|
+
end
|
39
|
+
|
24
40
|
it "should log in user using an existing access token" do
|
25
41
|
an_access_token = OAuth::AccessToken.new("aaa", "bbb", nil)
|
26
42
|
@user = @user_manager.login(an_access_token)
|
@@ -39,7 +55,7 @@ describe "UserManager" do
|
|
39
55
|
options = {:country => "XX"}
|
40
56
|
|
41
57
|
mock_client_digestor(@client, :user_digestor) \
|
42
|
-
.should_receive(:
|
58
|
+
.should_receive(:from_xml_doc).with(an_api_response.item_xml("user")).and_return(fake_user)
|
43
59
|
|
44
60
|
@client.should_receive(:make_signed_api_request) \
|
45
61
|
.with(:POST, "user/signUp", {:emailAddress => @an_email, :password => @a_password}, options) \
|
@@ -101,7 +117,7 @@ describe "UserManager" do
|
|
101
117
|
options = {:sort => "random"}
|
102
118
|
|
103
119
|
mock_client_digestor(@client, :locker_digestor) \
|
104
|
-
.should_receive(:
|
120
|
+
.should_receive(:from_xml_doc).with(an_api_response.item_xml("locker")).and_return(fake_locker)
|
105
121
|
|
106
122
|
@client.should_receive(:make_signed_api_request) \
|
107
123
|
.with(:GET, "user/locker", {}, options, a_token) \
|
@@ -120,7 +136,7 @@ describe "UserManager" do
|
|
120
136
|
fake_locker = [Sevendigital::LockerRelease.new(@client)]
|
121
137
|
|
122
138
|
mock_client_digestor(@client, :locker_digestor) \
|
123
|
-
.should_receive(:
|
139
|
+
.should_receive(:from_xml_doc).with(an_api_response.item_xml("purchase")).and_return(fake_locker)
|
124
140
|
|
125
141
|
@client.should_receive(:make_signed_api_request) \
|
126
142
|
.with(:GET, "user/purchase/item", \
|
@@ -139,7 +155,7 @@ describe "UserManager" do
|
|
139
155
|
fake_locker = [Sevendigital::LockerRelease.new(@client)]
|
140
156
|
|
141
157
|
mock_client_digestor(@client, :locker_digestor) \
|
142
|
-
.should_receive(:
|
158
|
+
.should_receive(:from_xml_doc).with(an_api_response.item_xml("purchase")).and_return(fake_locker)
|
143
159
|
|
144
160
|
@client.should_receive(:make_signed_api_request) \
|
145
161
|
.with(:GET, "user/purchase/basket", \
|