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,8 +1,9 @@
|
|
1
|
-
require 'spec_helper'
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
|
-
describe APP::PhotoSearch do
|
3
|
+
describe APP::Models::PhotoSearch do
|
4
4
|
let(:api) {APP::Api}
|
5
|
-
let(:
|
5
|
+
let(:models){APP::Models}
|
6
|
+
let(:klass) {models::PhotoSearch}
|
6
7
|
let(:fixtures){APP::Fixtures.instance}
|
7
8
|
let(:options) {{:search_terms => 'iran', :page => '20', :date => '2010-10-03'}}
|
8
9
|
|
@@ -29,8 +30,8 @@ describe APP::PhotoSearch do
|
|
29
30
|
it "returns object of proper class when photos responselist object specified" do
|
30
31
|
klass.new(fixtures.photos, options).class.should == klass
|
31
32
|
end
|
32
|
-
it "returns object of proper class when
|
33
|
-
klass.new(
|
33
|
+
it "returns object of proper class when Photos object is provided" do
|
34
|
+
klass.new(models::Photos.new(fixtures.photos),options).class.should == klass
|
34
35
|
end
|
35
36
|
it "raises an error when an array is provided" do
|
36
37
|
expect {
|
@@ -72,6 +73,47 @@ describe APP::PhotoSearch do
|
|
72
73
|
end
|
73
74
|
|
74
75
|
context "instance methods" do
|
76
|
+
specify {subject.should respond_to(:extract_date)}
|
77
|
+
context "#extract_date" do
|
78
|
+
it "returns nil when :date is nil in option" do
|
79
|
+
subject.extract_date(:date => nil).should be_nil
|
80
|
+
end
|
81
|
+
it "returns supplied date when proper date is supplied as string" do
|
82
|
+
subject.extract_date(:date => '2010-10-10').should == '2010-10-10'
|
83
|
+
end
|
84
|
+
it "raises error when supplied date is an array" do
|
85
|
+
expect {
|
86
|
+
subject.extract_date(:date => [])
|
87
|
+
}.to raise_error(ArgumentError)
|
88
|
+
end
|
89
|
+
it "raises an error when supplied date is ambiguous" do
|
90
|
+
expect{
|
91
|
+
subject.extract_date(:date => '2010')
|
92
|
+
}.to raise_error(ArgumentError)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
specify {subject.should respond_to(:extract_search_terms)}
|
97
|
+
context "#extract_search_terms" do
|
98
|
+
it "returns lower-cased and stripped version of :serch_terms" do
|
99
|
+
subject.extract_search_terms(:search_terms => 'Iran , Shiraz Hello, goodbye').should ==
|
100
|
+
'iran,shiraz hello,goodbye'
|
101
|
+
end
|
102
|
+
it "returns nil when :search_terms is nil" do
|
103
|
+
subject.extract_search_terms(:search_terms => nil).should be_nil
|
104
|
+
end
|
105
|
+
it "returns nil when :saerch_terms is not specified" do
|
106
|
+
subject.extract_search_terms({}).should be_nil
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
specify {subject.should respond_to(:extract_page)}
|
111
|
+
context "#extract_page" do
|
112
|
+
let(:method){:extract_page}
|
113
|
+
let(:options){{}}
|
114
|
+
it_behaves_like "page hash option"
|
115
|
+
end
|
116
|
+
|
75
117
|
specify {subject.should respond_to(:search_terms)}
|
76
118
|
context "#search_terms" do
|
77
119
|
let(:search_terms){'shiraz,iran'}
|
@@ -143,7 +185,7 @@ describe APP::PhotoSearch do
|
|
143
185
|
end
|
144
186
|
it "returns yesterday for date when no options are specified" do
|
145
187
|
options = {:date => nil, :search_terms => nil}
|
146
|
-
klass.new(fixtures.photos,options).url_params.should == {:date =>
|
188
|
+
klass.new(fixtures.photos,options).url_params.should == {:date => api::Helpers.date}
|
147
189
|
end
|
148
190
|
it "returns date when valid date and no search terms is provided" do
|
149
191
|
options = {:date => '2010-01-01', :search_terms => nil}
|
@@ -234,8 +276,8 @@ describe APP::PhotoSearch do
|
|
234
276
|
specify {subject.should respond_to(:delegated_instance_methods)}
|
235
277
|
context "#delegated_instance_methods" do
|
236
278
|
it "returns array accessor methods as well as other methods delegated to photos" do
|
237
|
-
subject.delegated_instance_methods.sort.should == (
|
238
|
-
|
279
|
+
subject.delegated_instance_methods.sort.should == (models::PhotoSearch.delegated_instance_methods +
|
280
|
+
models::Helpers.array_accessor_methods).sort
|
239
281
|
end
|
240
282
|
end
|
241
283
|
end
|
@@ -1,7 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe APP::PhotoSize do
|
4
|
-
let(:
|
3
|
+
describe APP::Models::PhotoSize do
|
4
|
+
let(:models){APP::Models}
|
5
|
+
let(:klass){models::PhotoSize}
|
5
6
|
let(:fixtures){APP::Fixtures.instance}
|
6
7
|
let(:size_fixture){fixtures.photo_size}
|
7
8
|
|
@@ -10,7 +11,7 @@ describe APP::PhotoSize do
|
|
10
11
|
context "#initialize" do
|
11
12
|
context "size fixture" do
|
12
13
|
it "returns object of proper class" do
|
13
|
-
subject.should be_a(
|
14
|
+
subject.should be_a(models::PhotoSize)
|
14
15
|
end
|
15
16
|
end
|
16
17
|
context "FlickRaw::ResponseList object" do
|
@@ -1,15 +1,16 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe APP::PhotoSizes do
|
4
|
-
let(:
|
3
|
+
describe APP::Models::PhotoSizes do
|
4
|
+
let(:models){APP::Models}
|
5
|
+
let(:klass){models::PhotoSizes}
|
5
6
|
let(:fixtures){APP::Fixtures.instance}
|
6
7
|
|
7
|
-
subject {
|
8
|
+
subject {models::PhotoSizes.new fixtures.photo_sizes}
|
8
9
|
|
9
10
|
context "initialize" do
|
10
11
|
context "with FlickRaw::ResponseList" do
|
11
12
|
it "returns object of proper class" do
|
12
|
-
klass.new(fixtures.photo_sizes).should be_a(
|
13
|
+
klass.new(fixtures.photo_sizes).should be_a(models::PhotoSizes)
|
13
14
|
end
|
14
15
|
end
|
15
16
|
context "with FlickRaw::Response" do
|
@@ -123,7 +124,7 @@ describe APP::PhotoSizes do
|
|
123
124
|
context "#delegated_instance_methods" do
|
124
125
|
it "returns array accessor methods + size methods" do
|
125
126
|
subject.delegated_instance_methods.sort.should == (subject.possible_sizes +
|
126
|
-
|
127
|
+
models::Helpers.array_accessor_methods).sort
|
127
128
|
end
|
128
129
|
end
|
129
130
|
|
data/spec/models/photo_spec.rb
CHANGED
@@ -1,24 +1,26 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe APP::Photo do
|
4
|
-
let(:
|
3
|
+
describe APP::Models::Photo do
|
4
|
+
let(:models){APP::Models}
|
5
|
+
let(:klass){models::Photo}
|
5
6
|
let(:fixtures){APP::Fixtures.instance}
|
6
7
|
let(:basic_photo){klass.new fixtures.photo}
|
7
8
|
let(:extended_photo){klass.new fixtures.photo_details}
|
8
9
|
|
10
|
+
|
9
11
|
subject {basic_photo}
|
10
12
|
|
11
13
|
context "initialize" do
|
12
14
|
context "with extended photo" do
|
13
15
|
it "returns object of proper class" do
|
14
|
-
klass.new(fixtures.photo_details).should be_a(
|
16
|
+
klass.new(fixtures.photo_details).should be_a(models::Photo)
|
15
17
|
end
|
16
18
|
end
|
17
19
|
|
18
20
|
context "with basic photo" do
|
19
21
|
subject {klass.new fixtures.photo}
|
20
22
|
it "returns object of proper class" do
|
21
|
-
klass.new(fixtures.photo).should be_a(
|
23
|
+
klass.new(fixtures.photo).should be_a(models::Photo)
|
22
24
|
end
|
23
25
|
end
|
24
26
|
context "with nil" do
|
data/spec/models/photos_spec.rb
CHANGED
@@ -1,14 +1,16 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe APP::Photos do
|
3
|
+
describe APP::Models::Photos do
|
4
4
|
let(:api) {APP::Api}
|
5
|
-
let(:
|
5
|
+
let(:models){APP::Models}
|
6
|
+
let(:klass) {models::Photos}
|
6
7
|
let(:fixtures){APP::Fixtures.instance}
|
7
8
|
let(:photos_fixture) {fixtures.photos}
|
8
9
|
let(:interesting_photos_fixture){fixtures.interesting_photos}
|
9
10
|
|
11
|
+
|
10
12
|
subject {klass.new photos_fixture}
|
11
|
-
let(:max_pages){subject.
|
13
|
+
let(:max_pages){subject.max_entries/subject.per_page}
|
12
14
|
|
13
15
|
context "class methods" do
|
14
16
|
specify { klass.should respond_to(:defaults)}
|
@@ -39,8 +41,8 @@ describe APP::Photos do
|
|
39
41
|
specify { klass.defaults.should have_key(:max_entries) }
|
40
42
|
specify { klass.defaults.should have_key(:per_page) }
|
41
43
|
|
42
|
-
it "returns
|
43
|
-
klass.defaults[:per_page].should ==
|
44
|
+
it "returns 200 for argument :per_page" do
|
45
|
+
klass.defaults[:per_page].should == FlickrMocks::Api.default(:per_page).to_i
|
44
46
|
end
|
45
47
|
it "returns 4000 for argument :max_entries" do
|
46
48
|
klass.defaults[:max_entries].should == 4000
|
@@ -181,7 +183,7 @@ describe APP::Photos do
|
|
181
183
|
end
|
182
184
|
it "returns Array containing elements of class FlickrMocks::Photo " do
|
183
185
|
subject.photos.each do |photo|
|
184
|
-
photo.should be_instance_of(
|
186
|
+
photo.should be_instance_of(models::Photo)
|
185
187
|
end
|
186
188
|
end
|
187
189
|
it "returns expected number of photos" do
|
@@ -261,7 +263,7 @@ describe APP::Photos do
|
|
261
263
|
specify{ subject.should respond_to(:delegated_instance_methods)}
|
262
264
|
context "#delegated_instance_methods" do
|
263
265
|
it "returns expected list of methods that are delegated to other objects" do
|
264
|
-
subject.delegated_instance_methods.should ==
|
266
|
+
subject.delegated_instance_methods.should == models::Helpers.array_accessor_methods
|
265
267
|
end
|
266
268
|
end
|
267
269
|
|
@@ -0,0 +1,42 @@
|
|
1
|
+
shared_examples_for "date hash option" do
|
2
|
+
def expected?
|
3
|
+
begin
|
4
|
+
expected
|
5
|
+
true
|
6
|
+
rescue
|
7
|
+
false
|
8
|
+
end
|
9
|
+
end
|
10
|
+
let(:default_date){FlickrMocks::Api::Helpers.date}
|
11
|
+
|
12
|
+
def self.date(params=nil)
|
13
|
+
case params
|
14
|
+
when String then Api::Helpers.date(params)
|
15
|
+
when Time then params.strftime('%Y-%m-%d')
|
16
|
+
else Api::Helpers.date('yesterday')
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
it "returns date when proper date string supplied" do
|
21
|
+
subject.send(method,options.clone.merge(:date => '2010-10-10')).should ==
|
22
|
+
(expected? ? expected.clone.merge(:date => '2010-10-10') : '2010-10-10')
|
23
|
+
end
|
24
|
+
it "returns default date when :date is nil" do
|
25
|
+
subject.send(method,options.clone.merge(:date => nil)).should ==
|
26
|
+
(expected? ? expected.clone.merge(:date => default_date) : default_date)
|
27
|
+
end
|
28
|
+
it "returns default date when :date is not set" do
|
29
|
+
subject.send(method,options.clone.merge({})).should ==
|
30
|
+
(expected? ? expected.clone.merge(:date => default_date) : default_date)
|
31
|
+
end
|
32
|
+
it "returns default date when Time object provided" do
|
33
|
+
time ='2010-01-01'
|
34
|
+
subject.send(method,options.clone.merge(:date=>Time.new(time))).should ==
|
35
|
+
(expected? ? expected.clone.merge(:date => time) : time)
|
36
|
+
end
|
37
|
+
it "returns yesterday when Array object provided" do
|
38
|
+
subject.send(method,options.clone.merge(:date => [])).should ==
|
39
|
+
(expected? ? expected.clone.merge(:date => default_date) : default_date)
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
shared_examples_for "page hash option" do
|
2
|
+
let(:default_page){FlickrMocks::Api.default(:page)}
|
3
|
+
def expected?
|
4
|
+
begin
|
5
|
+
expected
|
6
|
+
true
|
7
|
+
rescue
|
8
|
+
false
|
9
|
+
end
|
10
|
+
end
|
11
|
+
it "returns supplied page when valid page is provided" do
|
12
|
+
subject.send(method,options.clone.merge(:page => '4')).should ==
|
13
|
+
(expected? ? expected.clone.merge(:page => '4') : '4')
|
14
|
+
end
|
15
|
+
it "returns default page when 0 provided" do
|
16
|
+
subject.send(method,options.clone.merge(:page => '0')).should ==
|
17
|
+
(expected? ? expected.clone.merge(:page => default_page) : default_page)
|
18
|
+
end
|
19
|
+
it "returns default page when negative page provided" do
|
20
|
+
subject.send(method,options.clone.merge(:page => '-1')).should ==
|
21
|
+
(expected? ? expected.clone.merge(:page => default_page) : default_page)
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
shared_examples_for "per page hash option" do
|
2
|
+
let(:default_per_page){FlickrMocks::Api.default(:per_page)}
|
3
|
+
def expected?
|
4
|
+
begin
|
5
|
+
expected
|
6
|
+
true
|
7
|
+
rescue
|
8
|
+
false
|
9
|
+
end
|
10
|
+
end
|
11
|
+
it "returns supplied per_page when valid per page is provided" do
|
12
|
+
subject.send(method,options.clone.merge(:per_page => '400')).should ==
|
13
|
+
(expected? ? expected.clone.merge(:per_page => '400') : '400')
|
14
|
+
end
|
15
|
+
it "returns supplied perpage when valid value is provided" do
|
16
|
+
subject.send(method,options.clone.merge({:perpage => '400'})).should ==
|
17
|
+
(expected? ? expected.clone.merge(:per_page => '400') : '400')
|
18
|
+
end
|
19
|
+
it "should give preference to supplied per_page value over :perpage" do
|
20
|
+
subject.send(method,options.clone.merge({:per_page => '500', :perpage => '444'})).should ==
|
21
|
+
(expected? ? expected.clone.merge(:per_page => '500') : '500')
|
22
|
+
end
|
23
|
+
it "returns default :per_page when supplied value is 0" do
|
24
|
+
subject.send(method,options.clone.merge({:per_page => '0'})).should ==
|
25
|
+
(expected? ? expected.clone.merge(:per_page => default_per_page) : default_per_page)
|
26
|
+
end
|
27
|
+
it "returns default :per_page when supplied value is negative" do
|
28
|
+
subject.send(method,options.clone.merge({:per_page => '-1'})).should ==
|
29
|
+
(expected? ? expected.clone.merge(:per_page => default_per_page) : default_per_page)
|
30
|
+
end
|
31
|
+
it "returns default :per_page when supplied :perpage is 0" do
|
32
|
+
subject.send(method,options.clone.merge({:perpage => '0'})).should ==
|
33
|
+
(expected? ? expected.clone.merge(:per_page => default_per_page) : default_per_page)
|
34
|
+
end
|
35
|
+
it "returns default :per_page when supplied :perpage is negative" do
|
36
|
+
subject.send(method,options.clone.merge({:perpage=>'-1'})).should ==
|
37
|
+
(expected? ? expected.clone.merge(:per_page => default_per_page) :default_per_page)
|
38
|
+
end
|
39
|
+
it "returns default :per_page when invalid :per_page and valid :perpage provided" do
|
40
|
+
subject.send(method,options.clone.merge({:per_page => '-1', :perpage => '300'})).should ==
|
41
|
+
(expected? ? expected.clone.merge(:per_page => default_per_page) : default_per_page)
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
shared_examples_for "tag mode hash option" do
|
2
|
+
let(:default_tag_mode){FlickrMocks::Api.default(:tag_mode)}
|
3
|
+
def expected?
|
4
|
+
begin
|
5
|
+
expected
|
6
|
+
true
|
7
|
+
rescue
|
8
|
+
false
|
9
|
+
end
|
10
|
+
end
|
11
|
+
it "returns supplied value when :tag_mode is all" do
|
12
|
+
subject.send(method,options.clone.merge({:tag_mode=>'all'})).should ==
|
13
|
+
(expected? ? expected.clone.merge({:tag_mode => 'all'}) : 'all')
|
14
|
+
end
|
15
|
+
it "returns supplied value when :tag_mode is any" do
|
16
|
+
subject.send(method,options.clone.merge({:tag_mode=>'any'})).should ==
|
17
|
+
(expected? ? expected.clone.merge({:tag_mode => 'any'}) : 'any')
|
18
|
+
end
|
19
|
+
it "returns default tag_mode when tag_mode is not specified" do
|
20
|
+
subject.send(method,options.clone.merge({})).should ==
|
21
|
+
(expected? ? expected.clone.merge({:tag_mode => default_tag_mode}) : default_tag_mode)
|
22
|
+
end
|
23
|
+
it "returns default tag_mode when tag_mode is nil" do
|
24
|
+
subject.send(method,options.clone.merge({:tag_mode => nil})).should ==
|
25
|
+
(expected? ? expected.clone.merge({:tag_mode => default_tag_mode}) : default_tag_mode)
|
26
|
+
end
|
27
|
+
it "should give default tag_mode when junk given for tag_mode" do
|
28
|
+
subject.send(method,options.clone.merge(:tag_mode => 'junk')).should ==
|
29
|
+
(expected? ? expected.clone.merge({:tag_mode => default_tag_mode}) : default_tag_mode)
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,140 @@
|
|
1
|
+
|
2
|
+
shared_examples_for "stub for Api.photo" do
|
3
|
+
it "returns Photo object populated with fixtures.photo_details when valid id provided" do
|
4
|
+
APP::Api.photo(:photo_id => 'detail').should == APP::Models::Photo.new(fixtures.photo_details)
|
5
|
+
end
|
6
|
+
|
7
|
+
context "error conditions" do
|
8
|
+
let(:subject){api}
|
9
|
+
let(:method){:photo}
|
10
|
+
it_behaves_like "object that expects single Hash argument"
|
11
|
+
it_behaves_like "flickr api stub that requires :photo_id key in options hash"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
shared_examples_for "stub for Api.photos" do
|
17
|
+
it "returns PhotoSearch object populated with fixtures.photos with valid tag" do
|
18
|
+
APP::Api.photos(:search_terms => 'france').should ==
|
19
|
+
APP::Models::PhotoSearch.new(fixtures.photos,{:search_terms => 'france'})
|
20
|
+
end
|
21
|
+
|
22
|
+
context "owner_id provided" do
|
23
|
+
it "returns object with same user when owner_id provided" do
|
24
|
+
params = {:owner_id => '1'}
|
25
|
+
api.photos(:owner_id => '1').should ==
|
26
|
+
::FlickrMocks::Models::PhotoSearch.new(fixtures.author_photos,params)
|
27
|
+
end
|
28
|
+
it "returns object with same user when owner_id and tags provided" do
|
29
|
+
params = {:owner_id => '1',:search_terms => 'iran'}
|
30
|
+
api.photos(:owner_id => '1').should ==
|
31
|
+
::FlickrMocks::Models::PhotoSearch.new(fixtures.author_photos,{:owner_id => '1'})
|
32
|
+
end
|
33
|
+
it "returns object with no entries when owner_id set to 'garbage'" do
|
34
|
+
api.photos(:owner_id => 'garbage').should ==
|
35
|
+
::FlickrMocks::Models::PhotoSearch.new(fixtures.empty_photos,{:owner_id => 'garbage'})
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context "search_terms provided" do
|
40
|
+
it "returns object with different owner_id values when :search_terms provided" do
|
41
|
+
params = {:search_terms => 'iran'}
|
42
|
+
api.photos(params).should ==
|
43
|
+
::FlickrMocks::Models::PhotoSearch.new(fixtures.photos,params)
|
44
|
+
end
|
45
|
+
it "returns object with no entries when :search_terms is set to 'garbage'" do
|
46
|
+
params = {:search_terms => 'garbage'}
|
47
|
+
api.photos(params).should ==
|
48
|
+
::FlickrMocks::Models::PhotoSearch.new(fixtures.empty_photos,params)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
context "error conditions" do
|
52
|
+
let(:subject){api}
|
53
|
+
let(:method){:photos}
|
54
|
+
it_behaves_like "object that expects single Hash argument"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
shared_examples_for "stub for Api.photo_details" do
|
59
|
+
it "returns PhotoDetails object populated with fixtures.photo_details and fixtures.photo_sizes with valid :photo_id" do
|
60
|
+
details = FlickrMocks::Models::Photo.new(fixtures.photo_details)
|
61
|
+
sizes = FlickrMocks::Models::PhotoSizes.new(fixtures.photo_sizes)
|
62
|
+
APP::Api.photo_details(:photo_id => 'sample').should ==
|
63
|
+
APP::Models::PhotoDetails.new(details,sizes)
|
64
|
+
end
|
65
|
+
it "returns expected object when proper :photo_id provided" do
|
66
|
+
api.photo_details(:photo_id => '1234').should ==
|
67
|
+
::FlickrMocks::Models::PhotoDetails.new(fixtures.photo_details,fixtures.photo_sizes)
|
68
|
+
end
|
69
|
+
context "error conditions" do
|
70
|
+
let(:subject){api}
|
71
|
+
let(:method){:photo_details}
|
72
|
+
it_behaves_like "object that expects single Hash argument"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
shared_examples_for "stub for Api.photo_sizes" do
|
77
|
+
it "returns PhotoSizes object populated with fixtures.photo_sizes with valid :photo_id" do
|
78
|
+
api.photo_sizes(:photo_id => '1234').should ==
|
79
|
+
::FlickrMocks::Models::PhotoSizes.new(fixtures.photo_sizes)
|
80
|
+
end
|
81
|
+
context "error conditions" do
|
82
|
+
let(:subject){api}
|
83
|
+
let(:method){:photo_sizes}
|
84
|
+
it_behaves_like "object that expects single Hash argument"
|
85
|
+
it_behaves_like "flickr api stub that requires :photo_id key in options hash"
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
shared_examples_for "stub for Api.interesting_photos" do
|
90
|
+
it "returns PhotoSearch object when called with valid :date" do
|
91
|
+
api.interesting_photos(:date => '2010-10-20').should ==
|
92
|
+
::FlickrMocks::Models::PhotoSearch.new(fixtures.interesting_photos,{:date => '2010-10-20'})
|
93
|
+
end
|
94
|
+
it "returns PhotoSearch object when called without a :date" do
|
95
|
+
api.interesting_photos({}).should ==
|
96
|
+
FlickrMocks::Models::PhotoSearch.new(fixtures.interesting_photos,{})
|
97
|
+
end
|
98
|
+
it "returns empty photos when date is set to '2000-01-01" do
|
99
|
+
params = {:date => '2000-01-01'}
|
100
|
+
api.interesting_photos(params).should ==
|
101
|
+
FlickrMocks::Models::PhotoSearch.new(fixtures.empty_photos,params)
|
102
|
+
end
|
103
|
+
|
104
|
+
context "error conditions" do
|
105
|
+
it_behaves_like "object that expects single Hash argument"
|
106
|
+
it "raises eror when :date is set to 'garbage'" do
|
107
|
+
expect {
|
108
|
+
api.interesting_photos(:date => 'garbage')
|
109
|
+
}.to raise_error(FlickRaw::FailedResponse)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
|
115
|
+
shared_examples_for "stub for Api.commons_institutions" do
|
116
|
+
it "returns CommonsInstitutions object with no options" do
|
117
|
+
|
118
|
+
end
|
119
|
+
|
120
|
+
end
|
121
|
+
|
122
|
+
shared_examples_for "flickr api stub that requires :photo_id key in options hash" do
|
123
|
+
it "raises FlickRaw::FailedResponse when :photo_id not supplied in Hash" do
|
124
|
+
expect {
|
125
|
+
api.send(method,{})
|
126
|
+
}.to raise_error(FlickRaw::FailedResponse)
|
127
|
+
end
|
128
|
+
it "raises FlickRaw::FailedResponse when :photo_id is nil" do
|
129
|
+
expect {
|
130
|
+
api.send(method,{:photo_id => nil})
|
131
|
+
}.to raise_error(FlickRaw::FailedResponse)
|
132
|
+
end
|
133
|
+
it "raises FlickRaw::FailedResponse when :photo_id is garbage" do
|
134
|
+
expect {
|
135
|
+
api.send(method,{:photo_id => 'garbage'})
|
136
|
+
}.to raise_error(FlickRaw::FailedResponse)
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
|
data/spec/spec_helper.rb
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'rspec'
|
3
|
-
|
4
3
|
require 'faker'
|
5
|
-
|
6
|
-
require 'chronic_duration'
|
7
4
|
require 'flickraw-cached'
|
8
5
|
require 'ruby-debug'
|
9
|
-
|
10
6
|
require 'shared_examples/array_accessor'
|
11
7
|
require 'shared_examples/image_url_helpers'
|
12
8
|
require 'shared_examples/size_accessor'
|
13
9
|
require 'shared_examples/collection'
|
14
10
|
require 'shared_examples/hash_argument'
|
15
|
-
|
11
|
+
require 'shared_examples/stub_helpers'
|
12
|
+
require 'shared_examples/hash_options/perpage_hash_option'
|
13
|
+
require 'shared_examples/hash_options/page_hash_option'
|
14
|
+
require 'shared_examples/hash_options/tag_mode_hash_option'
|
15
|
+
require 'shared_examples/hash_options/date_hash_option'
|
16
16
|
require 'flickrmocks'
|
17
17
|
|
18
18
|
Rspec.configure do |c|
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 9
|
8
|
+
- 0
|
9
|
+
version: 0.9.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Takaltoo
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-12-
|
17
|
+
date: 2010-12-25 00:00:00 -08:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -46,7 +46,7 @@ dependencies:
|
|
46
46
|
type: :runtime
|
47
47
|
version_requirements: *id002
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
|
-
name:
|
49
|
+
name: ruby-debug19
|
50
50
|
prerelease: false
|
51
51
|
requirement: &id003 !ruby/object:Gem::Requirement
|
52
52
|
none: false
|
@@ -54,14 +54,14 @@ dependencies:
|
|
54
54
|
- - ">="
|
55
55
|
- !ruby/object:Gem::Version
|
56
56
|
segments:
|
57
|
-
- 2
|
58
|
-
- 2
|
59
57
|
- 0
|
60
|
-
|
61
|
-
|
58
|
+
- 11
|
59
|
+
- 6
|
60
|
+
version: 0.11.6
|
61
|
+
type: :runtime
|
62
62
|
version_requirements: *id003
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
|
-
name:
|
64
|
+
name: will_paginate
|
65
65
|
prerelease: false
|
66
66
|
requirement: &id004 !ruby/object:Gem::Requirement
|
67
67
|
none: false
|
@@ -69,14 +69,31 @@ dependencies:
|
|
69
69
|
- - ">="
|
70
70
|
- !ruby/object:Gem::Version
|
71
71
|
segments:
|
72
|
+
- 3
|
72
73
|
- 0
|
73
|
-
|
74
|
-
|
74
|
+
- pre2
|
75
|
+
version: 3.0.pre2
|
76
|
+
type: :runtime
|
75
77
|
version_requirements: *id004
|
76
78
|
- !ruby/object:Gem::Dependency
|
77
|
-
name:
|
79
|
+
name: rspec
|
78
80
|
prerelease: false
|
79
81
|
requirement: &id005 !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
segments:
|
87
|
+
- 2
|
88
|
+
- 2
|
89
|
+
- 0
|
90
|
+
version: 2.2.0
|
91
|
+
type: :development
|
92
|
+
version_requirements: *id005
|
93
|
+
- !ruby/object:Gem::Dependency
|
94
|
+
name: factory_girl_rails
|
95
|
+
prerelease: false
|
96
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
80
97
|
none: false
|
81
98
|
requirements:
|
82
99
|
- - ">="
|
@@ -86,11 +103,11 @@ dependencies:
|
|
86
103
|
- 0
|
87
104
|
version: "1.0"
|
88
105
|
type: :development
|
89
|
-
version_requirements: *
|
106
|
+
version_requirements: *id006
|
90
107
|
- !ruby/object:Gem::Dependency
|
91
108
|
name: faker
|
92
109
|
prerelease: false
|
93
|
-
requirement: &
|
110
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
94
111
|
none: false
|
95
112
|
requirements:
|
96
113
|
- - ">="
|
@@ -101,7 +118,22 @@ dependencies:
|
|
101
118
|
- 1
|
102
119
|
version: 0.3.1
|
103
120
|
type: :development
|
104
|
-
version_requirements: *
|
121
|
+
version_requirements: *id007
|
122
|
+
- !ruby/object:Gem::Dependency
|
123
|
+
name: flickraw-cached
|
124
|
+
prerelease: false
|
125
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
126
|
+
none: false
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
segments:
|
131
|
+
- 0
|
132
|
+
- 8
|
133
|
+
- 2
|
134
|
+
version: 0.8.2
|
135
|
+
type: :development
|
136
|
+
version_requirements: *id008
|
105
137
|
description: |-
|
106
138
|
FlickrMocks makes it possible to Marshal responses
|
107
139
|
generated from the FLickRaw gem. This is useful for
|
@@ -122,6 +154,7 @@ files:
|
|
122
154
|
- .gitignore
|
123
155
|
- .rspec
|
124
156
|
- Gemfile
|
157
|
+
- Gemfile.lock
|
125
158
|
- MIT-LICENSE
|
126
159
|
- README.rdoc
|
127
160
|
- Rakefile
|
@@ -141,6 +174,7 @@ files:
|
|
141
174
|
- lib/flickr_mocks/models/commons_institution.rb
|
142
175
|
- lib/flickr_mocks/models/commons_institutions.rb
|
143
176
|
- lib/flickr_mocks/models/helpers.rb
|
177
|
+
- lib/flickr_mocks/models/models.rb
|
144
178
|
- lib/flickr_mocks/models/photo.rb
|
145
179
|
- lib/flickr_mocks/models/photo_details.rb
|
146
180
|
- lib/flickr_mocks/models/photo_dimensions.rb
|
@@ -187,8 +221,13 @@ files:
|
|
187
221
|
- spec/shared_examples/array_accessor.rb
|
188
222
|
- spec/shared_examples/collection.rb
|
189
223
|
- spec/shared_examples/hash_argument.rb
|
224
|
+
- spec/shared_examples/hash_options/date_hash_option.rb
|
225
|
+
- spec/shared_examples/hash_options/page_hash_option.rb
|
226
|
+
- spec/shared_examples/hash_options/perpage_hash_option.rb
|
227
|
+
- spec/shared_examples/hash_options/tag_mode_hash_option.rb
|
190
228
|
- spec/shared_examples/image_url_helpers.rb
|
191
229
|
- spec/shared_examples/size_accessor.rb
|
230
|
+
- spec/shared_examples/stub_helpers.rb
|
192
231
|
- spec/spec_helper.rb
|
193
232
|
- tasks/fixtures.rb
|
194
233
|
has_rdoc: true
|