7digital 0.0.1 → 0.0.2

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 (91) hide show
  1. data/README.rdoc +9 -7
  2. data/lib/sevendigital.rb +54 -53
  3. data/lib/sevendigital/api_operator.rb +33 -30
  4. data/lib/sevendigital/api_operator_cached.rb +23 -23
  5. data/lib/sevendigital/api_request.rb +23 -23
  6. data/lib/sevendigital/client.rb +136 -124
  7. data/lib/sevendigital/default_configuration.yml +2 -2
  8. data/lib/sevendigital/digestion_tract/api_response_digestor.rb +52 -52
  9. data/lib/sevendigital/digestion_tract/artist_digestor.rb +31 -31
  10. data/lib/sevendigital/digestion_tract/chart_item_digestor.rb +27 -27
  11. data/lib/sevendigital/digestion_tract/digestor.rb +66 -66
  12. data/lib/sevendigital/digestion_tract/format_digestor.rb +21 -21
  13. data/lib/sevendigital/digestion_tract/label_digestor.rb +19 -19
  14. data/lib/sevendigital/digestion_tract/pager_digestor.rb +23 -23
  15. data/lib/sevendigital/digestion_tract/price_digestor.rb +24 -24
  16. data/lib/sevendigital/digestion_tract/release_digestor.rb +52 -52
  17. data/lib/sevendigital/digestion_tract/track_digestor.rb +37 -37
  18. data/lib/sevendigital/management/artist_manager.rb +45 -39
  19. data/lib/sevendigital/management/manager.rb +11 -11
  20. data/lib/sevendigital/management/release_manager.rb +57 -50
  21. data/lib/sevendigital/management/track_manager.rb +28 -17
  22. data/lib/sevendigital/model/api_response.rb +24 -12
  23. data/lib/sevendigital/model/artist.rb +46 -36
  24. data/lib/sevendigital/model/chart_item.rb +9 -9
  25. data/lib/sevendigital/model/format.rb +9 -9
  26. data/lib/sevendigital/model/label.rb +9 -9
  27. data/lib/sevendigital/model/price.rb +11 -11
  28. data/lib/sevendigital/model/release.rb +33 -33
  29. data/lib/sevendigital/model/sevendigital_error.rb +3 -3
  30. data/lib/sevendigital/model/sevendigital_object.rb +51 -51
  31. data/lib/sevendigital/model/track.rb +28 -7
  32. data/lib/sevendigital/pager.rb +16 -16
  33. data/lib/sevendigital/peachy_patch.rb +19 -0
  34. data/lib/sevendigital/proxy_police.rb +23 -23
  35. data/spec/api_operator_cached_spec.rb +47 -46
  36. data/spec/api_operator_spec.rb +114 -107
  37. data/spec/api_request_spec.rb +26 -27
  38. data/spec/client_spec.rb +75 -45
  39. data/spec/data/config/sevendigital.yml +5 -5
  40. data/spec/data/configuration_env_override.yml +5 -5
  41. data/spec/digestion_tract/api_response_digestor_spec.rb +78 -74
  42. data/spec/digestion_tract/artist_digestor_spec.rb +81 -82
  43. data/spec/digestion_tract/chart_digestor_spec.rb +52 -53
  44. data/spec/digestion_tract/format_digestor_spec.rb +38 -39
  45. data/spec/digestion_tract/label_digestor_spec.rb +33 -34
  46. data/spec/digestion_tract/pager_digestor_spec.rb +50 -51
  47. data/spec/digestion_tract/price_digestor_spec.rb +57 -57
  48. data/spec/digestion_tract/release_digestor_spec.rb +101 -102
  49. data/spec/digestion_tract/track_digestor_spec.rb +104 -106
  50. data/spec/management/artist_manager_spec.rb +128 -107
  51. data/spec/management/release_manager_spec.rb +222 -178
  52. data/spec/management/track_manager_spec.rb +88 -52
  53. data/spec/model/api_response_spec.rb +44 -31
  54. data/spec/model/artist_spec.rb +166 -121
  55. data/spec/model/release_spec.rb +109 -110
  56. data/spec/model/track_spec.rb +140 -0
  57. data/spec/pager_spec.rb +7 -8
  58. data/spec/peachy_spec_helper_patch.rb +7 -0
  59. data/spec/proxy_police_spec.rb +47 -48
  60. data/spec/spec_helper.rb +52 -48
  61. data/spec/test-xml/methods/artist/byTag/top.xml +50 -50
  62. data/spec/test-xml/methods/artist/details.xml +9 -9
  63. data/spec/test-xml/methods/artist/releases.xml +544 -544
  64. data/spec/test-xml/methods/artist/search.xml +19 -0
  65. data/spec/test-xml/methods/artist/similar.xml +39 -39
  66. data/spec/test-xml/methods/artist/toptracks.xml +279 -279
  67. data/spec/test-xml/methods/release/bydate.xml +173 -173
  68. data/spec/test-xml/methods/release/bytag/top.xml +150 -150
  69. data/spec/test-xml/methods/release/chart.xml +181 -181
  70. data/spec/test-xml/methods/release/details.xml +48 -48
  71. data/spec/test-xml/methods/release/recommend.xml +89 -89
  72. data/spec/test-xml/methods/release/search.xml +195 -0
  73. data/spec/test-xml/methods/release/tracks.xml +28 -28
  74. data/spec/test-xml/methods/track/chart.xml +149 -149
  75. data/spec/test-xml/methods/track/details.xml +30 -30
  76. data/spec/test-xml/methods/track/search.xml +160 -0
  77. data/spec/test-xml/objects/artist.xml +6 -6
  78. data/spec/test-xml/objects/artist_chart_item.xml +7 -7
  79. data/spec/test-xml/objects/artist_list.xml +22 -22
  80. data/spec/test-xml/objects/artist_list_empty.xml +4 -4
  81. data/spec/test-xml/objects/price.xml +7 -7
  82. data/spec/test-xml/objects/release.xml +40 -40
  83. data/spec/test-xml/objects/release_chart_item.xml +39 -34
  84. data/spec/test-xml/objects/release_list.xml +18 -18
  85. data/spec/test-xml/objects/release_list_empty.xml +4 -4
  86. data/spec/test-xml/objects/response.xml +39 -0
  87. data/spec/test-xml/objects/track.xml +33 -33
  88. data/spec/test-xml/objects/track_chart_item.xml +27 -27
  89. metadata +10 -5
  90. data/lib/peachy_patchy.rb +0 -14
  91. data/lib/sevendigital/version.rb +0 -3
