flickrie 1.0.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. data/.gitignore +1 -0
  2. data/CHANGELOG.md +13 -0
  3. data/Gemfile +0 -4
  4. data/flickrie.gemspec +2 -2
  5. data/lib/flickrie/api_methods.rb +4 -1
  6. data/lib/flickrie/license.rb +6 -1
  7. data/lib/flickrie/location.rb +29 -12
  8. data/lib/flickrie/media/exif.rb +3 -1
  9. data/lib/flickrie/media/note.rb +24 -13
  10. data/lib/flickrie/media/tag.rb +9 -6
  11. data/lib/flickrie/media/visibility.rb +8 -5
  12. data/lib/flickrie/media.rb +54 -55
  13. data/lib/flickrie/media_count.rb +8 -6
  14. data/lib/flickrie/photo.rb +48 -7
  15. data/lib/flickrie/set.rb +47 -31
  16. data/lib/flickrie/ticket.rb +8 -5
  17. data/lib/flickrie/user.rb +67 -25
  18. data/lib/flickrie/version.rb +1 -1
  19. data/lib/flickrie/video.rb +19 -11
  20. data/spec/custom_matchers.rb +51 -0
  21. data/spec/flickrie/api_methods_spec.rb +112 -31
  22. data/spec/flickrie/error_spec.rb +2 -4
  23. data/spec/flickrie/instance_spec.rb +11 -11
  24. data/spec/flickrie/media_spec.rb +74 -53
  25. data/spec/flickrie/photo_spec.rb +4 -5
  26. data/spec/flickrie/set_spec.rb +23 -12
  27. data/spec/flickrie/upload_client_spec.rb +3 -0
  28. data/spec/flickrie/user_spec.rb +31 -5
  29. data/spec/flickrie/video_spec.rb +13 -13
  30. data/spec/flickrie_spec.rb +15 -0
  31. data/spec/spec_helper.rb +13 -50
  32. data/spec/vcr_cassettes/api_methods/people/get_media_from_user.yml +108 -0
  33. data/spec/vcr_cassettes/api_methods/people/get_public_media_from_user.yml +108 -0
  34. data/spec/vcr_cassettes/api_methods/photos/add_and_remove_tags.yml +528 -0
  35. data/spec/vcr_cassettes/api_methods/photos/get_context.yml +108 -0
  36. data/spec/vcr_cassettes/api_methods/photos/get_counts.yml +108 -0
  37. data/spec/vcr_cassettes/api_methods/photos/get_exif.yml +73 -0
  38. data/spec/vcr_cassettes/api_methods/photos/get_favorites.yml +73 -0
  39. data/spec/vcr_cassettes/api_methods/photos/get_from_contacts.yml +73 -0
  40. data/spec/vcr_cassettes/api_methods/photos/get_info.yml +108 -0
  41. data/spec/vcr_cassettes/api_methods/photos/get_public_from_user_contacts.yml +73 -0
  42. data/spec/vcr_cassettes/api_methods/photos/get_sizes.yml +73 -0
  43. data/spec/vcr_cassettes/api_methods/photos/search.yml +108 -0
  44. data/spec/vcr_cassettes/api_methods/photosets/get_media.yml +108 -0
  45. data/spec/vcr_cassettes/api_methods/{replace.yml → upload/replace.yml} +16 -16
  46. data/spec/vcr_cassettes/api_methods/upload/upload.yml +82 -0
  47. data/spec/vcr_cassettes/api_methods/upload/upload_asynchronously.yml +117 -0
  48. data/spec/vcr_cassettes/error/{a_request_was_made_and_failed.yml → a_request_was_made_and_failed/be_raised.yml} +9 -9
  49. data/spec/vcr_cassettes/error/a_request_was_made_and_failed/have_code_attribute_present.yml +84 -0
  50. data/spec/vcr_cassettes/{api_methods/upload_and_delete.yml → flickrie/a_new_credential_is_filled_in/reset_the_client.yml} +113 -32
  51. data/spec/vcr_cassettes/instance/client_is_already_initialized/be_able_to_call_API_methods.yml +152 -0
  52. data/spec/vcr_cassettes/license/{get.yml → get/have_all_attributes_correctly_set.yml} +4 -4
  53. data/spec/vcr_cassettes/media/{from_contacts.yml → from_contacts/have_all_attributes_correctly_set.yml} +8 -8
  54. data/spec/vcr_cassettes/media/{from_set.yml → from_set/have_all_attributes_correctly_set.yml} +6 -6
  55. data/spec/vcr_cassettes/media/{from_user.yml → from_user/have_all_attributes_correctly_set.yml} +6 -6
  56. data/spec/vcr_cassettes/media/{get_context.yml → get_context/have_all_attributes_correctly_set.yml} +6 -6
  57. data/spec/vcr_cassettes/media/{get_exif.yml → get_exif/get_exif_correctly.yml} +8 -8
  58. data/spec/vcr_cassettes/media/get_info/have_all_attributes_correctly_set.yml +108 -0
  59. data/spec/vcr_cassettes/media/{public_from_user.yml → public_from_user/have_all_attributes_correctly_set.yml} +6 -6
  60. data/spec/vcr_cassettes/media/{search.yml → search/have_all_attributes_correctly_set.yml} +6 -6
  61. data/spec/vcr_cassettes/media_count/{get.yml → get/have_correctly_set_all_attributes.yml} +9 -9
  62. data/spec/vcr_cassettes/o_auth/{incorrect_credentials.yml → incorrect_credentials/raise_exceptions.yml} +42 -42
  63. data/spec/vcr_cassettes/photo/get_info/have_all_attributes_correctly_set.yml +38 -0
  64. data/spec/vcr_cassettes/photo/{get_sizes.yml → get_sizes/have_attributes_correctly_set.yml} +12 -12
  65. data/spec/vcr_cassettes/photo/{search.yml → search/have_all_sizes_available.yml} +6 -6
  66. data/spec/vcr_cassettes/set/{from_user.yml → from_user/have_all_attributes_correctly_set.yml} +18 -18
  67. data/spec/vcr_cassettes/set/{get_info.yml → get_info/have_all_attributes_correctly_set.yml} +36 -36
  68. data/spec/vcr_cassettes/upload_client/content_type/pass_the_content_type.yml +117 -0
  69. data/spec/vcr_cassettes/upload_client/invalid_credentials/raise_errors.yml +276 -0
  70. data/spec/vcr_cassettes/user/{find_by_username_or_email.yml → find_by_username_or_email/have_all_attributes_correctly_set.yml} +9 -9
  71. data/spec/vcr_cassettes/user/get_info/have_all_attributes_correctly_set.yml +73 -0
  72. data/spec/vcr_cassettes/video/get_info/have_all_attributes_correctly_set.yml +38 -0
  73. data/spec/vcr_cassettes/video/{get_sizes.yml → get_sizes/have_all_attributes_correctly_set.yml} +12 -12
  74. metadata +111 -74
  75. data/spec/vcr_cassettes/api_methods/asynchronous_upload.yml +0 -362
  76. data/spec/vcr_cassettes/api_methods/tag_manipulation.yml +0 -178
  77. data/spec/vcr_cassettes/instance/calling_api_methods.yml +0 -231
  78. data/spec/vcr_cassettes/media/get_info.yml +0 -108
  79. data/spec/vcr_cassettes/photo/get_info.yml +0 -38
  80. data/spec/vcr_cassettes/upload_client/content_type.yml +0 -117
  81. data/spec/vcr_cassettes/upload_client/invalid_credentials.yml +0 -208
  82. data/spec/vcr_cassettes/user/get_info.yml +0 -73
  83. data/spec/vcr_cassettes/video/get_info.yml +0 -38
