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.
Files changed (54) hide show
  1. data/README.rdoc +88 -57
  2. data/Rakefile +28 -9
  3. data/lib/fleakr.rb +25 -31
  4. data/lib/fleakr/api/option.rb +34 -34
  5. data/lib/fleakr/api/parameter_list.rb +23 -23
  6. data/lib/fleakr/objects.rb +4 -1
  7. data/lib/fleakr/objects/metadata.rb +35 -0
  8. data/lib/fleakr/objects/metadata_collection.rb +36 -0
  9. data/lib/fleakr/objects/photo.rb +15 -11
  10. data/lib/fleakr/objects/set.rb +17 -13
  11. data/lib/fleakr/objects/url.rb +83 -0
  12. data/lib/fleakr/objects/user.rb +8 -0
  13. data/lib/fleakr/support.rb +3 -1
  14. data/lib/fleakr/support/attribute.rb +2 -2
  15. data/lib/fleakr/support/object.rb +44 -29
  16. data/lib/fleakr/support/url_expander.rb +37 -0
  17. data/lib/fleakr/support/utility.rb +66 -0
  18. data/lib/fleakr/version.rb +5 -5
  19. data/test/fixtures/photos.getExif.xml +362 -0
  20. data/test/test_helper.rb +44 -47
  21. data/test/unit/fleakr/api/authentication_request_test.rb +12 -12
  22. data/test/unit/fleakr/api/file_parameter_test.rb +15 -15
  23. data/test/unit/fleakr/api/method_request_test.rb +1 -1
  24. data/test/unit/fleakr/api/option_test.rb +44 -44
  25. data/test/unit/fleakr/api/parameter_list_test.rb +40 -40
  26. data/test/unit/fleakr/api/response_test.rb +10 -10
  27. data/test/unit/fleakr/api/upload_request_test.rb +28 -28
  28. data/test/unit/fleakr/api/value_parameter_test.rb +10 -10
  29. data/test/unit/fleakr/core_ext/false_class_test.rb +5 -5
  30. data/test/unit/fleakr/core_ext/hash_test.rb +9 -9
  31. data/test/unit/fleakr/core_ext/true_class_test.rb +5 -5
  32. data/test/unit/fleakr/objects/authentication_token_test.rb +23 -23
  33. data/test/unit/fleakr/objects/collection_test.rb +23 -23
  34. data/test/unit/fleakr/objects/comment_test.rb +15 -15
  35. data/test/unit/fleakr/objects/contact_test.rb +11 -11
  36. data/test/unit/fleakr/objects/error_test.rb +8 -8
  37. data/test/unit/fleakr/objects/group_test.rb +13 -13
  38. data/test/unit/fleakr/objects/image_test.rb +4 -4
  39. data/test/unit/fleakr/objects/metadata_collection_test.rb +55 -0
  40. data/test/unit/fleakr/objects/metadata_test.rb +27 -0
  41. data/test/unit/fleakr/objects/photo_context_test.rb +23 -23
  42. data/test/unit/fleakr/objects/photo_test.rb +71 -64
  43. data/test/unit/fleakr/objects/search_test.rb +22 -22
  44. data/test/unit/fleakr/objects/set_test.rb +62 -40
  45. data/test/unit/fleakr/objects/tag_test.rb +32 -31
  46. data/test/unit/fleakr/objects/url_test.rb +185 -0
  47. data/test/unit/fleakr/objects/user_test.rb +43 -16
  48. data/test/unit/fleakr/support/attribute_test.rb +15 -15
  49. data/test/unit/fleakr/support/object_test.rb +77 -33
  50. data/test/unit/fleakr/support/request_test.rb +12 -12
  51. data/test/unit/fleakr/support/url_expander_test.rb +44 -0
  52. data/test/unit/fleakr/support/utility_test.rb +70 -0
  53. data/test/unit/fleakr_test.rb +48 -41
  54. metadata +43 -23
@@ -1,56 +1,58 @@
1
- require File.dirname(__FILE__) + '/../../../test_helper'
1
+ require File.expand_path('../../../../test_helper', __FILE__)
2
2
 
3
3
  module Fleakr::Objects
4
4
  class PhotoTest < Test::Unit::TestCase
5
5
 