@@ -1,35 +1,34 @@
1
- require 'spec'
2
- require "sevendigital"
3
-
4
- describe "LabelDigestor" do
5
-
6
- before do
7
- @label_digestor = Sevendigital::LabelDigestor.new(nil)
8
- end
9
-
10
-
11
- it "should not digest from invalid xml but throw up (exception)" do
12
-
13
- xml_response = <<XML
14
- <release id="123">
15
- <name>expected artist name</name>
16
- </release>
17
- XML
18
-
19
- running {@label_digestor.from_xml(xml_response)}.should raise_error Sevendigital::DigestiveProblem
20
- end
21
-
22
- it "should digest label xml and populate all properties" do
23
-
24
- xml_response = <<XML
25
- <label id="123">
26
- <name>expected label name</name>
27
- </label>
28
- XML
29
-
30
- label = @label_digestor.from_xml(xml_response)
31
- label.id.should == 123
32
- label.name.should == "expected label name"
33
- end
34
-
1
+ require File.join(File.dirname(__FILE__), %w[../spec_helper])
2
+
3
+ describe "LabelDigestor" do
4
+
5
+ before do
6
+ @label_digestor = Sevendigital::LabelDigestor.new(nil)
7
+ end
8
+
9
+
10
+ it "should not digest from invalid xml but throw up (exception)" do
11
+
12
+ xml_response = <<XML
13
+ <release id="123">
14
+ <name>expected artist name</name>
15
+ </release>
16
+ XML
17
+
18
+ running {@label_digestor.from_xml(xml_response)}.should raise_error Sevendigital::DigestiveProblem
19
+ end
20
+
21
+ it "should digest label xml and populate all properties" do
22
+
23
+ xml_response = <<XML
24
+ <label id="123">
25
+ <name>expected label name</name>
26
+ </label>
27
+ XML
28
+
29
+ label = @label_digestor.from_xml(xml_response)
30
+ label.id.should == 123
31
+ label.name.should == "expected label name"
32
+ end
33
+
35
34
  end