data/lib/flickrie/set.rb CHANGED
@@ -1,74 +1,90 @@
1
1
  module Flickrie
2
2
  class Set
3
- # @!parse attr_reader :id
3
+ # @!parse attr_reader \
4
+ # :id, :secret, :server, :farm, :title, :description,
5
+ # :primary_media_id, :views_count, :comments_count,
6
+ # :photos_count, :videos_count, :media_count, :owner,
7
+ # :can_comment?, :needs_interstitial?, :visibility_can_see_set?,
8
+ # :created_at, :updated_at, :url, :hash
9
+
10
+ # @return [String]
4
11
  def id() @info['id'] end
5
- # @!parse attr_reader :secret
12
+ # @return [String]
6
13
  def secret() @info['secret'] end
7
- # @!parse attr_reader :server
14
+ # @return [String]
8
15
  def server() @info['server'] end
9
- # @!parse attr_reader :farm
16
+ # @return [Fixnum]
10
17
  def farm() @info['farm'] end
11
- # @!parse attr_reader :title
18
+ # @return [String]
12
19
  def title() @info['title'] end
13
- # @!parse attr_reader :description
20
+ # @return [String]
14
21
  def description() @info['description'] end
15
22
 
16
- # @!parse attr_reader :primary_media_id
23
+ # @return [String]
17
24
  def primary_media_id() @info['primary'] end