6
- should_have_many :images, :tags, :comments
6
+ should_have_many :images, :class => Image
7
+ should_have_many :tags, :class => Tag
8
+ should_have_many :comments, :class => Comment
7
9
 
8
10
  should_autoload_when_accessing :posted, :taken, :updated, :comment_count, :with => :load_info
9
11
  should_autoload_when_accessing :url, :description, :with => :load_info
10
12
 
11
13
  context "The Photo class" do
12
14
 
13
- should_find_all :photos, :by => :user_id, :call => 'people.getPublicPhotos', :path => 'rsp/photos/photo'
14
- should_find_all :photos, :by => :set_id, :using => :photoset_id, :call => 'photosets.getPhotos', :path => 'rsp/photoset/photo'
15
- should_find_all :photos, :by => :group_id, :call => 'groups.pools.getPhotos', :path => 'rsp/photos/photo'
16
-
17
- should_find_one :photo, :by => :id, :with => :photo_id, :call => 'photos.getInfo'
15
+ should_find_all :photos, :by => :user_id, :call => 'people.getPublicPhotos', :path => 'rsp/photos/photo', :class => Photo
16
+ should_find_all :photos, :by => :set_id, :using => :photoset_id, :call => 'photosets.getPhotos', :path => 'rsp/photoset/photo', :class => Photo
17
+ should_find_all :photos, :by => :group_id, :call => 'groups.pools.getPhotos', :path => 'rsp/photos/photo', :class => Photo
18
+
19
+ should_find_one :photo, :by => :id, :with => :photo_id, :call => 'photos.getInfo', :class => Photo
18
20
 
19
21
  # TODO: refactor these 2 tests
20
22
  should "be able to upload a photo and return the new photo information" do
21
23
  filename = '/path/to/mugshot.jpg'
22
24
  photo = stub()
23
-
25
+
24
26
  response = stub()
25
27
  response.stubs(:body).with().returns(Hpricot.XML('<photoid>123</photoid>'))
26
-
28
+
27
29
  Fleakr::Api::UploadRequest.expects(:with_response!).with(filename, :create, {}).returns(response)
28
30
  Photo.expects(:find_by_id).with('123').returns(photo)
29
-
31
+
30
32
  Photo.upload(filename).should == photo
31
33
  end
32
-
34
+
33
35
  should "be able to pass additional options when uploading a new file" do
34
36
  filename = '/path/to/mugshot.jpg'
35
37
  photo = stub()
36
-
38
+
37
39
  response = stub()
38
40
  response.stubs(:body).with().returns(Hpricot.XML('<photoid>123</photoid>'))
39
-
41
+
40
42
  Fleakr::Api::UploadRequest.expects(:with_response!).with(filename, :create, {:title => 'foo'}).returns(response)
41
43
  Photo.expects(:find_by_id).with('123').returns(photo)
42
-
44
+
43
45
  Photo.upload(filename, :title => 'foo').should == photo
44
46
  end
45
47
 
46
48
  end
47
49
 
48
50
  context "An instance of the Photo class" do
49
-
51
+
50
52
  should "be able to replace the associated photo data" do
51
53
  filename = '/path/to/file.jpg'
52
54
  response = stub(:body => 'body')
53
-
55
+
54
56
  params = {:photo_id => '1'}
55
57
 
56
58
  Fleakr::Api::UploadRequest.expects(:with_response!).with(filename, :update, params).returns(response)
@@ -58,10 +60,10 @@ module Fleakr::Objects
58
60
  photo = Photo.new
59
61
  photo.stubs(:id).returns('1')
60
62
  photo.expects(:populate_from).with('body')
61
-
63
+
62
64
  photo.replace_with(filename).should == photo
63
65
  end
64
-
66
+
65
67
  context "when populating from the people_getPublicPhotos XML data" do
66
68
  setup do
67
69
  @object = Photo.new(Hpricot.XML(read_fixture('people.getPublicPhotos')).at('rsp/photos/photo'))
@@ -73,23 +75,23 @@ module Fleakr::Objects
73
75
  should_have_a_value_for :server_id => '3250'
74
76
  should_have_a_value_for :secret => 'cbc1804258'
75
77
  should_have_a_value_for :owner_id => '21775151@N06'
76
-
78
+
77
79
  end
78
-
80
+
79
81
  context "when populating from the photo upload XML data" do
80
82
  setup do