@@ -1,52 +1,51 @@
1
- require "spec"
2
- require "sevendigital"
3
-
4
- describe "PagerDigestor" do
5
-
6
- before do
7
- @pager_digestor = Sevendigital::PagerDigestor.new(nil)
8
- end
9
-
10
-
11
- it "should not digest from invalid xml but throw up (exception)" do
12
-
13
- xml_response = <<XML
14
- <release id="123">
15
- <name>expected artist name</name>
16
- </release>
17
- XML
18
-
19
- running {@pager_digestor.from_xml(xml_response)}.should raise_error Sevendigital::DigestiveProblem
20
- end
21
-
22
- it "should not digest if paging info is missing from xml but spit out nil" do
23
-
24
- xml_response = <<XML
25
- <results id="123">
26
- <page>3</page>
27
- <totalItems>99</totalItems>
28
- <pageSizeElementMissing>22</pageSizeElementMissing>
29
- </results>
30
- XML
31
-
32
- pager = @pager_digestor.from_xml(xml_response, :results)
33
- pager.should == nil
34
- end
35
-
36
- it "should digest from xml and populate all properties" do
37
-
38
- xml_response = <<XML
39
- <pager a="b">
40
- <page>3</page>
41
- <totalItems>99</totalItems>
42
- <pageSize>22</pageSize>
43
- </pager>
44
- XML
45
-
46
- pager = @pager_digestor.from_xml(xml_response, :pager)
47
- pager.page.should == 3
48
- pager.page_size.should == 22
49
- pager.total_items.should == 99
50
- end
51
-
1
+ require File.join(File.dirname(__FILE__), %w[../spec_helper])
2
+
3
+ describe "PagerDigestor" do
4
+
5
+ before do
6
+ @pager_digestor = Sevendigital::PagerDigestor.new(nil)
7
+ end
8
+
9
+
10
+ it "should not digest from invalid xml but throw up (exception)" do
11
+
12
+ xml_response = <<XML
13
+ <release id="123">
14
+ <name>expected artist name</name>
15
+ </release>
16
+ XML
17
+
18
+ running {@pager_digestor.from_xml(xml_response)}.should raise_error Sevendigital::DigestiveProblem
19
+ end
20
+
21
+ it "should not digest if paging info is missing from xml but spit out nil" do
22
+
23
+ xml_response = <<XML
24
+ <results id="123">
25
+ <page>3</page>
26
+ <totalItems>99</totalItems>
27
+ <pageSizeElementMissing>22</pageSizeElementMissing>
28
+ </results>
29
+ XML
30
+
31
+ pager = @pager_digestor.from_xml(xml_response, :results)
32
+ pager.should == nil
33
+ end
34
+
35
+ it "should digest from xml and populate all properties" do
36
+
37
+ xml_response = <<XML
38
+ <pager a="b">
39
+ <page>3</page>
40
+ <totalItems>99</totalItems>
41
+ <pageSize>22</pageSize>
42
+ </pager>
43
+ XML
44
+
45
+ pager = @pager_digestor.from_xml(xml_response, :pager)
46
+ pager.page.should == 3
47
+ pager.page_size.should == 22
48
+ pager.total_items.should == 99
49
+ end
50
+
52
51
  end
