cemeng-paperclip 2.3.6

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 (62) hide show
  1. data/LICENSE +26 -0
  2. data/README.rdoc +182 -0
  3. data/Rakefile +80 -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/generators/paperclip/USAGE +8 -0
  9. data/lib/generators/paperclip/paperclip_generator.rb +31 -0
  10. data/lib/generators/paperclip/templates/paperclip_migration.rb.erb +19 -0
  11. data/lib/paperclip.rb +402 -0
  12. data/lib/paperclip/attachment.rb +347 -0
  13. data/lib/paperclip/callback_compatability.rb +61 -0
  14. data/lib/paperclip/command_line.rb +80 -0
  15. data/lib/paperclip/geometry.rb +115 -0
  16. data/lib/paperclip/interpolations.rb +114 -0
  17. data/lib/paperclip/iostream.rb +45 -0
  18. data/lib/paperclip/matchers.rb +33 -0
  19. data/lib/paperclip/matchers/have_attached_file_matcher.rb +57 -0
  20. data/lib/paperclip/matchers/validate_attachment_content_type_matcher.rb +75 -0
  21. data/lib/paperclip/matchers/validate_attachment_presence_matcher.rb +54 -0
  22. data/lib/paperclip/matchers/validate_attachment_size_matcher.rb +95 -0
  23. data/lib/paperclip/processor.rb +58 -0
  24. data/lib/paperclip/railtie.rb +25 -0
  25. data/lib/paperclip/storage.rb +3 -0
  26. data/lib/paperclip/storage/database.rb +204 -0
  27. data/lib/paperclip/storage/filesystem.rb +73 -0
  28. data/lib/paperclip/storage/s3.rb +192 -0
  29. data/lib/paperclip/style.rb +91 -0
  30. data/lib/paperclip/thumbnail.rb +79 -0
  31. data/lib/paperclip/upfile.rb +55 -0
  32. data/lib/paperclip/version.rb +3 -0
  33. data/lib/tasks/paperclip.rake +79 -0
  34. data/rails/init.rb +2 -0
  35. data/shoulda_macros/paperclip.rb +118 -0
  36. data/test/attachment_test.rb +804 -0
  37. data/test/command_line_test.rb +133 -0
  38. data/test/database.yml +4 -0
  39. data/test/database_storage_test.rb +267 -0
  40. data/test/fixtures/12k.png +0 -0
  41. data/test/fixtures/50x50.png +0 -0
  42. data/test/fixtures/5k.png +0 -0
  43. data/test/fixtures/bad.png +1 -0
  44. data/test/fixtures/s3.yml +8 -0
  45. data/test/fixtures/text.txt +0 -0
  46. data/test/fixtures/twopage.pdf +0 -0
  47. data/test/geometry_test.rb +177 -0
  48. data/test/helper.rb +146 -0
  49. data/test/integration_test.rb +482 -0
  50. data/test/interpolations_test.rb +127 -0
  51. data/test/iostream_test.rb +71 -0
  52. data/test/matchers/have_attached_file_matcher_test.rb +24 -0
  53. data/test/matchers/validate_attachment_content_type_matcher_test.rb +47 -0
  54. data/test/matchers/validate_attachment_presence_matcher_test.rb +26 -0
  55. data/test/matchers/validate_attachment_size_matcher_test.rb +51 -0
  56. data/test/paperclip_test.rb +254 -0
  57. data/test/processor_test.rb +10 -0
  58. data/test/storage_test.rb +363 -0
  59. data/test/style_test.rb +141 -0
  60. data/test/thumbnail_test.rb +227 -0
  61. data/test/upfile_test.rb +36 -0
  62. metadata +186 -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::CommandLine.expects(:"`").with do |arg|