81
83
  @object = Photo.new(Hpricot.XML('<photoid>123</photoid>'))
82
84
  end
83
-
85
+
84
86
  should_have_a_value_for :id => '123'
85
87
  end
86
-
88
+
87
89
  context "when populating from the photos_getInfo XML data" do
88
90
  setup do
89
91
  @object = Photo.new(Hpricot.XML(read_fixture('photos.getInfo')))
90
-
92
+
91
93
  end
92
-
94
+
93
95
  should_have_a_value_for :id => '1'
94
96
  should_have_a_value_for :title => 'Tree'
95
97
  should_have_a_value_for :description => 'A Tree'
@@ -103,111 +105,116 @@ module Fleakr::Objects
103
105
  should_have_a_value_for :updated => '1230276652'
104
106
  should_have_a_value_for :comment_count => '0'
105
107
  should_have_a_value_for :url => 'http://www.flickr.com/photos/yes/1'
106
-
108
+
107
109
  end
108
-
110
+
109
111
  context "in general" do
110
-
112
+
111
113
  setup do
112
114
  @photo = Photo.new
113
- @time = Time.parse('2009-08-01 00:00:00')
115
+ @time = Time.parse('2009-08-01 00:00:00')
114
116
  end
115
-
117
+
116
118
  should "be able to retrieve additional information about the current user" do
117
119
  photo_id = '1'
118
120
  photo = Photo.new
119
121
  photo.expects(:id).with().returns(photo_id)
120
122
  response = mock_request_cycle :for => 'photos.getInfo', :with => {:photo_id => photo_id}
121
-
123
+
122
124
  photo.expects(:populate_from).with(response.body)
123
125
 
124
126
  photo.load_info
125
127
  end
126
-
128
+
127
129
  should "have a value for :posted_at" do
128
130
  @photo.expects(:posted).with().returns("#{@time.to_i}")
129
131
  @photo.posted_at.to_s.should == @time.to_s
130
132
  end
131
-
133
+
132
134
  should "have a value for :taken_at" do
133
135
  @photo.expects(:taken).with().returns(@time.strftime('%Y-%m-%d %H:%M:%S'))
134
136
  @photo.taken_at.to_s.should == @time.to_s
135
137
  end
136
-
138
+
137
139
  should "have a value for :updated_at" do
138
140
  @photo.expects(:updated).with().returns("#{@time.to_i}")
139
141
  @photo.updated_at.to_s.should == @time.to_s
140
142
  end
141
-
143
+
144
+ should "be able to retrieve the metadata" do
145
+ MetadataCollection.expects(:new).with(@photo).returns('metadata')
146
+ @photo.metadata.should == 'metadata'
147
+ end
148
+
142
149
  should "have a collection of images by size" do
143
150
  photo = Photo.new
144
-
151
+
145
152
  small_image, large_image = [stub(:size => 'Small'), stub(:size => 'Large')]
146
-
153
+
147
154
  photo.stubs(:images).returns([small_image, large_image])
148
-
155
+
149
156
  expected = {
150
157
  :square => nil,
151
158
  :thumbnail => nil,
152
- :small => small_image,
159
+ :small => small_image,
153
160
  :medium => nil,
154
161
  :large => large_image,
155
162
  :original => nil
156
163
  }
157
-
164
+
158
165
  photo.send(:images_by_size).should == expected
159
166
  end
160
-
167
+
161
168
  [:square, :thumbnail, :small, :medium, :large, :original].each do |method|
162
169
  should "have a reader for the :#{method} image" do
163
170
  photo = Photo.new
164
171
  image = stub()
165
-
172
+
166
173
  photo.stubs(:images_by_size).returns(method => image)
167
174
  photo.send(method).should == image
168
175
  end
169
176
  end
170
-
177
+
171
178
  should "be able to retrieve the context for this photo" do
172
179
  id = '1'
173
-
180
+
174
181
  context = stub()
175
-
182
+
176
183
  photo = Photo.new
177
184
  photo.stubs(:id).with().returns(id)
178
-
185
+
179
186
  response = mock_request_cycle :for => 'photos.getContext', :with => {:photo_id => id}
180
187
  PhotoContext.expects(:new).with(response.body).returns(context)
181
-
188
+
182
189
  photo.context.should == context
183
190
  end
