paperclip-cloudfiles 2.3.1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. data/LICENSE +26 -0
  2. data/README.rdoc +176 -0
  3. data/Rakefile +105 -0
  4. data/generators/paperclip/USAGE +5 -0
  5. data/generators/paperclip/paperclip_generator.rb +27 -0
  6. data/generators/paperclip/templates/paperclip_migration.rb.erb +19 -0
  7. data/init.rb +1 -0
  8. data/lib/paperclip.rb +356 -0
  9. data/lib/paperclip/attachment.rb +414 -0
  10. data/lib/paperclip/callback_compatability.rb +33 -0
  11. data/lib/paperclip/geometry.rb +115 -0
  12. data/lib/paperclip/interpolations.rb +108 -0
  13. data/lib/paperclip/iostream.rb +59 -0
  14. data/lib/paperclip/matchers.rb +4 -0
  15. data/lib/paperclip/matchers/have_attached_file_matcher.rb +49 -0
  16. data/lib/paperclip/matchers/validate_attachment_content_type_matcher.rb +65 -0
  17. data/lib/paperclip/matchers/validate_attachment_presence_matcher.rb +48 -0
  18. data/lib/paperclip/matchers/validate_attachment_size_matcher.rb +85 -0
  19. data/lib/paperclip/processor.rb +49 -0
  20. data/lib/paperclip/storage.rb +369 -0
  21. data/lib/paperclip/thumbnail.rb +73 -0
  22. data/lib/paperclip/upfile.rb +49 -0
  23. data/shoulda_macros/paperclip.rb +117 -0
  24. data/tasks/paperclip_tasks.rake +79 -0
  25. data/test/attachment_test.rb +780 -0
  26. data/test/cloudfiles.yml +13 -0
  27. data/test/database.yml +4 -0
  28. data/test/fixtures/12k.png +0 -0
  29. data/test/fixtures/50x50.png +0 -0
  30. data/test/fixtures/5k.png +0 -0
  31. data/test/fixtures/bad.png +1 -0
  32. data/test/fixtures/s3.yml +8 -0
  33. data/test/fixtures/text.txt +0 -0
  34. data/test/fixtures/twopage.pdf +0 -0
  35. data/test/geometry_test.rb +177 -0
  36. data/test/helper.rb +111 -0
  37. data/test/integration_test.rb +483 -0
  38. data/test/interpolations_test.rb +124 -0
  39. data/test/iostream_test.rb +78 -0
  40. data/test/matchers/have_attached_file_matcher_test.rb +21 -0
  41. data/test/matchers/validate_attachment_content_type_matcher_test.rb +31 -0
  42. data/test/matchers/validate_attachment_presence_matcher_test.rb +23 -0
  43. data/test/matchers/validate_attachment_size_matcher_test.rb +51 -0
  44. data/test/paperclip_test.rb +319 -0
  45. data/test/processor_test.rb +10 -0
  46. data/test/storage_test.rb +549 -0
  47. data/test/thumbnail_test.rb +227 -0
  48. data/test/upfile_test.rb +28 -0
  49. metadata +175 -0
