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,89 @@
1
+ require 'spec_helper'
2
+ require 'ruby-debug'
3
+
4
+ describe APP::Fixtures do
5
+
6
+ let(:klass) {APP::Fixtures}
7
+ let(:fixtures) {APP::Fixtures.new}
8
+ let(:subject) {fixtures}
9
+
10
+ context "class methods" do
11
+ specify {klass.should respond_to(:repository)}
12
+ context "repository" do
13
+ it "returns expected directory for the repository" do
14
+ expected = File.expand_path(File.dirname(__FILE__) + '/../fixtures') + '/'
15
+ klass.repository.should == expected
16
+ end
17
+ end
18
+ end
19
+
20
+
21
+ context "instance_methods" do
22
+ shared_examples_for "a flickraw fixture" do
23
+ let (:subject) {fixtures.send(fixture)}
24
+ let(:expected_methods){fixtures.expected_methods.send(fixture)}
25
+ it "responds to expected methods" do
26
+ expected_methods.each do |method|
27
+ subject.should respond_to(method)
28
+ end
29
+ end
30
+ end
31
+
32
+
33
+
34
+ specify {subject.should respond_to(:photo)}
35
+ context "photo" do
36
+ let(:fixture) {:photo}
37
+ it_behaves_like "a flickraw fixture"
38
+ end
39
+
40
+ specify {subject.should respond_to(:photos)}
41
+ context "photos" do
42
+ let(:fixture) {:photos}
43
+ it_behaves_like "a flickraw fixture"
44
+ end
45
+
46
+ specify {subject.should respond_to(:empty_photos)}
47
+ context "empty_photos" do
48
+ let(:fixture){:empty_photos}
49
+ it_behaves_like "a flickraw fixture"
50
+ end
51
+
52
+ specify {subject.should respond_to(:photo_details)}
53
+ context "photo_details" do
54
+ let(:fixture) {:photo_details}
55
+ it_behaves_like "a flickraw fixture"
56
+ end
57
+
58
+ specify {subject.should respond_to(:interesting_photos)}
59
+ context 'interesting_photos' do
60
+ let(:fixture) {:interesting_photos}
61
+ it_behaves_like "a flickraw fixture"
62
+ end
63
+
64
+ specify {subject.should respond_to(:author_photos)}
65
+ context "author_photos" do
66
+ let(:fixture) {:author_photos}
67
+ it_behaves_like "a flickraw fixture"
68
+ end
69
+
70
+ specify {subject.should respond_to(:photo_size)}
71
+ context "photo_size" do
72
+ let(:fixture) {:photo_size}
73
+ it_behaves_like "a flickraw fixture"
74
+ end
75
+
76
+ specify {subject.should respond_to(:photo_sizes)}
77
+ context "photo_sizes" do
78
+ let(:fixture) {:photo_sizes}
79
+ it_behaves_like "a flickraw fixture"
80
+ end
81
+ end
82
+
83
+ end
84
+
85
+
86
+
87
+
88
+
89
+
@@ -0,0 +1,70 @@
1
+ require 'spec_helper'
2
+
3
+ describe APP::CustomClone do
4
+ let(:fixtures){APP::Fixtures.new}
5
+
6
+ let(:photo){fixtures.photo}
7
+ let(:photos){fixtures.photos}
8
+ let(:photo_details){fixtures.photo_details}
9
+ let(:photo_sizes){fixtures.photo_sizes}
10
+ let(:photo_size){fixtures.photo_size}
11
+
12
+ # helper test method that check the ids of all object containted in a
13
+ # => FlickRaw::Response/ResponseList objects
14
+ def same_ids?(object,other)
15
+ case object
16
+ when FlickRaw::Response then same_ids?(object.instance_eval('@h'), other.instance_eval('@h'))
17
+ when Fixnum then nil
18
+ when String then object.__id__ == other.__id__
19
+ when Array then object.each_with_index.map do |value,index|
20
+ same_ids?(value,other[index])
21
+ end.keep_if do |value|
22
+ !value.nil?
23
+ end.inject(true) do |previous,current|
24
+ previous && current
25
+ end
26
+ when Hash then object.keys.map do |key|
27
+ same_ids?(object[key],other[key])
28
+ end.keep_if do |value|
29
+ !value.nil?
30
+ end.inject(true) do |previous,current|
31
+ previous && current
32
+ end
33
+ end
34
+ end
35
+
36
+ context "clone" do
37
+ shared_examples_for "cloning any flickraw response" do
38
+ it "returns clone with distinct ids from original object" do
39
+ other = subject.clone
40
+ same_ids?(subject,other).should be_false
41
+ end
42
+ end
43
+
44
+ context "cloning photo flickraw response" do
45
+ let(:subject){ photo}
46
+ it_behaves_like "cloning any flickraw response"
47
+ end
48
+
49
+ context "cloning photos flickraw responseList" do
50
+ let(:subject) { photos }
51
+ it_behaves_like "cloning any flickraw response"
52
+ end
53
+
54
+ context "cloning photo_details flickraw responseList" do
55
+ let(:subject) {photo_details}
56
+ it_behaves_like "cloning any flickraw response"
57
+ end
58
+
59
+ context "cloning photo_sizes flickraw responseList" do
60
+ let(:subject) { photo_sizes }
61
+ it_behaves_like "cloning any flickraw response"
62
+ end
63
+
64
+ context "cloning photo_size responseList" do
65
+ let(:subject) {photo_size}
66
+ it_behaves_like "cloning any flickraw response"
67
+ end
68
+ end
69
+
70
+ end
@@ -0,0 +1,98 @@
1
+ require 'spec_helper'
2
+
3
+ describe APP::CustomCompare do
4
+ let(:fixtures){APP::Fixtures.new}
5
+
6
+ let(:photo){fixtures.photo}
7
+ let(:photos){fixtures.photos}
8
+ let(:photo_details){fixtures.photo_details}
9
+ let(:photo_sizes){fixtures.photo_sizes}
10
+ let(:photo_size){fixtures.photo_size}
11
+
12
+ shared_examples_for "flickraw response for ==" do
13
+ it "should be equal to itself" do
14
+ subject.should == subject
15
+ end
16
+ it "should not be equal to nil" do
17
+ subject.should_not == nil
18
+ end
19
+ it "should be equal to clone of itself" do
20
+ subject.should == subject.clone
21
+ end
22
+ it "should not equal a different class" do
23
+ subject.should_not == [1,2,3,4]
24
+ end
25
+ it "should not eq another response" do
26
+ subject.should_not == other
27
+ end
28
+ end
29
+
30
+ context "instance methods" do
31
+ context "#==" do
32
+ context "photo flickraw response" do
33
+ let(:subject){photo}
34
+ let(:other){photo_details}
35
+
36
+ it_behaves_like "flickraw response for =="
37
+
38
+ it "returns false when object is compared with object that is slightly different" do
39
+ other = subject.clone
40
+ other.stub(:title).and_return(Faker::Lorem.sentence(3))
41
+ subject.should_not == other
42
+ end
43
+ end
44
+
45
+ context "photos flickraw responselist" do
46
+ let(:subject){photos}
47
+ let(:other){photo_details}
48
+
49
+ it_behaves_like "flickraw response for =="
50
+
51
+ it "returns false when object is compared with object that is slightly different" do
52
+ other = subject.clone
53
+ other.stub(:total).and_return('123454321')
54
+ subject.should_not == other
55
+ end
56
+ end
57
+
58
+ context "photo_details flickraw response" do
59
+ let(:subject){photo_details}
60
+ let(:other){photo_sizes}
61
+
62
+ it_behaves_like "flickraw response for =="
63
+
64
+ it "returns false when object is compared with object that is slightly different" do
65
+ other = subject.clone
66
+ subject.stub(:farm).and_return(123421)
67
+ subject.should_not == other
68
+ end
69
+ end
70
+
71
+ context "photo_sizes response list" do
72
+ let(:subject){photo_sizes}
73
+ let(:other){photo_details}
74
+
75
+ it_behaves_like "flickraw response for =="
76
+
77
+ it "returns false when object is compared with object that is slightly different" do
78
+ other = subject.clone
79
+ other.stub(:canprint).and_return(1234321)
80
+ subject.should_not == other
81
+ end
82
+ end
83
+
84
+ context "photo_size response" do
85
+ let(:subject){photo_size}
86
+ let(:other){photo_details}
87
+
88
+ it_behaves_like "flickraw response for =="
89
+
90
+ it "returns false when object is compared with object that is slightly different" do
91
+ other = subject.clone
92
+ other.stub(:width).and_return(1234321)
93
+ subject.should_not == other
94
+ end
95
+ end
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+
3
+ describe APP::CustomMarshal do
4
+ let(:klass) {APP::CustomMarshal}
5
+ let(:helpers) {APP::Helpers}
6
+ let(:fixtures) {APP::Fixtures.new}
7
+
8
+ shared_examples_for "marshalling and unmarshalling flickraw objects" do
9
+ it "should properly marshal/unmarshal Photos object" do
10
+ marshalled = Marshal.load(Marshal.dump(subject))
11
+ helpers.equivalent?(subject,marshalled).should be_true
12
+ end
13
+ end
14
+
15
+ context "intance methods" do
16
+ context "flickraw fixtures" do
17
+ context "#marshal and #unmarshal" do
18
+ context "fixture: photos" do
19
+ let(:subject){fixtures.photos}
20
+ it_behaves_like "marshalling and unmarshalling flickraw objects"
21
+ end
22
+
23
+ context "fixture: photo_sizes" do
24
+ let(:subject){fixtures.photo_sizes}
25
+ it_behaves_like "marshalling and unmarshalling flickraw objects"
26
+ end
27
+
28
+ context "fixture: photo_details" do
29
+ let(:subject){fixtures.photo_details}
30
+ it_behaves_like "marshalling and unmarshalling flickraw objects"
31
+ end
32
+
33
+ context "fixture: photo" do
34
+ let(:subject){fixtures.photo}
35
+ it_behaves_like "marshalling and unmarshalling flickraw objects"
36
+ end
37
+
38
+ context "fixture: interesting_photos" do
39
+ let(:subject){fixtures.interesting_photos}
40
+ it_behaves_like "marshalling and unmarshalling flickraw objects"
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,63 @@
1
+ require 'spec_helper'
2
+
3
+ describe APP::Helpers do
4
+ let(:klass) {APP::Helpers}
5
+ let(:fixtures) {APP::Fixtures.new}
6
+
7
+ context "class methods" do
8
+
9
+ specify {klass.should respond_to(:extension)}
10
+ context 'extension' do
11
+ it "returns expected extension: .marshal" do
12
+ klass.extension.should == '.marshal'
13
+ end
14
+ end
15
+
16
+ specify {klass.should respond_to(:fname_fixture)}
17
+ context "fname_fixture" do
18
+ it "returns correct fixture file name with symbol argument" do
19
+ expected_fname = 'sample_file' + klass.extension
20
+ klass.fname_fixture(:sample_file).should == expected_fname
21
+ end
22
+ it "raises an error when file name is a string" do
23
+ expect {klass.fname_fixture('sample_file')}.to raise_error
24
+ end
25
+ end
26
+
27
+ specify {klass.should respond_to(:equivalent?)}
28
+ context "equivalent?" do
29
+ it "returns true when photo_detail object compared to itself" do
30
+ klass.should be_equivalent(fixtures.photo_details,fixtures.photo_details)
31
+ end
32
+ it "returns true when photo_sizes object is compared to itself" do
33
+ klass.should be_equivalent(fixtures.photo_sizes,fixtures.photo_sizes)
34
+ end
35
+ it "returns true when same photo object is compared to itself" do
36
+ klass.should be_equivalent(fixtures.photos,fixtures.photos)
37
+ end
38
+ it "returns false when photo_details object is compared to photo object" do
39
+ klass.should_not be_equivalent(fixtures.photo_details, fixtures.photos.first)
40
+ end
41
+ it "returns false when photo_sizes object is compared to photo_details object" do
42
+ klass.should_not be_equivalent(fixtures.photo_sizes,fixtures.photo_details)
43
+ end
44
+ end
45
+
46
+ specify {klass.should respond_to(:dump)}
47
+ specify {klass.should respond_to(:load)}
48
+ context "dump/load behavior" do
49
+ it "dumps and loads an object without losing data" do
50
+ begin
51
+ fname = "/tmp/#{Time.now}_#{Random.rand}"
52
+ expected = [Random.rand,Random.rand]
53
+ klass.dump(expected,fname)
54
+ actual = klass.load(fname)
55
+ actual.should == expected
56
+ ensure
57
+ File.delete fname
58
+ end
59
+ end
60
+ end
61
+
62
+ end
63
+ end
@@ -0,0 +1,180 @@
1
+ require 'spec_helper'
2
+
3
+ describe APP::Stubs do
4
+ let(:klass) {APP::Stubs}
5
+ let(:fixtures) {APP::Fixtures.new}
6
+
7
+ context "class methods" do
8
+
9
+ specify{klass.should respond_to(:stub_flickr)}
10
+ context "stub_flickr" do
11
+ before(:each) do
12
+ klass.stub_flickr
13
+ end
14
+ it "stubs flickr.photos.search" do
15
+ flickr.photos.search(:tags => 'france').should == fixtures.photos
16
+ end
17
+ it "stubs flickr.photos.getSizes" do
18
+ flickr.photos.getSizes(:photo_id => '2121', :secret => '123abc').should == fixtures.photo_sizes
19
+ end
20
+ it "stubs flickr.photos.getInfo" do
21
+ flickr.photos.getInfo(:photo_id => '2121', :secret => '123abc').should == fixtures.photo_details
22
+ end
23
+ it "stubs flickr.interestingness.getList" do
24
+ flickr.interestingness.getList.should == fixtures.interesting_photos
25
+ end
26
+ end
27
+
28
+ specify {klass.should respond_to(:stub_search)}
29
+ context "stub_search: stubs for flickr.photos.search" do
30
+ before(:each) do
31
+ klass.stub_search
32
+ end
33
+ it "raises error when no options provided" do
34
+ expect {
35
+ flickr.photos.search
36
+ }.to raise_error(
37
+ FlickRaw::FailedResponse,
38
+ /'flickr.photos.search' - Parameterless searches have been disabled. Please use flickr.photos.getRecent instead./
39
+ )
40
+ end
41
+ it "raises when non-Hash option provided" do
42
+ expect {
43
+ flickr.photos.search([])
44
+ }.to raise_error(
45
+ FlickRaw::FailedResponse,
46
+ /'flickr.photos.search' - Parameterless searches have been disabled. Please use flickr.photos.getRecent instead./
47
+ )
48
+ end
49
+ it "raises error when neither :photo nor :user_id given" do
50
+ expect {
51
+ flickr.photos.search(:per_page => '3', :license => '4' )
52
+ }.to raise_error(
53
+ FlickRaw::FailedResponse,
54
+ /'flickr.photos.search' - Parameterless searches have been disabled. Please use flickr.photos.getRecent instead./
55
+ )
56
+ end
57
+ it "returns default photos fixture when :tags option given with non-garbage value" do
58
+ flickr.photos.search(:tags => "france").should == fixtures.photos
59
+ end
60
+ it "returns empty photos when :tags option given with garbage value" do
61
+ flickr.photos.search(:tags => "garbage").should == fixtures.empty_photos
62
+ end
63
+ it "returns author photo fixture when :user_id option given with non-garbage option" do
64
+ flickr.photos.search(:user_id => '23@393').should == fixtures.author_photos
65
+ end
66
+ it "returns empty photos when :user_id is garbage" do
67
+ flickr.photos.search(:user_id => 'garbage').should == fixtures.empty_photos
68
+ end
69
+ it "returns :author_photos when both :tags and :author_id provided with non-garbage option" do
70
+ flickr.photos.search(:user_id => '23@23', :tags => '23@23').should == fixtures.author_photos
71
+ end
72
+ it "returns empty_photos when :tags is garbage and :author_id is non-garbage" do
73
+ flickr.photos.search(:author_id => '23@393', :tags => 'garbage').should == fixtures.empty_photos
74
+ end
75
+ it "returns empty_photos when :author_id is garbage and :tags is non-garbage" do
76
+ flickr.photos.search(:user_id=> 'garbage', :tags => 'france').should == fixtures.empty_photos
77
+ end
78
+ it "returns :empty when both :author_id and :tags is garbage" do
79
+ flickr.photos.search(:user_id=>'garbage',:tags => 'garbage').should == fixtures.empty_photos
80
+ end
81
+ end
82
+
83
+
84
+ specify {klass.should respond_to(:stub_getInfo)}
85
+ context "stub_getInfo: which stubs flickr.photos.getInfo" do
86
+ before(:each) do
87
+ klass.stub_getInfo
88
+ end
89
+ it "raises error when no arguments provided" do
90
+ expect { flickr.photos.getInfo.should }.to raise_error(
91
+ FlickRaw::FailedResponse,
92
+ /'flickr.photos.getInfo' - Photo not found/
93
+ )
94
+ end
95
+ it "raises error when improper photo_id provided" do
96
+ expect { flickr.photos.getInfo(:photo_id => 'garbage').should }.to raise_error(
97
+ FlickRaw::FailedResponse,
98
+ /'flickr.photos.getInfo' - Photo "garbage" not found \(invalid ID\)/
99
+ )
100
+ end
101
+ it "raises error when non-hash option provided" do
102
+ expect { flickr.photos.getInfo([]).should }.to raise_error(
103
+ FlickRaw::FailedResponse,
104
+ /'flickr.photos.getInfo' - Photo not found/
105
+ )
106
+ end
107
+ it "raises photo details fixture when photo_id and secret given" do
108
+ flickr.photos.getInfo(:secret => 'b5da82cd4e', :photo_id => '51028174').should == fixtures.photo_details
109
+ end
110
+ it "raises photo details fixture when photo_id and no secret given" do
111
+ flickr.photos.getInfo(:photo_id => '51028174').should == fixtures.photo_details
112
+ end
113
+ end
114
+
115
+ specify {klass.should respond_to(:stub_getSizes)}
116
+ context "stub_getSizes: which stubs flickr.photos.getSizes" do
117
+ before(:each) do
118
+ klass.stub_getSizes
119
+ end
120
+ it "raises error when no options given" do
121
+ expect {
122
+ flickr.photos.getSizes
123
+ }.to raise_error(
124
+ FlickRaw::FailedResponse,
125
+ /'flickr.photos.getSizes' - Photo not found/
126
+ )
127
+ end
128
+ it "raises error when non-hash given" do
129
+ expect {
130
+ flickr.photos.getSizes []
131
+ }.to raise_error(
132
+ FlickRaw::FailedResponse,
133
+ /'flickr.photos.getSizes' - Photo not found/
134
+ )
135
+ end
136
+ it "raises error when garbage given as photo_id" do
137
+ expect {
138
+ flickr.photos.getSizes :photo_id => 'garbage'
139
+ }.to raise_error(
140
+ FlickRaw::FailedResponse,
141
+ /'flickr.photos.getSizes' - Photo not found/
142
+ )
143
+ end
144
+ it "returns photo sizes fixture when option given" do
145
+ flickr.photos.getSizes(:secret => '3c4374b19e', :photo_id => "5102817422").should == fixtures.photo_sizes
146
+ end
147
+ end
148
+
149
+ specify {klass.should respond_to(:stub_interestingness)}
150
+ context "stub_interestingness: stubs flickr.interestingness.getList" do
151
+ before(:each) do
152
+ klass.stub_interestingness
153
+ end
154
+ it "returns interesting fixture when no option given" do
155
+ flickr.interestingness.getList.should == fixtures.interesting_photos
156
+ end
157
+ it "returns interesting fixture with non-hash option argument" do
158
+ flickr.interestingness.getList([]).should == fixtures.interesting_photos
159
+ end
160
+ it "returns interesting fixture if hash-option with :date key provided" do
161
+ flickr.interestingness.getList(:tags => 'hello').should == fixtures.interesting_photos
162
+ end
163
+ it "raises error if invalid date provided" do
164
+ expect {
165
+ flickr.interestingness.getList(:date => 'garbage')
166
+ }.to raise_error(
167
+ FlickRaw::FailedResponse,
168
+ /Not a valid date string/
169
+ )
170
+ end
171
+ it "returns empty string if 2001-01-01 given" do
172
+ flickr.interestingness.getList(:date => '2000-01-01').should == fixtures.empty_photos
173
+ end
174
+ it "returns photo details fixture when option given" do
175
+ flickr.interestingness.getList(:date=> '2010-10-10').should == fixtures.interesting_photos
176
+ end
177
+ end
178
+
179
+ end
180
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe APP::VERSION do
4
+ subject{APP::VERSION}
5
+
6
+ context "constants" do
7
+ context "VERSION" do
8
+ it "returns expected version number" do
9
+ expected_version = File.read(File.expand_path("../../../VERSION", __FILE__)).strip
10
+ subject.should == expected_version
11
+ end
12
+ end
13
+ end
14
+
15
+ end
Binary file
Binary file
@@ -0,0 +1,17 @@
1
+ U:OpenStruct{
2
+ pages: perpage:
3
+ total:
4
+ photo:flickr_type:empty_photos[ ;;; ;
5
+ ; ; :interesting_photos[ ;;; ;
6
+ ; ; :author_photos[ ;;; ;
7
+ ; ; ; [:id:
8
+ owner: secret: server: farm:
9
+ title:
10
+ dates:
11
+ views:editability:
12
+ usage:
13
+ notes: tags:
14
+ media; :photo_sizes[
15
+ : canblog:
16
+ label:
17
+ width: height: source:url;,;
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe APP::Models::Helpers do
4
+ let(:klass) {APP::Models::Helpers}
5
+ context "class methods" do
6
+
7
+ specify {klass.should respond_to(:array_accessor_methods)}
8
+ context "array_accessor_methods" do
9
+ it "returns expected array methods" do
10
+ klass.array_accessor_methods.sort.should == [:[], :at,:fetch, :first, :last,:each,
11
+ :each_index, :reverse_each,:length, :size,
12
+ :empty?, :find_index, :index,:rindex, :collect,
13
+ :map, :select, :keep_if, :values_at].sort
14
+ end
15
+ end
16
+
17
+ specify {klass.should respond_to(:possible_sizes)}
18
+ context "possible_sizes" do
19
+ it "returns expected array of possible image sizes" do
20
+ klass.possible_sizes.should == [:square, :thumbnail, :small, :medium,
21
+ :medium_640, :large, :original]
22
+ end
23
+ end
24
+ end
25
+ end