184
-
191
+
185
192
  should "memoize the context data" do
186
193
  id = '1'
187
-
194
+
188
195
  context = stub()
189
-
196
+
190
197
  photo = Photo.new
191
198
  photo.stubs(:id).with().returns(id)
192
-
199
+
193
200
  response = mock_request_cycle :for => 'photos.getContext', :with => {:photo_id => id}
194
201
  PhotoContext.expects(:new).once.returns(context)
195
-
202
+
196
203
  2.times { photo.context }
197
204
  end
198
-
205
+
199
206
  should "be able to retrieve the next photo" do
200
207
  next_photo = stub()
201
208
  context = mock()
202
209
  context.expects(:next).with().returns(next_photo)
203
-
210
+
204
211
  photo = Photo.new
205
-
212
+
206
213
  photo.expects(:context).with().returns(context)
207
-
214
+
208
215
  photo.next.should == next_photo
209
216
  end
210
-
217
+
211
218
  should "be able to retrieve the previous photo" do
212
219
  previous_photo = stub()
213
220
  context = mock()
@@ -218,27 +225,27 @@ module Fleakr::Objects
218
225
 
219
226
  photo.previous.should == previous_photo
220
227
  end
221
-
228
+
222
229
  should "be able to find the owner of the photo" do
223
230
  owner = stub()
224
-
231
+
225
232
  photo = Photo.new
226
233
  photo.stubs(:owner_id).with().returns('1')
227
-
234
+
228
235
  User.expects(:find_by_id).with('1').returns(owner)
229
-
236
+
230
237
  photo.owner.should == owner
231
238
  end
232
-
239
+
233
240
  should "memoize the owner information" do
234
241
  photo = Photo.new
235
242
  photo.stubs(:owner_id).with().returns('1')
236
-
243
+
237
244
  User.expects(:find_by_id).with('1').once.returns(stub())
238
-
245
+
239
246
  2.times { photo.owner }
240
247
  end
241
-
248
+
242
249
  end
243
250
  end
244
251
 
@@ -1,15 +1,15 @@
1
- require File.dirname(__FILE__) + '/../../../test_helper'
1
+ require File.expand_path('../../../../test_helper', __FILE__)
2
2
 
3
3
  module Fleakr::Objects
4
4
  class SearchTest < Test::Unit::TestCase
5
-
5
+
6
6
  context "An instance of the Search class" do
7
7
 
8
8
  should "have a list of tags" do
9
9
  search = Search.new(:tags => %w(a b c))
10
10
  search.tags.should == %w(a b c)
11
11
  end
12
-
12
+
13
13
  should "have convert tags into an array" do
14
14
  search = Search.new(:tags => 'a')
15
15
  search.tags.should == ['a']
@@ -19,76 +19,76 @@ module Fleakr::Objects
19
19
  search = Search.new(:tags => 'foo')
20
20
  search.send(:tag_list).should == 'foo'
21
21
  end
22
-
22
+
23
23
  should "be able to generate a list of tags from multi-valued parameters" do
24
24
  search = Search.new(:tags => %w(foo bar))
25
25
  search.send(:tag_list).should == 'foo,bar'
26
26
  end
27
-
27
+
28
28
  should "be able to create parameters for the search" do
29
29
  search = Search.new(:tags => %w(foo bar))
30
30
  search.send(:parameters).should == {:tags => 'foo,bar'}
31
31
  end
32
-
32
+
33
33
  should "preserve the original :tags parameter if it is a comma-separated string" do
34
34
  search = Search.new(:tags => 'one,two')
35
35
  search.send(:parameters).should == {:tags => 'one,two'}
36
36
  end
37
-
37
+
38
38
  should "not have any :tags parameters if none are supplied" do
39
39
  search = Search.new({})
40
40
  search.send(:parameters).should == {}
41
41
  end
42
-
42
+
43
43
  should "convert the search term into the appropriate parameter" do
44
44
  search = Search.new(:text => 'foo')
45
45
  search.send(:parameters).should == {:text => 'foo'}
46
46
  end
47
-
47
+
48
48
  should "convert a single string parameter into a text search" do
49
49
  search = Search.new('term')
50
50
  search.send(:parameters).should == {:text => 'term'}
51
51
  end
52
-
52
+
53
53
  should "be able to handle a combination of text and options" do
