flickrmocks 0.8.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. data/.autotest +36 -0
  2. data/.document +5 -0
  3. data/.gitignore +23 -0
  4. data/.rspec +3 -0
  5. data/MIT-LICENSE +20 -0
  6. data/README.rdoc +59 -0
  7. data/Rakefile +76 -0
  8. data/VERSION +1 -0
  9. data/autotest/discover.rb +1 -0
  10. data/flickrmocks.gemspec +155 -0
  11. data/lib/flickr_mocks/api/api.rb +42 -0
  12. data/lib/flickr_mocks/api/flickr.rb +27 -0
  13. data/lib/flickr_mocks/api/helpers.rb +19 -0
  14. data/lib/flickr_mocks/api/options.rb +55 -0
  15. data/lib/flickr_mocks/api/sanitize.rb +29 -0
  16. data/lib/flickr_mocks/fixtures.rb +35 -0
  17. data/lib/flickr_mocks/flickraw/custom_clone.rb +19 -0
  18. data/lib/flickr_mocks/flickraw/custom_compare.rb +25 -0
  19. data/lib/flickr_mocks/flickraw/custom_marshal.rb +39 -0
  20. data/lib/flickr_mocks/flickraw/flickraw.rb +14 -0
  21. data/lib/flickr_mocks/helpers.rb +52 -0
  22. data/lib/flickr_mocks/models/helpers.rb +14 -0
  23. data/lib/flickr_mocks/models/photo.rb +101 -0
  24. data/lib/flickr_mocks/models/photo_details.rb +86 -0
  25. data/lib/flickr_mocks/models/photo_dimensions.rb +103 -0
  26. data/lib/flickr_mocks/models/photo_search.rb +115 -0
  27. data/lib/flickr_mocks/models/photo_size.rb +60 -0
  28. data/lib/flickr_mocks/models/photo_sizes.rb +93 -0
  29. data/lib/flickr_mocks/models/photos.rb +133 -0
  30. data/lib/flickr_mocks/stubs.rb +103 -0
  31. data/lib/flickr_mocks/version.rb +4 -0
  32. data/lib/flickrmocks.rb +27 -0
  33. data/spec/api/api_spec.rb +84 -0
  34. data/spec/api/flickr_spec.rb +48 -0
  35. data/spec/api/helper_spec.rb +37 -0
  36. data/spec/api/options_spec.rb +152 -0
  37. data/spec/api/sanitize_spec.rb +90 -0
  38. data/spec/base/fixtures_spec.rb +89 -0
  39. data/spec/base/flickraw/custom_clone_spec.rb +70 -0
  40. data/spec/base/flickraw/custom_compare_spec.rb +98 -0
  41. data/spec/base/flickraw/custom_marshal_spec.rb +45 -0
  42. data/spec/base/helpers_spec.rb +63 -0
  43. data/spec/base/stubs_spec.rb +180 -0
  44. data/spec/base/version_spec.rb +15 -0
  45. data/spec/fixtures/author_photos.marshal +0 -0
  46. data/spec/fixtures/empty_photos.marshal +0 -0
  47. data/spec/fixtures/expected_methods.marshal +17 -0
  48. data/spec/fixtures/interesting_photos.marshal +0 -0
  49. data/spec/fixtures/photo.marshal +0 -0
  50. data/spec/fixtures/photo_details.marshal +0 -0
  51. data/spec/fixtures/photo_size.marshal +0 -0
  52. data/spec/fixtures/photo_sizes.marshal +0 -0
  53. data/spec/fixtures/photos.marshal +0 -0
  54. data/spec/models/helpers_spec.rb +25 -0
  55. data/spec/models/photo_details_spec.rb +224 -0
  56. data/spec/models/photo_dimensions_spec.rb +208 -0
  57. data/spec/models/photo_search_spec.rb +255 -0
  58. data/spec/models/photo_size_spec.rb +122 -0
  59. data/spec/models/photo_sizes_spec.rb +168 -0
  60. data/spec/models/photo_spec.rb +278 -0
  61. data/spec/models/photos_spec.rb +305 -0
  62. data/spec/shared_examples/array_accessor.rb +157 -0
  63. data/spec/shared_examples/collection.rb +49 -0
  64. data/spec/shared_examples/image_url_helpers.rb +56 -0
  65. data/spec/shared_examples/size_accessor.rb +13 -0
  66. data/spec/spec_helper.rb +24 -0
  67. data/tasks/fixtures.rb +164 -0
  68. metadata +259 -0
