flickrie 1.0.2 → 1.1.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 (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