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,4 +1,4 @@
|
|
1
|
-
require File.
|
1
|
+
require File.expand_path('../../../../test_helper', __FILE__)
|
2
2
|
|
3
3
|
module Fleakr::Api
|
4
4
|
class ResponseTest < Test::Unit::TestCase
|
@@ -10,35 +10,35 @@ module Fleakr::Api
|
|
10
10
|
hpricot_stub = stub()
|
11
11
|
|
12
12
|
Hpricot.expects(:XML).with(response_xml).returns(hpricot_stub)
|
13
|
-
|
13
|
+
|
14
14
|
response = Response.new(response_xml)
|
15
15
|
response.body.should == hpricot_stub
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
should "memoize the Hpricot document" do
|
19
19
|
response = Response.new('<xml>')
|
20
|
-
|
20
|
+
|
21
21
|
Hpricot.expects(:XML).with(kind_of(String)).once.returns(stub())
|
22
|
-
|
22
|
+
|
23
23
|
2.times { response.body }
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
should "know if there are errors in the response" do
|
27
27
|
response_xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<rsp stat=\"fail\">\n\t<err code=\"1\" msg=\"User not found\" />\n</rsp>\n"
|
28
28
|
response = Response.new(response_xml)
|
29
|
-
|
29
|
+
|
30
30
|
response.error?.should be(true)
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
should "not have an error if there are no errors in the XML" do
|
34
34
|
response = Response.new(read_fixture('people.findByUsername'))
|
35
35
|
response.error.should be(nil)
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
should "have an error if there is an error in the response" do
|
39
39
|
response_xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<rsp stat=\"fail\">\n\t<err code=\"1\" msg=\"User not found\" />\n</rsp>\n"
|
40
40
|
response = Response.new(response_xml)
|
41
|
-
|
41
|
+
|
42
42
|
response.error.code.should == '1'
|
43
43
|
response.error.message.should == 'User not found'
|
44
44
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.
|
1
|
+
require File.expand_path('../../../../test_helper', __FILE__)
|
2
2
|
|
3
3
|
module Fleakr::Api
|
4
4
|
class UploadRequestTest < Test::Unit::TestCase
|
@@ -7,32 +7,32 @@ module Fleakr::Api
|
|
7
7
|
|
8
8
|
should "have a collection of upload_options" do
|
9
9
|
request = UploadRequest.new('foo', :create, {:title => 'foo', :tags => %w(a b)})
|
10
|
-
|
10
|
+
|
11
11
|
option_1, option_2 = [stub(:to_hash => {:one => 'value_1'}), stub(:to_hash => {:two => 'value_2'})]
|
12
|
-
|
12
|
+
|
13
13
|
Option.expects(:for).with(:title, 'foo').returns(option_1)
|
14
14
|
Option.expects(:for).with(:tags, %w(a b)).returns(option_2)
|
15
|
-
|
15
|
+
|
16
16
|
request.upload_options.should == {:one => 'value_1', :two => 'value_2'}
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
should "create a file parameter on initialization" do
|
20
20
|
filename = '/path/to/image.jpg'
|
21
|
-
|
21
|
+
|
22
22
|
parameter_list = mock() {|p| p.expects(:add_upload_option).with(:photo, filename) }
|
23
23
|
UploadRequest.any_instance.stubs(:parameters).with().returns(parameter_list)
|
24
|
-
|
24
|
+
|
25
25
|
UploadRequest.new(filename)
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
should "allow setting options on initialization" do
|
29
29
|
option = stub()
|
30
30
|
option.stubs(:to_hash).with().returns({:title => 'foo'})
|
31
|
-
|
31
|
+
|
32
32
|
Option.expects(:for).with(:title, 'foo').returns(option)
|
33
|
-
|
33
|
+
|
34
34
|
ParameterList.expects(:new).with({:title => 'foo'}).returns(stub(:add_upload_option))
|
35
|
-
|
35
|
+
|
36
36
|
UploadRequest.new('filename', :create, {:title => 'foo'})
|
37
37
|
end
|
38
38
|
|
@@ -44,7 +44,7 @@ module Fleakr::Api
|
|
44
44
|
request = UploadRequest.new('file')
|
45
45
|
request.type.should == :create
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
should "allow setting the type to :update" do
|
49
49
|
request = UploadRequest.new('file', :update)
|
50
50
|
request.type.should == :update
|
@@ -54,16 +54,16 @@ module Fleakr::Api
|
|
54
54
|
request = UploadRequest.new('filename')
|
55
55
|
request.__send__(:endpoint_uri).should == URI.parse('http://api.flickr.com/services/upload/')
|
56
56
|
end
|
57
|
-
|
57
|
+
|
58
58
|
should "know the endpoint_uri for an :update request" do
|
59
59
|
request = UploadRequest.new('filename', :update)
|
60
60
|
request.__send__(:endpoint_uri).should == URI.parse('http://api.flickr.com/services/replace/')
|
61
61
|
end
|
62
|
-
|
62
|
+
|
63
63
|
should "only parse the endpoint URI once" do
|
64
64
|
request = UploadRequest.new('filename')
|
65
65
|
URI.expects(:parse).with(kind_of(String)).once.returns('uri')
|
66
|
-
|
66
|
+
|
67
67
|
2.times { request.__send__(:endpoint_uri) }
|
68
68
|
end
|
69
69
|
|
@@ -83,14 +83,14 @@ module Fleakr::Api
|
|
83
83
|
|
84
84
|
should "be able to send a POST request to the API service" do
|
85
85
|
request = UploadRequest.new('filename')
|
86
|
-
|
86
|
+
|
87
87
|
uri = stub()
|
88
88
|
uri.stubs(:host).with().returns('host')
|
89
89
|
uri.stubs(:path).with().returns('path')
|
90
90
|
uri.stubs(:port).with().returns(80)
|
91
|
-
|
91
|
+
|
92
92
|
request.stubs(:endpoint_uri).with().returns(uri)
|
93
|
-
|
93
|
+
|
94
94
|
request.stubs(:headers).with().returns('header' => 'value')
|
95
95
|
request.parameters.stubs(:to_form).with().returns('form')
|
96
96
|
|
@@ -98,39 +98,39 @@ module Fleakr::Api
|
|
98
98
|
http.expects(:post).with('path', 'form', {'header' => 'value'})
|
99
99
|
|
100
100
|
Net::HTTP.expects(:start).with('host', 80).yields(http).returns(stub(:body))
|
101
|
-
|
101
|
+
|
102
102
|
request.send
|
103
103
|
end
|
104
|
-
|
104
|
+
|
105
105
|
should "get back a response from a POST operation" do
|
106
106
|
response = stub()
|
107
|
-
|
107
|
+
|
108
108
|
Net::HTTP.expects(:start).with(kind_of(String), kind_of(Fixnum)).returns(stub(:body => '<xml>'))
|
109
109
|
Response.expects(:new).with('<xml>').returns(response)
|
110
|
-
|
110
|
+
|
111
111
|
request = UploadRequest.new('filename')
|
112
112
|
request.send.should == response
|
113
113
|
end
|
114
|
-
|
114
|
+
|
115
115
|
should "be able to make a full request and response cycle" do
|
116
116
|
filename = 'filename'
|
117
117
|
response = stub(:error? => false)
|
118
|
-
|
118
|
+
|
119
119
|
UploadRequest.expects(:new).with(filename, :create, {}).returns(stub(:send => response))
|
120
120
|
UploadRequest.with_response!(filename).should == response
|
121
121
|
end
|
122
|
-
|
122
|
+
|
123
123
|
should "raise an exception when the full request / response cycle has errors" do
|
124
124
|
filename = 'filename'
|
125
125
|
response = stub(:error? => true, :error => stub(:code => '1', :message => 'User not found'))
|
126
|
-
|
126
|
+
|
127
127
|
UploadRequest.expects(:new).with(filename, :create, {}).returns(stub(:send => response))
|
128
|
-
|
128
|
+
|
129
129
|
lambda do
|
130
130
|
UploadRequest.with_response!(filename)
|
131
131
|
end.should raise_error(Fleakr::ApiError)
|
132
132
|
end
|
133
|
-
|
133
|
+
|
134
134
|
end
|
135
135
|
|
136
136
|
end
|
@@ -1,41 +1,41 @@
|
|
1
|
-
require File.
|
1
|
+
require File.expand_path('../../../../test_helper', __FILE__)
|
2
2
|
|
3
3
|
module Fleakr::Api
|
4
4
|
class ValueParameterTest < Test::Unit::TestCase
|
5
5
|
|
6
6
|
context "An instance of the ValueParameter class" do
|
7
|
-
|
7
|
+
|
8
8
|
should "have a value" do
|
9
9
|
parameter = ValueParameter.new('foo', 'bar')
|
10
10
|
parameter.value.should == 'bar'
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
should "know how to generate the query representation of itself" do
|
14
14
|
parameter = ValueParameter.new('foo', 'bar')
|
15
15
|
parameter.to_query.should == 'foo=bar'
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
should "escape the value when generating the query representation" do
|
19
19
|
parameter = ValueParameter.new('foo', 'Mr. Crystal?')
|
20
20
|
parameter.to_query.should == 'foo=Mr.+Crystal%3F'
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
should "use an empty string when generating a query if the parameter value is nil" do
|
24
24
|
parameter = ValueParameter.new('foo', nil)
|
25
25
|
parameter.to_query.should == 'foo='
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
should "know how to generate the form representation of itself" do
|
29
29
|
parameter = ValueParameter.new('foo', 'bar')
|
30
|
-
expected =
|
30
|
+
expected =
|
31
31
|
'Content-Disposition: form-data; name="foo"' + "\r\n" +
|
32
32
|
"\r\n" +
|
33
33
|
"bar\r\n"
|
34
|
-
|
34
|
+
|
35
35
|
parameter.to_form.should == expected
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
end
|
41
41
|
end
|
@@ -1,13 +1,13 @@
|
|
1
|
-
require File.
|
1
|
+
require File.expand_path('../../../../test_helper', __FILE__)
|
2
2
|
|
3
3
|
class FalseClassTest < Test::Unit::TestCase
|
4
|
-
|
4
|
+
|
5
5
|
context "An instance of the FalseClass class" do
|
6
|
-
|
6
|
+
|
7
7
|
should "have 0 as its integer value" do
|
8
8
|
false.to_i.should == 0
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
end
|
@@ -1,32 +1,32 @@
|
|
1
|
-
require File.
|
1
|
+
require File.expand_path('../../../../test_helper', __FILE__)
|
2
2
|
|
3
3
|
class HashTest < Test::Unit::TestCase
|
4
|
-
|
4
|
+
|
5
5
|
context "An instance of Hash" do
|
6
6
|
context "when extracting key/value pairs" do
|
7
|
-
|
7
|
+
|
8
8
|
setup do
|
9
9
|
@hash = {:one => 'two', :three => 'four'}
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
should "return a hash with the matching key/value pairs" do
|
13
13
|
@hash.extract!(:one).should == {:one => 'two'}
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
should "return an empty hash if the key isn't found" do
|
17
17
|
@hash.extract!(:foo).should == {}
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
should "alter the original hash when a value is extracted" do
|
21
21
|
@hash.extract!(:one)
|
22
22
|
@hash.should == {:three => 'four'}
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
should "be able to extract multiple keys" do
|
26
26
|
@hash.extract!(:one, :three, :missing).should == {:one => 'two', :three => 'four'}
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
end
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
end
|
@@ -1,13 +1,13 @@
|
|
1
|
-
require File.
|
1
|
+
require File.expand_path('../../../../test_helper', __FILE__)
|
2
2
|
|
3
3
|
class TrueClassTest < Test::Unit::TestCase
|
4
|
-
|
4
|
+
|
5
5
|
context "An instance of the TrueClass class" do
|
6
|
-
|
6
|
+
|
7
7
|
should "have 1 as its integer value" do
|
8
8
|
true.to_i.should == 1
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
end
|
@@ -1,70 +1,70 @@
|
|
1
|
-
require File.
|
1
|
+
require File.expand_path('../../../../test_helper', __FILE__)
|
2
2
|
|
3
3
|
module Fleakr::Objects
|
4
4
|
class AuthenticationTokenTest < Test::Unit::TestCase
|
5
|
-
|
5
|
+
|
6
6
|
context "The AuthenticationToken class" do
|
7
|
-
|
7
|
+
|
8
8
|
should "be able to create an instance from a mini_token" do
|
9
9
|
token = '123-123-123'
|
10
10
|
auth_token = stub()
|
11
|
-
|
11
|
+
|
12
12
|
response = mock_request_cycle :for => 'auth.getFullToken', :with => {:mini_token => token, :authenticate? => false}
|
13
|
-
|
13
|
+
|
14
14
|
AuthenticationToken.expects(:new).with(response.body).returns(auth_token)
|
15
|
-
|
15
|
+
|
16
16
|
AuthenticationToken.from_mini_token(token).should == auth_token
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
should "be able to create an instance from an auth_token" do
|
20
20
|
token = 'abc123'
|
21
21
|
auth_token = stub()
|
22
22
|
|
23
23
|
response = mock_request_cycle :for => 'auth.checkToken', :with => {:auth_token => token, :authenticate? => false}
|
24
|
-
|
24
|
+
|
25
25
|
AuthenticationToken.expects(:new).with(response.body).returns(auth_token)
|
26
26
|
AuthenticationToken.from_auth_token(token).should == auth_token
|
27
27
|
end
|
28
|
-
|
29
|
-
|
28
|
+
|
29
|
+
|
30
30
|
should "be able to create an instance from a frob" do
|
31
31
|
frob = '12345678901234567-abcde89012fg3456-7890123'
|
32
32
|
auth_token = stub()
|
33
|
-
|
33
|
+
|
34
34
|
response = mock_request_cycle :for => 'auth.getToken', :with => {:frob => frob, :authenticate? => false}
|
35
|
-
|
35
|
+
|
36
36
|
AuthenticationToken.expects(:new).with(response.body).returns(auth_token)
|
37
37
|
AuthenticationToken.from_frob(frob).should == auth_token
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
context "An instance of the AuthenticationToken class" do
|
43
|
-
|
43
|
+
|
44
44
|
should "have an associated user" do
|
45
45
|
token = AuthenticationToken.new
|
46
46
|
token.stubs(:user_id).with().returns('1')
|
47
|
-
|
47
|
+
|
48
48
|
User.expects(:find_by_id).with('1').returns('user')
|
49
|
-
|
49
|
+
|
50
50
|
token.user.should == 'user'
|
51
51
|
end
|
52
|
-
|
52
|
+
|
53
53
|
context "when populating from an XML document" do
|
54
|
-
|
54
|
+
|
55
55
|
setup do
|
56
56
|
@object = AuthenticationToken.new(Hpricot.XML(read_fixture('auth.getFullToken')))
|
57
57
|
end
|
58
|
-
|
58
|
+
|
59
59
|
should_have_a_value_for :value => 'abc-123'
|
60
60
|
should_have_a_value_for :permissions => 'delete'
|
61
61
|
should_have_a_value_for :user_id => '31066442@N69'
|
62
62
|
should_have_a_value_for :full_name => 'Sir Froot Pants'
|
63
63
|
should_have_a_value_for :user_name => 'frootpantz'
|
64
|
-
|
64
|
+
|
65
65
|
end
|
66
|
-
|
66
|
+
|
67
67
|
end
|
68
|
-
|
68
|
+
|
69
69
|
end
|
70
70
|
end
|
@@ -1,23 +1,23 @@
|
|
1
|
-
require File.
|
1
|
+
require File.expand_path('../../../../test_helper', __FILE__)
|
2
2
|
|
3
3
|
module Fleakr::Objects
|
4
4
|
class CollectionTest < Test::Unit::TestCase
|
5
5
|
|
6
6
|
context "The Collection class" do
|
7
|
-
|
8
|
-
should_find_one :collections, :by => :id, :call => 'collections.getInfo', :path => 'rsp/collection'
|
9
|
-
should_find_all :collections, :by => :user_id, :call => 'collections.getTree', :path => 'rsp/collections/collection'
|
10
|
-
|
7
|
+
|
8
|
+
should_find_one :collections, :by => :id, :call => 'collections.getInfo', :path => 'rsp/collection', :class => Collection
|
9
|
+
should_find_all :collections, :by => :user_id, :call => 'collections.getTree', :path => 'rsp/collections/collection', :class => Collection
|
10
|
+
|
11
11
|
end
|
12
12
|
|
13
13
|
context "An instance of the Collection class" do
|
14
|
-
|
14
|
+
|
15
15
|
context "when populating from a call to collections.getInfo" do
|
16
16
|
setup do
|
17
17
|
document = Hpricot.XML(read_fixture('collections.getInfo')).at('rsp/collection')
|
18
18
|
@object = Collection.new(document)
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
should_have_a_value_for :id => '34762917-72157619347181335'
|
22
22
|
should_have_a_value_for :title => 'Work'
|
23
23
|
should_have_a_value_for :description => 'Sample Collection'
|
@@ -26,46 +26,46 @@ module Fleakr::Objects
|
|
26
26
|
should_have_a_value_for :created => '1244460707'
|
27
27
|
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
context "when populating from a call to collections.getTree" do
|
31
31
|
setup do
|
32
32
|
document = Hpricot.XML(read_fixture('collections.getTree')).at('rsp/collections/collection')
|
33
33
|
@object = Collection.new(document)
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
36
|
should_have_a_value_for :id => '123-456'
|
37
37
|
should_have_a_value_for :title => 'Top-Level Collection 1'
|
38
38
|
should_have_a_value_for :description => 'Description 1'
|
39
39
|
should_have_a_value_for :large_icon_url => 'http://farm4.static.flickr.com/3573/cols/72157617429277370_1691956f71_l.jpg'
|
40
40
|
should_have_a_value_for :small_icon_url => 'http://farm4.static.flickr.com/3573/cols/72157617429277370_1691956f71_s.jpg'
|
41
|
-
|
41
|
+
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
context "that contains collections" do
|
45
45
|
setup do
|
46
46
|
document = Hpricot.XML(read_fixture('collections.getTree')).at('rsp/collections/collection')
|
47
47
|
@collection = Collection.new(document)
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
50
|
should "have a set of collections" do
|
51
51
|
collection_titles = @collection.collections.map {|c| c.title }
|
52
52
|
collection_titles.should == ['Second-Level Collection 1']
|
53
53
|
end
|
54
|
-
|
54
|
+
|
55
55
|
should "not have any associated sets" do
|
56
56
|
@collection.sets.should == []
|
57
57
|
end
|
58
58
|
end
|
59
|
-
|
59
|
+
|
60
60
|
context "that contains sets" do
|
61
61
|
setup do
|
62
62
|
xml = <<-XML
|
63
|
-
<collection id="123-102" title="Top-Level Collection 2" description="Description 5" iconlarge="http://farm4.static.flickr.com/3573/cols/72157617429277370_1691956f71_l.jpg" iconsmall="http://farm4.static.flickr.com/3573/cols/72157617429277370_1691956f71_s.jpg">
|
64
|
-
|
65
|
-
|
63
|
+
<collection id="123-102" title="Top-Level Collection 2" description="Description 5" iconlarge="http://farm4.static.flickr.com/3573/cols/72157617429277370_1691956f71_l.jpg" iconsmall="http://farm4.static.flickr.com/3573/cols/72157617429277370_1691956f71_s.jpg">
|
64
|
+
<set id="1238" title="Set 5" description="" />
|
65
|
+
<set id="1239" title="Set 6" description="" />
|
66
66
|
</collection>
|
67
67
|
XML
|
68
|
-
|
68
|
+
|
69
69
|
document = Hpricot.XML(xml).at('collection')
|
70
70
|
@collection = Collection.new(document)
|
71
71
|
end
|
@@ -73,25 +73,25 @@ module Fleakr::Objects
|
|
73
73
|
should "not have any associated collections" do
|
74
74
|
@collection.collections.should == []
|
75
75
|
end
|
76
|
-
|
76
|
+
|
77
77
|
should "have associated sets" do
|
78
78
|
set_titles = @collection.sets.map {|s| s.title }
|
79
79
|
set_titles.should == ['Set 5', 'Set 6']
|
80
80
|
end
|
81
|
-
|
81
|
+
|
82
82
|
end
|
83
|
-
|
83
|
+
|
84
84
|
context "in general" do
|
85
85
|
setup do
|
86
86
|
@collection = Collection.new
|
87
87
|
@time = Time.parse('2008-08-01 00:00:00')
|
88
88
|
end
|
89
|
-
|
89
|
+
|
90
90
|
should "have a value for :created_at" do
|
91
91
|
@collection.expects(:created).with().returns("#{@time.to_i}")
|
92
92
|
@collection.created_at.to_s.should == @time.to_s
|
93
93
|
end
|
94
|
-
|
94
|
+
|
95
95
|
end
|
96
96
|
end
|
97
97
|
|