18
25
  alias primary_photo_id primary_media_id
19
26
  alias primary_video_id primary_media_id
20
27
 
21
- # @!parse attr_reader :views_count
28
+ # @return [Fixnum]
22
29
  def views_count() Integer(@info['count_views']) rescue nil end
23
- # @!parse attr_reader :comments_count
30
+ # @return [Fixnum]
24
31
  def comments_count() Integer(@info['count_comments']) rescue nil end
25
- # @!parse attr_reader :photos_count
32
+ # @return [Fixnum]
26
33
  def photos_count() Integer(@info['count_photos']) rescue nil end
27
- # @!parse attr_reader :videos_count
34
+ # @return [Fixnum]
28
35
  def videos_count() Integer(@info['count_videos']) rescue nil end
29
- # @!parse attr_reader :media_count
36
+ # @return [Fixnum]
30
37
  def media_count
31
38
  photos_count + videos_count rescue nil
32
39
  end
33
40
 
34
41
  # @return [Flickrie::User]
35
- #
36
- # @!parse attr_reader :owner
37
42
  def owner() User.new('nsid' => @info['owner']) if @info['owner'] end
38
43
 
39
44
  # Same as calling `Flickrie.photos_from_set(set.id)`.
40
- def photos(params = {}) Flickrie.photos_from_set(id, params) end
45
+ #
46
+ # @return [Array<Flickrie::Photo>]
47
+ def photos(params = {})
48
+ Flickrie.photos_from_set(id, params)
49
+ end
41
50
  # Same as calling `Flickrie.videos_from_set(set.id)`.
42
- def videos(params = {}) Flickrie.videos_from_set(id, params) end
51
+ #
52
+ # @return [Array<Flickrie::Video>]
53
+ def videos(params = {})
54
+ Flickrie.videos_from_set(id, params)
55
+ end
43
56
  # Same as calling `Flickrie.media_from_set(set.id)`.
44
- def media(params = {}) Flickrie.media_from_set(id, params) end
57
+ #
58
+ # @return [Array<Flickrie::Photo, Flickrie::Video>]
59
+ def media(params = {})
60
+ Flickrie.media_from_set(id, params)
61
+ end
45
62
 
46
- # @!parse attr_reader :can_comment?
63
+ # @return [Boolean]
47
64
  def can_comment?() Integer(@info['can_comment']) == 1 rescue nil end
48
65
 
49
- # @comment TODO: Figure out what this is
50
- # @!parse attr_reader :needs_interstitial?
66
+ # @return [Boolean]
51
67
  def needs_interstitial?() Integer(@info['needs_interstitial']) == 1 rescue nil end
52
- # @!parse attr_reader :visibility_can_see_set?
68
+ # @return [Boolean]
53
69
  def visibility_can_see_set?() Integer(@info['visibility_can_see_set']) == 1 rescue nil end
54
70
 
55
- # @!parse attr_reader :created_at
71
+ # @return [Time]
56
72
  def created_at() Time.at(Integer(@info['date_create'])) rescue nil end
57
- # @!parse attr_reader :updated_at
73
+ # @return [Time]
58
74
  def updated_at() Time.at(Integer(@info['date_update'])) rescue nil end
59
75
 
60
- # @!parse attr_reader :url
61
- def url
62
- "http://www.flickr.com/photos/#{owner.nsid}/sets/#{id}"
63
- end
76
+ # @return [String]
77
+ def url() "http://www.flickr.com/photos/#{owner.nsid}/sets/#{id}" rescue nil end
64
78
 
65
79
  def [](key) @info[key] end
66
- # @!parse attr_reader :hash
80
+ # @return [Hash]
67
81
  def hash() @info end
68
82
 
69
83
  # Same as calling `Flickrie.get_set_info(set.id)`
70
- def get_info(info = nil)
71
- info ||= Flickrie.client.get_set_info(id).body['photoset']
84
+ #
85
+ # @return [self]
86
+ def get_info(params = {}, info = nil)
87
+ info ||= Flickrie.client.get_set_info(id, params).body['photoset']
72
88
  @info.update(info)
73
89
 
74
90
  # Fixes
@@ -85,7 +101,7 @@ module Flickrie
85
101
  end
86
102
 
87
103
  def self.from_info(info)
88
- new.get_info(info)
104
+ new.get_info({}, info)
89
105
  end
90
106
 
91
107
  def self.from_user(info, user_nsid)
@@ -1,20 +1,23 @@
1
1
  module Flickrie
