commonthread-flickr_fu 0.2.2 → 0.3.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 (53) hide show
  1. data/.gitignore +13 -0
  2. data/Rakefile +40 -8
  3. data/VERSION.yml +4 -0
  4. data/flickr_fu.gemspec +114 -33
  5. data/lib/flickr/base.rb +49 -22
  6. data/lib/flickr/contact.rb +16 -0
  7. data/lib/flickr/contacts.rb +55 -0
  8. data/lib/flickr/geo.rb +42 -0
  9. data/lib/flickr/location.rb +15 -0
  10. data/lib/flickr/photo.rb +23 -0
  11. data/lib/flickr/photos.rb +6 -1
  12. data/lib/flickr/photoset.rb +36 -0
  13. data/lib/flickr/photosets.rb +36 -0
  14. data/lib/flickr/urls.rb +44 -0
  15. data/lib/flickr_fu.rb +23 -1
  16. data/spec/fixtures/flickr/contacts/get_list-fail-99.xml +4 -0
  17. data/spec/fixtures/flickr/contacts/get_public_list-0.xml +7 -0
  18. data/spec/fixtures/flickr/photos/geo/get_location-0.xml +11 -0
  19. data/spec/fixtures/flickr/photos/geo/get_location-fail-2.xml +4 -0
  20. data/spec/fixtures/flickr/photos/get_info-0.xml +41 -0
  21. data/spec/fixtures/flickr/photos/get_info-1.xml +19 -0
  22. data/spec/fixtures/flickr/photos/get_sizes-0.xml +10 -0
  23. data/spec/fixtures/flickr/photos/get_sizes-1.xml +8 -0
  24. data/spec/fixtures/flickr/photos/licenses/get_info.xml +12 -0
  25. data/spec/fixtures/flickr/photosets/get_list-0.xml +13 -0
  26. data/spec/fixtures/flickr/photosets/get_photos-0.xml +7 -0
  27. data/spec/fixtures/flickr/test/echo-0.xml +5 -0
  28. data/spec/fixtures/flickr/test/null-fail-99.xml +4 -0
  29. data/spec/fixtures/flickr/urls/get_group-0.xml +4 -0
  30. data/spec/fixtures/flickr/urls/get_group-fail-1.xml +4 -0
  31. data/spec/fixtures/flickr/urls/get_user_photos-0.xml +4 -0
  32. data/spec/fixtures/flickr/urls/get_user_photos-fail-1.xml +4 -0
  33. data/spec/fixtures/flickr/urls/get_user_photos-fail-2.xml +4 -0
  34. data/spec/fixtures/flickr/urls/get_user_profile-0.xml +4 -0
  35. data/spec/fixtures/flickr/urls/get_user_profile-fail-1.xml +4 -0
  36. data/spec/fixtures/flickr/urls/get_user_profile-fail-2.xml +4 -0
  37. data/spec/fixtures/flickr/urls/lookup_group-0.xml +6 -0
  38. data/spec/fixtures/flickr/urls/lookup_group-fail-1.xml +4 -0
  39. data/spec/fixtures/flickr/urls/lookup_user-0.xml +6 -0
  40. data/spec/fixtures/flickr/videos/get_info-0.xml +31 -0
  41. data/spec/fixtures/flickr/videos/get_sizes-0.xml +13 -0
  42. data/spec/flickr/base_spec.rb +97 -0
  43. data/spec/flickr/contacts_spec.rb +47 -0
  44. data/spec/flickr/errors_spec.rb +21 -0
  45. data/spec/flickr/geo_spec.rb +20 -0
  46. data/spec/flickr/photo_spec.rb +123 -0
  47. data/spec/flickr/photos_spec.rb +50 -0
  48. data/spec/flickr/photosets_spec.rb +49 -0
  49. data/spec/flickr/test_spec.rb +34 -0
  50. data/spec/flickr/urls_spec.rb +99 -0
  51. data/spec/spec.opts +4 -0
  52. data/spec/spec_helper.rb +20 -0
  53. metadata +65 -7
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <rsp stat="ok">
3
+ <user id="80755658@N00">
4
+ <username>Maciej Biłas</username>
5
+ </user>
6
+ </rsp>
@@ -0,0 +1,31 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <rsp stat="ok">
3
+ <photo id="2729556270" secret="eee23fb14a" server="3207" farm="4" dateuploaded="1217794663" isfavorite="0" license="4" rotation="0" originalsecret="e940a69ebf" originalformat="png" media="video">
4
+ <owner nsid="24461004@N00" username="girl_named_fred" realname="Cynthia Donovan" location="Pawtucket, USA" />
5
+ <title>bust a move?</title>
6
+ <description />
7
+ <visibility ispublic="1" isfriend="0" isfamily="0" />
8
+ <dates posted="1217794663" taken="2008-08-03 13:17:43" takengranularity="0" lastupdate="1217859448" />
9
+ <editability cancomment="0" canaddmeta="0" />
10
+ <usage candownload="1" canblog="0" canprint="0" />
11
+
12
+ <comments>0</comments>
13
+ <notes />
14
+ <tags>
15
+ <tag id="251642-2729556270-6613225" author="24461004@N00" raw="babysquash" machine_tag="0">babysquash</tag>
16
+ <tag id="251642-2729556270-8754" author="24461004@N00" raw="august" machine_tag="0">august</tag>
17
+ <tag id="251642-2729556270-30529" author="24461004@N00" raw="anita" machine_tag="0">anita</tag>
18
+ <tag id="251642-2729556270-65815" author="24461004@N00" raw="waltham" machine_tag="0">waltham</tag>
19
+
20
+ <tag id="251642-2729556270-1853" author="24461004@N00" raw="liberty" machine_tag="0">liberty</tag>
21
+ <tag id="251642-2729556270-20506" author="24461004@N00" raw="cousin" machine_tag="0">cousin</tag>
22
+ <tag id="251642-2729556270-2079514" author="24461004@N00" raw="brucespringstein" machine_tag="0">brucespringstein</tag>
23
+ </tags>
24
+ <urls>
25
+ <url type="photopage">http://www.flickr.com/photos/girl_named_fred/2729556270/</url>
26
+ </urls>
27
+
28
+ <video ready="1" failed="0" pending="0" duration="" width="320" height="240" />
29
+ </photo>
30
+ </rsp>
31
+
@@ -0,0 +1,13 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <rsp stat="ok">
3
+ <sizes canblog="0" canprint="0" candownload="1">
4
+ <size label="Square" width="75" height="75" source="http://farm4.static.flickr.com/3207/2729556270_eee23fb14a_s.jpg" url="http://www.flickr.com/photos/girl_named_fred/2729556270/sizes/sq/" media="photo" />
5
+ <size label="Thumbnail" width="100" height="75" source="http://farm4.static.flickr.com/3207/2729556270_eee23fb14a_t.jpg" url="http://www.flickr.com/photos/girl_named_fred/2729556270/sizes/t/" media="photo" />
6
+ <size label="Small" width="240" height="180" source="http://farm4.static.flickr.com/3207/2729556270_eee23fb14a_m.jpg" url="http://www.flickr.com/photos/girl_named_fred/2729556270/sizes/s/" media="photo" />
7
+ <size label="Medium" width="320" height="240" source="http://farm4.static.flickr.com/3207/2729556270_eee23fb14a.jpg" url="http://www.flickr.com/photos/girl_named_fred/2729556270/sizes/m/" media="photo" />
8
+ <size label="Original" width="320" height="240" source="http://farm4.static.flickr.com/3207/2729556270_e940a69ebf_o.png" url="http://www.flickr.com/photos/girl_named_fred/2729556270/sizes/o/" media="photo" />
9
+ <size label="Video Player" width="320" height="240" source="http://www.flickr.com/apps/video/stewart.swf?v=63881&amp;photo_id=2729556270&amp;photo_secret=eee23fb14a" url="http://www.flickr.com/photos/girl_named_fred/2729556270/" media="video" />
10
+ </sizes>
11
+ </rsp>
12
+
13
+
@@ -0,0 +1,97 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe Flickr do
4
+
5
+ before :all do
6
+ @token = Flickr::Auth::Token.new(:permissions => "write", :token => "foo", :user_id => "80755658@N00",
7
+ :user_real_name => "Maciej Bilas", :username => "Maciej Bilas")
8
+ @api_key = "foo"
9
+ @api_secret = "bar"
10
+ @yaml_hash = {"key" => @api_key, "secret" => @api_secret}
11
+ end
12
+
13
+ describe ".new" do
14
+
15
+ describe "with no environment option specified" do
16
+ it "should inititialize Flickr from a Hash" do
17
+ # AFAIK there is no spec on how the key and secret look like
18
+ # so we can test with simple values
19
+ init_hash = {:key => @api_key, :secret => @api_secret}
20
+ flickr = Flickr.new(init_hash)
21
+ flickr.api_key.should == @api_key
22
+ flickr.api_secret.should == @api_secret
23
+
24
+ init_hash_with_token = init_hash.merge(:token => @token)
25
+ flickr = Flickr.new(init_hash_with_token)
26
+ flickr.token.should == @token
27
+ end
28
+
29
+ it "should initialize Flickr from a YAML file" do
30
+ YAML.should_receive(:load_file).once.and_return(@yaml_hash)
31
+ flickr = Flickr.new("flickr.yml")
32
+ flickr.api_key.should == @api_key
33
+ flickr.api_secret.should == @api_secret
34
+ end
35
+
36
+ it "should fail if API key or secret value is absent" do
37
+ invalid_hash = {:key => @api_key}
38
+ lambda { Flickr.new(invalid_hash) }.should raise_error
39
+ invalid_hash = {:secret => @api_secret}
40
+ lambda { Flickr.new(invalid_hash) }.should raise_error
41
+ end
42
+
43
+ end
44
+
45
+ describe "with an environment option specified" do
46
+ before :all do
47
+ @environment_specified = "development"
48
+ end
49
+
50
+ it "should initialize Flickr from a YAML file" do
51
+ yaml_hash = {@environment_specified => {"key" => @api_key, "secret" => @api_secret}}
52
+ YAML.should_receive(:load_file).once.and_return(yaml_hash)
53
+ flickr = Flickr.new("flickr.yml", :environment => @environment_specified)
54
+ flickr.api_key.should == @api_key
55
+ flickr.api_secret.should == @api_secret
56
+ end
57
+ end
58
+
59
+ describe "when token_cache is passed (only with a YAML file)" do
60
+
61
+ before :all do
62
+ @expected_token_cache = "token_cache.yml"
63
+ end
64
+
65
+ # For backward compatibility
66
+ it "should initialize Flickr with token_cache when passed as the second parameter" do
67
+ YAML.should_receive(:load_file).once.and_return(@yaml_hash)
68
+ flickr = Flickr.new("flickr.yml", @expected_token_cache)
69
+ flickr.token_cache.should == @expected_token_cache
70
+ end
71
+
72
+ it "should initialize Flickr with token_cache when passed as an option" do
73
+ YAML.should_receive(:load_file).once.and_return(@yaml_hash)
74
+ flickr = Flickr.new("flickr.yml", :token_cache => @expected_token_cache)
75
+ flickr.token_cache.should == @expected_token_cache
76
+ end
77
+ end
78
+
79
+ describe "when token is passed as an options (only with a YAML file)" do
80
+
81
+ it "should initialize Flickr with a token if passed" do
82
+ YAML.should_receive(:load_file).once.and_return(@yaml_hash)
83
+ flickr = Flickr.new("flickr.yml", :token => @token)
84
+ flickr.token.should == @token
85
+ end
86
+
87
+ end
88
+
89
+ describe "when both token and token_cache are passed" do
90
+ it "should raise an error" do
91
+ YAML.should_receive(:load_file).once.and_return(@yaml_hash)
92
+ lambda { Flickr.new("flickr.yml", {:token => @token, :token_cache => "token_cache.yml"})}.should raise_error
93
+ end
94
+ end
95
+
96
+ end
97
+ end
@@ -0,0 +1,47 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe Flickr::Contacts do
4
+
5
+ before :each do
6
+ @flickr = SpecHelper.flickr
7
+ end
8
+
9
+ describe ".get_public_list" do
10
+ before :all do
11
+ @public_list_xml = File.read(File.dirname(__FILE__) +
12
+ "/../fixtures/flickr/contacts/get_public_list-0.xml")
13
+ end
14
+
15
+ it "should call flickr.contacts.getPublicList" do
16
+ bogus_user_id = "12334@N00"
17
+ @flickr.should_receive(:send_request).with("flickr.contacts.getPublicList",
18
+ {:user_id=>bogus_user_id})
19
+ @flickr.contacts.get_public_list(bogus_user_id)
20
+ end
21
+
22
+ it "should return public contacts for the given user" do
23
+ bogus_user_id = "12334@N00"
24
+ @flickr.stub!(:request_over_http).and_return(@public_list_xml)
25
+ contacts = @flickr.contacts.get_public_list(bogus_user_id)
26
+ contacts.size.should == 2
27
+ contacts.first.username.should == "kooop"
28
+ contacts.first.nsid.should == "40718771@N00"
29
+ contacts.first.iconserver.should == "2"
30
+ contacts.first.iconfarm.should == "1"
31
+ end
32
+ end
33
+
34
+ describe ".get_list" do
35
+ it "should call flickr.contacts.getList" do
36
+ @flickr.should_receive(:send_request).with("flickr.contacts.getList", {})
37
+ @flickr.contacts.get_list
38
+ end
39
+
40
+ it "should raise flickr error 99: Insufficient permissions" do
41
+ xml = File.read(File.dirname(__FILE__) + "/../fixtures/flickr/contacts/get_list-fail-99.xml")
42
+ @flickr.stub!(:request_over_http).and_return(xml)
43
+ lambda { @flickr.contacts.get_list }.should raise_error(Flickr::Error, /^99:/)
44
+ end
45
+ end
46
+
47
+ end
@@ -0,0 +1,21 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe Flickr::Errors, ".error_for" do
4
+ it "should raise a RuntimeError with an \"Internal message\" message if either code or message is blank" do
5
+ lambda { Flickr::Errors.error_for(nil, nil) }.should raise_error(RuntimeError, /^Internal error/)
6
+ lambda { Flickr::Errors.error_for(20, nil) }.should raise_error(RuntimeError, /^Internal error/)
7
+ lambda { Flickr::Errors.error_for(nil, "foo") }.should raise_error(RuntimeError, /^Internal error/)
8
+ end
9
+
10
+ it "should raise a RuntimeError with an \"Internal error\" message if code is not an integer" do
11
+ lambda { Flickr::Errors.error_for("a", "foo")}.should raise_error(RuntimeError, /^Internal error/)
12
+ end
13
+
14
+ it "should raise a valid error if parameters are valid" do
15
+ lambda { Flickr::Errors.error_for(96, "Invalid signature")}.should raise_error(Flickr::Error)
16
+ end
17
+
18
+ it "should return an error with a message starting with the error code" do
19
+ lambda { Flickr::Errors.error_for(97, "Missing signature")}.should raise_error(Flickr::Error, /^97/)
20
+ end
21
+ end
@@ -0,0 +1,20 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe Flickr::Photos::Geo do
4
+
5
+ before :each do
6
+ @flickr = SpecHelper.flickr
7
+ end
8
+
9
+ describe ".get_location" do
10
+ it "should return the geo data (latitude and longitude and the accuracy level) for a photo" do
11
+ location_xml = File.read(File.dirname(__FILE__) + "/../fixtures/flickr/photos/geo/get_location-0.xml")
12
+ @flickr.should_receive(:request_over_http).and_return(location_xml)
13
+ acctual_loc = @flickr.photos.geo.get_location(2984637736)
14
+ acctual_loc.latitude.should == 50.041376
15
+ acctual_loc.longitude.should == 21.999006
16
+ acctual_loc.accuracy.should == 16
17
+ end
18
+ end
19
+
20
+ end
@@ -0,0 +1,123 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ module PhotoSpecHelper
4
+ def valid_photo_attributes
5
+ {
6
+ :id => 2984637736,
7
+ :owner => "80755658@N00",
8
+ :secret => "9e5762e027",
9
+ :server => 3180,
10
+ :farm => 4,
11
+ :title => "Demolition of Hotel Rzeszów",
12
+ :is_public => 1,
13
+ :is_friend => 0,
14
+ :is_family => 0
15
+ }
16
+ end
17
+ end
18
+
19
+ describe Flickr::Photos::Photo do
20
+
21
+ include PhotoSpecHelper
22
+
23
+ before :all do
24
+ @info_xml = File.read(File.dirname(__FILE__) + "/../fixtures/flickr/photos/get_info-0.xml")
25
+ @sizes_xml = File.read(File.dirname(__FILE__) + "/../fixtures/flickr/photos/get_sizes-0.xml")
26
+ end
27
+
28
+ before :each do
29
+ @flickr = SpecHelper.flickr
30
+ #@flickr.stub!(:request_over_http).and_return(info_xml)
31
+ @photo = Flickr::Photos::Photo.new(@flickr, valid_photo_attributes)
32
+ end
33
+
34
+ describe ".description" do
35
+ it "should return the description" do
36
+ @flickr.should_receive(:request_over_http).and_return(@info_xml)
37
+ @photo.description.should ==
38
+ "The last picture from a quite old event. The demolition of the best known hotel in Rzeszów called Hotel Rzeszów."
39
+ end
40
+ end
41
+
42
+ describe ".image_url" do
43
+ it "should return all standard sizes (thumbnail, square, small, medium and large) when requested" do
44
+ @photo.image_url(:square).should == "http://farm4.static.flickr.com/3180/2984637736_9e5762e027_s.jpg"
45
+ @photo.image_url(:thumbnail).should == "http://farm4.static.flickr.com/3180/2984637736_9e5762e027_t.jpg"
46
+ @photo.image_url(:small).should == "http://farm4.static.flickr.com/3180/2984637736_9e5762e027_m.jpg"
47
+ @photo.image_url(:medium).should == "http://farm4.static.flickr.com/3180/2984637736_9e5762e027.jpg"
48
+ @photo.image_url(:large).should == "http://farm4.static.flickr.com/3180/2984637736_9e5762e027_b.jpg"
49
+ end
50
+
51
+ it "should return the same image even if you pass a string as an argument" do
52
+ @photo.image_url("square").should == @photo.image_url(:square)
53
+ @photo.image_url("large").should == @photo.image_url(:large)
54
+ end
55
+
56
+ it "should not call getSizes if not requested the url of the original image" do
57
+ @flickr.should_not_receive(:request_over_http)
58
+ @photo.image_url :square
59
+ @photo.image_url :thumbnail
60
+ @photo.image_url :small
61
+ @photo.image_url :medium
62
+ @photo.image_url :large
63
+ end
64
+
65
+ it "should call getSizes if requested the url of the original image" do
66
+ @flickr.should_receive(:request_over_http).and_return(@sizes_xml)
67
+ @photo.image_url :original
68
+ end
69
+
70
+ it "should return nil if original image url not available" do
71
+ @flickr.should_receive(:request_over_http).and_return(@sizes_xml)
72
+ @photo.image_url(:original).should == nil
73
+ end
74
+ end
75
+
76
+ describe ".video_url" do
77
+ it "should return nil, since it's not a video" do
78
+ @flickr.should_receive(:request_over_http).and_return(@sizes_xml)
79
+ @photo.video_url.should == nil
80
+ end
81
+ end
82
+
83
+ describe ".location" do
84
+ it "should return the picture location as specified in flickr.photos.geo.getLocation" do
85
+ location_xml = File.read(File.dirname(__FILE__) + "/../fixtures/flickr/photos/geo/get_location-0.xml")
86
+ @flickr.should_receive(:request_over_http).twice.and_return(location_xml)
87
+ expected_loc = @flickr.photos.geo.get_location(@photo.id)
88
+ acctual_loc = @photo.location
89
+ # Checking by latitude and longitude is enough for us
90
+ acctual_loc.latitude.should == expected_loc.latitude
91
+ acctual_loc.longitude.should == expected_loc.longitude
92
+ end
93
+
94
+ it "should return nil if picture is not geo-tagged" do
95
+ no_location_xml = File.read(File.dirname(__FILE__) + "/../fixtures/flickr/photos/geo/get_location-fail-2.xml")
96
+ @flickr.should_receive(:request_over_http).and_return(no_location_xml)
97
+ @photo.location.should be_nil
98
+ end
99
+ end
100
+
101
+ describe Flickr::Photos::Photo, "but it's really a video" do
102
+
103
+ include PhotoSpecHelper
104
+
105
+ before :all do
106
+ @info_xml = File.read(File.dirname(__FILE__) + "/../fixtures/flickr/videos/get_info-0.xml")
107
+ @sizes_xml = File.read(File.dirname(__FILE__) + "/../fixtures/flickr/videos/get_sizes-0.xml")
108
+ end
109
+
110
+ before :each do
111
+ @flickr = SpecHelper.flickr
112
+ #@flickr.stub!(:request_over_http).and_return(info_xml)
113
+ @photo = Flickr::Photos::Photo.new(@flickr, valid_photo_attributes)
114
+ end
115
+
116
+ describe ".video_url" do
117
+ it "should return something sane" do
118
+ @flickr.should_receive(:request_over_http).and_return(@sizes_xml)
119
+ @photo.video_url.should == "http://www.flickr.com/apps/video/stewart.swf?v=63881&photo_id=2729556270&photo_secret=eee23fb14a"
120
+ end
121
+ end
122
+ end
123
+ end
@@ -0,0 +1,50 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe Flickr::Photos do
4
+
5
+ before :each do
6
+ @flickr = SpecHelper.flickr
7
+ end
8
+
9
+ describe ".licenses" do
10
+ before :all do
11
+ @licenses_xml = File.read(File.dirname(__FILE__) + "/../fixtures/flickr/photos/licenses/get_info.xml")
12
+ @valid_licenses = {
13
+ 0 => Flickr::Photos::License.new(:id => 0, :name => "All Rights Reserved", :url => ""),
14
+ 4 => Flickr::Photos::License.new(:id => 4, :name => "Attribution License", :url => "http://creativecommons.org/licenses/by/2.0/"),
15
+ 6 => Flickr::Photos::License.new(:id => 6, :name => "Attribution-NoDerivs License", :url => "http://creativecommons.org/licenses/by-nd/2.0/"),
16
+ 3 => Flickr::Photos::License.new(:id => 3, :name => "Attribution-NonCommercial-NoDerivs License", :url => "http://creativecommons.org/licenses/by-nc-nd/2.0/"),
17
+ 2 => Flickr::Photos::License.new(:id => 2, :name => "Attribution-NonCommercial License", :url => "http://creativecommons.org/licenses/by-nc/2.0/"),
18
+ 1 => Flickr::Photos::License.new(:id => 1, :name => "Attribution-NonCommercial-ShareAlike License", :url => "http://creativecommons.org/licenses/by-nc-sa/2.0/"),
19
+ 5 => Flickr::Photos::License.new(:id => 5, :name => "Attribution-ShareAlike License", :url => "http://creativecommons.org/licenses/by-sa/2.0/")
20
+ }
21
+ end
22
+
23
+ it "should return all valid licenses" do
24
+ @flickr.should_receive(:request_over_http).and_return(@licenses_xml)
25
+ @flickr.photos.licenses.should == @valid_licenses
26
+ end
27
+
28
+ it "should not not call Flickr API more than once" do
29
+ @flickr.should_receive(:request_over_http).once.and_return(@licenses_xml)
30
+ @flickr.photos.licenses
31
+ @flickr.photos.licenses
32
+ end
33
+ end
34
+
35
+ describe ".find_by_id" do
36
+ it "should return a photo when a valid id is given" do
37
+ photo_id = 2984637736
38
+ #photo_upload_date = 1225297614
39
+ info_xml = File.read(File.dirname(__FILE__) + "/../fixtures/flickr/photos/get_info-0.xml")
40
+ @flickr.should_receive(:request_over_http).and_return(info_xml)
41
+
42
+ photo = @flickr.photos.find_by_id(photo_id)
43
+ photo.id.should == photo_id
44
+ end
45
+
46
+ it "should raise an error when no id is given"
47
+
48
+ it "should raise an error when the photo does not exist"
49
+ end
50
+ end
@@ -0,0 +1,49 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe Flickr::Photosets do
4
+ before :all do
5
+ @get_list_xml = File.read(File.dirname(__FILE__) +
6
+ "/../fixtures/flickr/photosets/get_list-0.xml")
7
+ @get_photos_xml = File.read(File.dirname(__FILE__) +
8
+ "/../fixtures/flickr/photosets/get_photos-0.xml")
9
+ end
10
+
11
+ before :each do
12
+ @flickr = SpecHelper.flickr
13
+ end
14
+
15
+
16
+ describe ".get_list" do
17
+ it "should call flickr.photosets.getList" do
18
+ @flickr.should_receive(:send_request).with("flickr.photosets.getList", {})
19
+ @flickr.photosets.get_list
20
+ end
21
+
22
+ it "should return an array of photoset objects" do
23
+ @flickr.stub!(:request_over_http).and_return(@get_list_xml)
24
+ photosets = @flickr.photosets.get_list
25
+
26
+ photosets[0].should be_an_instance_of(Flickr::Photosets::Photoset)
27
+ photosets[0].title.should == 'Test'
28
+ end
29
+ end
30
+
31
+ describe ".get_photos" do
32
+ before :each do
33
+ @photoset = Flickr::Photosets::Photoset.new(@flickr,{:id=>4})
34
+ end
35
+
36
+ it "should call flickr.photosets.getPhotos" do
37
+ @flickr.should_receive(:send_request).with("flickr.photosets.getPhotos",{:photoset_id=>4})
38
+ @photoset.get_photos
39
+ end
40
+
41
+ it "should return an array of photo objects" do
42
+ @flickr.stub!(:request_over_http).and_return(@get_photos_xml)
43
+ photos = @photoset.get_photos
44
+
45
+ photos.should_not be_nil
46
+ photos[0].should be_an_instance_of(Flickr::Photos::Photo)
47
+ end
48
+ end
49
+ end