54
54
  search = Search.new('term', :tags => %w(a b))
55
55
  search.send(:parameters).should == {:text => 'term', :tags => 'a,b'}
56
56
  end
57
-
57
+
58
58
  should "be able to search photos based on text" do
59
59
  response = mock_request_cycle :for => 'photos.search', :with => {:text => 'foo'}
60
60
  search = Search.new(:text => 'foo')
61
61
  search.results
62
62
  end
63
-
63
+
64
64
  should "be able to search photos based on tags" do
65
65
  response = mock_request_cycle :for => 'photos.search', :with => {:tags => 'one,two'}
66
-
66
+
67
67
  photo_1, photo_2 = [stub(), stub()]
68
68
  photo_1_doc, photo_2_doc = (response.body/'rsp/photos/photo').map {|doc| doc }
69
-
69
+
70
70
  Photo.expects(:new).with(photo_1_doc).returns(photo_1)
71
71
  Photo.expects(:new).with(photo_2_doc).returns(photo_2)
72
-
72
+
73
73
  search = Search.new(:tags => %w(one two))
74
74
  search.results.should == [photo_1, photo_2]
75
75
  end
76
-
76
+
77
77
  should "memoize the search results" do
78
78
  response = stub(:body => Hpricot.XML(read_fixture('photos.search')))
79
79
  Fleakr::Api::MethodRequest.expects(:with_response!).with(kind_of(String), kind_of(Hash)).once.returns(response)
80
-
80
+
81
81
  (response.body/'rsp/photos/photo').each do |doc|
82
82
  Photo.expects(:new).with(doc).once
83
83
  end
84
-
84
+
85
85
  search = Search.new(:tags => %w(foo))
86
-
86
+
87
87
  2.times { search.results }
88
88
  end
89
-
90
-
89
+
90
+
91
91
  end
92
-
92
+
93
93
  end
94
94
  end
@@ -1,133 +1,155 @@
1
- require File.dirname(__FILE__) + '/../../../test_helper'
1
+ require File.expand_path('../../../../test_helper', __FILE__)
2
2
 
3
3
  module Fleakr::Objects
4
4
  class SetTest < Test::Unit::TestCase
5
5
 
6
- should_have_many :photos, :comments
7
-
6
+ should_have_many :photos, :class => Photo
7
+ should_have_many :comments, :class => Comment
8
+
8
9
  should_autoload_when_accessing :user_id, :with => :load_info
9
10
 
10
11
  context "The Set class" do
11
-
12
- should_find_all :sets, :by => :user_id, :call => 'photosets.getList', :path => 'rsp/photosets/photoset'
13
- should_find_one :set, :by => :id, :with => :photoset_id, :call => 'photosets.getInfo', :path => 'rsp/photoset'
14
-
12
+
13
+ should_find_all :sets, :by => :user_id, :call => 'photosets.getList', :path => 'rsp/photosets/photoset', :class => Set
14
+ should_find_one :set, :by => :id, :with => :photoset_id, :call => 'photosets.getInfo', :path => 'rsp/photoset', :class => Set
15
+
15
16
  end
16
17
 
17
18
  context "An instance of the Set class" do
18
-
19
+
19
20
  context "when populating from photosets.getList" do
20
21
  setup do
21
22
  @object = Set.new(Hpricot.XML(read_fixture('photosets.getList')).at('rsp/photosets/photoset'))
22
23
  end
23
-
24
+
24
25
  should_have_a_value_for :id => '72157609490909659'
25
26
  should_have_a_value_for :title => 'Second Set'
26
27
  should_have_a_value_for :description => 'This is the second set.'
27
28
  should_have_a_value_for :count => '138'
28
29
  should_have_a_value_for :primary_photo_id => '3044180117'
29
-
30
+
30
31
  end
31
-
32
+
32
33
  context "when populating from photosets.getInfo" do
33
34
  setup do
34
35
  @object = Set.new
35
36
  @object.populate_from(Hpricot.XML(read_fixture('photosets.getInfo')))
36
37
  end
37
-
38
+
38
39
  should_have_a_value_for :user_id => '43955217@N05'
39
40
  end
40
-
41
+
41
42
  should "know the URL for the photoset" do
42
43
  s = Set.new
43
44
  s.stubs(:user_id).with().returns('123')
