flickr_fu 0.1.6 → 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.
- data/.gitignore +13 -0
- data/README +38 -1
- data/Rakefile +64 -13
- data/VERSION.yml +4 -0
- data/flickr_fu.gemspec +114 -32
- data/lib/flickr/auth.rb +8 -1
- data/lib/flickr/base.rb +75 -26
- data/lib/flickr/contact.rb +16 -0
- data/lib/flickr/contacts.rb +55 -0
- data/lib/flickr/errors.rb +20 -0
- data/lib/flickr/geo.rb +42 -0
- data/lib/flickr/license.rb +10 -0
- data/lib/flickr/location.rb +15 -0
- data/lib/flickr/photo.rb +130 -107
- data/lib/flickr/photos.rb +29 -11
- data/lib/flickr/photoset.rb +37 -0
- data/lib/flickr/photosets.rb +39 -0
- data/lib/flickr/token.rb +1 -1
- data/lib/flickr/urls.rb +44 -0
- data/lib/flickr_fu.rb +25 -2
- data/spec/fixtures/flickr/contacts/get_list-fail-99.xml +4 -0
- data/spec/fixtures/flickr/contacts/get_public_list-0.xml +7 -0
- data/spec/fixtures/flickr/photos/geo/get_location-0.xml +11 -0
- data/spec/fixtures/flickr/photos/geo/get_location-fail-2.xml +4 -0
- data/spec/fixtures/flickr/photos/get_info-0.xml +41 -0
- data/spec/fixtures/flickr/photos/get_info-1.xml +19 -0
- data/spec/fixtures/flickr/photos/get_sizes-0.xml +10 -0
- data/spec/fixtures/flickr/photos/get_sizes-1.xml +8 -0
- data/spec/fixtures/flickr/photos/licenses/get_info.xml +12 -0
- data/spec/fixtures/flickr/photosets/get_list-0.xml +13 -0
- data/spec/fixtures/flickr/photosets/get_photos-0.xml +7 -0
- data/spec/fixtures/flickr/test/echo-0.xml +5 -0
- data/spec/fixtures/flickr/test/null-fail-99.xml +4 -0
- data/spec/fixtures/flickr/urls/get_group-0.xml +4 -0
- data/spec/fixtures/flickr/urls/get_group-fail-1.xml +4 -0
- data/spec/fixtures/flickr/urls/get_user_photos-0.xml +4 -0
- data/spec/fixtures/flickr/urls/get_user_photos-fail-1.xml +4 -0
- data/spec/fixtures/flickr/urls/get_user_photos-fail-2.xml +4 -0
- data/spec/fixtures/flickr/urls/get_user_profile-0.xml +4 -0
- data/spec/fixtures/flickr/urls/get_user_profile-fail-1.xml +4 -0
- data/spec/fixtures/flickr/urls/get_user_profile-fail-2.xml +4 -0
- data/spec/fixtures/flickr/urls/lookup_group-0.xml +6 -0
- data/spec/fixtures/flickr/urls/lookup_group-fail-1.xml +4 -0
- data/spec/fixtures/flickr/urls/lookup_user-0.xml +6 -0
- data/spec/fixtures/flickr/videos/get_info-0.xml +31 -0
- data/spec/fixtures/flickr/videos/get_sizes-0.xml +13 -0
- data/spec/flickr/base_spec.rb +97 -0
- data/spec/flickr/contacts_spec.rb +47 -0
- data/spec/flickr/errors_spec.rb +21 -0
- data/spec/flickr/geo_spec.rb +20 -0
- data/spec/flickr/photo_spec.rb +140 -0
- data/spec/flickr/photos_spec.rb +50 -0
- data/spec/flickr/photosets_spec.rb +49 -0
- data/spec/flickr/test_spec.rb +34 -0
- data/spec/flickr/urls_spec.rb +99 -0
- data/spec/spec.opts +4 -0
- data/spec/spec_helper.rb +20 -0
- metadata +66 -7
@@ -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&photo_id=2729556270&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,140 @@
|
|
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 ".photo_size" do
|
43
|
+
it "should return the appropriate Flickr::Photos::Size instance when requested by symbol" do
|
44
|
+
@photo.photo_size(:square).class.should == Flickr::Photos::Size
|
45
|
+
@photo.photo_size(:square).label.should == "Square"
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should return the appropriate Flickr::Photos::Size instance when requested by string" do
|
49
|
+
@photo.photo_size('square').class.should == Flickr::Photos::Size
|
50
|
+
@photo.photo_size('square').label.should == "Square"
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should return the :medium Flickr::Photos::Size instance invalidly requested" do
|
54
|
+
@photo.photo_size(:doubleplusbig).class.should == Flickr::Photos::Size
|
55
|
+
@photo.photo_size(:doubleplusbig).label.should == "Medium"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe ".image_url" do
|
60
|
+
it "should return all standard sizes (thumbnail, square, small, medium and large) when requested" do
|
61
|
+
@photo.image_url(:square).should == "http://farm4.static.flickr.com/3180/2984637736_9e5762e027_s.jpg"
|
62
|
+
@photo.image_url(:thumbnail).should == "http://farm4.static.flickr.com/3180/2984637736_9e5762e027_t.jpg"
|
63
|
+
@photo.image_url(:small).should == "http://farm4.static.flickr.com/3180/2984637736_9e5762e027_m.jpg"
|
64
|
+
@photo.image_url(:medium).should == "http://farm4.static.flickr.com/3180/2984637736_9e5762e027.jpg"
|
65
|
+
@photo.image_url(:large).should == "http://farm4.static.flickr.com/3180/2984637736_9e5762e027_b.jpg"
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should return the same image even if you pass a string as an argument" do
|
69
|
+
@photo.image_url("square").should == @photo.image_url(:square)
|
70
|
+
@photo.image_url("large").should == @photo.image_url(:large)
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should not call getSizes if not requested the url of the original image" do
|
74
|
+
@flickr.should_not_receive(:request_over_http)
|
75
|
+
@photo.image_url :square
|
76
|
+
@photo.image_url :thumbnail
|
77
|
+
@photo.image_url :small
|
78
|
+
@photo.image_url :medium
|
79
|
+
@photo.image_url :large
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should call getSizes if requested the url of the original image" do
|
83
|
+
@flickr.should_receive(:request_over_http).and_return(@sizes_xml)
|
84
|
+
@photo.image_url :original
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should return nil if original image url not available" do
|
88
|
+
@flickr.should_receive(:request_over_http).and_return(@sizes_xml)
|
89
|
+
@photo.image_url(:original).should == nil
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe ".video_url" do
|
94
|
+
it "should return nil, since it's not a video" do
|
95
|
+
@flickr.should_receive(:request_over_http).and_return(@sizes_xml)
|
96
|
+
@photo.video_url.should == nil
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
describe ".location" do
|
101
|
+
it "should return the picture location as specified in flickr.photos.geo.getLocation" do
|
102
|
+
location_xml = File.read(File.dirname(__FILE__) + "/../fixtures/flickr/photos/geo/get_location-0.xml")
|
103
|
+
@flickr.should_receive(:request_over_http).twice.and_return(location_xml)
|
104
|
+
expected_loc = @flickr.photos.geo.get_location(@photo.id)
|
105
|
+
acctual_loc = @photo.location
|
106
|
+
# Checking by latitude and longitude is enough for us
|
107
|
+
acctual_loc.latitude.should == expected_loc.latitude
|
108
|
+
acctual_loc.longitude.should == expected_loc.longitude
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should return nil if picture is not geo-tagged" do
|
112
|
+
no_location_xml = File.read(File.dirname(__FILE__) + "/../fixtures/flickr/photos/geo/get_location-fail-2.xml")
|
113
|
+
@flickr.should_receive(:request_over_http).and_return(no_location_xml)
|
114
|
+
@photo.location.should be_nil
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
describe Flickr::Photos::Photo, "but it's really a video" do
|
119
|
+
|
120
|
+
include PhotoSpecHelper
|
121
|
+
|
122
|
+
before :all do
|
123
|
+
@info_xml = File.read(File.dirname(__FILE__) + "/../fixtures/flickr/videos/get_info-0.xml")
|
124
|
+
@sizes_xml = File.read(File.dirname(__FILE__) + "/../fixtures/flickr/videos/get_sizes-0.xml")
|
125
|
+
end
|
126
|
+
|
127
|
+
before :each do
|
128
|
+
@flickr = SpecHelper.flickr
|
129
|
+
#@flickr.stub!(:request_over_http).and_return(info_xml)
|
130
|
+
@photo = Flickr::Photos::Photo.new(@flickr, valid_photo_attributes)
|
131
|
+
end
|
132
|
+
|
133
|
+
describe ".video_url" do
|
134
|
+
it "should return something sane" do
|
135
|
+
@flickr.should_receive(:request_over_http).and_return(@sizes_xml)
|
136
|
+
@photo.video_url.should == "http://www.flickr.com/apps/video/stewart.swf?v=63881&photo_id=2729556270&photo_secret=eee23fb14a"
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
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
|