@@ -1,57 +1,57 @@
1
- require "spec"
2
- require "sevendigital"
3
-
4
- describe "PriceDigestor" do
5
-
6
- before do
7
- @price_digestor = Sevendigital::PriceDigestor.new(nil)
8
- end
9
-
10
- it "should not digest from invalid xml but throw up (exception)" do
11
-
12
- xml_response = <<XML
13
- <xxx>
14
- <currency code="XXX">X</currency>
15
- </xxx>
16
- XML
17
-
18
- running {@price_digestor.from_xml(xml_response)}.should raise_error Sevendigital::DigestiveProblem
19
- end
20
-
21
- it "should parse from xml and populate minimum available properties" do
22
-
23
- xml_response = <<XML
24
- <price>
25
- <currency code="GBP">£</currency>
26
- <value>1.79</value>
27
- <formattedPrice>£1.79</formattedPrice>
28
- <onSale>true</onSale>
29
- </price>
30
- XML
31
-
32
- price = @price_digestor.from_xml(xml_response)
33
- price.currency_code.should == :GBP
34
- price.currency_symbol.should == "£"
35
- price.value.should == 1.79
36
- price.formatted_price.should == "£1.79"
37
- price.rrp.should == nil
38
- price.formatted_rrp.should == nil
39
- price.on_sale.should == true
40
-
41
- end
42
-
43
- it "should parse from xml and populate all properties" do
44
-
45
- xml_response = load_sample_object_xml("price")
46
-
47
- price = @price_digestor.from_xml(xml_response)
48
- price.currency_code.should == :GBP
49
- price.currency_symbol.should == "£"
50
- price.value.should == 1.79
51
- price.formatted_price.should == "£1.79"
52
- price.rrp.should == 1.99
53
- price.formatted_rrp.should == "£1.99"
54
- price.on_sale.should == true
55
- end
56
-
57
- end
1
+ # coding: utf-8
2
+ require File.join(File.dirname(__FILE__), %w[../spec_helper])
3
+
4
+ describe "PriceDigestor" do
5
+
6
+ before do
7
+ @price_digestor = Sevendigital::PriceDigestor.new(nil)
8
+ end
9
+
10
+ it "should not digest from invalid xml but throw up (exception)" do
11
+
12
+ xml_response = <<XML
13
+ <xxx>
14
+ <currency code="XXX">X</currency>
15
+ </xxx>
16
+ XML
17
+
18
+ running {@price_digestor.from_xml(xml_response)}.should raise_error Sevendigital::DigestiveProblem
19
+ end
20
+
21
+ it "should parse from xml and populate minimum available properties" do
22
+
23
+ xml_response = <<XML
24
+ <price>
25
+ <currency code="GBP">£</currency>
26
+ <value>1.79</value>
27
+ <formattedPrice>£1.79</formattedPrice>
28
+ <onSale>true</onSale>
29
+ </price>
30
+ XML
31
+
32
+ price = @price_digestor.from_xml(xml_response)
33
+ price.currency_code.should == :GBP
34
+ price.currency_symbol.should == "£"
35
+ price.value.should == 1.79
36
+ price.formatted_price.should == "£1.79"
37
+ price.rrp.should == nil
38
+ price.formatted_rrp.should == nil
39
+ price.on_sale.should == true
40
+
41
+ end
42
+
43
+ it "should parse from xml and populate all properties" do
44
+
45
+ xml_response = load_sample_object_xml("price")
46
+
47
+ price = @price_digestor.from_xml(xml_response)
48
+ price.currency_code.should == :GBP
49
+ price.currency_symbol.should == "£"
50
+ price.value.should == 1.79
51
+ price.formatted_price.should == "£1.79"
52
+ price.rrp.should == 1.99
53
+ price.formatted_rrp.should == "£1.99"
54
+ price.on_sale.should == true
55
+ end
56
+
57
+ end
@@ -1,102 +1,101 @@
1
- require 'spec'
2
- require 'date'
3
- require File.join(File.dirname(__FILE__), %w[../spec_helper])
4
- require "sevendigital"
5
-
6
- describe "ReleaseDigestor" do
7
-
8
- before do
9
- @release_digestor = Sevendigital::ReleaseDigestor.new(Sevendigital::Client.new(nil))
10
- end
11
-
12
- it "should not digest from invalid xml but throw up (exception)" do
13
-
14
- xml_response = <<XML
15
- <artist id="123">
16
- <name>expected artist name</name>
17
- </artist>
18
- XML
19
-
20
- running {@release_digestor.from_xml(xml_response)}.should raise_error Sevendigital::DigestiveProblem
21
- end
22
-
23
- it "should digest release xml and populate minimum available properties" do
24
-
25
- xml_response = <<XML
26
- <release id="123">
27
- <title>expected release title</title>
28
- <artist id="345">
29
- <name>expected artist name</name>
30
- <appearsAs>expected displayed artist name</appearsAs>
31
- </artist>
32
- </release>
33
- XML
34
-
35
- release = @release_digestor.from_xml(xml_response)
36
- release.id.should == 123
37
- release.title.should == "expected release title"
38
- release.artist.id.should == 345
39
- release.artist.name.should == "expected artist name"
40
- release.artist.appears_as == "expected displayed artist name"
41
- end
42
-
43
- it "should digest release xml and populate all available properties" do
44
-
45
- xml_response = load_sample_object_xml("release")
46
-
47
- release = @release_digestor.from_xml(xml_response)
48
-
49
- release.id.should == 155408
50
- release.title.should == "Dreams"
51
- release.version.should == "UK"
52
- release.type.should == :album
53
- release.barcode.should == "00602517512078"
54
- release.year.should == 2007
55
- release.explicit_content.should == false
56
- release.artist.id.should == 29755
57
- release.artist.name.should == "The Whitest Boy Alive"
58
- release.artist.appears_as.should == "The Whitest Boy Alive"
59
- release.release_date.should == DateTime.new(2007,10,22,0,0,0, 1.quo(24))
60
- release.added_date.should == DateTime.new(2007,10,11,11,18,29, 0)
61
- release.price.currency_code.should == :GBP
62
- release.price.currency_symbol.should == "£"
63
- release.price.value.should == 5
64
- release.price.formatted_price.should == "£5.00"
65
- release.price.rrp.should == 7.79
66
- release.price.formatted_rrp.should == "£7.79"
67
- release.price.on_sale.should == true
68
- release.formats.size.should == 2
69
- release.formats[0].id.should == 17
70
- release.formats[1].id.should == 1
71
- release.label.id.should == 40
72
- release.label.name.should == "Universal-Island Records Ltd."
73
- release.image.should == "http://cdn.7static.com/static/img/sleeveart/00/001/554/0000155408_50.jpg"
74
- release.url.should == "http://www.7digital.com/artists/the-whitest-boy-alive/dreams-(1)/?partner=123"
75
- release
76
- end
77
-
78
- it "should digest xml containing list of releases and return a paginated array" do
79
-
80
- xml_response = load_sample_object_xml("release_list")
81
-
82
- releases = @release_digestor.list_from_xml(xml_response, :results)
83
- releases[0].id.should == 123
84
- releases[0].artist.id.should == 345
85
- releases[1].id.should == 456
86
- releases[1].artist.id.should == 789
87
- releases.size.should == 2
88
- releases.total_entries.should == 50
89
-
90
- end
91
-
92
- it "should digest xml containing empty list of releases and return an empty paginated array" do
93
-
94
- xml_response = load_sample_object_xml("release_list_empty")
95
-
96
- releases = @release_digestor.list_from_xml(xml_response, :results)
97
- releases.size.should == 0
98
- releases.total_entries.should == 0
99
-
100
- end
101
-
102
- end
1
+ # coding: utf-8
2
+ require 'date'
3
+ require File.join(File.dirname(__FILE__), %w[../spec_helper])
4
+
5
+ describe "ReleaseDigestor" do
6
+
7
+ before do
8
+ @release_digestor = Sevendigital::ReleaseDigestor.new(Sevendigital::Client.new(nil))
9
+ end
10
+
11
+ it "should not digest from invalid xml but throw up (exception)" do
12
+
13
+ xml_response = <<XML
14
+ <artist id="123">
15
+ <name>expected artist name</name>
16
+ </artist>
17
+ XML
18
+
19
+ running {@release_digestor.from_xml(xml_response)}.should raise_error Sevendigital::DigestiveProblem
20
+ end
21
+
22
+ it "should digest release xml and populate minimum available properties" do
23
+
24
+ xml_response = <<XML
25
+ <release id="123">
26
+ <title>expected release title</title>
27
+ <artist id="345">
28
+ <name>expected artist name</name>
29
+ <appearsAs>expected displayed artist name</appearsAs>
30
+ </artist>
31
+ </release>
32
+ XML
33
+
34
+ release = @release_digestor.from_xml(xml_response)
35
+ release.id.should == 123
36
+ release.title.should == "expected release title"
37
+ release.artist.id.should == 345
38
+ release.artist.name.should == "expected artist name"
39
+ release.artist.appears_as == "expected displayed artist name"
40
+ end
41
+
42
+ it "should digest release xml and populate all available properties" do
43
+
44
+ xml_response = load_sample_object_xml("release")
45
+
46
+ release = @release_digestor.from_xml(xml_response)
47
+
48
+ release.id.should == 155408
49
+ release.title.should == "Dreams"
50
+ release.version.should == "UK"
51
+ release.type.should == :album
52
+ release.barcode.should == "00602517512078"
53
+ release.year.should == 2007
54
+ release.explicit_content.should == false
55
+ release.artist.id.should == 29755
56
+ release.artist.name.should == "The Whitest Boy Alive"
57
+ release.artist.appears_as.should == "The Whitest Boy Alive"
58
+ release.release_date.should == DateTime.new(2007,10,22,0,0,0, 1.quo(24))
59
+ release.added_date.should == DateTime.new(2007,10,11,11,18,29, 0)
60
+ release.price.currency_code.should == :GBP
61
+ release.price.currency_symbol.should == "£"
62
+ release.price.value.should == 5
63
+ release.price.formatted_price.should == 5.00"
64
+ release.price.rrp.should == 7.79
65
+ release.price.formatted_rrp.should == 7.79"
66
+ release.price.on_sale.should == true
67
+ release.formats.size.should == 2
68
+ release.formats[0].id.should == 17
69
+ release.formats[1].id.should == 1
70
+ release.label.id.should == 40
71
+ release.label.name.should == "Universal-Island Records Ltd."
72
+ release.image.should == "http://cdn.7static.com/static/img/sleeveart/00/001/554/0000155408_50.jpg"
73
+ release.url.should == "http://www.7digital.com/artists/the-whitest-boy-alive/dreams-(1)/?partner=123"
74
+ release
75
+ end
76
+
77
+ it "should digest xml containing list of releases and return a paginated array" do
78
+
79
+ xml_response = load_sample_object_xml("release_list")
80
+
81
+ releases = @release_digestor.list_from_xml(xml_response, :results)
82
+ releases[0].id.should == 123
83
+ releases[0].artist.id.should == 345
84
+ releases[1].id.should == 456
85
+ releases[1].artist.id.should == 789
86
+ releases.size.should == 2
87
+ releases.total_entries.should == 50
88
+
89
+ end
90
+
91
+ it "should digest xml containing empty list of releases and return an empty paginated array" do
92
+
93
+ xml_response = load_sample_object_xml("release_list_empty")
94
+
95
+ releases = @release_digestor.list_from_xml(xml_response, :results)
96
+ releases.size.should == 0
97
+ releases.total_entries.should == 0
98
+
99
+ end
100
+
101
+ end