2
2
  class Ticket
3
- # @!parse attr_reader :id
3
+ # @!parse attr_reader \
4
+ # :id, :media_id, :complete?, :imported_at, :hash
5
+
6
+ # @return [String]
4
7
  def id() @info['id'] end
5
- # @!parse attr_reader :media_id
8
+ # @return [String]
6
9
  def media_id() @info['photoid'] end
7
10
  alias photo_id media_id
8
11
  alias video_id media_id
9
12
 
10
- # @!parse attr_reader :complete?
13
+ # @return [Boolean]
11
14
  def complete?() Integer(@info['complete']) == 1 rescue nil end
12
15
 
13
- # @!parse attr_reader :imported_at
16
+ # @return [Time]
14
17
  def imported_at() Time.at(Integer(@info['imported'])) rescue nil end
15
18
 
16
19
  def [](key) @info[key] end
17
- # @!parse attr_reader :hash
20
+ # @return [Hash]
18
21
  def hash() @info end
19
22
 
20
23
  private
data/lib/flickrie/user.rb CHANGED
@@ -2,26 +2,32 @@ require 'date'
2
2
 
3
3
  module Flickrie
4
4
  class User
5
- # @!parse attr_reader :id
5
+ # @!parse attr_reader \
6
+ # :id, :nsid, :username, :real_name, :location, :description,
7
+ # :path_alias, :icon_server, :icon_farm, :buddy_icon_url,
8
+ # :time_zone, :photos_url, :profile_url, :mobile_url,
9
+ # :first_taken, :favorited_at, :media_count, :pro?, :hash
10
+
11
+ # @return [String]
6
12
  def id() @info['id'] end
7
- # @!parse attr_reader :nsid
13
+ # @return [String]
8
14
  def nsid() @info['nsid'] end
9
- # @!parse attr_reader :username
15
+ # @return [String]
10
16
  def username() @info['username'] end
11
- # @!parse attr_reader :real_name
17
+ # @return [String]
12
18
  def real_name() @info['realname'] end
13
- # @!parse attr_reader :location
19
+ # @return [String]
14
20
  def location() @info['location'] end
15
- # @!parse attr_reader :description
21
+ # @return [String]
16
22
  def description() @info['description'] end
17
- # @!parse attr_reader :path_alias
23
+ # @return [String]
18
24
  def path_alias() @info['path_alias'] end
19
- # @!parse attr_reader :icon_server
25
+ # @return [String]
20
26
  def icon_server() @info['iconserver'] end
21
- # @!parse attr_reader :icon_farm
27
+ # @return [Fixnum]
22
28
  def icon_farm() @info['iconfarm'] end
23
29
 
24
- # @!parse attr_reader :buddy_icon_url
30
+ # @return [String]
25
31
  def buddy_icon_url
26
32
  if icon_farm
27
33
  if icon_server.to_i > 0 && (nsid || id)
@@ -37,41 +43,77 @@ module Flickrie
37
43
  # user.time_zone.offset # => "+01:00"
38
44
  # user.time_zone.label # => "Sarajevo, Skopje, Warsaw, Zagreb"
39
45
  #
40
- # @!parse attr_reader :time_zone
46
+ # @return [Struct]
41
47
  def time_zone() Struct.new(:label, :offset).new(*@info['timezone'].values) rescue nil end
42
48
 
43
- # @!parse attr_reader :photos_url
44
- def photos_url() @info['photosurl'] || "http://www.flickr.com/photos/#{nsid || id}" end
45
- # @!parse attr_reader :profile_url
46
- def profile_url() @info['profileurl'] || "http://www.flickr.com/people/#{nsid || id}" end
47
- # @!parse attr_reader :mobile_url
49
+ # @return [String]
50
+ def photos_url() @info['photosurl'] || "http://www.flickr.com/photos/#{nsid || id}" if nsid || id end
51
+ # @return [String]
52
+ def profile_url() @info['profileurl'] || "http://www.flickr.com/people/#{nsid || id}" if nsid || id end
53
+ # @return [String]
48
54
  def mobile_url() @info['mobileurl'] end
49
55
 
50
- # @!parse attr_reader :first_taken
56
+ # @return [Time]
51
57
  def first_taken() DateTime.parse(@info['photos']['firstdatetaken']).to_time rescue nil end
52
- # @!parse attr_reader :first_uploaded
58
+ # @return [Time]
53
59
  def first_uploaded() Time.at(Integer(@info['photos']['firstdate'])) rescue nil end
54
60
 
