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
data/spec/api/api_spec.rb
CHANGED
@@ -2,6 +2,7 @@ require 'spec_helper'
|
|
2
2
|
require 'ruby-debug'
|
3
3
|
describe APP::Api do
|
4
4
|
let(:klass) { APP::Api }
|
5
|
+
let(:models){APP::Models}
|
5
6
|
|
6
7
|
let(:fixtures){APP::Fixtures.instance}
|
7
8
|
let(:photo){fixtures.photo}
|
@@ -21,7 +22,11 @@ describe APP::Api do
|
|
21
22
|
klass.defaults = @defaults
|
22
23
|
end
|
23
24
|
it "returns has with expected set of keys" do
|
24
|
-
klass.defaults.keys.sort.should == [:per_page,:license,:media
|
25
|
+
klass.defaults.keys.sort.should == [:page,:per_page,:license,:media,
|
26
|
+
:max_entries,:extras,:tag_mode,
|
27
|
+
:possible_sizes,:possible_tag_modes].sort
|
28
|
+
|
29
|
+
|
25
30
|
end
|
26
31
|
it "returns object whose elements can be set similar to a hash" do
|
27
32
|
expected = "#{Random.srand}"
|
@@ -34,13 +39,26 @@ describe APP::Api do
|
|
34
39
|
end
|
35
40
|
|
36
41
|
context "class methods" do
|
42
|
+
specify {klass.should respond_to(:default)}
|
43
|
+
context "default" do
|
44
|
+
it "returns key stored in @defaults class instance variable when symbol specified" do
|
45
|
+
klass.default(:per_page).should == klass.defaults[:per_page]
|
46
|
+
end
|
47
|
+
it "returns key stored in @defaults class instance variable when string specified" do
|
48
|
+
klass.default('per_page').should == klass.defaults[:per_page]
|
49
|
+
end
|
50
|
+
it "returns nil when key that is not in @defaults class instance variable is specified" do
|
51
|
+
klass.default('garbage').should == nil
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
37
55
|
let(:subject){klass}
|
38
56
|
specify {klass.should respond_to(:photo)}
|
39
57
|
context "photo" do
|
40
58
|
it "returns expected Photo object" do
|
41
59
|
flickr.photos.stub(:getInfo).and_return(photo)
|
42
60
|
klass.photo({:photo =>photo.id,
|
43
|
-
|
61
|
+
:secret => photo.secret}).should == models::Photo.new(photo)
|
44
62
|
end
|
45
63
|
context "arguments" do
|
46
64
|
let(:method){:photo}
|
@@ -53,7 +71,7 @@ describe APP::Api do
|
|
53
71
|
it "returns expected PhotoSearch object" do
|
54
72
|
flickr.photos.stub(:search).and_return(photos)
|
55
73
|
klass.photos({:search_terms => 'iran'}).should ==
|
56
|
-
|
74
|
+
models::PhotoSearch.new(photos,{:search_terms => 'iran'})
|
57
75
|
end
|
58
76
|
it "raises error when non-hash argument provided" do
|
59
77
|
expect {
|
@@ -69,10 +87,10 @@ describe APP::Api do
|
|
69
87
|
specify {klass.should respond_to(:photo_sizes)}
|
70
88
|
context "photo_sizes" do
|
71
89
|
it "returns expected PhotoSizes object" do
|
72
|
-
expected =
|
90
|
+
expected = models::PhotoSizes.new(sizes)
|
73
91
|
flickr.photos.stub(:getSizes).and_return(sizes)
|
74
92
|
klass.photo_sizes(:photo => expected.id,
|
75
|
-
|
93
|
+
:secret => expected.secret).should == expected
|
76
94
|
end
|
77
95
|
context "arguments" do
|
78
96
|
let(:method){:photos}
|
@@ -86,7 +104,7 @@ describe APP::Api do
|
|
86
104
|
flickr.photos.stub(:getSizes).and_return(sizes)
|
87
105
|
flickr.photos.stub(:getInfo).and_return(photo)
|
88
106
|
klass.photo_details(:photo => photo.id,
|
89
|
-
|
107
|
+
:secret => photo.secret).should == models::PhotoDetails.new(photo,sizes)
|
90
108
|
end
|
91
109
|
context "arguments" do
|
92
110
|
let(:method){:photo_details}
|
@@ -100,7 +118,7 @@ describe APP::Api do
|
|
100
118
|
it "returns expected PhotoSearch object" do
|
101
119
|
flickr.interestingness.stub(:getList).and_return(interesting_photos)
|
102
120
|
klass.interesting_photos({:date => '2010-01-01'}).should ==
|
103
|
-
|
121
|
+
models::PhotoSearch.new(interesting_photos,{:date => '2010-01-01'})
|
104
122
|
end
|
105
123
|
context "arguments" do
|
106
124
|
let(:method){:interesting_photos}
|
@@ -113,7 +131,7 @@ describe APP::Api do
|
|
113
131
|
it "returns expected CommonsInstitutions object" do
|
114
132
|
flickr.commons.stub(:getInstitutions).and_return(commons_institutions)
|
115
133
|
klass.commons_institutions({}).should ==
|
116
|
-
|
134
|
+
models::CommonsInstitutions.new(commons_institutions)
|
117
135
|
end
|
118
136
|
context "arguments" do
|
119
137
|
let(:method){:commons_institutions}
|
data/spec/api/flickr_spec.rb
CHANGED
@@ -1,54 +1,54 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe APP::Api do
|
4
|
-
let(:klass){APP::Api}
|
3
|
+
describe APP::Api::Flickr do
|
4
|
+
let(:klass){APP::Api::Flickr}
|
5
5
|
let(:fixtures){APP::Fixtures.instance}
|
6
6
|
|
7
7
|
context "class methods" do
|
8
|
-
specify {klass.should respond_to(:
|
9
|
-
context "
|
8
|
+
specify {klass.should respond_to(:photos)}
|
9
|
+
context "photos" do
|
10
10
|
it "returns list of photos" do
|
11
11
|
flickr.photos.stub(:search).and_return(fixtures.photos)
|
12
|
-
klass.
|
12
|
+
klass.photos({}).should == fixtures.photos
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
specify {klass.should respond_to(:
|
17
|
-
context "
|
16
|
+
specify {klass.should respond_to(:photo)}
|
17
|
+
context "photos" do
|
18
18
|
it "returns photo" do
|
19
19
|
flickr.photos.stub(:getInfo).and_return(fixtures.photo)
|
20
|
-
klass.
|
20
|
+
klass.photo({}).should == fixtures.photo
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
specify {klass.should respond_to(:
|
25
|
-
context "
|
24
|
+
specify {klass.should respond_to(:photo_sizes)}
|
25
|
+
context "photo_sizes" do
|
26
26
|
it "returns list sizes for a photo" do
|
27
27
|
flickr.photos.stub(:getSizes).and_return(fixtures.photo_sizes)
|
28
|
-
klass.
|
28
|
+
klass.photo_sizes({}).should == fixtures.photo_sizes
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
-
specify {klass.should respond_to(:
|
33
|
-
context "
|
32
|
+
specify {klass.should respond_to(:interestingness)}
|
33
|
+
context "interestingness" do
|
34
34
|
it "returns list of interesting photos" do
|
35
35
|
flickr.interestingness.stub(:getList).and_return(fixtures.interesting_photos)
|
36
|
-
klass.
|
36
|
+
klass.interestingness({}).should == fixtures.interesting_photos
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
-
specify {klass.should respond_to(:
|
41
|
-
context "
|
40
|
+
specify {klass.should respond_to(:author)}
|
41
|
+
context "author" do
|
42
42
|
it "returns list of photos for an author" do
|
43
43
|
flickr.photos.stub(:search).and_return(fixtures.author_photos)
|
44
|
-
klass.
|
44
|
+
klass.author({}).should == fixtures.author_photos
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
-
specify {klass.should respond_to(:
|
48
|
+
specify {klass.should respond_to(:commons_institutions)}
|
49
49
|
it "retuns list of commons institutions" do
|
50
50
|
flickr.commons.stub(:getInstitutions).and_return(fixtures.commons_institutions)
|
51
|
-
klass.
|
51
|
+
klass.commons_institutions.should == fixtures.commons_institutions
|
52
52
|
end
|
53
53
|
end
|
54
54
|
end
|
data/spec/api/helper_spec.rb
CHANGED
@@ -1,37 +1,37 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe APP::Api do
|
3
|
+
describe APP::Api::Helpers do
|
4
4
|
|
5
|
-
let(:klass) {APP::Api}
|
5
|
+
let(:klass) {APP::Api::Helpers}
|
6
6
|
context "class methods" do
|
7
|
-
specify {klass.should respond_to(:
|
8
|
-
context "
|
9
|
-
it "returns key stored in @defaults class instance variable when symbol specified" do
|
10
|
-
klass.default(:per_page).should == klass.defaults[:per_page]
|
11
|
-
end
|
12
|
-
it "returns key stored in @defaults class instance variable when string specified" do
|
13
|
-
klass.default('per_page').should == klass.defaults[:per_page]
|
14
|
-
end
|
15
|
-
it "returns nil when key that is not in @defaults class instance variable is specified" do
|
16
|
-
klass.default('garbage').should == nil
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
specify {klass.should respond_to(:time)}
|
21
|
-
context "time" do
|
7
|
+
specify {klass.should respond_to(:date)}
|
8
|
+
context "date" do
|
22
9
|
it "returns yesterday when no time is specified" do
|
23
10
|
expected = Chronic.parse('yesterday').strftime('%Y-%m-%d')
|
24
|
-
klass.
|
11
|
+
klass.date.should == expected
|
25
12
|
end
|
26
13
|
|
27
14
|
it "returns user specified date when proper date given" do
|
28
15
|
expected = '2010-12-25'
|
29
|
-
klass.
|
16
|
+
klass.date(expected).should == expected
|
30
17
|
end
|
31
18
|
|
32
19
|
it "returns yesterday when garbage date given" do
|
33
|
-
klass.
|
20
|
+
klass.date('garbage').should == Chronic.parse('yesterday').strftime('%Y-%m-%d')
|
34
21
|
end
|
35
22
|
end
|
36
23
|
end
|
24
|
+
|
25
|
+
specify {klass.should respond_to(:valid_date?)}
|
26
|
+
context "valid_date?" do
|
27
|
+
it "returns true when valid string of Format 'YYYY-MM-DD' provided" do
|
28
|
+
klass.valid_date?('2001-10-10').should be_true
|
29
|
+
end
|
30
|
+
it "returns false when integer provided string of format provided" do
|
31
|
+
klass.valid_date?(1).should be_false
|
32
|
+
end
|
33
|
+
it "returns false when ambiguous date provided" do
|
34
|
+
klass.valid_date?('2000').should be_false
|
35
|
+
end
|
36
|
+
end
|
37
37
|
end
|
data/spec/api/options_spec.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe APP::Api do
|
4
|
-
let(:api) {APP::Api}
|
5
|
-
let(:subject) {APP::Api}
|
4
|
+
let(:api) {APP::Api::Options}
|
5
|
+
let(:subject) {APP::Api::Options}
|
6
6
|
let(:extras){
|
7
7
|
{ :license => '4,5,6,7',
|
8
8
|
:media => 'photos',
|
@@ -23,159 +23,205 @@ describe APP::Api do
|
|
23
23
|
}.merge(extras.clone)
|
24
24
|
}
|
25
25
|
|
26
|
-
|
27
|
-
context "
|
26
|
+
specify {subject.should respond_to(:search)}
|
27
|
+
context "search" do
|
28
|
+
let(:method){:search}
|
28
29
|
it "should give correct options when all options are specified except :author_id" do
|
29
|
-
subject.
|
30
|
+
subject.search(options.clone.merge(:per_page =>'400')).should == expected
|
30
31
|
end
|
31
32
|
it "should return options when fully specified" do
|
32
|
-
subject.
|
33
|
+
subject.search(:per_page => '400',:owner_id => 'authorid',:page => '2').should ==
|
33
34
|
expected.clone.merge(:user_id => 'authorid',:tags => nil)
|
34
35
|
|
35
36
|
end
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
37
|
+
context "tag_mode option" do
|
38
|
+
let(:options){
|
39
|
+
extras.clone.merge({
|
40
|
+
:search_terms => 'france',
|
41
|
+
:owner_id => '1234',
|
42
|
+
:page => '1',
|
43
|
+
:per_page => '50'
|
44
|
+
})
|
45
|
+
}
|
46
|
+
let(:expected){
|
47
|
+
extras.clone.merge({
|
48
|
+
:tags => options[:search_terms],
|
49
|
+
:user_id => options[:owner_id],
|
50
|
+
:page => options[:page],
|
51
|
+
:per_page => options[:per_page]
|
52
|
+
})
|
53
|
+
}
|
54
|
+
it_behaves_like "tag mode hash option"
|
55
|
+
end
|
56
|
+
context "per page option" do
|
57
|
+
let(:options){
|
58
|
+
extras.clone.merge({
|
59
|
+
:search_terms => 'france',
|
60
|
+
:owner_id => '1234',
|
61
|
+
:page => '1',
|
62
|
+
})
|
63
|
+
}
|
64
|
+
let(:expected){
|
65
|
+
extras.clone.merge({
|
66
|
+
:tags => options[:search_terms],
|
67
|
+
:user_id => options[:owner_id],
|
68
|
+
:page => options[:page],
|
69
|
+
})
|
70
|
+
}
|
71
|
+
it_behaves_like "per page hash option"
|
72
|
+
end
|
73
|
+
context "page option" do
|
74
|
+
let(:options){
|
75
|
+
extras.clone.merge({
|
76
|
+
:search_terms => 'france',
|
77
|
+
:owner_id => '1234',
|
78
|
+
:per_page => '50',
|
79
|
+
})
|
80
|
+
}
|
81
|
+
let(:expected){
|
82
|
+
extras.clone.merge({
|
83
|
+
:tags => options[:search_terms],
|
84
|
+
:user_id => options[:owner_id],
|
85
|
+
:per_page => options[:per_page],
|
86
|
+
})
|
87
|
+
}
|
88
|
+
it_behaves_like "page hash option"
|
60
89
|
end
|
61
90
|
end
|
62
91
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
92
|
+
specify {subject.should respond_to(:interesting)}
|
93
|
+
context "interesting" do
|
94
|
+
let(:method){:interesting}
|
95
|
+
context "date option" do
|
96
|
+
let(:options){{
|
97
|
+
:per_page => '2',
|
98
|
+
:page => '2',
|
99
|
+
:extras => 'license'
|
100
|
+
}}
|
101
|
+
let(:expected){options}
|
102
|
+
it_behaves_like "date hash option"
|
72
103
|
end
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
104
|
+
|
105
|
+
context "page option" do
|
106
|
+
let(:options){
|
107
|
+
{ :date => '2010-10-10',
|
108
|
+
:per_page => '50',
|
109
|
+
:extras => FlickrMocks::Api.default(:extras)
|
110
|
+
}}
|
111
|
+
let(:expected){options}
|
112
|
+
it_behaves_like "page hash option"
|
113
|
+
end
|
114
|
+
context "per page option" do
|
115
|
+
let(:options){
|
116
|
+
{ :date => '2010-10-10',
|
117
|
+
:page => '1',
|
118
|
+
:extras => FlickrMocks::Api.default(:extras)
|
119
|
+
}}
|
120
|
+
let(:expected){options}
|
121
|
+
it_behaves_like "per page hash option"
|
81
122
|
end
|
82
123
|
end
|
83
124
|
|
84
|
-
|
125
|
+
specify{subject.should respond_to(:photo)}
|
126
|
+
context "photo" do
|
85
127
|
let(:expected) {
|
86
128
|
{:photo_id => '20030', :secret => 'abcdef'}
|
87
129
|
}
|
88
|
-
|
89
|
-
|
90
|
-
subject.photo_options(expected).should == expected
|
130
|
+
it "returns :photo_id and :secret when provided" do
|
131
|
+
subject.photo(expected).should == expected
|
91
132
|
end
|
92
|
-
it "
|
93
|
-
subject.
|
133
|
+
it "returns :photo_id when :id provided" do
|
134
|
+
subject.photo(:id => '20030',:secret => 'abcdef').should == expected
|
94
135
|
end
|
95
|
-
it "should
|
96
|
-
subject.
|
136
|
+
it "should prefer :photo_id over :id" do
|
137
|
+
subject.photo(expected.clone.merge(:id => 'not correct')).should == expected
|
97
138
|
end
|
98
|
-
it "should
|
99
|
-
subject.
|
100
|
-
expected
|
101
|
-
|
139
|
+
it "should prefer :photo_secret over :secret" do
|
140
|
+
subject.photo(:photo_secret => 'abcdef', :secret => 'not correct', :id => '20030').should ==
|
141
|
+
expected
|
102
142
|
end
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
let(:expected){
|
107
|
-
{
|
108
|
-
:search_terms => 'iran,shiraz',
|
109
|
-
:owner_id => 'authorid',
|
110
|
-
:base_url => 'http://www.happyboy.com/'
|
111
|
-
}
|
112
|
-
}
|
113
|
-
let(:base_url) {'http://www.example.com/'}
|
114
|
-
|
115
|
-
it "should return properly when all options specified" do
|
116
|
-
subject.search_params(expected).should == expected
|
143
|
+
it "returns nil for :photo_id when no id given" do
|
144
|
+
subject.photo({:secret => '22'}).should ==
|
145
|
+
{:secret => '22', :photo_id => nil}
|
117
146
|
end
|
118
|
-
it "
|
119
|
-
subject.
|
120
|
-
|
121
|
-
|
147
|
+
it "returns nil for :secret when no :secret given" do
|
148
|
+
subject.photo({:photo_id => '1234'}).should ==
|
149
|
+
{:secret => nil, :photo_id => '1234'}
|
122
150
|
end
|
123
|
-
it "
|
124
|
-
subject.
|
125
|
-
|
151
|
+
it "returns nil for :secret and :photo_id when nil provided" do
|
152
|
+
subject.photo({:photo_id => nil, :secret => nil}).should ==
|
153
|
+
{:secret => nil, :photo_id => nil}
|
126
154
|
end
|
127
155
|
end
|
128
156
|
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
157
|
+
|
158
|
+
|
159
|
+
specify {subject.should respond_to(:author)}
|
160
|
+
context "author" do
|
161
|
+
let(:method){:author}
|
162
|
+
let(:expected){
|
163
|
+
{ :per_page => '400',
|
164
|
+
:user_id => nil,
|
165
|
+
:page => '2'}.merge(extras.clone)
|
135
166
|
}
|
136
|
-
it "should
|
137
|
-
subject.
|
138
|
-
end
|
139
|
-
it "should filter non-required options" do
|
140
|
-
subject.interesting_params(expected.clone.merge(:search_terms => 'iran,shiraz',
|
141
|
-
:owner_id => 'authorid')).should == expected
|
142
|
-
end
|
143
|
-
it "should extract base_url options" do
|
144
|
-
subject.interesting_params(expected.clone.merge(:base_url => expected[:base_url])).should ==
|
145
|
-
expected.clone.merge(:base_url => expected[:base_url])
|
167
|
+
it "should give correct options when all options are specified except :author_id" do
|
168
|
+
subject.author(options.clone.merge(:per_page =>'400')).should == expected
|
146
169
|
end
|
147
|
-
|
170
|
+
it "should return options when fully specified" do
|
171
|
+
subject.author(:per_page => '400',:owner_id => 'authorid',:page => '2').should ==
|
172
|
+
expected.clone.merge(:user_id => 'authorid')
|
148
173
|
|
149
|
-
context "institution_params" do
|
150
|
-
it "returns :per_page and :current_page if specified" do
|
151
|
-
expected = {:per_page => 2, :current_page => 3}
|
152
|
-
subject.commons_institutions_params(expected).should == expected
|
153
|
-
end
|
154
|
-
it "returns :per_page is prefereed over :perpage is specified" do
|
155
|
-
expected = {:per_page => 2, :current_page => 1}
|
156
|
-
subject.commons_institutions_params(:per_page => 3, :perpage => 20, :current_page => 1).should ==
|
157
|
-
{:per_page => 3, :current_page => 1}
|
158
|
-
end
|
159
|
-
it "returns :perpage if :per_page is not specified" do
|
160
|
-
expected = {:perpage => 3}
|
161
|
-
subject.commons_institutions_params(:perpage => 20, :current_page => 1).should ==
|
162
|
-
{:per_page => 20, :current_page => 1}
|
163
174
|
end
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
+
context "tag_mode option" do
|
176
|
+
it "should be able to set :tag_mode" do
|
177
|
+
subject.author(options.clone.merge(:per_page => '500', :tag_mode=>'all' )).should ==
|
178
|
+
expected.clone.merge({:per_page => '500',:tag_mode => 'all'}
|
179
|
+
)
|
180
|
+
end
|
181
|
+
it "should give default tag_mode when not specified" do
|
182
|
+
subject.author(options.clone.merge(:per_page => '500')).should ==
|
183
|
+
expected.clone.merge({:per_page => '500'}
|
184
|
+
)
|
185
|
+
end
|
186
|
+
it "should give default tag_mode when junk given for tag_mode" do
|
187
|
+
subject.author(options.clone.merge(:per_page => '500', :tag_mode => 'junk')).should ==
|
188
|
+
expected.clone.merge({:per_page => '500'}
|
189
|
+
)
|
190
|
+
end
|
191
|
+
end
|
192
|
+
context "per page option" do
|
193
|
+
let(:options){
|
194
|
+
extras.clone.merge({
|
195
|
+
:search_terms => 'france',
|
196
|
+
:owner_id => '1234',
|
197
|
+
:page => '1',
|
198
|
+
})
|
199
|
+
}
|
200
|
+
let(:expected){
|
201
|
+
extras.clone.merge({
|
202
|
+
:user_id => options[:owner_id],
|
203
|
+
:page => options[:page],
|
204
|
+
})
|
205
|
+
}
|
206
|
+
it_behaves_like "per page hash option"
|
207
|
+
end
|
208
|
+
context "page option" do
|
209
|
+
let(:options){
|
210
|
+
extras.clone.merge({
|
211
|
+
:search_terms => 'france',
|
212
|
+
:owner_id => '1234',
|
213
|
+
:per_page => '50',
|
214
|
+
})
|
215
|
+
}
|
216
|
+
let(:expected){
|
217
|
+
extras.clone.merge({
|
218
|
+
:user_id => options[:owner_id],
|
219
|
+
:per_page => options[:per_page],
|
220
|
+
})
|
221
|
+
}
|
222
|
+
it_behaves_like "page hash option"
|
175
223
|
end
|
176
224
|
end
|
177
|
-
|
178
|
-
|
179
225
|
end
|
180
226
|
|
181
227
|
|