flickrmocks 0.8.15 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +3 -0
- data/Gemfile.lock +123 -0
- data/README.rdoc +104 -30
- data/Rakefile +12 -0
- data/flickrmocks.gemspec +3 -1
- data/lib/flickr_mocks/api/api.rb +80 -27
- data/lib/flickr_mocks/api/flickr.rb +69 -23
- data/lib/flickr_mocks/api/helpers.rb +25 -12
- data/lib/flickr_mocks/api/options.rb +71 -53
- data/lib/flickr_mocks/api/sanitize.rb +129 -20
- data/lib/flickr_mocks/fixtures.rb +7 -1
- data/lib/flickr_mocks/flickraw/custom_clone.rb +3 -1
- data/lib/flickr_mocks/flickraw/custom_compare.rb +4 -0
- data/lib/flickr_mocks/flickraw/custom_marshal.rb +7 -2
- data/lib/flickr_mocks/flickraw/flickraw.rb +6 -0
- data/lib/flickr_mocks/helpers.rb +8 -1
- data/lib/flickr_mocks/models/commons_institution.rb +45 -34
- data/lib/flickr_mocks/models/commons_institutions.rb +85 -75
- data/lib/flickr_mocks/models/helpers.rb +13 -6
- data/lib/flickr_mocks/models/models.rb +7 -0
- data/lib/flickr_mocks/models/photo.rb +76 -75
- data/lib/flickr_mocks/models/photo_details.rb +71 -69
- data/lib/flickr_mocks/models/photo_dimensions.rb +80 -78
- data/lib/flickr_mocks/models/photo_search.rb +115 -88
- data/lib/flickr_mocks/models/photo_size.rb +57 -56
- data/lib/flickr_mocks/models/photo_sizes.rb +68 -67
- data/lib/flickr_mocks/models/photos.rb +104 -99
- data/lib/flickr_mocks/stubs.rb +151 -14
- data/lib/flickr_mocks/version.rb +7 -1
- data/spec/api/api_spec.rb +26 -8
- data/spec/api/flickr_spec.rb +19 -19
- data/spec/api/helper_spec.rb +20 -20
- data/spec/api/options_spec.rb +170 -124
- data/spec/api/sanitize_spec.rb +174 -59
- data/spec/base/stubs_spec.rb +37 -74
- data/spec/base/version_spec.rb +11 -4
- data/spec/models/commons_institution_spec.rb +3 -2
- data/spec/models/commons_institutions_spec.rb +34 -5
- data/spec/models/helpers_spec.rb +7 -6
- data/spec/models/photo_details_spec.rb +12 -11
- data/spec/models/photo_dimensions_spec.rb +5 -4
- data/spec/models/photo_search_spec.rb +50 -8
- data/spec/models/photo_size_spec.rb +4 -3
- data/spec/models/photo_sizes_spec.rb +6 -5
- data/spec/models/photo_spec.rb +6 -4
- data/spec/models/photos_spec.rb +9 -7
- data/spec/shared_examples/hash_options/date_hash_option.rb +42 -0
- data/spec/shared_examples/hash_options/page_hash_option.rb +23 -0
- data/spec/shared_examples/hash_options/perpage_hash_option.rb +43 -0
- data/spec/shared_examples/hash_options/tag_mode_hash_option.rb +31 -0
- data/spec/shared_examples/stub_helpers.rb +140 -0
- data/spec/spec_helper.rb +5 -5
- metadata +55 -16
@@ -1,62 +1,80 @@
|
|
1
1
|
module FlickrMocks
|
2
2
|
class Api
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
3
|
+
# encapsulates methods that extract options from user-specified hash. Module is
|
4
|
+
# used internally.
|
5
|
+
module Options
|
6
|
+
# returns parameter hash required for a flickr photo search. Sample usage:
|
7
|
+
#
|
8
|
+
# self.search(:search_terms => 'iran', :tag_mode => 'any')
|
9
|
+
#
|
10
|
+
# Accepted options include:
|
11
|
+
# :search_terms : comma string containing the flickr search tags. Sample string 'lyon,france"
|
12
|
+
# :owner_id : id for the photo. (either :owner_id or :search_terms must be specified
|
13
|
+
# :per_page : optional string containing the maximum number of items to return for a given page
|
14
|
+
# :page : optional string containing page number for the results. When page number is <= 0, it returns 1.
|
15
|
+
# :tag_mode : optional string containing how the tags for :search_terms should be interpreted. Can be either 'any' or 'all'
|
16
|
+
def self.search(params)
|
17
|
+
return {
|
18
|
+
:tags => Api::Sanitize.tags(params[:search_terms]),
|
19
|
+
:user_id => params[:owner_id],
|
20
|
+
:per_page => Api::Sanitize.per_page_hash(params),
|
21
|
+
:page => Api::Sanitize.page_hash(params),
|
22
|
+
:license => Api.default(:license),
|
23
|
+
:media => Api.default(:media),
|
24
|
+
:extras => Api.default(:extras),
|
25
|
+
:tag_mode => Api::Sanitize.tag_mode_hash(params)
|
26
|
+
}
|
27
|
+
end
|
15
28
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
29
|
+
|
30
|
+
# returns parameter hash that is supplied for a interesting photo search. Sample usage:
|
31
|
+
#
|
32
|
+
# self.interesting(:date => '2010-10-10')
|
33
|
+
#
|
34
|
+
# Accepted options include:
|
35
|
+
# :date : string of format 'YYYY-MM-DD'. Photos of this date are retrieved. If none supplied, yesterday's date is used.
|
36
|
+
# :per_page : optional string containing the maximum number of items to return for a given page
|
37
|
+
# :page : optional string containing page number for the results. When page number is <= 0, it returns 1.
|
38
|
+
#
|
39
|
+
def self.interesting(params)
|
40
|
+
return {
|
41
|
+
:date => Api::Sanitize.date_hash(params),
|
42
|
+
:per_page => Api::Sanitize.per_page_hash(params),
|
43
|
+
:page => Api::Sanitize.page_hash(params),
|
44
|
+
:extras => Api.default(:extras)
|
45
|
+
}
|
46
|
+
end
|
24
47
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
:search_terms => self.sanitize_tags(params[:search_terms]),
|
41
|
-
:owner_id => self.sanitize_tags(params[:owner_id]),
|
42
|
-
:base_url => params[:base_url]
|
43
|
-
}
|
44
|
-
end
|
45
|
-
|
46
|
-
def self.interesting_params(params)
|
47
|
-
return {
|
48
|
-
:date => params[:date],
|
49
|
-
:base_url => params[:base_url]
|
50
|
-
}
|
51
|
-
end
|
48
|
+
# returns parameter hash for a single photo. Sample usage:
|
49
|
+
#
|
50
|
+
# self.photo(:photo_id => '123')
|
51
|
+
#
|
52
|
+
# Accepted options include:
|
53
|
+
# :photo_id : string containing photo_id of the photo.
|
54
|
+
# :id : string containing photo id of the photo. It is an alias for :photo_id. If both are present :photo_id takes precedance.
|
55
|
+
# :secret : optional string containing the secret for the photo. If supplied the query is slightly faster.
|
56
|
+
# :photo_secret : optional string containing the secret for the photo. It is an alias for :secret. If both supplied, :secret takes precedance.
|
57
|
+
def self.photo(params)
|
58
|
+
{
|
59
|
+
:photo_id => params[:photo_id] || params[:id] || nil,
|
60
|
+
:secret => params[:photo_secret] || params[:secret] || nil
|
61
|
+
}
|
62
|
+
end
|
52
63
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
64
|
+
# returns parameter hash used for searching for photos of a given author. Sample usage:
|
65
|
+
#
|
66
|
+
# self.search(:owner_id => '1234')
|
67
|
+
#
|
68
|
+
# Accepted options include:
|
69
|
+
# :owner_id : id for the photo. (either :owner_id or :search_terms must be specified
|
70
|
+
# :per_page : optional string containing the maximum number of items to return for a given page
|
71
|
+
# :page : optional string containing page number for the results. When page number is <= 0, it returns 1.
|
72
|
+
def self.author(params)
|
73
|
+
options = Api::Options.search(params)
|
74
|
+
options.delete :tags
|
75
|
+
options
|
76
|
+
end
|
58
77
|
end
|
59
78
|
end
|
60
79
|
|
61
|
-
|
62
80
|
end
|
@@ -1,29 +1,138 @@
|
|
1
1
|
module FlickrMocks
|
2
2
|
class Api
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
# helper methods that help to clean up user supplied values. Module is
|
4
|
+
# used internally.
|
5
|
+
module Sanitize
|
6
|
+
# returns a lowercase stripped version of the supplied comma separated string. Sample usage:
|
7
|
+
#
|
8
|
+
# Api.sanitize_tags('Shiraz , HeLLo goodbye, wow')
|
9
|
+
# returns 'shiraz,hello goodbye,wow'
|
10
|
+
def self.tags(value=nil)
|
11
|
+
case value
|
12
|
+
when nil then
|
13
|
+
nil
|
14
|
+
when String then
|
15
|
+
value.downcase.split(',').map.each do |v| v.strip end.join(',')
|
16
|
+
else
|
17
|
+
raise ArgumentError
|
18
|
+
end
|
19
|
+
end
|
6
20
|
|
7
|
-
|
8
|
-
|
9
|
-
|
21
|
+
# returns lowercase stripped version of the supplied string stored in the :search_terms key of the
|
22
|
+
# supplied hash. Sample usage:
|
23
|
+
#
|
24
|
+
# self.sanitize_tags(:search_terms => 'Shiraz , HeLLo goodbye, wow')
|
25
|
+
# returns 'shiraz,hello goodbye,wow'
|
26
|
+
def self.tags_hash(options={})
|
27
|
+
raise ArgumentError unless options.is_a?(Hash)
|
28
|
+
self.tags(options[:search_terms])
|
29
|
+
end
|
10
30
|
|
11
|
-
|
12
|
-
|
13
|
-
|
31
|
+
# returns the per page entry if supplied otherwise returns the default per page value.
|
32
|
+
# Sample usage:
|
33
|
+
#
|
34
|
+
# self.per_page('10')
|
35
|
+
# returns '10'
|
36
|
+
def self.per_page(value=nil)
|
37
|
+
case value
|
38
|
+
when String then
|
39
|
+
value.to_i > 0 ? value.to_i.to_s : Api.default(:per_page)
|
40
|
+
when Fixnum then
|
41
|
+
value > 0 ? value.to_i.to_s : Api.default(:per_page)
|
42
|
+
when nil then
|
43
|
+
Api.default(:per_page)
|
44
|
+
else
|
45
|
+
raise ArgumentError
|
46
|
+
end
|
47
|
+
end
|
14
48
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
49
|
+
# returns the per page entry stored in the :per_page key of the supplied options hash.
|
50
|
+
# Sample usage:
|
51
|
+
#
|
52
|
+
# self.per_page_hash(:per_page => '10')
|
53
|
+
# returns '10'
|
54
|
+
def self.per_page_hash(options={})
|
55
|
+
if options[:per_page]
|
56
|
+
self.per_page(options[:per_page])
|
57
|
+
elsif options[:perpage]
|
58
|
+
self.per_page(options[:perpage])
|
59
|
+
else
|
60
|
+
self.per_page(nil)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# returns the page number. Ensures that return value is string containing an integer
|
65
|
+
# greater than 0. When nonsensical page supplied, default page '1' is returned. Sample usage:
|
66
|
+
#
|
67
|
+
# self.page('20')
|
68
|
+
# returns '20'
|
69
|
+
def self.page(value={})
|
70
|
+
case value
|
71
|
+
when Fixnum then
|
72
|
+
value > 0 ? value.to_s : Api.default(:page)
|
73
|
+
when NilClass then
|
74
|
+
Api.default(:page)
|
75
|
+
when String
|
76
|
+
value.to_i > 0 ? value.to_i.to_s : Api.default(:page)
|
77
|
+
else
|
78
|
+
raise ArgumentError
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
# returns the page number contained in the :page key of the supplied hash. Sample usage:
|
83
|
+
#
|
84
|
+
# self.page(:page => '20')
|
85
|
+
# returns '20'
|
86
|
+
def self.page_hash(options={})
|
87
|
+
self.page(options[:page])
|
88
|
+
end
|
89
|
+
|
90
|
+
# returns tag mode. It ensures that a valid tag mode is returned. If an invalid
|
91
|
+
# tag_mode is supplied it returns the default tag mode 'all'. Sample usage:
|
92
|
+
#
|
93
|
+
# self.tag_mode('any')
|
94
|
+
# returns 'any'
|
95
|
+
def self.tag_mode(value=nil)
|
96
|
+
case value
|
97
|
+
when String then
|
98
|
+
Api.default(:possible_tag_modes).include?(value.to_s.downcase) ?
|
99
|
+
value.to_s.downcase : Api.default(:tag_mode)
|
100
|
+
when nil then
|
101
|
+
Api.default(:tag_mode)
|
102
|
+
else
|
103
|
+
raise ArgumentError
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
# returns tag_mode contained in the :tag_mode key of the supplied hash. Sample usage:
|
108
|
+
#
|
109
|
+
# self.tag_mode(:tag_mode => 'any')
|
110
|
+
# returns 'any'
|
111
|
+
def self.tag_mode_hash(options={})
|
112
|
+
self.tag_mode(options[:tag_mode].to_s.downcase.strip)
|
113
|
+
end
|
114
|
+
|
115
|
+
# returns a string of format YYYY-MM-DD. Accepts either a Time object or a string as
|
116
|
+
# an argument. If invalid date supplied the string corresponding to yesterday's date is returned.
|
117
|
+
# Sample usage:
|
118
|
+
# self.date('2010-10-10')
|
119
|
+
# returns => '2010-10-10'
|
120
|
+
def self.date(value=nil)
|
121
|
+
case value
|
122
|
+
when String then Api::Helpers.date(value)
|
123
|
+
when Time then value.strftime('%Y-%m-%d')
|
124
|
+
else Api::Helpers.date('yesterday')
|
125
|
+
end
|
126
|
+
end
|
19
127
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
128
|
+
# returns string of format YYYY-MM-DD corresponding to the value stored in the :date
|
129
|
+
# key of the options hash. Sample usage:
|
130
|
+
#
|
131
|
+
# self.date_hash(:date => '2010-10-10')
|
132
|
+
# returns '2010-10-10'
|
133
|
+
def self.date_hash(options={})
|
134
|
+
self.date(options[:date])
|
26
135
|
end
|
27
136
|
end
|
28
137
|
end
|
29
|
-
end
|
138
|
+
end
|
@@ -2,6 +2,12 @@ require 'ostruct'
|
|
2
2
|
require 'singleton'
|
3
3
|
|
4
4
|
module FlickrMocks
|
5
|
+
# contains fixtures for various FlickRaw responses. This class is used internally.
|
6
|
+
# For stubbing FlickrRaw APIs for your Rspec 2.0 please refer to the
|
7
|
+
# FlickrMocks::Stubs class. This is a singleton class. To access the singleton
|
8
|
+
# class instance you can call:
|
9
|
+
#
|
10
|
+
# Fixtures.instance
|
5
11
|
class Fixtures
|
6
12
|
include Singleton
|
7
13
|
attr_accessor :photos,:interesting_photos,:author_photos,:photo,:photo_details,
|
@@ -25,9 +31,9 @@ module FlickrMocks
|
|
25
31
|
@empty_photos = load_fixture(:empty_photos)
|
26
32
|
|
27
33
|
@expected_methods = load_fixture(:expected_methods)
|
28
|
-
|
29
34
|
end
|
30
35
|
|
36
|
+
# returns directory where fixtures are stored.
|
31
37
|
def self.repository
|
32
38
|
File.expand_path(File.dirname(__FILE__) + '/../../spec/fixtures') + '/'
|
33
39
|
end
|
@@ -1,7 +1,9 @@
|
|
1
1
|
module FlickrMocks
|
2
2
|
|
3
|
+
# module is included in classes that wrap the FlickRaw::Response and FlickRaw::ResponseList
|
4
|
+
# objects. Module is used internally.
|
3
5
|
module CustomClone
|
4
|
-
|
6
|
+
# special ruby method that overrides Ruby's cloning method.
|
5
7
|
def initialize_copy(orig)
|
6
8
|
super
|
7
9
|
cloned = @h.clone
|
@@ -1,6 +1,10 @@
|
|
1
1
|
module FlickrMocks
|
2
2
|
|
3
|
+
# module that contains methods that contain custom '==' check. This module is
|
4
|
+
# used internally and is included in the FlickrMocks::Models.
|
3
5
|
module CustomCompare
|
6
|
+
# custom equality method that is added in various classes to override Ruby's default
|
7
|
+
# '==' behavior
|
4
8
|
def ==(other)
|
5
9
|
return false if other.nil?
|
6
10
|
return false unless other.is_a?(self.class)
|
@@ -1,12 +1,16 @@
|
|
1
1
|
module FlickrMocks
|
2
2
|
|
3
|
+
# contains custom methods that allow the marshaling of FlickRaw::Response and
|
4
|
+
# FlickRaw::ResponseList objects. FlickRaw responses contain singleton methods that
|
5
|
+
# can not be marshaled by default. This module is used internally
|
3
6
|
module CustomMarshal
|
4
7
|
|
5
|
-
def self.included(base)
|
8
|
+
def self.included(base)
|
6
9
|
base.extend ClassMethods
|
7
10
|
end
|
8
11
|
|
9
|
-
module ClassMethods
|
12
|
+
module ClassMethods
|
13
|
+
# used to un-marshal FlickRaw responses
|
10
14
|
def _load(string)
|
11
15
|
data = Marshal.load(string)
|
12
16
|
type = data.delete('flickr_type')
|
@@ -14,6 +18,7 @@ module FlickrMocks
|
|
14
18
|
end
|
15
19
|
end
|
16
20
|
|
21
|
+
# used to marshal FlickRaw responses
|
17
22
|
def _dump(level)
|
18
23
|
result = marshal_flickraw(self)
|
19
24
|
result["flickr_type"] = self.flickr_type
|
@@ -1,11 +1,17 @@
|
|
1
|
+
|
2
|
+
# adds custom cloning, marshaling and compare methods to the FlickRaw::Response
|
3
|
+
# and FlickRaw::ResponseList class. These additional methods help in testing
|
4
|
+
# the FlickrMocks models.
|
1
5
|
module FlickRaw
|
2
6
|
|
7
|
+
# adds custom cloning, marshaling and compare methods to FlickRaw::Response class
|
3
8
|
class Response
|
4
9
|
include FlickrMocks::CustomMarshal
|
5
10
|
include FlickrMocks::CustomCompare
|
6
11
|
include FlickrMocks::CustomClone
|
7
12
|
end
|
8
13
|
|
14
|
+
# adds custom cloning, marshaling and compare methods to FlickRaw::ResponseList class
|
9
15
|
class ResponseList
|
10
16
|
include FlickrMocks::CustomMarshal
|
11
17
|
include FlickrMocks::CustomCompare
|
data/lib/flickr_mocks/helpers.rb
CHANGED
@@ -1,16 +1,21 @@
|
|
1
1
|
module FlickrMocks
|
2
|
+
# contains various helper methods for comparing and marshaling FlickRaw::Response and
|
3
|
+
# ResponseList objects.
|
2
4
|
module Helpers
|
3
|
-
|
4
5
|
class << self
|
6
|
+
# returns the file extension used to store the marshaled FlickRaw fixtures
|
5
7
|
def extension
|
6
8
|
".marshal"
|
7
9
|
end
|
8
10
|
|
11
|
+
# returns the file name for the marshaled FlickRaw fixture
|
9
12
|
def fname_fixture(symbol)
|
10
13
|
raise RunTimeError unless symbol.is_a? Symbol
|
11
14
|
symbol.to_s + extension
|
12
15
|
end
|
13
16
|
|
17
|
+
# compares two FlickRaw::Response or two FlickRaw::ResponseList.
|
18
|
+
# It recursively checks the internal state of these two objects.
|
14
19
|
def equivalent?(a,b)
|
15
20
|
return false if a.class != b.class
|
16
21
|
case a
|
@@ -30,6 +35,7 @@ module FlickrMocks
|
|
30
35
|
end
|
31
36
|
end
|
32
37
|
|
38
|
+
# saves the marshaled version of the supplied object into a file
|
33
39
|
def dump(response,file)
|
34
40
|
begin
|
35
41
|
f = File.open(file,'w')
|
@@ -39,6 +45,7 @@ module FlickrMocks
|
|
39
45
|
end
|
40
46
|
end
|
41
47
|
|
48
|
+
# returns the un-marshaled contents of the user-specified file
|
42
49
|
def load(file)
|
43
50
|
begin
|
44
51
|
f=File.open(file,'r')
|
@@ -1,45 +1,55 @@
|
|
1
1
|
|
2
2
|
module FlickrMocks
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
def launch_date
|
9
|
-
@delegated_to_object.date_launch
|
10
|
-
end
|
3
|
+
module Models
|
4
|
+
class CommonsInstitution
|
5
|
+
def initialize(object)
|
6
|
+
self.delegated_to_object = object
|
7
|
+
end
|
11
8
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
9
|
+
# returns the launch date for the commons institution
|
10
|
+
def launch_date
|
11
|
+
@delegated_to_object.date_launch
|
12
|
+
end
|
16
13
|
|
17
|
-
|
18
|
-
|
19
|
-
|
14
|
+
# returns the Owner id for the commons institution
|
15
|
+
def owner_id
|
16
|
+
@delegated_to_object.nsid
|
17
|
+
end
|
18
|
+
alias :owner :owner_id
|
20
19
|
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
# returns name of the commons institution
|
21
|
+
def owner_name
|
22
|
+
@delegated_to_object.name
|
23
|
+
end
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
def license_url
|
30
|
-
get_url(:license)
|
31
|
-
end
|
25
|
+
# returns flickr web address for the institution
|
26
|
+
def flickr_url
|
27
|
+
get_url(:flickr)
|
28
|
+
end
|
32
29
|
|
33
|
-
|
34
|
-
|
35
|
-
|
30
|
+
# returns external web address for the institution
|
31
|
+
def site_url
|
32
|
+
get_url(:site)
|
33
|
+
end
|
36
34
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
35
|
+
# returns the url that describes the licensing
|
36
|
+
def license_url
|
37
|
+
get_url(:license)
|
38
|
+
end
|
39
|
+
|
40
|
+
# returns true if supplied object is equivalent to self
|
41
|
+
def ==(other)
|
42
|
+
@delegated_to_object == other.instance_eval('@delegated_to_object')
|
43
|
+
end
|
44
|
+
|
45
|
+
# customizes the cloning behavior of the object. Internal state of cloned object
|
46
|
+
# will not point to original object.
|
47
|
+
def initialize_copy(orig)
|
48
|
+
super
|
49
|
+
@delegated_to_object = @delegated_to_object.clone
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
43
53
|
def delegated_to_object=(object)
|
44
54
|
raise ArgumentError, "Expected object of class FlickRaw::Response but received #{object.class}" unless object.class == FlickRaw::Response
|
45
55
|
@delegated_to_object = object
|
@@ -52,5 +62,6 @@ module FlickrMocks
|
|
52
62
|
def get_url_index(type)
|
53
63
|
@delegated_to_object.urls.map do |url| url['type'].to_sym end.find_index(type.to_sym)
|
54
64
|
end
|
65
|
+
end
|
55
66
|
end
|
56
67
|
end
|