55
- # @!parse attr_reader :favorited_at
61
+ # @return [Time]
56
62
  def favorited_at() Time.at(Integer(@info['favedate'])) rescue nil end
57
63
 
58
- # @!parse attr_reader :media_count
64
+ # @return [Fixnum]
59
65
  def media_count() Integer(@info['photos']['count']) rescue nil end
60
66
  alias photos_count media_count
61
67
  alias videos_count media_count
62
68
 
63
- # @comment TODO: public videos, media and without public
64
- # The same as calling `Flickrie.public_photos_from_user(user.nsid)`
65
- def public_photos(params = {}) Flickrie.public_photos_from_user(nsid || id, params) end
69
+ # Same as calling `Flickrie.public_photos_from_user(user.nsid)`.
70
+ #
71
+ # @return [Array<Flickrie::Photo>]
72
+ def public_photos(params = {})
73
+ Flickrie.public_photos_from_user(nsid || id, params)
74
+ end
75
+ # Same as calling `Flickrie.public_videos_from_user(user.nsid)`.
76
+ #
77
+ # @return [Array<Flickrie::Video>]
78
+ def public_videos(params = {})
79
+ Flickrie.public_videos_from_user(nsid || id, params)
80
+ end
81
+ # Same as calling `Flickrie.public_media_from_user(user.nsid)`.
82
+ #
83
+ # @return [Array<Flickrie::Photo, Flickrie::Video>]
84
+ def public_media(params = {})
85
+ Flickrie.public_media_from_user(nsid || id, params)
86
+ end
66
87
 
67
- # @!parse attr_reader :pro?
88
+ # Same as calling `Flickrie.photos_from_user(user.nsid)`.
89
+ #
90
+ # @return [Array<Flickrie::Photo>]
91
+ def photos(params = {})
92
+ Flickrie.photos_from_user(nsid || id, params)
93
+ end
94
+ # Same as calling `Flickrie.videos_from_user(user.nsid)`.
95
+ #
96
+ # @return [Array<Flickrie::Video>]
97
+ def videos(params = {})
98
+ Flickrie.videos_from_user(nsid || id, params)
99
+ end
100
+ # Same as calling `Flickrie.media_from_user(user.nsid)`.
101
+ #
102
+ # @return [Array<Flickrie::Photo, Flickrie::Video>]
103
+ def media(params = {})
104
+ Flickrie.media_from_user(nsid || id, params)
105
+ end
106
+
107
+ # @return [Boolean]
68
108
  def pro?() Integer(@info['ispro']) == 1 rescue nil end
69
109
 
70
110
  def [](key) @info[key] end
71
- # @!parse attr_reader :hash
111
+ # @return [Hash]
72
112
  def hash() @info end
73
113
 
74
114
  # The same as calling `Flickrie.get_user_info(user.nsid)`
115
+ #
116
+ # @return [self]
75
117
  def get_info(params = {}, info = nil)
76
118
  info ||= Flickrie.client.get_user_info(nsid || id, params).body['person']
77
119
  @info.update(info)
@@ -1,3 +1,3 @@
1
1
  module Flickrie
2
- VERSION = "1.0.2"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -1,30 +1,36 @@
1
1
  module Flickrie
2
2
  class Video
3
3
  include Media
4
+ # @!parse attr_reader \
5
+ # :ready?, :failed?, :pending?, :duration, :width, :height,
6
+ # :source_url, :download_url, :mobile_download_url
4
7
 
5
- # @!parse attr_reader :ready?
8
+ # @return [Boolean]
6
9
  def ready?() Integer(@video['ready']) == 1 rescue nil end
7
- # @!parse attr_reader :failed?
10
+ # @return [Boolean]
8
11
  def failed?() Integer(@video['failed']) == 1 rescue nil end
9
- # @!parse attr_reader :pending?
12
+ # @return [Boolean]
10
13
  def pending?() Integer(@video['pending']) == 1 rescue nil end
11
14
 
12
- # @!parse attr_reader :duration
15
+ # @return [Fixnum]
13
16
  def duration() Integer(@video['duration']) rescue nil end
14
17
 
15
- # @!parse attr_reader :width
18
+ # @return [Fixnum]
16
19
  def width() Integer(@video['width']) rescue nil end
17
- # @!parse attr_reader :height
20
+ # @return [Fixnum]
18
21
  def height() Integer(@video['height']) rescue nil end
19
22
 
20
- # @!parse attr_reader :source_url
23
+ # @return [String]
21
24
  def source_url() @video['source_url'] end