@@ -0,0 +1,305 @@
1
+ require 'spec_helper'
2
+
3
+
4
+ describe APP::Photos do
5
+ let(:api) {APP::Api}
6
+ let(:klass) {APP::Photos}
7
+ let(:fixtures){APP::Fixtures.new}
8
+ let(:photos_fixture) {fixtures.photos}
9
+ let(:interesting_photos_fixture){fixtures.interesting_photos}
10
+
11
+ subject {klass.new photos_fixture}
12
+ let(:max_pages){subject.default(:max_entries)/subject.default(:per_page)}
13
+
14
+ context "class methods" do
15
+ specify { klass.should respond_to(:defaults)}
16
+
17
+ context "defaults" do
18
+ before(:each) do
19
+ @defaults = klass.defaults.clone
20
+ end
21
+ after(:each) do
22
+ klass.defaults = @defaults
23
+ end
24
+ specify {klass.defaults.should have_key(:max_entries)}
25
+ specify {klass.defaults.should have_key(:per_page)}
26
+
27
+ it "should behave like a Hash" do
28
+ klass.defaults.keys.each do |key|
29
+ setter = (key.to_s + '=').to_sym
30
+ value = klass.defaults.send(:[],key)
31
+ expected = value*2
32
+ klass.defaults.send(:[]=,key,expected)
33
+ klass.defaults.send(:[],key).should == expected
34
+ end
35
+ end
36
+ end
37
+ end
38
+
39
+ context "class instance variables" do
40
+ context "@defaults" do
41
+ specify { klass.defaults.should have_key(:max_entries) }
42
+ specify { klass.defaults.should have_key(:per_page) }
43
+
44
+ it "returns 50 for argument :per_page" do
45
+ klass.defaults[:per_page].should == 50
46
+ end
47
+ it "returns 4000 for argument :max_entries" do
48
+ klass.defaults[:max_entries].should == 4000
49
+ end
50
+ end
51
+ end
52
+
53
+
54
+ context "initialization" do
55
+ it "returns object of a proper class when photos FlickRaw::ResponseList provided" do
56
+ klass.new(fixtures.photos).class.should == klass
57
+ end
58
+ it "raises an error when FlickRaw::Response provided" do
59
+ expect {klass.new(fixtures.photo)}.to raise_error(ArgumentError)
60
+ end
61
+ it "raises an error when an Array class specified" do
62
+ expect {klass.new([1,2,3,4])}.to raise_error(ArgumentError)
63
+ end
64
+ it "raises an error when sizes FlickRaw::ResponseList provided" do
65
+ expect {klass.new(fixtures.sizes)}.to raise_error
66
+ end
67
+ end
68
+
69
+ context "instance methods" do
70
+ specify { subject.should respond_to(:default) }
71
+ context "#default" do
72
+ it "accepts a string for argument" do
73
+ klass.defaults.each_pair do |key,value|
74
+ subject.default(key.to_s).should == value
75
+ end
76
+ end
77
+ it "accepts a symbol for argument" do
78
+ klass.defaults.each_pair do |key,value|
79
+ subject.default(key.to_sym).should == value
80
+ end
81
+ end
82
+ it "returns 50 for :per_page" do
83
+ subject.default(:per_page).should == klass.defaults[:per_page]
84
+ end
85
+ it "returns 4000 for :max_entries" do
86
+ subject.default(:max_entries).should == klass.defaults[:max_entries]
87
+ end
88
+ end
89
+
90
+ specify { subject.should respond_to(:current_page) }
91
+ context "#current_page" do
92
+ it "returns expected page" do
93
+ subject.current_page.should == photos_fixture.page
94
+ end
95
+ it "returns kind of type Fixnum" do
96
+ subject.current_page.should be_a(Fixnum)
97
+ end
98
+ end
99
+
100
+ specify { subject.should respond_to(:per_page) }
101
+ describe "#per_page" do
102
+ it "returns maximum entries possible for a page" do
103
+ subject.per_page.should == photos_fixture.perpage
104
+ end
105
+ it "returns kind of Fixnum" do
106
+ subject.per_page.should be_a(Fixnum)
107
+ end
108
+ end
109
+
110
+ specify { subject.should respond_to(:perpage) }
111
+ describe "#perpage" do
112
+ it "returns maximum entries possible for a page" do
113
+ subject.perpage.should == photos_fixture.perpage
114
+ end
115
+ it "returns kind of Fixnum" do
116
+ subject.perpage.should be_a(Fixnum)
117
+ end
118
+ end
119
+
120
+ specify { subject.should respond_to(:total_entries) }
121
+ describe "#total_entries" do
122
+ it "returns total of photos" do
123
+ subject.total_entries.should == photos_fixture.total.to_i
124
+ end
125
+ specify{ subject.total_entries.should be_a(Fixnum)}
126
+ end
127
+
128
+ specify {subject.should respond_to(:capped_entries)}
129
+ describe "#capped_entries" do
130
+ it "returns total_entries when total_entries <= max_entries" do
131
+ subject.stub(:total_entries).and_return(subject.max_entries)
132
+ subject.capped_entries.should == subject.total_entries
133
+ end
134
+ it "returns max_entries when total_entries > max_entries" do
135
+ subject.stub(:total_entries).and_return(subject.max_entries + 200)
136
+ subject.capped_entries.should < subject.total_entries
137
+ subject.capped_entries.should == subject.max_entries
138
+ end
139
+ end
140
+
141
+ specify { subject.should respond_to(:max_entries) }
142
+ describe "#max_entries" do
143
+ it "returns maximum possible entries returned by flickr" do
144
+ subject.max_entries.should == subject.default(:max_entries)
145
+ end
146
+ it "returns kind of Fixnum" do
147
+ subject.max_entries.should be_a(Fixnum)
148
+ end
149
+ end
150
+
151
+ specify { subject.should respond_to(:pages) }
152
+ describe "#pages" do
153
+ it "limits the number of pages when total_pages > max_pages" do
154
+ subject.stub(:total_pages).and_return(max_pages+20)
155
+ subject.pages.should == max_pages
156
+ end
157
+ it "returns total pages when total_pages <= max_pages" do
158
+ pages = max_pages() - 1
159
+ subject.stub(:total_pages).and_return(pages)
160
+ subject.pages.should == pages
161
+ end
162
+ it "returns kind of Fixnum" do
163
+ subject.pages.should be_a(Fixnum)
164
+ end
165
+ end
166
+
167
+ specify { subject.should respond_to(:capped?) }
168
+ describe "#capped?" do
169
+ it "returns true when partial number of entries returned" do
170
+ subject.stub(:total_entries).and_return(subject.default(:max_entries)+1)
171
+ subject.should be_capped
172
+ end
173
+ it "returns false when all entries returned" do
174
+ subject.stub(:total_entries).and_return(subject.default(:max_entries))
175
+ subject.should_not be_capped
176
+ end
177
+ end
178
+
179
+ specify { subject.should respond_to(:photos) }
180
+ describe "#photos" do
181
+ it "returns kind of Array" do
182
+ subject.photos.should be_an(Array)
183
+ end
184
+ it "returns Array containing elements of class FlickrMocks::Photo " do
185
+ subject.photos.each do |photo|
186
+ photo.should be_instance_of(APP::Photo)
187
+ end
188
+ end
189
+ it "returns expected number of photos" do
190
+ subject.photos.length.should == fixtures.photos.map(&:id).length
191
+ end
192
+ end
193
+
194
+
195
+ specify {subject.should respond_to(:==)}
196
+ context "#==" do
197
+ it "returns true when comparing object to self" do
198
+ subject.should == subject
199
+ end
200
+ it "returns true when comparing object to clone of self" do
201
+ subject.should == subject.clone
202
+ end
203
+ it "returns false when object compared to random object" do
204
+ subject.should_not == [1,2,3,4]
205
+ end
206
+ it "returns false when object compard to nil" do
207
+ subject.should_not == nil
208
+ end
209
+ it "returns false when object compared to object that is different in only one element" do
210
+ other = subject.clone
211
+ other.photos.last.instance_eval('@delegated_to_object').instance_eval('@h["farm"]=1234321')
212
+ subject.should_not == other
213
+ end
214
+ end
215
+
216
+ specify {subject.should respond_to(:collection)}
217
+ context "#collection" do
218
+ context "usable argument set to nil" do
219
+ let(:reference){
220
+ OpenStruct.new :current_page => subject.current_page,
221
+ :per_page => subject.per_page,
222
+ :total_entries => subject.capped_entries,
223
+ :collection => subject.photos
224
+ }
225
+ it_behaves_like "object that responds to collection"
226
+ end
227
+
228
+ context "usable argument set to true" do
229
+ subject {klass.new(interesting_photos_fixture)}
230
+ let(:collection){subject.photos.clone.keep_if do |p| p.license.to_i > 3 end}
231
+ let(:reference) {
232
+ OpenStruct.new :current_page => 1,
233
+ :per_page => subject.perpage,
234
+ :total_entries => collection.length,
235
+ :collection => collection
236
+ }
237
+ it_behaves_like "object that responds to collection with usable option"
238
+ end
239
+
240
+ context "empty collection" do
241
+ let(:reference) {
242
+ OpenStruct.new :current_page => 1,
243
+ :per_page => fixtures.empty_photos.perpage,
244
+ :total_entries => 0,
245
+ :collection => []
246
+ }
247
+ let(:subject){klass.new(fixtures.empty_photos)}
248
+ it_behaves_like "object with no items that responds to collection"
249
+ end
250
+ end
251
+
252
+ specify {subject.should respond_to(:usable_photos)}
253
+ context "#usable_items" do
254
+ it "returns all items if every item is usable" do
255
+ subject.usable_photos == subject.photos
256
+ end
257
+ it "returns subset of items if not all items are usable" do
258
+ subject.usable_photos == subject.photos.clone.keep_if(&:usable?)
259
+ end
260
+ end
261
+
262
+ context "meta-programming" do
263
+ specify{ subject.should respond_to(:delegated_instance_methods)}
264
+ context "#delegated_instance_methods" do
265
+ it "returns expected list of methods that are delegated to other objects" do
266
+ subject.delegated_instance_methods.should == APP::Models::Helpers.array_accessor_methods
267
+ end
268
+ end
269
+
270
+ specify { subject.should respond_to(:methods)}
271
+ context "#methods" do
272
+ it "should return all methods as well as array iteration methods" do
273
+ subject.methods.sort.should == (subject.old_methods + subject.delegated_instance_methods).sort
274
+ end
275
+ end
276
+
277
+ specify{ subject.should respond_to(:respond_to?)}
278
+ context "#respond_to?" do
279
+ it "recognizes all methods returned by #methods" do
280
+ subject.methods.each do |method|
281
+ subject.should respond_to(method)
282
+ end
283
+ end
284
+ end
285
+ context "iteratable methods" do
286
+ let(:reference) {subject.photos}
287
+ it_behaves_like "object with delegated Array accessor helpers"
288
+ end
289
+ end
290
+
291
+ context "custom cloning methods" do
292
+ context "#initialize_copy" do
293
+ it "returns photo objects that have distinct ids from the cloned object" do
294
+ other = subject.clone
295
+ index = 0
296
+ subject.photos.each do |photo|
297
+ photo.__id__.should_not == other.photos[index].__id__
298
+ index += 1
299
+ end
300
+ end
301
+ end
302
+ end
303
+ end
304
+
305
+ end
@@ -0,0 +1,157 @@
1
+ shared_examples_for "object with delegated Array accessor helpers" do
2
+ # NOTE: need to define:
3
+ # => subject : that returns item under test, which has accessor
4
+ # => references : object that gets delegated to
5
+ specify{subject.should respond_to(:[])}
6
+ specify{subject.should respond_to(:at)}
7
+ specify{subject.should respond_to(:fetch)}
8
+ specify{subject.should respond_to(:first)}
9
+ specify{subject.should respond_to(:last)}
10
+ specify{subject.should respond_to(:each)}
11
+ specify{subject.should respond_to(:each_index)}
12
+ specify{subject.should respond_to(:reverse_each)}
13
+ specify{subject.should respond_to(:length)}
14
+ specify{subject.should respond_to(:size)}
15
+ specify{subject.should respond_to(:empty?)}
16
+ specify{subject.should respond_to(:find_index)}
17
+ specify{subject.should respond_to(:index)}
18
+ specify{subject.should respond_to(:rindex)}
19
+ specify{subject.should respond_to(:collect)}
20
+ specify{subject.should respond_to(:map)}
21
+ specify{subject.should respond_to(:select)}
22
+ specify{subject.should respond_to(:keep_if)}
23
+ specify{subject.should respond_to(:values_at)}
24
+
25
+ context "#[]" do
26
+ it "returns same reference for index 0" do
27
+ subject[0].should == reference[0]
28
+ end
29
+ it "returns same reference for index -1" do
30
+ subject[-1].should == reference[-1]
31
+ end
32
+ end
33
+
34
+ context "#at" do
35
+ it "returns same as reference element 0" do
36
+ subject.at(0).should == reference.at(0)
37
+ end
38
+ end
39
+
40
+ context "#values_at" do
41
+ it "returns same value as element 0" do
42
+ subject.values_at(0).should == reference.values_at(0)
43
+ end
44
+ end
45
+
46
+ context "#fetch" do
47
+ it "returns same as reference for element 0" do
48
+ subject.fetch(0).should == reference.fetch(0)
49
+ end
50
+ end
51
+
52
+ context "#first" do
53
+ it "returns same element as reference" do
54
+ subject.first == reference.first
55
+ end
56
+ end
57
+
58
+ context "#last" do
59
+ it "returns same element as reference" do
60
+ subject.last == reference.last
61
+ end
62
+ end
63
+
64
+ context "#length" do
65
+ it "returns same value as reference" do
66
+ subject.length.should == reference.length
67
+ end
68
+ end
69
+
70
+ context "#size" do
71
+ it "returns same value as reference" do
72
+ subject.size.should == reference.size
73
+ end
74
+ end
75
+
76
+ context "#find_index" do
77
+ it "returns same index as reference" do
78
+ subject.find_index(subject[0]).should == reference.find_index(subject[0])
79
+ end
80
+ end
81
+
82
+ context "#index" do
83
+ it "returns same index as reference" do
84
+ subject.index(subject[0]).should == reference.index(subject[0])
85
+ end
86
+ end
87
+
88
+ context "#empty?" do
89
+ it "returns same value as reference" do
90
+ subject.empty?.should == reference.empty?
91
+ end
92
+ end
93
+
94
+ context "#each" do
95
+ it "returns same list as reference" do
96
+ actual = []
97
+ expected =[]
98
+ subject.each {|v| actual.push v}
99
+ reference.each{|v| expected.push v}
100
+ actual.should == expected
101
+ end
102
+ end
103
+
104
+
105
+ context "#each_index" do
106
+ it "returns same list as reference" do
107
+ compare_iterator(:each_index)
108
+ end
109
+ end
110
+
111
+ context "#reverse_each" do
112
+ it "returns same list as reference" do
113
+ compare_iterator(:reverse_each)
114
+ end
115
+ end
116
+
117
+ context "#rindex" do
118
+ it "returns same list as reference" do
119
+ compare_iterator(:rindex)
120
+ end
121
+ end
122
+
123
+ context "#select" do
124
+ it "returns same list as reference" do
125
+ actual = []
126
+ expected = []
127
+ subject.select {|v| true }.should == reference.select {|v| true }
128
+ end
129
+ end
130
+
131
+ context "#collect" do
132
+ it "returns same as reference" do
133
+ subject.collect { |v| v }.should == reference.collect { |v| v }
134
+ end
135
+ end
136
+
137
+ context "#map" do
138
+ it "returns same as reference" do
139
+ subject.map {|v| v.__id__ }.should == reference.map { |v| v.__id__ }
140
+ end
141
+ end
142
+
143
+ context "#keep_if" do
144
+ it "returns same as reference" do
145
+ subject.keep_if {|v| true}.should == reference.keep_if {|v| true}
146
+ end
147
+ end
148
+
149
+ private
150
+
151
+ def compare_iterator(method)
152
+ actual = []
153
+ expected = []
154
+ subject.send(method) {|v| actual.push(v) }.should == reference.send(method) { |v| expected.push(v) }
155
+ end
156
+ end
157
+
@@ -0,0 +1,49 @@
1
+ # subject is object under test
2
+ # reference is an object that responds to: :current_page,:per_page,:total_entries,:collection
3
+ shared_examples_for "object that responds to collection" do
4
+ specify {subject.collection.class.should == WillPaginate::Collection}
5
+ it "returns object with expected current_page" do
6
+ subject.collection.current_page.should == reference.current_page
7
+ end
8
+ it "returns object with expected per_page" do
9
+ subject.collection.per_page.should == reference.per_page
10
+ end
11
+ it "returns object with expected total_entries" do
12
+ subject.collection.total_entries.should == reference.total_entries
13
+ end
14
+ it "returns object with expected elements" do
15
+ subject.collection.map do |item| item end.should == reference.collection.map do |item| item end
16
+ end
17
+ end
18
+
19
+ shared_examples_for "object with no items that responds to collection" do
20
+ specify {subject.should respond_to(:collection)}
21
+ it "returns object with expected current_page" do
22
+ subject.collection.current_page.should == reference.current_page
23
+ end
24
+ it "returns object with expected per_page" do
25
+ subject.collection.per_page.should == reference.per_page
26
+ end
27
+ it "returns object with expected total_entries" do
28
+ subject.collection.total_entries.should == reference.total_entries
29
+ end
30
+ it "returns object with no elements" do
31
+ subject.collection.should == reference.collection
32
+ end
33
+ end
34
+
35
+ shared_examples_for "object that responds to collection with usable option" do
36
+ specify {subject.collection(true).class.should == WillPaginate::Collection}
37
+ it "returns collection that includes only usable photos" do
38
+ subject.collection(true).should == reference.collection
39
+ end
40
+ it "returns object with current_page set to 1" do
41
+ subject.collection(true).current_page.should == reference.current_page
42
+ end
43
+ it "returns object with total_entries set to number of usable entries in current page" do
44
+ subject.collection(true).total_entries.should == reference.total_entries
45
+ end
46
+ it "returns object with per_page set ot number of usable entries on current page" do
47
+ subject.collection(true).per_page.should == reference.per_page
48
+ end
49
+ end
@@ -0,0 +1,56 @@
1
+ shared_examples_for "object with flickr image url helpers" do
2
+ specify {subject.should respond_to(:square)}
3
+ let(:base_url){"http://farm%s.static.flickr.com/%s/%s_%s" %[
4
+ subject.farm,
5
+ subject.server,
6
+ subject.id,
7
+ subject.secret
8
+ ]}
9
+ context "#square" do
10
+ it "returns expected url for squre flickr image" do
11
+ subject.square.should == "#{base_url}_s.jpg"
12
+ end
13
+ end
14
+
15
+ specify {subject.should respond_to(:thumbnail)}
16
+ context "#thumbnail_url" do
17
+ it "returns expected url for thumbnail image" do
18
+ subject.thumbnail.should == "#{base_url}_t.jpg"
19
+ end
20
+ end
21
+
22
+ specify {subject.should respond_to(:small)}
23
+ context "#small" do
24
+ it "returns expected url for small image" do
25
+ subject.small.should == "#{base_url}_m.jpg"
26
+ end
27
+ end
28
+
29
+ specify {subject.should respond_to(:medium)}
30
+ context "#medium" do
31
+ it "returns expected url for medium" do
32
+ subject.medium.should == "#{base_url}.jpg"
33
+ end
34
+ end
35
+
36
+ specify {subject.should respond_to(:large)}
37
+ context "#large" do
38
+ it "returns expected url for large image" do
39
+ subject.large.should == "#{base_url}_b.jpg"
40
+ end
41
+ end
42
+
43
+ specify {subject.should respond_to(:medium_640)}
44
+ context "#medium_640" do
45
+ it "returns expected url for medium 640 image" do
46
+ subject.medium_640.should == "#{base_url}_z.jpg"
47
+ end
48
+ end
49
+
50
+ specify {subject.should respond_to(:'medium 640')}
51
+ context "#'medium 640'" do
52
+ it "returns expected url for medium 640 image" do
53
+ subject.send(:'medium 640').should == "#{base_url}_z.jpg"
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,13 @@
1
+ shared_examples_for "object with size accessor" do
2
+ it "returns object with expected size" do
3
+ subject.send(size).size.should == reference.size
4
+ end
5
+
6
+ it "returns object with expected width" do
7
+ subject.send(size).width.should == reference.width
8
+ end
9
+
10
+ it "returns object with expected height" do
11
+ subject.send(size).height.should == reference.height
12
+ end
13
+ end
@@ -0,0 +1,24 @@
1
+ require 'rubygems'
2
+ require 'rspec'
3
+
4
+ require 'faker'
5
+
6
+ require 'chronic_duration'
7
+ require 'flickraw-cached'
8
+ require 'ruby-debug'
9
+
10
+ require 'shared_examples/array_accessor'
11
+ require 'shared_examples/image_url_helpers'
12
+ require 'shared_examples/size_accessor'
13
+ require 'shared_examples/collection'
14
+
15
+ require 'flickrmocks'
16
+
17
+ Rspec.configure do |c|
18
+ # c.mock_with :mocha
19
+
20
+ APP = FlickrMocks
21
+ FlickrFixtures = APP::Fixtures.new
22
+ end
23
+
24
+