flickr_fu 0.1.6 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|