flickrie 0.0.1

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/lib/flickrie.rb ADDED
@@ -0,0 +1,98 @@
1
+ require 'flickrie/client'
2
+ require 'flickrie/license'
3
+ require 'flickrie/user'
4
+ require 'flickrie/media'
5
+ require 'flickrie/photo'
6
+ require 'flickrie/video'
7
+ require 'flickrie/set'
8
+
9
+ module Flickrie
10
+ class << self
11
+ # people
12
+ def find_user_by_email(email)
13
+ response = client.find_user_by_email(email)
14
+ User.from_find(response.body['user'])
15
+ end
16
+
17
+ def find_user_by_username(username)
18
+ response = client.find_user_by_username(username)
19
+ User.from_find(response.body['user'])
20
+ end
21
+
22
+ def get_user_info(user_nsid)
23
+ response = client.get_user_info(user_nsid)
24
+ User.from_info(response.body['person'])
25
+ end
26
+
27
+ def public_media_from_user(user_nsid, params = {})
28
+ response = client.public_media_from_user(user_nsid, params)
29
+ Media.from_user(response.body['photos'])
30
+ end
31
+ def public_photos_from_user(user_nsid, params = {})
32
+ public_media_from_user(user_nsid, params).select do |media|
33
+ media.is_a?(Photo)
34
+ end
35
+ end
36
+ def public_videos_from_user(user_nsid, params = {})
37
+ public_media_from_user(user_nsid, params).select do |media|
38
+ media.is_a?(Video)
39
+ end
40
+ end
41
+
42
+ # photos
43
+ def get_media_info(media_id)
44
+ response = client.get_media_info(media_id)
45
+ Media.from_info(response.body['photo'])
46
+ end
47
+ alias get_photo_info get_media_info
48
+ alias get_video_info get_media_info
49
+
50
+ def get_photo_sizes(photo_id)
51
+ response = client.get_media_sizes(photo_id)
52
+ Photo.from_sizes(response.body['sizes'])
53
+ end
54
+ def get_video_sizes(video_id)
55
+ response = client.get_media_sizes(video_id)
56
+ Video.from_sizes(response.body['sizes'])
57
+ end
58
+
59
+ def search_media(search_params = {})
60
+ response = client.search_media(search_params)
61
+ Media.from_search(response.body['photos'])
62
+ end
63
+ def search_photos(search_params = {})
64
+ search_media(search_params.merge(:media => 'photos'))
65
+ end
66
+ def search_videos(search_params = {})
67
+ search_media(search_params.merge(:media => 'videos'))
68
+ end
69
+
70
+ # licenses
71
+ def get_licenses
72
+ response = client.get_licenses
73
+ License.from_hash(response.body['licenses']['license'])
74
+ end
75
+
76
+ # photosets
77
+ def get_set_info(set_id)
78
+ response = client.get_set_info(set_id)
79
+ Set.from_info(response.body['photoset'])
80
+ end
81
+
82
+ def sets_from_user(user_nsid)
83
+ response = client.sets_from_user(user_nsid)
84
+ Set.from_user(response.body['photosets']['photoset'], user_nsid)
85
+ end
86
+
87
+ def media_from_set(set_id, params = {})
88
+ response = client.media_from_set(set_id, params)
89
+ Media.from_set(response.body['photoset'])
90
+ end
91
+ def photos_from_set(set_id, params = {})
92
+ media_from_set(set_id, params.merge(:media => 'photos'))
93
+ end
94
+ def videos_from_set(set_id, params = {})
95
+ media_from_set(set_id, params.merge(:media => 'videos'))
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,41 @@
1
+ # encoding: utf-8
2
+ require 'test/unit'
3
+ require 'flickrie/client'
4
+
5
+ class ClientTest < Test::Unit::TestCase
6
+ def setup
7
+ Flickrie.api_key = ENV['FLICKR_API_KEY']
8
+ @client = Flickrie.client
9
+ @set_id = 72157629851991663
10
+ @media_id = 7093038981
11
+ @user_nsid = '67131352@N04'
12
+ end
13
+
14
+ def test_internals
15
+ assert_equal ENV['FLICKR_API_KEY'], Flickrie.api_key
16
+ assert_instance_of Flickrie::Client, @client
17
+ end
18
+
19
+ def test_api_calls
20
+ assert_nothing_raised do
21
+ # people
22
+ @client.find_user_by_email('janko.marohnic@gmail.com')
23
+ @client.find_user_by_username('Janko Marohnić')
24
+ @client.get_user_info(@user_nsid)
25
+ @client.public_media_from_user(@user_nsid)
26
+
27
+ # photos
28
+ @client.get_media_info(@media_id)
29
+ @client.get_media_sizes(@media_id)
30
+ @client.search_media(:user_id => @user_nsid)
31
+
32
+ # licenses
33
+ @client.get_licenses
34
+
35
+ # photosets
36
+ @client.get_set_info(@set_id)
37
+ @client.sets_from_user(@user_nsid)
38
+ @client.media_from_set(@set_id)
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,30 @@
1
+ require 'test/unit'
2
+ require 'flickrie'
3
+
4
+ Flickrie::License.instance_eval do
5
+ def public_response_array
6
+ response_array
7
+ end
8
+ end
9
+
10
+ class LicenseTest < Test::Unit::TestCase
11
+ def setup
12
+ Flickrie.api_key = ENV['FLICKR_API_KEY']
13
+ end
14
+
15
+ def test_licenses_staying_the_same
16
+ licenses_array = Flickrie.client.get_licenses.body['licenses']['license']
17
+ assert_equal licenses_array.sort_by { |hash| hash['id'] },
18
+ Flickrie::License.public_response_array
19
+ end
20
+
21
+ def test_get_licenses
22
+ licenses = Flickrie.get_licenses
23
+
24
+ licenses.each do |license|
25
+ assert_includes ('0'..'8'), license.id
26
+ assert_instance_of String, license.name
27
+ assert_instance_of String, license.url
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,21 @@
1
+ require 'test/unit'
2
+ require 'flickrie/location'
3
+
4
+ class LocationTest < Test::Unit::TestCase
5
+ def test_attributes_returning_nil
6
+ location = Flickrie::Location.new
7
+
8
+ assert_nil location.latitude
9
+ assert_nil location.longitude
10
+ assert_nil location.accuracy
11
+ assert_nil location.context
12
+ assert_nil location.place_id
13
+ assert_nil location.woeid
14
+
15
+ assert_nil location.neighbourhood
16
+ assert_nil location.locality
17
+ assert_nil location.county
18
+ assert_nil location.region
19
+ assert_nil location.country
20
+ end
21
+ end
@@ -0,0 +1,309 @@
1
+ # encoding: utf-8
2
+ require 'test/unit'
3
+ require 'flickrie'
4
+
5
+ Flickrie::Photo.instance_eval do
6
+ def public_new(*args)
7
+ new(*args)
8
+ end
9
+ end
10
+
11
+ class MediaTest < Test::Unit::TestCase
12
+ def setup
13
+ Flickrie.api_key = ENV['FLICKR_API_KEY']
14
+ @media_id = 6946979188
15
+ @set_id = 72157629851991663
16
+ @user_nsid = '67131352@N04'
17
+
18
+ # license,date_upload,date_taken,owner_name,icon_server,original_format,last_update,geo,tags,machine_tags,o_dims,views,media,path_alias,url_sq,url_q,url_t,url_s,url_n,url_m,url_z,url_c,url_l,url_o
19
+ @all_extras = %w[license date_upload date_taken owner_name
20
+ icon_server original_format last_update geo tags machine_tags
21
+ o_dims views media path_alias
22
+ url_sq url_q url_t url_s url_n url_m url_z url_c url_l url_o]
23
+ end
24
+
25
+ def test_get_media_info
26
+ get_info_assertions(Flickrie.get_media_info(@media_id))
27
+ get_info_assertions(Flickrie::Photo.public_new('id' => @media_id.to_s).get_info)
28
+ end
29
+
30
+ def get_info_assertions(media)
31
+ assert_equal '6946979188', media.id
32
+ assert_equal '25bb44852b', media.secret
33
+ assert_equal '7049', media.server
34
+ assert_equal 8, media.farm
35
+ assert_equal 'IMG_0796', media.title
36
+ assert_equal 'luka', media.tags
37
+ assert_equal '', media.machine_tags
38
+ assert_equal 1, media.views_count
39
+ assert_equal 1, media.comments_count
40
+ assert_equal '0', media.license.id
41
+ assert_equal 0, media.safety_level
42
+ assert_equal 90, media.rotation
43
+ assert_equal 'Test', media.description
44
+ assert_not_nil media.url
45
+
46
+ # Time
47
+ assert_instance_of Time, media.uploaded_at
48
+ assert_instance_of Time, media.updated_at
49
+ assert_instance_of Time, media.taken_at
50
+ assert_equal 0, media.taken_at_granularity
51
+ assert_instance_of Time, media.posted_at
52
+
53
+ # Owner
54
+ assert_equal '67131352@N04', media.owner.nsid
55
+ assert_equal 'Janko Marohnić', media.owner.username
56
+ assert_equal 'Janko Marohnić', media.owner.real_name
57
+ assert_equal 'Zagreb, Croatia', media.owner.location
58
+ assert_equal '5464', media.owner.icon_server
59
+ assert_equal 6, media.owner.icon_farm
60
+ refute media.owner.buddy_icon_url.empty?
61
+
62
+ # Predicates
63
+ assert_equal true, media.visibility.public?
64
+ assert_equal false, media.visibility.friends?
65
+ assert_equal false, media.visibility.family?
66
+ assert_equal nil, media.visibility.contacts?
67
+
68
+ assert_equal false, media.can_comment?
69
+ assert_equal false, media.can_add_meta?
70
+ assert_equal true, media.can_everyone_comment?
71
+ assert_equal false, media.can_everyone_add_meta?
72
+
73
+ assert_equal true, media.can_download?
74
+ assert_equal false, media.can_blog?
75
+ assert_equal false, media.can_print?
76
+ assert_equal false, media.can_share?
77
+
78
+ assert_equal false, media.has_people?
79
+
80
+ assert_equal true, media.safe?
81
+ assert_equal false, media.moderate?
82
+ assert_equal false, media.restricted?
83
+
84
+ assert_equal false, media.favorite?
85
+
86
+ assert_equal true, media.geo_permissions.public?
87
+ assert_equal false, media.geo_permissions.contacts?
88
+ assert_equal false, media.geo_permissions.friends?
89
+ assert_equal false, media.geo_permissions.family?
90
+
91
+ # Notes
92
+ note = media.notes.first
93
+ assert_equal '72157629487842968', note.id
94
+ assert_equal '67131352@N04', note.author.nsid
95
+ assert_equal 'Janko Marohnić', note.author.username
96
+ assert_equal [316, 0], note.coordinates
97
+ assert_equal [59, 50], [note.width, note.height]
98
+ assert_equal 'Test', note.content
99
+
100
+ # Location
101
+ location = media.location
102
+
103
+ assert_equal 45.807258, location.latitude
104
+ assert_equal 15.967599, location.longitude
105
+ assert_equal '11', location.accuracy
106
+ assert_equal '0', location.context
107
+
108
+ assert_equal nil, location.neighbourhood
109
+ assert_equal 'Zagreb', location.locality.name
110
+ assert_equal '00j4IylZV7scWik', location.locality.place_id
111
+ assert_equal '851128', location.locality.woeid
112
+ assert_equal 'Zagreb', location.county.name
113
+ assert_equal '306dHrhQV7o6jm.ZUQ', location.county.place_id
114
+ assert_equal '15022257', location.county.woeid
115
+ assert_equal 'Grad Zagreb', location.region.name
116
+ assert_equal 'Js1DU.pTUrpBCIKhVw', location.region.place_id
117
+ assert_equal '20070170', location.region.woeid
118
+ assert_equal 'Croatia', location.country.name
119
+ assert_equal 'FunRCI5TUb6a6soTyw', location.country.place_id
120
+ assert_equal '23424843', location.country.woeid
121
+
122
+ assert_equal '00j4IylZV7scWik', location.place_id
123
+ assert_equal '851128', location.woeid
124
+ end
125
+
126
+ def test_media_from_set
127
+ media = Flickrie.media_from_set(@set_id, :extras => @all_extras).
128
+ find { |media| media.id.to_i == @media_id }
129
+
130
+ assert_equal '6946979188', media.id
131
+ assert_equal '25bb44852b', media.secret
132
+ assert_equal '7049', media.server
133
+ assert_equal 8, media.farm
134
+ assert_equal 'IMG_0796', media.title
135
+ assert_equal 'luka', media.tags
136
+ assert_equal '', media.machine_tags
137
+ assert_equal 1, media.views_count
138
+ assert_equal '0', media.license.id
139
+ assert_equal true, media.primary?
140
+ assert_not_nil media.url
141
+ assert_equal 'ready', media.media_status
142
+
143
+ # Time
144
+ assert_instance_of Time, media.uploaded_at
145
+ assert_instance_of Time, media.updated_at
146
+ assert_instance_of Time, media.taken_at
147
+ assert_equal 0, media.taken_at_granularity
148
+
149
+ # Location
150
+ assert_equal 45.807258, media.location.latitude
151
+ assert_equal 15.967599, media.location.longitude
152
+ assert_equal '11', media.location.accuracy
153
+ assert_equal '0', media.location.context.to_s
154
+ assert_equal '00j4IylZV7scWik', media.location.place_id
155
+ assert_equal '851128', media.location.woeid
156
+ assert_equal true, media.geo_permissions.public?
157
+ assert_equal false, media.geo_permissions.contacts?
158
+ assert_equal false, media.geo_permissions.friends?
159
+ assert_equal false, media.geo_permissions.family?
160
+
161
+ # Owner
162
+ assert_equal '67131352@N04', media.owner.nsid
163
+ assert_equal 'Janko Marohnić', media.owner.username
164
+ assert_equal '5464', media.owner.icon_server
165
+ assert_equal 6, media.owner.icon_farm
166
+ refute media.owner.buddy_icon_url.empty?
167
+ end
168
+
169
+ def test_public_media_from_user
170
+ media = Flickrie.public_media_from_user(@user_nsid, :extras => @all_extras).
171
+ find { |media| media.id.to_i == @media_id }
172
+
173
+ assert_equal '6946979188', media.id
174
+ assert_equal '25bb44852b', media.secret
175
+ assert_equal '7049', media.server
176
+ assert_equal 8, media.farm
177
+ assert_equal 'IMG_0796', media.title
178
+ assert_equal 'luka', media.tags
179
+ assert_equal '', media.machine_tags
180
+ assert_equal 1, media.views_count
181
+ assert_equal '0', media.license.id
182
+ assert_not_nil media.url
183
+ assert_equal 'ready', media.media_status
184
+
185
+ # Time
186
+ assert_instance_of Time, media.uploaded_at
187
+ assert_instance_of Time, media.updated_at
188
+ assert_instance_of Time, media.taken_at
189
+ assert_equal 0, media.taken_at_granularity
190
+
191
+ # Location
192
+ assert_equal 45.807258, media.location.latitude
193
+ assert_equal 15.967599, media.location.longitude
194
+ assert_equal '11', media.location.accuracy
195
+ assert_equal '0', media.location.context.to_s
196
+ assert_equal '00j4IylZV7scWik', media.location.place_id
197
+ assert_equal '851128', media.location.woeid
198
+ assert_equal true, media.geo_permissions.public?
199
+ assert_equal false, media.geo_permissions.contacts?
200
+ assert_equal false, media.geo_permissions.friends?
201
+ assert_equal false, media.geo_permissions.family?
202
+
203
+ # Owner
204
+ assert_equal '67131352@N04', media.owner.nsid
205
+ assert_equal 'Janko Marohnić', media.owner.username
206
+ assert_equal '5464', media.owner.icon_server
207
+ assert_equal 6, media.owner.icon_farm
208
+ refute media.owner.buddy_icon_url.empty?
209
+
210
+ # Visibility (This is the difference from Flickrie.media_from_set)
211
+ assert_equal true, media.visibility.public?
212
+ assert_equal false, media.visibility.friends?
213
+ assert_equal false, media.visibility.family?
214
+ assert_equal nil, media.visibility.contacts?
215
+ end
216
+
217
+ def test_search_media
218
+ media = Flickrie.search_media(:user_id => @user_nsid, :extras => @all_extras).
219
+ find { |media| media.id.to_i == @media_id }
220
+
221
+ assert_equal '6946979188', media.id
222
+ assert_equal '25bb44852b', media.secret
223
+ assert_equal '7049', media.server
224
+ assert_equal 8, media.farm
225
+ assert_equal 'IMG_0796', media.title
226
+ assert_equal 'luka', media.tags
227
+ assert_equal '', media.machine_tags
228
+ assert_equal 1, media.views_count
229
+ assert_equal '0', media.license.id
230
+ assert_not_nil media.url
231
+ assert_equal 'ready', media.media_status
232
+
233
+ # Time
234
+ assert_instance_of Time, media.uploaded_at
235
+ assert_instance_of Time, media.updated_at
236
+ assert_instance_of Time, media.taken_at
237
+ assert_equal 0, media.taken_at_granularity
238
+
239
+ # Location
240
+ assert_equal 45.807258, media.location.latitude
241
+ assert_equal 15.967599, media.location.longitude
242
+ assert_equal '11', media.location.accuracy
243
+ assert_equal '0', media.location.context.to_s
244
+ assert_equal '00j4IylZV7scWik', media.location.place_id
245
+ assert_equal '851128', media.location.woeid
246
+ assert_equal true, media.geo_permissions.public?
247
+ assert_equal false, media.geo_permissions.contacts?
248
+ assert_equal false, media.geo_permissions.friends?
249
+ assert_equal false, media.geo_permissions.family?
250
+
251
+ # Owner
252
+ assert_equal '67131352@N04', media.owner.nsid
253
+ assert_equal 'Janko Marohnić', media.owner.username
254
+ assert_equal '5464', media.owner.icon_server
255
+ assert_equal 6, media.owner.icon_farm
256
+ refute media.owner.buddy_icon_url.empty?
257
+
258
+ # Visibility (This is the difference from Flickrie.media_from_set)
259
+ assert_equal true, media.visibility.public?
260
+ assert_equal false, media.visibility.friends?
261
+ assert_equal false, media.visibility.family?
262
+ assert_equal nil, media.visibility.contacts?
263
+ end
264
+
265
+ def test_methods_returning_nil
266
+ media = Flickrie::Photo.new
267
+
268
+ assert_nil media.id
269
+ assert_nil media.secret
270
+ assert_nil media.server
271
+ assert_nil media.farm
272
+ assert_nil media.title
273
+ assert_nil media.description
274
+ assert_nil media.tags
275
+ assert_nil media.machine_tags
276
+ assert_nil media.media_status
277
+ assert_nil media.path_alias
278
+ assert_nil media.views_count
279
+ assert_nil media.comments_count
280
+ assert_nil media.location
281
+ assert_nil media.geo_permissions
282
+ assert_nil media.license
283
+ assert_nil media.posted_at
284
+ assert_nil media.uploaded_at
285
+ assert_nil media.updated_at
286
+ assert_nil media.taken_at
287
+ assert_nil media.taken_at_granularity
288
+ assert_nil media.owner
289
+ assert_nil media.safety_level
290
+ assert_nil media.safe?
291
+ assert_nil media.moderate?
292
+ assert_nil media.restricted?
293
+ assert_nil media.url
294
+ assert_nil media.visibility
295
+ assert_nil media.primary?
296
+ assert_nil media.favorite?
297
+ assert_nil media.can_comment?
298
+ assert_nil media.can_add_meta?
299
+ assert_nil media.can_everyone_comment?
300
+ assert_nil media.can_everyone_add_meta?
301
+ assert_nil media.can_download?
302
+ assert_nil media.can_blog?
303
+ assert_nil media.can_print?
304
+ assert_nil media.can_share?
305
+ assert_nil media.has_people?
306
+ assert_nil media.notes
307
+ assert_nil media.media_status
308
+ end
309
+ end
@@ -0,0 +1,149 @@
1
+ # encoding: utf-8
2
+ require 'test/unit'
3
+ require 'flickrie'
4
+
5
+ Flickrie::Photo.instance_eval do
6
+ def public_new(*args)
7
+ new(*args)
8
+ end
9
+ end
10
+
11
+ class PhotoTest < Test::Unit::TestCase
12
+ def setup
13
+ Flickrie.api_key = ENV['FLICKR_API_KEY']
14
+ @photo_id = 6946979188
15
+ @set_id = 72157629851991663
16
+ @user_nsid = '67131352@N04'
17
+
18
+ # license,date_upload,date_taken,owner_name,icon_server,original_format,last_update,geo,tags,machine_tags,o_dims,views,media,path_alias,url_sq,url_q,url_t,url_s,url_n,url_m,url_z,url_c,url_l,url_o
19
+ @all_extras = %w[license date_upload date_taken owner_name
20
+ icon_server original_format last_update geo tags machine_tags
21
+ o_dims views media path_alias
22
+ url_sq url_q url_t url_s url_n url_m url_z url_c url_l url_o]
23
+ end
24
+
25
+ def test_photos_from_set
26
+ photo = Flickrie.photos_from_set(@set_id, :extras => @all_extras).
27
+ find { |photo| photo.id.to_i == @photo_id }
28
+
29
+ assert_sizes(photo)
30
+ end
31
+
32
+ def test_public_photos_from_user
33
+ photo = Flickrie.public_photos_from_user(@user_nsid, :extras => @all_extras).
34
+ find { |photo| photo.id.to_i == @photo_id }
35
+
36
+ assert_sizes(photo, :exclude => ['Square 150', 'Small 320', 'Medium 800'])
37
+ end
38
+
39
+ def test_get_photo_sizes
40
+ get_sizes_assertions(Flickrie.get_photo_sizes(@photo_id))
41
+ get_sizes_assertions(Flickrie::Photo.public_new('id' => @photo_id.to_s).get_sizes)
42
+ end
43
+
44
+ def get_sizes_assertions(photo)
45
+ assert_equal true, photo.can_download?
46
+ assert_equal false, photo.can_blog?
47
+ assert_equal false, photo.can_print?
48
+
49
+ assert_sizes(photo)
50
+ end
51
+
52
+ def test_search_photos
53
+ photo = Flickrie.search_photos(:user_id => @user_nsid, :extras => @all_extras).
54
+ find { |photo| photo.id.to_i == @photo_id }
55
+
56
+ assert_sizes(photo)
57
+ end
58
+
59
+ def assert_sizes(photo, options = {})
60
+ options[:exclude] ||= []
61
+ [
62
+ [[photo.square(75), photo.square75], ['Square 75', '75x75']],
63
+ [[photo.thumbnail], ['Thumbnail', '75x100']],
64
+ [[photo.square(150), photo.square150], ['Square 150', '150x150']],
65
+ [[photo.small(240), photo.small240], ['Small 240', '180x240']],
66
+ [[photo.small(320), photo.small320], ['Small 320', '240x320']],
67
+ [[photo.medium(500), photo.medium500], ['Medium 500', '375x500']],
68
+ [[photo.medium(640), photo.medium640], ['Medium 640', '480x640']],
69
+ [[photo.medium(800), photo.medium800], ['Medium 800', '600x800']],
70
+ [[photo.large(1024), photo.large1024], ['Large 1024', '768x1024']]
71
+ ].
72
+ reject { |_, expected_values| options[:exclude].include?(expected_values.first) }.
73
+ each do |photos, expected_values|
74
+ flickr_size, size = expected_values
75
+ photos.each do |photo|
76
+ assert_equal flickr_size, photo.size
77
+ assert_equal size, "#{photo.width}x#{photo.height}", "Non bang versions"
78
+ refute photo.source_url.empty?
79
+ end
80
+ end
81
+
82
+ [
83
+ [[proc { photo.square!(75) }, proc { photo.square75! }], ['Square 75', '75x75']],
84
+ [[proc { photo.thumbnail! }], ['Thumbnail', '75x100']],
85
+ [[proc { photo.square!(150) }, proc { photo.square150! }], ['Square 150', '150x150']],
86
+ [[proc { photo.small!(240) }, proc { photo.small240! }], ['Small 240', '180x240']],
87
+ [[proc { photo.small!(320) }, proc { photo.small320! }], ['Small 320', '240x320']],
88
+ [[proc { photo.medium!(500) }, proc { photo.medium500! }], ['Medium 500', '375x500']],
89
+ [[proc { photo.medium!(640) }, proc { photo.medium640! }], ['Medium 640', '480x640']],
90
+ [[proc { photo.medium!(800) }, proc { photo.medium800! }], ['Medium 800', '600x800']],
91
+ [[proc { photo.large!(1024) }, proc { photo.large1024! }], ['Large 1024', '768x1024']]
92
+ ].
93
+ reject { |_, expected_values| options[:exclude].include?(expected_values.first) }.
94
+ each do |proks, expected_values|
95
+ flickr_size, size = expected_values
96
+ proks.each do |prok|
97
+ prok.call
98
+ assert_equal flickr_size, photo.size
99
+ assert_equal size, "#{photo.width}x#{photo.height}", "Bang versions"
100
+ refute photo.source_url.empty?
101
+ end
102
+ end
103
+ end
104
+
105
+ def test_methods_returning_nil
106
+ photo = Flickrie::Photo.new
107
+
108
+ assert_nil photo.width
109
+ assert_nil photo.height
110
+ assert_nil photo.source_url
111
+ assert_nil photo.rotation
112
+ assert_equal [], photo.available_sizes
113
+ assert_equal nil, photo.size
114
+
115
+ [
116
+ photo.square(75), photo.square(150), photo.thumbnail,
117
+ photo.small(240), photo.small(320), photo.medium(500),
118
+ photo.medium(640), photo.medium(800), photo.large(1024),
119
+ photo.original, photo.square75, photo.square150,
120
+ photo.small240, photo.small320, photo.medium500,
121
+ photo.medium640, photo.medium800, photo.large1024,
122
+ photo.largest
123
+ ].
124
+ each do |photo|
125
+ assert_nil photo.source_url
126
+ assert_nil photo.width
127
+ assert_nil photo.height
128
+ end
129
+
130
+ [
131
+ proc { photo.square!(75) }, proc { photo.square!(150) },
132
+ proc { photo.thumbnail! }, proc { photo.small!(240) },
133
+ proc { photo.small!(320) }, proc { photo.medium!(500) },
134
+ proc { photo.medium!(640) }, proc { photo.medium!(800) },
135
+ proc { photo.large!(1024) }, proc { photo.original! },
136
+ proc { photo.square75! }, proc { photo.square150! },
137
+ proc { photo.small240! }, proc { photo.small320! },
138
+ proc { photo.medium500! }, proc { photo.medium640! },
139
+ proc { photo.medium800! }, proc { photo.large1024! },
140
+ proc { photo.largest! }
141
+ ].
142
+ each do |prok|
143
+ prok.call
144
+ assert_nil photo.source_url
145
+ assert_nil photo.width
146
+ assert_nil photo.height
147
+ end
148
+ end
149
+ end