22
- # @!parse attr_reader :download_url
25
+ # @return [String]
23
26
  def download_url() @video['download_url'] end
24
- # @!parse attr_reader :mobile_download_url
27
+ # @return [String]
25
28
  def mobile_download_url() @video['mobile_download_url'] end
26
29
 
27
- # This fetches the {#source\_url}, {#download\_url} and the {#mobile\_download\_url}
30
+ # This fetches the {#source\_url}, {#download\_url} and the {#mobile\_download\_url}.
31
+ # Same as calling `Flickrie.get_video_sizes(video.id)`
32
+ #
33
+ # @return [self]
28
34
  def get_sizes(params = {}, info = nil)
29
35
  info ||= Flickrie.client.get_media_sizes(id, params).body['sizes']
30
36
  @info['usage'] ||= {}
@@ -44,6 +50,8 @@ module Flickrie
44
50
  end
45
51
 
46
52
  # Same as calling `Flickrie.get_video_info(video.id)`.
53
+ #
54
+ # @return [self]
47
55
  def get_info(params = {}, info = nil)
48
56
  super
49
57
  @video = @info['video']
@@ -55,7 +63,7 @@ module Flickrie
55
63
 
56
64
  def initialize(info = {})
57
65
  super
58
- @video = {}
66
+ @video = info['video'] || {}
59
67
  end
60
68
  end
61
69
  end
@@ -0,0 +1,51 @@
1
+ RSpec::Matchers.define :correspond_to do |hash_or_value|
2
+ match { |object| test_recursively(object, hash_or_value) }
3
+
4
+ def test_recursively(object, hash_or_value)
5
+ if hash_or_value.is_a?(Hash)
6
+ iterate(object, hash_or_value) do |actual, expected|
7
+ actual.should == expected
8
+ end
9
+ else
10
+ object.should eq(hash_or_value)
11
+ end
12
+ end
13
+
14
+ def iterate(object, the_rest, &block)
15
+ the_rest.each do |key, value|
16
+ if value.is_a?(Hash)
17
+ iterate(object.send(key), value, &block)
18
+ else
19
+ yield [object.send(key), value]
20
+ end
21
+ end
22
+ end
23
+
24
+ failure_message_for_should do |actual|
25
+ "expected: #{expected.first}\n got: #{actual}\n"
26
+ end
27
+ end
28
+
29
+ RSpec::Matchers.define :be_a_number do
30
+ match { |object| object.instance_of?(Fixnum) }
31
+ end
32
+
33
+ RSpec::Matchers.define :be_a_boolean do
34
+ match { |object| object == true or object == false }
35
+ end
36
+
37
+ RSpec::Matchers.define :be_a_media do
38
+ match do |object|
39
+ object.instance_of?(Flickrie::Photo) \
40
+ or
41
+ object.instance_of?(Flickrie::Video)
42
+ end
43
+ end
44
+
45
+ RSpec::Matchers.define :be_a_photo do
46
+ match { |object| object.instance_of?(Flickrie::Photo) }
47
+ end
48
+
49
+ RSpec::Matchers.define :be_a_video do
50
+ match { |object| object.instance_of?(Flickrie::Video) }
51
+ end
@@ -1,43 +1,124 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Flickrie::ApiMethods do
4
- it "should upload and delete correctly", :vcr, :cassette => "upload and delete" do
5
- media_id = Flickrie.upload(PHOTO_PATH)
6
- Flickrie.public_media_from_user(USER_NSID).map(&:id).should include(media_id)
7
- Flickrie.delete_media(media_id)
8
- Flickrie.public_media_from_user(USER_NSID).map(&:id).should_not include(media_id)
4
+ context "upload" do
5
+ it "should upload", :vcr do
6
+ photo_id = Flickrie.upload(PHOTO_PATH)
7
+ expect { Flickrie.delete_photo(photo_id) }.to_not raise_error
8
+ end
9
+
10
+ it "should upload asynchronously", :vcr do
11
+ ticket_id = Flickrie.upload(PHOTO_PATH, :async => 1)
12
+ ticket = Flickrie.check_upload_tickets(ticket_id).first
13
+ until ticket.complete?
14
+ ticket = Flickrie.check_upload_tickets(ticket_id).first
15
+ end
16
+ expect { Flickrie.delete_photo(ticket.photo_id) }.to_not raise_error
17
+ end
18
+
19
+ it "should replace", :vcr do
20
+ begin
21
+ photo_id = Flickrie.upload(PHOTO_PATH)
22
+ Flickrie.replace(PHOTO_PATH, photo_id)
23
+ rescue => error
24
+ error.message.should == "Not a pro account"
25
+ ensure
26
+ Flickrie.delete_photo(photo_id)
27
+ end
28
+ end
9
29
  end