44
45
  s.stubs(:id).with().returns('456')
45
-
46
+
46
47
  s.url.should == "http://www.flickr.com/photos/123/sets/456/"
47
48
  end
48
-
49
+
49
50
  should "be able to retrieve the user for the set" do
50
51
  s = Set.new
51
52
  s.stubs(:user_id).with().returns('1')
52
-
53
+
53
54
  User.expects(:find_by_id).with('1').returns('user')
54
-
55
+
55
56
  s.user.should == 'user'
56
57
  end
57
-
58
+
58
59
  should "know the primary photo in the set" do
59
60
  id = '1'
60
61
  photo = stub()
61
-
62
+
62
63
  Photo.expects(:find_by_id).with(id).returns(photo)
63
-
64
+
64
65
  set = Set.new
65
66
  set.stubs(:primary_photo_id).with().returns(id)
66
-
67
+
67
68
  set.primary_photo.should == photo
68
69
  end
69
-
70
+
70
71
  should "memoize the primary photo" do
71
72
  id = '1'
72
73
  photo = stub()
73
-
74
+
74
75
  Photo.expects(:find_by_id).with(id).once.returns(photo)
75
-
76
+
76
77
  set = Set.new
77
78
  set.stubs(:primary_photo_id).with().returns(id)
78
-
79
+
79
80
  2.times { set.primary_photo }
80
81
  end
81
-
82
+
83
+ should "know the folder name" do
84
+ set = Set.new
85
+ set.stubs(:title).with().returns('Title')
86
+
87
+ set.folder_name.should == 'Title'
88
+ end
89
+
90
+ should "remove forward slashes from the folder name" do
91
+ set = Set.new
92
+ set.stubs(:title).with().returns("This/That")
93
+
94
+ set.folder_name.should == 'This That'
95
+ end
96
+
97
+ should "collapse spaces when generating the folder name" do
98
+ set = Set.new
99
+ set.stubs(:title).with().returns('This / That')
100
+
101
+ set.folder_name.should == 'This That'
102
+ end
103
+
82
104
  context "when saving the set" do
83
105
  setup do
84
106
  @tmp_dir = create_temp_directory
85
- @set_title = 'set'
86
-
107
+ @set_folder_name = 'set'
108
+
87
109
  @set = Set.new
88
- @set.stubs(:title).with().returns(@set_title)
110
+ @set.stubs(:folder_name).with().returns(@set_folder_name)
89
111
  end
90
-
112
+
91
113
  teardown { FileUtils.rm_rf(@tmp_dir) }
92
114
 
93
115
  should "know the prefix string based on the number of photos in the set" do
94
116
  set = Set.new
95
117
  set.stubs(:count).with().returns('5')
96
118
  set.file_prefix(0).should == '1_'
97
-
119
+
98
120
  set.stubs(:count).with().returns('99')
99
121
  set.file_prefix(0).should == '01_'
100
122
  end
101
-
123
+
102
124
  should "save all files of the specified size to the specified directory" do
103
125
  image = mock()
104
126
  image.expects(:save_to).with("#{@tmp_dir}/set", '1_')
105
-
127
+
106
128
  photo = stub(:small => image)
107
129
 
108
130
  @set.stubs(:photos).with().returns([photo])
109
131
  @set.stubs(:file_prefix).with(0).returns('1_')
110
-
132
+
111
133
  FileUtils.expects(:mkdir).with("#{@tmp_dir}/set")
112
-
134
+
113
135
  @set.save_to(@tmp_dir, :small)
114
136
  end
115
-
137
+
116
138
  should "not create the directory if it already exists" do
117
139
  FileUtils.mkdir("#{@tmp_dir}/set")
118
140
 
119
141
  @set.stubs(:photos).with().returns([])
120
-
142
+
121
143
  FileUtils.expects(:mkdir).with("#{@tmp_dir}/set").never
122
-
144
+
123
145
  @set.save_to(@tmp_dir, :small)
124
146
  end
125
-
147
+
126
148
  should "not raise errors when saving an image size that doesn't exist" do
127
149
  @set.stubs(:photos).with().returns([stub(:large => nil)])
128
150
  lambda { @set.save_to(@tmp_dir, :large) }.should_not raise_error
129
151
  end
130
-
152
+
131
153
  end
132
154
 
133
155
  end