fleakr 0.6.3 → 0.7.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/README.rdoc +88 -57
- data/Rakefile +28 -9
- data/lib/fleakr.rb +25 -31
- data/lib/fleakr/api/option.rb +34 -34
- data/lib/fleakr/api/parameter_list.rb +23 -23
- data/lib/fleakr/objects.rb +4 -1
- data/lib/fleakr/objects/metadata.rb +35 -0
- data/lib/fleakr/objects/metadata_collection.rb +36 -0
- data/lib/fleakr/objects/photo.rb +15 -11
- data/lib/fleakr/objects/set.rb +17 -13
- data/lib/fleakr/objects/url.rb +83 -0
- data/lib/fleakr/objects/user.rb +8 -0
- data/lib/fleakr/support.rb +3 -1
- data/lib/fleakr/support/attribute.rb +2 -2
- data/lib/fleakr/support/object.rb +44 -29
- data/lib/fleakr/support/url_expander.rb +37 -0
- data/lib/fleakr/support/utility.rb +66 -0
- data/lib/fleakr/version.rb +5 -5
- data/test/fixtures/photos.getExif.xml +362 -0
- data/test/test_helper.rb +44 -47
- data/test/unit/fleakr/api/authentication_request_test.rb +12 -12
- data/test/unit/fleakr/api/file_parameter_test.rb +15 -15
- data/test/unit/fleakr/api/method_request_test.rb +1 -1
- data/test/unit/fleakr/api/option_test.rb +44 -44
- data/test/unit/fleakr/api/parameter_list_test.rb +40 -40
- data/test/unit/fleakr/api/response_test.rb +10 -10
- data/test/unit/fleakr/api/upload_request_test.rb +28 -28
- data/test/unit/fleakr/api/value_parameter_test.rb +10 -10
- data/test/unit/fleakr/core_ext/false_class_test.rb +5 -5
- data/test/unit/fleakr/core_ext/hash_test.rb +9 -9
- data/test/unit/fleakr/core_ext/true_class_test.rb +5 -5
- data/test/unit/fleakr/objects/authentication_token_test.rb +23 -23
- data/test/unit/fleakr/objects/collection_test.rb +23 -23
- data/test/unit/fleakr/objects/comment_test.rb +15 -15
- data/test/unit/fleakr/objects/contact_test.rb +11 -11
- data/test/unit/fleakr/objects/error_test.rb +8 -8
- data/test/unit/fleakr/objects/group_test.rb +13 -13
- data/test/unit/fleakr/objects/image_test.rb +4 -4
- data/test/unit/fleakr/objects/metadata_collection_test.rb +55 -0
- data/test/unit/fleakr/objects/metadata_test.rb +27 -0
- data/test/unit/fleakr/objects/photo_context_test.rb +23 -23
- data/test/unit/fleakr/objects/photo_test.rb +71 -64
- data/test/unit/fleakr/objects/search_test.rb +22 -22
- data/test/unit/fleakr/objects/set_test.rb +62 -40
- data/test/unit/fleakr/objects/tag_test.rb +32 -31
- data/test/unit/fleakr/objects/url_test.rb +185 -0
- data/test/unit/fleakr/objects/user_test.rb +43 -16
- data/test/unit/fleakr/support/attribute_test.rb +15 -15
- data/test/unit/fleakr/support/object_test.rb +77 -33
- data/test/unit/fleakr/support/request_test.rb +12 -12
- data/test/unit/fleakr/support/url_expander_test.rb +44 -0
- data/test/unit/fleakr/support/utility_test.rb +70 -0
- data/test/unit/fleakr_test.rb +48 -41
- metadata +43 -23
@@ -1,46 +1,60 @@
|
|
1
|
-
require File.
|
1
|
+
require File.expand_path('../../../../test_helper', __FILE__)
|
2
2
|
|
3
3
|
class EmptyObject
|
4
4
|
include Fleakr::Support::Object
|
5
5
|
end
|
6
6
|
|
7
7
|
class FlickrObject
|
8
|
-
|
8
|
+
|
9
9
|
include Fleakr::Support::Object
|
10
|
-
|
10
|
+
|
11
11
|
flickr_attribute :name
|
12
12
|
flickr_attribute :description, :from => 'desc'
|
13
13
|
flickr_attribute :id, :from => '@nsid'
|
14
14
|
flickr_attribute :photoset_id, :from => 'photoset@id'
|
15
15
|
flickr_attribute :tag, :category
|
16
|
-
|
16
|
+
|
17
17
|
find_one :by_id, :call => 'people.getInfo'
|
18
|
-
|
18
|
+
|
19
|
+
has_many :associated_objects
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
module Fleakr
|
24
|
+
module Objects
|
25
|
+
class AssociatedObject
|
26
|
+
|
27
|
+
include Fleakr::Support::Object
|
28
|
+
|
29
|
+
find_all :by_flickr_object_id, :call => 'object.bogus'
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
19
33
|
end
|
20
34
|
|
21
35
|
module Fleakr
|
22
36
|
class ObjectTest < Test::Unit::TestCase
|
23
|
-
|
37
|
+
|
24
38
|
context "A class method provided by the Flickr::Object module" do
|
25
|
-
|
39
|
+
|
26
40
|
should "have an empty list of attributes if none are supplied" do
|
27
41
|
EmptyObject.attributes.should == []
|
28
42
|
end
|
29
|
-
|
43
|
+
|
30
44
|
should "know the names of all its attributes" do
|
31
45
|
FlickrObject.attributes.map {|a| a.name.to_s }.should == %w(name description id photoset_id tag category)
|
32
46
|
end
|
33
|
-
|
47
|
+
|
34
48
|
should "be able to find by ID" do
|
35
49
|
id = 1
|
36
50
|
flickr_object = stub()
|
37
|
-
|
51
|
+
|
38
52
|
response = mock_request_cycle :for => 'people.getInfo', :with => {:id => id}
|
39
53
|
FlickrObject.expects(:new).with(response.body, :id => id).returns(flickr_object)
|
40
|
-
|
54
|
+
|
41
55
|
FlickrObject.find_by_id(id).should == flickr_object
|
42
56
|
end
|
43
|
-
|
57
|
+
|
44
58
|
should "be able to pass parameters to the :find_by_id method" do
|
45
59
|
id = 1
|
46
60
|
params = {:authenticate? => true}
|
@@ -49,25 +63,55 @@ module Fleakr
|
|
49
63
|
|
50
64
|
response = mock_request_cycle :for => 'people.getInfo', :with => full_params
|
51
65
|
FlickrObject.expects(:new).with(response.body, full_params).returns(flickr_object)
|
52
|
-
|
66
|
+
|
53
67
|
FlickrObject.find_by_id(id, params).should == flickr_object
|
54
68
|
end
|
55
|
-
|
69
|
+
|
56
70
|
end
|
57
|
-
|
71
|
+
|
58
72
|
context "An instance method provided by the Flickr::Object module" do
|
59
|
-
|
73
|
+
|
60
74
|
should "have default reader methods" do
|
61
75
|
[:name, :description, :id, :photoset_id, :tag, :category].each do |method_name|
|
62
76
|
FlickrObject.new.respond_to?(method_name).should == true
|
63
77
|
end
|
64
78
|
end
|
65
|
-
|
79
|
+
|
66
80
|
should "be able to capture the :auth_token from options sent along to the new object" do
|
67
81
|
object = EmptyObject.new(nil, {:foo => 'bar', :auth_token => 'toke'})
|
68
82
|
object.authentication_options.should == {:auth_token => 'toke'}
|
69
83
|
end
|
70
|
-
|
84
|
+
|
85
|
+
should "be able to pass parameters to the association" do
|
86
|
+
object = FlickrObject.new
|
87
|
+
object.stubs(:authentication_options).with().returns({'key' => 'value'})
|
88
|
+
object.stubs(:id).returns('1')
|
89
|
+
|
90
|
+
Fleakr::Objects::AssociatedObject.expects(:find_all_by_flickr_object_id).with('1', {'key' => 'value', :per_page => '100'}).returns('collection')
|
91
|
+
|
92
|
+
object.associated_objects(:per_page => '100').should == 'collection'
|
93
|
+
end
|
94
|
+
|
95
|
+
should "cache the results of the association" do
|
96
|
+
object = FlickrObject.new
|
97
|
+
object.stubs(:id).returns('1')
|
98
|
+
|
99
|
+
Fleakr::Objects::AssociatedObject.expects(:find_all_by_flickr_object_id).with('1', {}).once.returns('collection')
|
100
|
+
|
101
|
+
2.times { object.associated_objects }
|
102
|
+
end
|
103
|
+
|
104
|
+
should "know not to cache the results of the association when there are different parameters" do
|
105
|
+
object = FlickrObject.new
|
106
|
+
object.stubs(:id).returns('1')
|
107
|
+
|
108
|
+
Fleakr::Objects::AssociatedObject.stubs(:find_all_by_flickr_object_id).with('1', {}).returns('collection_1')
|
109
|
+
Fleakr::Objects::AssociatedObject.stubs(:find_all_by_flickr_object_id).with('1', {:per_page => '100'}).returns('collection_2')
|
110
|
+
|
111
|
+
object.associated_objects.should == 'collection_1'
|
112
|
+
object.associated_objects(:per_page => '100').should == 'collection_2'
|
113
|
+
end
|
114
|
+
|
71
115
|
context "when populating data from an XML document" do
|
72
116
|
setup do
|
73
117
|
xml = <<-XML
|
@@ -83,59 +127,59 @@ module Fleakr
|
|
83
127
|
@object = FlickrObject.new
|
84
128
|
@object.populate_from(@document)
|
85
129
|
end
|
86
|
-
|
130
|
+
|
87
131
|
should "have the correct value for :name" do
|
88
132
|
@object.name.should == 'Fleakr'
|
89
133
|
end
|
90
|
-
|
134
|
+
|
91
135
|
should "have the correct value for :description" do
|
92
136
|
@object.description.should == 'Awesome'
|
93
137
|
end
|
94
|
-
|
138
|
+
|
95
139
|
should "have the correct value for :photoset_id" do
|
96
140
|
@object.photoset_id.should == '1'
|
97
141
|
end
|
98
|
-
|
142
|
+
|
99
143
|
should "have the correct value for :id" do
|
100
144
|
document = Hpricot.XML('<object nsid="1" />').at('object')
|
101
145
|
@object.populate_from(document)
|
102
|
-
|
146
|
+
|
103
147
|
@object.id.should == '1'
|
104
148
|
end
|
105
|
-
|
149
|
+
|
106
150
|
should "have the correct value for :tag" do
|
107
151
|
@object.tag.should == 'Tag'
|
108
152
|
end
|
109
|
-
|
153
|
+
|
110
154
|
should "have the correct value for :category" do
|
111
155
|
@object.category.should == 'Category'
|
112
156
|
end
|
113
|
-
|
157
|
+
|
114
158
|
should "maintain a reference to the original document" do
|
115
159
|
@object.document.should == @document
|
116
160
|
end
|
117
161
|
end
|
118
|
-
|
162
|
+
|
119
163
|
should "populate its data from an XML document when initializing" do
|
120
164
|
document = stub()
|
121
165
|
FlickrObject.any_instance.expects(:populate_from).with(document)
|
122
|
-
|
166
|
+
|
123
167
|
FlickrObject.new(document)
|
124
168
|
end
|
125
|
-
|
169
|
+
|
126
170
|
should "not attempt to populate itself from an XML document if one is not available" do
|
127
171
|
FlickrObject.any_instance.expects(:populate_from).never
|
128
172
|
FlickrObject.new
|
129
173
|
end
|
130
|
-
|
174
|
+
|
131
175
|
should "not overwrite existing attributes when pulling in a partial new XML document" do
|
132
176
|
object = FlickrObject.new(Hpricot.XML('<name>Fleakr</name>'))
|
133
177
|
object.populate_from(Hpricot.XML('<desc>Awesome</desc>'))
|
134
|
-
|
178
|
+
|
135
179
|
object.name.should == 'Fleakr'
|
136
180
|
end
|
137
|
-
|
181
|
+
|
138
182
|
end
|
139
|
-
|
183
|
+
|
140
184
|
end
|
141
185
|
end
|
@@ -1,42 +1,42 @@
|
|
1
|
-
require File.
|
1
|
+
require File.expand_path('../../../../test_helper', __FILE__)
|
2
2
|
|
3
3
|
class BasicRequest
|
4
4
|
include Fleakr::Support::Request
|
5
|
-
|
5
|
+
|
6
6
|
def endpoint_url
|
7
7
|
'http://example.com'
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
end
|
11
11
|
|
12
12
|
module Fleakr
|
13
13
|
class RequestTest < Test::Unit::TestCase
|
14
|
-
|
14
|
+
|
15
15
|
context "An instance of the BasicRequest class with the Request mix-in" do
|
16
|
-
|
16
|
+
|
17
17
|
should "have a collection of parameters" do
|
18
18
|
params = {:perms => 'read'}
|
19
19
|
Fleakr::Api::ParameterList.expects(:new).with(params, true).returns('params')
|
20
|
-
|
20
|
+
|
21
21
|
request = BasicRequest.new(params)
|
22
22
|
request.parameters.should == 'params'
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
should "know not to authenticate the request if asked not to" do
|
26
26
|
Fleakr::Api::ParameterList.expects(:new).with({:perms => 'read'}, false).returns('params')
|
27
|
-
|
27
|
+
|
28
28
|
request = BasicRequest.new(:perms => 'read', :authenticate? => false)
|
29
29
|
request.parameters.should == 'params'
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
should "know the endpoint with full URL parameters" do
|
33
33
|
request = BasicRequest.new
|
34
34
|
request.parameters.stubs(:to_query).with().returns('query')
|
35
|
-
|
35
|
+
|
36
36
|
request.endpoint_uri.to_s.should == 'http://example.com?query'
|
37
37
|
end
|
38
|
-
|
38
|
+
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
end
|
42
42
|
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require File.expand_path('../../../../test_helper', __FILE__)
|
2
|
+
|
3
|
+
module Fleakr
|
4
|
+
module Support
|
5
|
+
|
6
|
+
class UrlExpanderTest < Test::Unit::TestCase
|
7
|
+
|
8
|
+
context "The UrlExpander class" do
|
9
|
+
|
10
|
+
should "be able to expand a URL" do
|
11
|
+
expander = stub() {|e| e.stubs(:expanded_path).with().returns('/expanded/path') }
|
12
|
+
UrlExpander.stubs(:new).with('url').returns(expander)
|
13
|
+
|
14
|
+
UrlExpander.expand('url').should == '/expanded/path'
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
context "An instance of the UrlExpander class" do
|
20
|
+
|
21
|
+
should "know the path that needs to be expanded" do
|
22
|
+
expander = UrlExpander.new('http://flic.kr/p/7a9yQV')
|
23
|
+
expander.path_to_expand.should == '/photo.gne?short=7a9yQV'
|
24
|
+
end
|
25
|
+
|
26
|
+
should "know the expanded path" do
|
27
|
+
response = stub()
|
28
|
+
client = stub()
|
29
|
+
|
30
|
+
response.stubs(:[]).with('location').returns('/expanded/path')
|
31
|
+
client.stubs(:head).with('/photo.gne?short=7a9yQV').returns(response)
|
32
|
+
|
33
|
+
Net::HTTP.stubs(:start).with('www.flickr.com', 80).yields(client)
|
34
|
+
|
35
|
+
expander = UrlExpander.new('http://flic.kr/p/7a9yQV')
|
36
|
+
expander.expanded_path.should == '/expanded/path'
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require File.expand_path('../../../../test_helper', __FILE__)
|
2
|
+
|
3
|
+
module Fleakr::Support
|
4
|
+
class UtilityTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
context "The Utility class" do
|
7
|
+
|
8
|
+
should "know the module and class name for a simple string" do
|
9
|
+
Utility.class_name_for('Module', 'foo').should == 'Module::Foo'
|
10
|
+
end
|
11
|
+
|
12
|
+
should "know the module and class name for a symbol" do
|
13
|
+
Utility.class_name_for('Module', :foo).should == 'Module::Foo'
|
14
|
+
end
|
15
|
+
|
16
|
+
should "know the module and class name for a string that contains an underscore" do
|
17
|
+
Utility.class_name_for('Module', 'foo_bar').should == 'Module::FooBar'
|
18
|
+
end
|
19
|
+
|
20
|
+
should "know the module and class name for a pluralized string" do
|
21
|
+
Utility.class_name_for('Module', 'foos').should == 'Module::Foo'
|
22
|
+
end
|
23
|
+
|
24
|
+
should "know the ID attribute for a simple class name" do
|
25
|
+
Utility.id_attribute_for('Foo').should == 'foo_id'
|
26
|
+
end
|
27
|
+
|
28
|
+
should "know the ID attribute for a namespaced class name" do
|
29
|
+
Utility.id_attribute_for('Namespace::Foo').should == 'foo_id'
|
30
|
+
end
|
31
|
+
|
32
|
+
should "know the ID attribute for a camelcased class name" do
|
33
|
+
Utility.id_attribute_for('FooBar').should == 'foo_bar_id'
|
34
|
+
end
|
35
|
+
|
36
|
+
should "know that nil is blank" do
|
37
|
+
Utility.blank?(nil).should be(true)
|
38
|
+
end
|
39
|
+
|
40
|
+
should "know that an empty string is blank" do
|
41
|
+
Utility.blank?('').should be(true)
|
42
|
+
end
|
43
|
+
|
44
|
+
should "know that a string with just spaces is blank" do
|
45
|
+
Utility.blank?(' ').should be(true)
|
46
|
+
end
|
47
|
+
|
48
|
+
should "return an array and an empty hash when extracting options from an array" do
|
49
|
+
array = ['a']
|
50
|
+
Utility.extract_options(array).should == [['a'], {}]
|
51
|
+
end
|
52
|
+
|
53
|
+
should "return an array and hash parts when extracting options from an array" do
|
54
|
+
array = ['a', {:key => 'value'}]
|
55
|
+
Utility.extract_options(array).should == [['a'], {:key => 'value'}]
|
56
|
+
end
|
57
|
+
|
58
|
+
should "not modify the original array when extracting options from the array" do
|
59
|
+
original_array = ['a', {:key => 'value'}]
|
60
|
+
array = original_array.dup
|
61
|
+
|
62
|
+
Utility.extract_options(array)
|
63
|
+
|
64
|
+
array.should == original_array
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
end
|
data/test/unit/fleakr_test.rb
CHANGED
@@ -1,153 +1,160 @@
|
|
1
|
-
require File.
|
1
|
+
require File.expand_path('../../test_helper', __FILE__)
|
2
2
|
|
3
3
|
class FleakrTest < Test::Unit::TestCase
|
4
|
-
|
4
|
+
|
5
5
|
context "The Fleakr module" do
|
6
|
-
|
6
|
+
|
7
7
|
[:api_key, :shared_secret, :auth_token].each do |attribute|
|
8
8
|
should "be able to set a value for :#{attribute}" do
|
9
9
|
value = 'value'
|
10
|
-
|
10
|
+
|
11
11
|
Fleakr.send("#{attribute}=".to_sym, value)
|
12
12
|
Fleakr.send(attribute).should == value
|
13
13
|
end
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
should "provide a means to find a user by his username" do
|
17
17
|
user = stub()
|
18
18
|
Fleakr::Objects::User.expects(:find_by_username).with('username', {}).returns(user)
|
19
19
|
Fleakr.user('username').should == user
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
should "fall back to finding a user by email if finding by username fails" do
|
23
23
|
user = stub()
|
24
24
|
email = 'user@host.com'
|
25
|
-
|
25
|
+
|
26
26
|
Fleakr::Objects::User.stubs(:find_by_username).with(email, {}).raises(Fleakr::ApiError)
|
27
27
|
Fleakr::Objects::User.expects(:find_by_email).with(email, {}).returns(user)
|
28
|
-
|
28
|
+
|
29
29
|
Fleakr.user(email).should == user
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
should "fall back to finding a user by URL if username and email both fail" do
|
33
33
|
user = stub()
|
34
34
|
url = 'http://flickr.com/photos/user'
|
35
|
-
|
35
|
+
|
36
36
|
Fleakr::Objects::User.stubs(:find_by_username).with(url, {}).raises(Fleakr::ApiError)
|
37
37
|
Fleakr::Objects::User.stubs(:find_by_email).with(url, {}).raises(Fleakr::ApiError)
|
38
38
|
Fleakr::Objects::User.expects(:find_by_url).with(url, {}).returns(user)
|
39
|
-
|
39
|
+
|
40
40
|
Fleakr.user(url).should == user
|
41
41
|
end
|
42
42
|
|
43
43
|
should "not return nil if a user cannot be found" do
|
44
44
|
data = 'data'
|
45
|
-
|
45
|
+
|
46
46
|
Fleakr::Objects::User.stubs(:find_by_username).with(data, {}).raises(Fleakr::ApiError)
|
47
47
|
Fleakr::Objects::User.stubs(:find_by_email).with(data, {}).raises(Fleakr::ApiError)
|
48
48
|
Fleakr::Objects::User.stubs(:find_by_url).with(data, {}).raises(Fleakr::ApiError)
|
49
|
-
|
49
|
+
|
50
50
|
Fleakr.user(data).should be_nil
|
51
51
|
end
|
52
|
-
|
52
|
+
|
53
53
|
should "provide additional options to the finder call if supplied" do
|
54
54
|
user = stub()
|
55
55
|
Fleakr::Objects::User.expects(:find_by_username).with('username', :auth_token => 'toke').returns(user)
|
56
56
|
Fleakr.user('username', :auth_token => 'toke').should == user
|
57
57
|
end
|
58
|
-
|
58
|
+
|
59
59
|
should "find all contacts for the authenticated user" do
|
60
60
|
Fleakr::Objects::Contact.expects(:find_all).with({}).returns('contacts')
|
61
61
|
Fleakr.contacts.should == 'contacts'
|
62
62
|
end
|
63
|
-
|
63
|
+
|
64
64
|
should "allow filtering when finding contacts for the authenticated user" do
|
65
65
|
Fleakr::Objects::Contact.expects(:find_all).with(:filter => :friends).returns('contacts')
|
66
66
|
Fleakr.contacts(:friends).should == 'contacts'
|
67
67
|
end
|
68
|
-
|
68
|
+
|
69
69
|
should "allow passing of additional parameters when finding contacts for the authenticated user" do
|
70
70
|
Fleakr::Objects::Contact.expects(:find_all).with(:filter => :friends, :page => 1).returns('contacts')
|
71
71
|
Fleakr.contacts(:friends, :page => 1).should == 'contacts'
|
72
72
|
end
|
73
|
-
|
73
|
+
|
74
74
|
should "be able to perform text searches" do
|
75
75
|
photos = [stub()]
|
76
|
-
|
76
|
+
|
77
77
|
Fleakr::Objects::Search.expects(:new).with(:text => 'foo').returns(stub(:results => photos))
|
78
78
|
Fleakr.search('foo').should == photos
|
79
79
|
end
|
80
|
-
|
80
|
+
|
81
81
|
should "be able to perform searches based on tags" do
|
82
82
|
Fleakr::Objects::Search.expects(:new).with(:tags => %w(one two)).returns(stub(:results => []))
|
83
83
|
Fleakr.search(:tags => %w(one two))
|
84
84
|
end
|
85
|
-
|
85
|
+
|
86
86
|
# TODO: refactor uploading tests?
|
87
87
|
should "be able to upload a collection of images" do
|
88
88
|
glob = '*.jpg'
|
89
89
|
filenames = %w(one.jpg two.jpg)
|
90
|
-
|
90
|
+
|
91
91
|
Dir.expects(:[]).with(glob).returns(filenames)
|
92
|
-
|
92
|
+
|
93
93
|
Fleakr::Objects::Photo.expects(:upload).with('one.jpg', {})
|
94
94
|
Fleakr::Objects::Photo.expects(:upload).with('two.jpg', {})
|
95
|
-
|
95
|
+
|
96
96
|
Fleakr.upload(glob)
|
97
97
|
end
|
98
|
-
|
98
|
+
|
99
99
|
should "return recently uploaded photos" do
|
100
100
|
filename = '/path/to/image.jpg'
|
101
101
|
new_image = stub()
|
102
|
-
|
102
|
+
|
103
103
|
Dir.expects(:[]).with(filename).returns([filename])
|
104
104
|
Fleakr::Objects::Photo.expects(:upload).with(filename, {}).returns(new_image)
|
105
|
-
|
105
|
+
|
106
106
|
Fleakr.upload(filename).should == [new_image]
|
107
107
|
end
|
108
|
-
|
108
|
+
|
109
109
|
should "be able to pass options for the uploaded files" do
|
110
110
|
filename = '/path/to/image.jpg'
|
111
111
|
new_image = stub()
|
112
|
-
|
112
|
+
|
113
113
|
Dir.expects(:[]).with(filename).returns([filename])
|
114
114
|
Fleakr::Objects::Photo.expects(:upload).with(filename, :title => 'bop bip').returns(new_image)
|
115
|
-
|
115
|
+
|
116
116
|
Fleakr.upload(filename, :title => 'bop bip').should == [new_image]
|
117
117
|
end
|
118
|
-
|
118
|
+
|
119
119
|
should "be able to generate the authorization_url with default permissions" do
|
120
120
|
request = stub() {|r| r.stubs(:authorization_url).with().returns('auth_url') }
|
121
121
|
Fleakr::Api::AuthenticationRequest.expects(:new).with(:perms => :read).returns(request)
|
122
|
-
|
122
|
+
|
123
123
|
Fleakr.authorization_url.should == 'auth_url'
|
124
124
|
end
|
125
|
-
|
125
|
+
|
126
126
|
should "be able to specify different permissions when generating the authorization_url" do
|
127
127
|
request = stub() {|r| r.stubs(:authorization_url).with().returns('auth_url') }
|
128
128
|
Fleakr::Api::AuthenticationRequest.expects(:new).with(:perms => :delete).returns(request)
|
129
|
-
|
129
|
+
|
130
130
|
Fleakr.authorization_url(:delete).should == 'auth_url'
|
131
131
|
end
|
132
|
-
|
132
|
+
|
133
133
|
should "be able to retrieve a token from the provided frob" do
|
134
134
|
Fleakr::Objects::AuthenticationToken.expects(:from_frob).with('frob').returns('toke')
|
135
135
|
Fleakr.token_from_frob('frob').should == 'toke'
|
136
136
|
end
|
137
|
-
|
137
|
+
|
138
138
|
should "be able to retrieve a token from the provided mini-token" do
|
139
139
|
Fleakr::Objects::AuthenticationToken.expects(:from_mini_token).with('mini_token').returns('toke')
|
140
140
|
Fleakr.token_from_mini_token('mini_token').should == 'toke'
|
141
141
|
end
|
142
|
-
|
142
|
+
|
143
143
|
should "be able to get the user for the provided auth token" do
|
144
144
|
token = stub() {|t| t.stubs(:user).with().returns('user') }
|
145
|
-
|
145
|
+
|
146
146
|
Fleakr::Objects::AuthenticationToken.expects(:from_auth_token).with('toke').returns(token)
|
147
|
-
|
147
|
+
|
148
148
|
Fleakr.user_for_token('toke').should == 'user'
|
149
149
|
end
|
150
|
-
|
150
|
+
|
151
|
+
should "be able to find the correct resource for a URL" do
|
152
|
+
url = stub() {|u| u.stubs(:resource).with().returns('resource') }
|
153
|
+
Fleakr::Objects::Url.expects(:new).with('url').returns(url)
|
154
|
+
|
155
|
+
Fleakr.resource_from_url('url').should == 'resource'
|
156
|
+
end
|
157
|
+
|
151
158
|
end
|
152
|
-
|
159
|
+
|
153
160
|
end
|