10
30
 
11
- it "should upload asynchronously correctly", :vcr, :cassette => "asynchronous upload" do
12
- ticket_id = Flickrie.upload(PHOTO_PATH, :async => 1)
13
- begin
14
- ticket = Flickrie.check_upload_tickets([ticket_id]).first
15
- end until ticket.complete?
16
- photo_id = ticket.photo_id
17
- Flickrie.get_photo_info(photo_id).id.should eq(photo_id)
18
- Flickrie.delete_photo(photo_id)
31
+ context "people" do
32
+ it "should get media from user", :vcr do
33
+ Flickrie.media_from_user(USER_NSID).first.id.should_not be_nil
34
+ Flickrie.photos_from_user(USER_NSID).first.id.should_not be_nil
35
+ Flickrie.videos_from_user(USER_NSID).first.id.should_not be_nil
36
+ end
37
+
38
+ it "should get public media from user", :vcr do
39
+ Flickrie.public_media_from_user(USER_NSID).first.id.should_not be_nil
40
+ Flickrie.public_photos_from_user(USER_NSID).first.id.should_not be_nil
41
+ Flickrie.public_videos_from_user(USER_NSID).first.id.should_not be_nil
42
+ end
19
43
  end
20
44
 
21
- it "should replace correctly", :vcr, :cassette => "replace" do
22
- begin
23
- id = Flickrie.upload(PHOTO_PATH)
24
- Flickrie.replace(PHOTO_PATH, id)
25
- rescue => exception
26
- exception.code.should eq(1) # Not a pro account
27
- ensure
28
- Flickrie.delete_media(id)
45
+ # Here I test the media/photo/video aliases of the API methods (because I don't test them elsewhere)
46
+ context "photos" do
47
+ it "should add and remove tags", :vcr do
48
+ %w[media photo video].each do |word|
49
+ id = eval "#{word.upcase}_ID"
50
+ media = Flickrie.send("get_#{word}_info", id)
51
+ tags_before_change = media.tags.join(' ')
52
+ Flickrie.send("add_#{word}_tags", id, "janko")
53
+ media.get_info
54
+ media.tags.join(' ').should eq([tags_before_change, "janko"].join(' '))
55
+ tag_id = media.tags.find { |tag| tag.content == "janko" }.id
56
+ Flickrie.send("remove_#{word}_tag", tag_id)
57
+ media.get_info
58
+ media.tags.join(' ').should eq(tags_before_change)
59
+ end
60
+ end
61
+
62
+ it "should get from contacts", :vcr do
63
+ params = {:include_self => 1, :single_photo => 1}
64
+ Flickrie.media_from_contacts(params).first.id.should_not be_nil
65
+ Flickrie.photos_from_contacts(params).first.id.should_not be_nil
66
+ # Flickrie.videos_from_contacts(params).first.id.should_not be_nil
67
+ end
68
+
69
+ it "should get public from user contacts", :vcr do
70
+ params = {:include_self => 1, :single_photo => 1}
71
+ Flickrie.public_media_from_user_contacts(USER_NSID, params).first.id.should_not be_nil
72
+ Flickrie.public_photos_from_user_contacts(USER_NSID, params).first.id.should_not be_nil
73
+ # Flickrie.public_videos_from_user_contacts(USER_NSID, params).each { |object| object.should be_a_video }
74
+ end
75
+
76
+ it "should get context", :vcr do
77
+ Flickrie.get_media_context(MEDIA_ID).count.should_not be_nil
78
+ Flickrie.get_photo_context(PHOTO_ID).count.should_not be_nil
79
+ Flickrie.get_photo_context(VIDEO_ID).count.should_not be_nil
80
+ end
81
+
82
+ it "should get counts", :vcr do
83
+ dates = [DateTime.parse("19th May 2009"), DateTime.parse("19th May 2012")]
84
+ Flickrie.get_media_counts(:taken_dates => dates.join(',')).first.value.should_not be_nil
85
+ Flickrie.get_photos_counts(:taken_dates => dates.join(',')).first.value.should_not be_nil
86
+ Flickrie.get_videos_counts(:taken_dates => dates.join(',')).first.value.should_not be_nil
87
+ end
88
+
89
+ it "should get exif", :vcr do
90
+ Flickrie.get_photo_exif(PHOTO_ID).exif.should_not be_nil
91
+ Flickrie.get_video_exif(VIDEO_ID).exif.should_not be_nil
92
+ end
93
+
94
+ it "should get favorites", :vcr do
95
+ Flickrie.get_photo_favorites(PHOTO_ID).favorites.should_not be_nil
96
+ Flickrie.get_video_favorites(PHOTO_ID).favorites.should_not be_nil
97
+ end
98
+
99
+ it "should get info", :vcr do
100
+ Flickrie.get_media_info(MEDIA_ID).id.should_not be_nil
101
+ Flickrie.get_photo_info(PHOTO_ID).id.should_not be_nil
102
+ Flickrie.get_video_info(VIDEO_ID).id.should_not be_nil
103
+ end
104
+
105
+ it "should get sizes", :vcr do
106
+ Flickrie.get_photo_sizes(PHOTO_ID).size.should_not be_nil
107
+ Flickrie.get_video_sizes(VIDEO_ID).download_url.should_not be_nil
108
+ end
109
+
110
+ it "should search", :vcr do
111
+ Flickrie.search_media(:user_id => USER_NSID).first.id.should_not be_nil
112
+ Flickrie.search_photos(:user_id => USER_NSID).first.id.should_not be_nil
113
+ Flickrie.search_videos(:user_id => USER_NSID).first.id.should_not be_nil
29
114
  end