@@ -0,0 +1,227 @@
1
+ require 'test/helper'
2
+
3
+ class ThumbnailTest < Test::Unit::TestCase
4
+
5
+ context "A Paperclip Tempfile" do
6
+ setup do
7
+ @tempfile = Paperclip::Tempfile.new("file.jpg")
8
+ end
9
+
10
+ should "have its path contain a real extension" do
11
+ assert_equal ".jpg", File.extname(@tempfile.path)
12
+ end
13
+
14
+ should "be a real Tempfile" do
15
+ assert @tempfile.is_a?(::Tempfile)
16
+ end
17
+ end
18
+
19
+ context "Another Paperclip Tempfile" do
20
+ setup do
21
+ @tempfile = Paperclip::Tempfile.new("file")
22
+ end
23
+
24
+ should "not have an extension if not given one" do
25
+ assert_equal "", File.extname(@tempfile.path)
26
+ end
27
+
28
+ should "still be a real Tempfile" do
29
+ assert @tempfile.is_a?(::Tempfile)
30
+ end
31
+ end
32
+
33
+ context "An image" do
34
+ setup do
35
+ @file = File.new(File.join(File.dirname(__FILE__), "fixtures", "5k.png"), 'rb')
36
+ end
37
+
38
+ teardown { @file.close }
39
+
40
+ [["600x600>", "434x66"],
41
+ ["400x400>", "400x61"],
42
+ ["32x32<", "434x66"]
43
+ ].each do |args|
44
+ context "being thumbnailed with a geometry of #{args[0]}" do
45
+ setup do
46
+ @thumb = Paperclip::Thumbnail.new(@file, :geometry => args[0])
47
+ end
48
+
49
+ should "start with dimensions of 434x66" do
50
+ cmd = %Q[identify -format "%wx%h" "#{@file.path}"]
51
+ assert_equal "434x66", `#{cmd}`.chomp
52
+ end
53
+
54
+ should "report the correct target geometry" do
55
+ assert_equal args[0], @thumb.target_geometry.to_s
56
+ end
57
+
58
+ context "when made" do
59
+ setup do
60
+ @thumb_result = @thumb.make
61
+ end
62
+
63
+ should "be the size we expect it to be" do
64
+ cmd = %Q[identify -format "%wx%h" "#{@thumb_result.path}"]
65
+ assert_equal args[1], `#{cmd}`.chomp
66
+ end
67
+ end
68
+ end
69
+ end
70
+
71
+ context "being thumbnailed at 100x50 with cropping" do
72
+ setup do
73
+ @thumb = Paperclip::Thumbnail.new(@file, :geometry => "100x50#")
74
+ end
75
+
76
+ should "report its correct current and target geometries" do
77
+ assert_equal "100x50#", @thumb.target_geometry.to_s
78
+ assert_equal "434x66", @thumb.current_geometry.to_s
79
+ end
80
+
81
+ should "report its correct format" do
82
+ assert_nil @thumb.format
83
+ end
84
+
85
+ should "have whiny turned on by default" do
86
+ assert @thumb.whiny
87
+ end
88
+
89
+ should "have convert_options set to nil by default" do
90
+ assert_equal nil, @thumb.convert_options
91
+ end
92
+
93
+ should "send the right command to convert when sent #make" do
94
+ Paperclip.expects(:"`").with do |arg|
95
+ arg.match %r{convert\s+"#{File.expand_path(@thumb.file.path)}\[0\]"\s+-resize\s+\"x50\"\s+-crop\s+\"100x50\+114\+0\"\s+\+repage\s+".*?"}
96
+ end
97
+ @thumb.make
98
+ end
99
+
100
+ should "create the thumbnail when sent #make" do
101
+ dst = @thumb.make
102
+ assert_match /100x50/, `identify "#{dst.path}"`
103
+ end
104
+ end
105
+
106
+ context "being thumbnailed with source file options set" do
107
+ setup do
108
+ @thumb = Paperclip::Thumbnail.new(@file,
109
+ :geometry => "100x50#",
110
+ :source_file_options => "-strip")
111
+ end
112
+
113
+ should "have source_file_options value set" do
114
+ assert_equal "-strip", @thumb.source_file_options
115
+ end
116
+
117
+ should "send the right command to convert when sent #make" do
118
+ Paperclip.expects(:"`").with do |arg|
119
+ arg.match %r{convert\s+-strip\s+"#{File.expand_path(@thumb.file.path)}\[0\]"\s+-resize\s+"x50"\s+-crop\s+"100x50\+114\+0"\s+\+repage\s+".*?"}
120
+ end
121
+ @thumb.make
122
+ end
123
+
124
+ should "create the thumbnail when sent #make" do
125
+ dst = @thumb.make
126
+ assert_match /100x50/, `identify "#{dst.path}"`
127
+ end
128
+
129
+ context "redefined to have bad source_file_options setting" do
130
+ setup do
131
+ @thumb = Paperclip::Thumbnail.new(@file,
132
+ :geometry => "100x50#",
133
+ :source_file_options => "-this-aint-no-option")
134
+ end
135
+
136
+ should "error when trying to create the thumbnail" do
137
+ assert_raises(Paperclip::PaperclipError) do
138
+ @thumb.make
139
+ end
140
+ end
141
+ end
142
+ end
143
+
144
+ context "being thumbnailed with convert options set" do
145
+ setup do
146
+ @thumb = Paperclip::Thumbnail.new(@file,
147
+ :geometry => "100x50#",
148
+ :convert_options => "-strip -depth 8")
149
+ end
150
+
151
+ should "have convert_options value set" do
152
+ assert_equal "-strip -depth 8", @thumb.convert_options
153
+ end
154
+
155
+ should "send the right command to convert when sent #make" do
156
+ Paperclip.expects(:"`").with do |arg|
157
+ arg.match %r{convert\s+"#{File.expand_path(@thumb.file.path)}\[0\]"\s+-resize\s+"x50"\s+-crop\s+"100x50\+114\+0"\s+\+repage\s+-strip\s+-depth\s+8\s+".*?"}
158
+ end
159
+ @thumb.make
160
+ end
161
+
162
+ should "create the thumbnail when sent #make" do
163
+ dst = @thumb.make
164
+ assert_match /100x50/, `identify "#{dst.path}"`
165
+ end
166
+
167
+ context "redefined to have bad convert_options setting" do
168
+ setup do
169
+ @thumb = Paperclip::Thumbnail.new(@file,
170
+ :geometry => "100x50#",
171
+ :convert_options => "-this-aint-no-option")
172
+ end
173
+
174
+ should "error when trying to create the thumbnail" do
175
+ assert_raises(Paperclip::PaperclipError) do
176
+ @thumb.make
177
+ end
178
+ end
179
+ end
180
+ end
181
+
182
+ context "being thumbnailed with a blank geometry string" do
183
+ setup do
184
+ @thumb = Paperclip::Thumbnail.new(@file,
185
+ :geometry => "",
186
+ :convert_options => "-gravity center -crop \"300x300+0-0\"")
187
+ end
188
+
189
+ should "not get resized by default" do
190
+ assert_no_match(/-resize/, @thumb.transformation_command)
191
+ end
192
+ end
193
+ end
194
+
195
+ context "A multipage PDF" do
196
+ setup do
197
+ @file = File.new(File.join(File.dirname(__FILE__), "fixtures", "twopage.pdf"), 'rb')
198
+ end
199
+
200
+ teardown { @file.close }
201
+
202
+ should "start with two pages with dimensions 612x792" do
203
+ cmd = %Q[identify -format "%wx%h" "#{@file.path}"]
204
+ assert_equal "612x792"*2, `#{cmd}`.chomp
205
+ end
206
+
207
+ context "being thumbnailed at 100x100 with cropping" do
208
+ setup do
209
+ @thumb = Paperclip::Thumbnail.new(@file, :geometry => "100x100#", :format => :png)
210
+ end
211
+
212
+ should "report its correct current and target geometries" do
213
+ assert_equal "100x100#", @thumb.target_geometry.to_s
214
+ assert_equal "612x792", @thumb.current_geometry.to_s
215
+ end
216
+
217
+ should "report its correct format" do
218
+ assert_equal :png, @thumb.format
219
+ end
220
+
221
+ should "create the thumbnail when sent #make" do
222
+ dst = @thumb.make
223
+ assert_match /100x100/, `identify "#{dst.path}"`
224
+ end
225
+ end
226
+ end
227
+ end
@@ -0,0 +1,28 @@
1
+ require 'test/helper'
2
+
3
+ class UpfileTest < Test::Unit::TestCase
4
+ { %w(jpg jpe jpeg) => 'image/jpeg',
5
+ %w(tif tiff) => 'image/tiff',
6
+ %w(png) => 'image/png',
7
+ %w(gif) => 'image/gif',
8
+ %w(bmp) => 'image/bmp',
9
+ %w(txt) => 'text/plain',
10
+ %w(htm html) => 'text/html',
11
+ %w(csv) => 'text/csv',
12
+ %w(xml) => 'text/xml',
13
+ %w(css) => 'text/css',
14
+ %w(js) => 'application/js',
15
+ %w(foo) => 'application/x-foo'
16
+ }.each do |extensions, content_type|
17
+ extensions.each do |extension|
18
+ should "return a content_type of #{content_type} for a file with extension .#{extension}" do
19
+ file = stub('file', :path => "basename.#{extension}")
20
+ class << file
21
+ include Paperclip::Upfile
22
+ end
23
+
24
+ assert_equal content_type, file.content_type
25
+ end
26
+ end
27
+ end
28
+ end
metadata ADDED
@@ -0,0 +1,175 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: paperclip-cloudfiles
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.3.1.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Jon Yurek
8
+ - H. Wade Minter
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2009-12-06 00:00:00 -06:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: shoulda
18
+ type: :development
19
+ version_requirement:
20
+ version_requirements: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: "0"
25
+ version:
26
+ - !ruby/object:Gem::Dependency
27
+ name: jferris-mocha
28
+ type: :development
29
+ version_requirement:
30
+ version_requirements: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 0.9.5.0.1241126838
35
+ version:
36
+ - !ruby/object:Gem::Dependency
37
+ name: aws-s3
38
+ type: :development
39
+ version_requirement:
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: "0"
45
+ version:
46
+ - !ruby/object:Gem::Dependency
47
+ name: cloudfiles
48
+ type: :development
49
+ version_requirement:
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 1.4.4
55
+ version:
56
+ - !ruby/object:Gem::Dependency
57
+ name: sqlite3-ruby
58
+ type: :development
59
+ version_requirement:
60
+ version_requirements: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: "0"
65
+ version:
66
+ - !ruby/object:Gem::Dependency
67
+ name: activerecord
68
+ type: :development
69
+ version_requirement:
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: "0"
75
+ version:
76
+ - !ruby/object:Gem::Dependency
77
+ name: activesupport
78
+ type: :development
79
+ version_requirement:
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: "0"
85
+ version:
86
+ description: A fork of the Thoughtbot Paperclip gem/plugin, adding support for Rackspace Cloud Files. This fork is maintained by H. Wade Minter <minter@lunenburg.org>
87
+ email:
88
+ - jyurek@thoughtbot.com
89
+ - minter@lunenburg.org
90
+ executables: []
91
+
92
+ extensions: []
93
+
94
+ extra_rdoc_files:
95
+ - README.rdoc
96
+ files:
97
+ - README.rdoc
98
+ - LICENSE
99
+ - Rakefile
100
+ - init.rb
101
+ - generators/paperclip/paperclip_generator.rb
102
+ - generators/paperclip/templates/paperclip_migration.rb.erb
103
+ - generators/paperclip/USAGE
104
+ - lib/paperclip/attachment.rb
105
+ - lib/paperclip/callback_compatability.rb
106
+ - lib/paperclip/geometry.rb
107
+ - lib/paperclip/interpolations.rb
108
+ - lib/paperclip/iostream.rb
109
+ - lib/paperclip/matchers/have_attached_file_matcher.rb
110
+ - lib/paperclip/matchers/validate_attachment_content_type_matcher.rb
111
+ - lib/paperclip/matchers/validate_attachment_presence_matcher.rb
112
+ - lib/paperclip/matchers/validate_attachment_size_matcher.rb
113
+ - lib/paperclip/matchers.rb
114
+ - lib/paperclip/processor.rb
115
+ - lib/paperclip/storage.rb
116
+ - lib/paperclip/thumbnail.rb
117
+ - lib/paperclip/upfile.rb
118
+ - lib/paperclip.rb
119
+ - tasks/paperclip_tasks.rake
120
+ - test/attachment_test.rb
121
+ - test/cloudfiles.yml
122
+ - test/database.yml
123
+ - test/fixtures/12k.png
124
+ - test/fixtures/50x50.png
125
+ - test/fixtures/5k.png
126
+ - test/fixtures/bad.png
127
+ - test/fixtures/s3.yml
128
+ - test/fixtures/text.txt
129
+ - test/fixtures/twopage.pdf
130
+ - test/geometry_test.rb
131
+ - test/helper.rb
132
+ - test/integration_test.rb
133
+ - test/interpolations_test.rb
134
+ - test/iostream_test.rb
135
+ - test/matchers/have_attached_file_matcher_test.rb
136
+ - test/matchers/validate_attachment_content_type_matcher_test.rb
137
+ - test/matchers/validate_attachment_presence_matcher_test.rb
138
+ - test/matchers/validate_attachment_size_matcher_test.rb
139
+ - test/paperclip_test.rb
140
+ - test/processor_test.rb
141
+ - test/storage_test.rb
142
+ - test/thumbnail_test.rb
143
+ - test/upfile_test.rb
144
+ - shoulda_macros/paperclip.rb
145
+ has_rdoc: true
146
+ homepage: http://github.com/minter/paperclip
147
+ licenses: []
148
+
149
+ post_install_message:
150
+ rdoc_options:
151
+ - --line-numbers
152
+ - --inline-source
153
+ require_paths:
154
+ - lib
155
+ required_ruby_version: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: "0"
160
+ version:
161
+ required_rubygems_version: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: "0"
166
+ version:
167
+ requirements:
168
+ - ImageMagick
169
+ rubyforge_project: paperclip
170
+ rubygems_version: 1.3.5
171
+ signing_key:
172
+ specification_version: 3
173
+ summary: File attachments as attributes for ActiveRecord with Rackspace Cloud Files support
174
+ test_files: []
175
+