95
+ arg.match %r{convert ["']#{File.expand_path(@thumb.file.path)}\[0\]["'] -resize ["']x50["'] -crop ["']100x50\+114\+0["'] \+repage ["'].*?["']}
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::CommandLine.expects(:"`").with do |arg|
119
+ arg.match %r{convert -strip ["']#{File.expand_path(@thumb.file.path)}\[0\]["'] -resize ["']x50["'] -crop ["']100x50\+114\+0["'] \+repage ["'].*?["']}
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 %w"-strip -depth 8", @thumb.convert_options
153
+ end
154
+
155
+ should "send the right command to convert when sent #make" do
156
+ Paperclip::CommandLine.expects(:"`").with do |arg|
157
+ arg.match %r{convert ["']#{File.expand_path(@thumb.file.path)}\[0\]["'] -resize ["']x50["'] -crop ["']100x50\+114\+0["'] \+repage -strip -depth 8 ["'].*?["']}
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 !@thumb.transformation_command.include?("-resize")
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,36 @@
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
+
29
+ should "return a content_type of text/plain on a real file whose content_type is determined with the file command" do
30
+ file = File.new(File.join(File.dirname(__FILE__), "..", "LICENSE"))
31
+ class << file
32
+ include Paperclip::Upfile
33
+ end
34
+ assert_equal 'text/plain', file.content_type
35
+ end
36
+ end
metadata ADDED
@@ -0,0 +1,186 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cemeng-paperclip
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.3.6
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Jon Yurek
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-11-17 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activerecord
16
+ requirement: &2151840620 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *2151840620
25
+ - !ruby/object:Gem::Dependency
26
+ name: activesupport
27
+ requirement: &2151838660 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *2151838660
36
+ - !ruby/object:Gem::Dependency
37
+ name: shoulda
38
+ requirement: &2151829000 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *2151829000
47
+ - !ruby/object:Gem::Dependency
48
+ name: appraisal
49
+ requirement: &2151827180 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *2151827180
58
+ - !ruby/object:Gem::Dependency
59
+ name: mocha
60
+ requirement: &2151823800 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *2151823800
69
+ - !ruby/object:Gem::Dependency
70
+ name: aws-s3
71
+ requirement: &2151817680 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *2151817680
80
+ - !ruby/object:Gem::Dependency
81
+ name: sqlite3-ruby
82
+ requirement: &2151814680 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *2151814680
91
+ description: Easy upload management for ActiveRecord
92
+ email: jyurek@thoughtbot.com
93
+ executables: []
94
+ extensions: []
95
+ extra_rdoc_files:
96
+ - README.rdoc
97
+ files:
98
+ - README.rdoc
99
+ - LICENSE
100
+ - Rakefile
101
+ - init.rb
102
+ - lib/generators/paperclip/paperclip_generator.rb
103
+ - lib/generators/paperclip/templates/paperclip_migration.rb.erb
104
+ - lib/generators/paperclip/USAGE
105
+ - lib/paperclip/attachment.rb
106
+ - lib/paperclip/callback_compatability.rb
107
+ - lib/paperclip/command_line.rb
108
+ - lib/paperclip/geometry.rb
109
+ - lib/paperclip/interpolations.rb
110
+ - lib/paperclip/iostream.rb
111
+ - lib/paperclip/matchers/have_attached_file_matcher.rb
112
+ - lib/paperclip/matchers/validate_attachment_content_type_matcher.rb
113
+ - lib/paperclip/matchers/validate_attachment_presence_matcher.rb
114
+ - lib/paperclip/matchers/validate_attachment_size_matcher.rb
115
+ - lib/paperclip/matchers.rb
116
+ - lib/paperclip/processor.rb
117
+ - lib/paperclip/railtie.rb
118
+ - lib/paperclip/storage/database.rb
119
+ - lib/paperclip/storage/filesystem.rb
120
+ - lib/paperclip/storage/s3.rb
121
+ - lib/paperclip/storage.rb
122
+ - lib/paperclip/style.rb
123
+ - lib/paperclip/thumbnail.rb
124
+ - lib/paperclip/upfile.rb
125
+ - lib/paperclip/version.rb
126
+ - lib/paperclip.rb
127
+ - lib/tasks/paperclip.rake
128
+ - test/attachment_test.rb
129
+ - test/command_line_test.rb
130
+ - test/database.yml
131
+ - test/database_storage_test.rb
132
+ - test/fixtures/12k.png
133
+ - test/fixtures/50x50.png
134
+ - test/fixtures/5k.png
135
+ - test/fixtures/bad.png
136
+ - test/fixtures/s3.yml
137
+ - test/fixtures/text.txt
138
+ - test/fixtures/twopage.pdf
139
+ - test/geometry_test.rb
140
+ - test/helper.rb
141
+ - test/integration_test.rb
142
+ - test/interpolations_test.rb
143
+ - test/iostream_test.rb
144
+ - test/matchers/have_attached_file_matcher_test.rb
145
+ - test/matchers/validate_attachment_content_type_matcher_test.rb
146
+ - test/matchers/validate_attachment_presence_matcher_test.rb
147
+ - test/matchers/validate_attachment_size_matcher_test.rb
148
+ - test/paperclip_test.rb
149
+ - test/processor_test.rb
150
+ - test/storage_test.rb
151
+ - test/style_test.rb
152
+ - test/thumbnail_test.rb
153
+ - test/upfile_test.rb
154
+ - rails/init.rb
155
+ - generators/paperclip/paperclip_generator.rb
156
+ - generators/paperclip/templates/paperclip_migration.rb.erb
157
+ - generators/paperclip/USAGE
158
+ - shoulda_macros/paperclip.rb
159
+ homepage: http://www.thoughtbot.com/projects/paperclip
160
+ licenses: []
161
+ post_install_message:
162
+ rdoc_options:
163
+ - --line-numbers
164
+ - --inline-source
165
+ require_paths:
166
+ - lib
167
+ required_ruby_version: !ruby/object:Gem::Requirement
168
+ none: false
169
+ requirements:
170
+ - - ! '>='
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
173
+ required_rubygems_version: !ruby/object:Gem::Requirement
174
+ none: false
175
+ requirements:
176
+ - - ! '>='
177
+ - !ruby/object:Gem::Version
178
+ version: '0'
179
+ requirements:
180
+ - ImageMagick
181
+ rubyforge_project: paperclip
182
+ rubygems_version: 1.8.11
183
+ signing_key:
184
+ specification_version: 3
185
+ summary: File attachments as attributes for ActiveRecord
186
+ test_files: []