30
115
  end
31
116
 
32
- it "should manipulate tags correctly", :vcr, :cassette => "tag manipulation" do
33
- media = Flickrie.get_media_info(PHOTO_ID)
34
- tags_before_change = media.tags.join(' ')
35
- Flickrie.add_media_tags(PHOTO_ID, "janko")
36
- media.get_info
37
- media.tags.join(' ').should eq([tags_before_change, "janko"].join(' '))
38
- tag_id = media.tags.find { |tag| tag.content == "janko" }.id
39
- Flickrie.remove_media_tag(tag_id)
40
- media.get_info
41
- media.tags.join(' ').should eq(tags_before_change)
117
+ context "photosets" do
118
+ it "should get media", :vcr do
119
+ Flickrie.media_from_set(SET_ID).first.id.should_not be_nil
120
+ Flickrie.photos_from_set(SET_ID).first.id.should_not be_nil
121
+ Flickrie.videos_from_set(SET_ID).first.id.should_not be_nil
122
+ end
42
123
  end
43
124
  end
@@ -1,17 +1,15 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Flickrie::Error do
4
- before(:all) do
5
- Flickrie.api_key = nil
6
- end
7
-
8
4
  context "a request was made and failed" do
9
5
  it "should be raised", :vcr do
6
+ Flickrie.api_key = nil
10
7
  expect { Flickrie.get_licenses }.to raise_error(described_class)
11
8
  expect { Flickrie.upload(PHOTO_PATH) }.to raise_error(described_class)
12
9
  end
13
10
 
14
11
  it "should have #code attribute present", :vcr do
12
+ Flickrie.api_key = nil
15
13
  begin
16
14
  Flickrie.get_licenses
17
15
  rescue => exception
@@ -1,17 +1,17 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Flickrie::Instance do
4
- it "should be able to call API methods", :vcr, :cassette => "calling api methods" do
5
- # this is to see if the client and upload_client were reset
6
- Flickrie.get_photo_info(PHOTO_ID)
7
- id = Flickrie.upload(PHOTO_PATH)
8
- Flickrie.delete_photo(id)
9
- Flickrie.access_token = Flickrie.access_secret = nil
4
+ context "client is already initialized" do
5
+ it "should be able to call API methods", :vcr do
6
+ # this is to see if the client and upload_client were reset
7
+ Flickrie.get_photo_info(PHOTO_ID)
8
+ id = Flickrie.upload(PHOTO_PATH)
9
+ Flickrie.delete_photo(id)
10
+ Flickrie.access_token = Flickrie.access_secret = nil
10
11
 
11
- instance = Flickrie::Instance.new(ENV['FLICKR_ACCESS_TOKEN'], ENV['FLICKR_ACCESS_SECRET'])
12
- user = instance.test_login
13
- user.username.should eq(USER_USERNAME)
14
- id = instance.upload(PHOTO_PATH)
15
- instance.delete_photo(id)
12
+ instance = Flickrie::Instance.new(ENV['FLICKR_ACCESS_TOKEN'], ENV['FLICKR_ACCESS_SECRET'])
13
+ user = instance.test_login
14
+ user.username.should eq(USER_USERNAME)
15
+ end
16
16
  end
17
17
  end