paperclip 3.5.4 → 4.3.7
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of paperclip might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.gitignore +0 -6
- data/.hound.yml +1066 -0
- data/.rubocop.yml +1 -0
- data/.travis.yml +11 -17
- data/Appraisals +6 -14
- data/CONTRIBUTING.md +13 -8
- data/Gemfile +16 -3
- data/LICENSE +1 -3
- data/NEWS +167 -49
- data/README.md +294 -75
- data/RELEASING.md +17 -0
- data/Rakefile +6 -8
- data/features/basic_integration.feature +24 -6
- data/features/step_definitions/attachment_steps.rb +30 -22
- data/features/step_definitions/html_steps.rb +2 -2
- data/features/step_definitions/rails_steps.rb +44 -14
- data/features/step_definitions/web_steps.rb +1 -103
- data/features/support/env.rb +2 -2
- data/features/support/file_helpers.rb +2 -2
- data/features/support/fixtures/gemfile.txt +1 -1
- data/features/support/rails.rb +2 -1
- data/gemfiles/3.2.gemfile +14 -6
- data/gemfiles/4.1.gemfile +19 -0
- data/gemfiles/4.2.gemfile +19 -0
- data/lib/generators/paperclip/paperclip_generator.rb +0 -2
- data/lib/generators/paperclip/templates/paperclip_migration.rb.erb +1 -1
- data/lib/paperclip/attachment.rb +132 -38
- data/lib/paperclip/attachment_registry.rb +1 -1
- data/lib/paperclip/callbacks.rb +11 -1
- data/lib/paperclip/content_type_detector.rb +25 -22
- data/lib/paperclip/deprecations.rb +42 -0
- data/lib/paperclip/errors.rb +5 -0
- data/lib/paperclip/file_command_content_type_detector.rb +6 -8
- data/lib/paperclip/geometry_detector_factory.rb +3 -1
- data/lib/paperclip/geometry_parser_factory.rb +1 -1
- data/lib/paperclip/has_attached_file.rb +10 -0
- data/lib/paperclip/interpolations/plural_cache.rb +6 -5
- data/lib/paperclip/interpolations.rb +25 -12
- data/lib/paperclip/io_adapters/abstract_adapter.rb +3 -1
- data/lib/paperclip/io_adapters/attachment_adapter.rb +4 -4
- data/lib/paperclip/io_adapters/data_uri_adapter.rb +5 -10
- data/lib/paperclip/io_adapters/stringio_adapter.rb +6 -10
- data/lib/paperclip/io_adapters/uri_adapter.rb +30 -11
- data/lib/paperclip/locales/de.yml +18 -0
- data/lib/paperclip/locales/en.yml +1 -0
- data/lib/paperclip/locales/es.yml +18 -0
- data/lib/paperclip/locales/ja.yml +18 -0
- data/lib/paperclip/locales/pt-BR.yml +18 -0
- data/lib/paperclip/locales/zh-CN.yml +18 -0
- data/lib/paperclip/locales/zh-HK.yml +18 -0
- data/lib/paperclip/locales/zh-TW.yml +18 -0
- data/lib/paperclip/matchers/have_attached_file_matcher.rb +2 -1
- data/lib/paperclip/matchers/validate_attachment_presence_matcher.rb +2 -1
- data/lib/paperclip/matchers/validate_attachment_size_matcher.rb +2 -1
- data/lib/paperclip/media_type_spoof_detector.rb +89 -0
- data/lib/paperclip/processor.rb +0 -37
- data/lib/paperclip/processor_helpers.rb +50 -0
- data/lib/paperclip/rails_environment.rb +25 -0
- data/lib/paperclip/schema.rb +10 -2
- data/lib/paperclip/storage/filesystem.rb +1 -1
- data/lib/paperclip/storage/fog.rb +18 -7
- data/lib/paperclip/storage/s3.rb +53 -22
- data/lib/paperclip/style.rb +8 -2
- data/lib/paperclip/tempfile_factory.rb +5 -1
- data/lib/paperclip/thumbnail.rb +12 -10
- data/lib/paperclip/url_generator.rb +11 -3
- data/lib/paperclip/validators/attachment_content_type_validator.rb +4 -0
- data/lib/paperclip/validators/attachment_file_name_validator.rb +80 -0
- data/lib/paperclip/validators/attachment_file_type_ignorance_validator.rb +29 -0
- data/lib/paperclip/validators/attachment_presence_validator.rb +4 -0
- data/lib/paperclip/validators/attachment_size_validator.rb +11 -3
- data/lib/paperclip/validators/media_type_spoof_detection_validator.rb +27 -0
- data/lib/paperclip/validators.rb +10 -3
- data/lib/paperclip/version.rb +1 -1
- data/lib/paperclip.rb +26 -8
- data/lib/tasks/paperclip.rake +17 -2
- data/paperclip.gemspec +16 -14
- data/shoulda_macros/paperclip.rb +0 -1
- data/spec/paperclip/attachment_definitions_spec.rb +13 -0
- data/{test/attachment_processing_test.rb → spec/paperclip/attachment_processing_spec.rb} +20 -21
- data/spec/paperclip/attachment_registry_spec.rb +130 -0
- data/{test/attachment_test.rb → spec/paperclip/attachment_spec.rb} +438 -397
- data/{test/content_type_detector_test.rb → spec/paperclip/content_type_detector_spec.rb} +16 -19
- data/spec/paperclip/deprecations_spec.rb +65 -0
- data/{test/file_command_content_type_detector_test.rb → spec/paperclip/file_command_content_type_detector_spec.rb} +5 -6
- data/spec/paperclip/filename_cleaner_spec.rb +14 -0
- data/spec/paperclip/geometry_detector_spec.rb +39 -0
- data/{test/geometry_parser_test.rb → spec/paperclip/geometry_parser_spec.rb} +27 -27
- data/{test/geometry_test.rb → spec/paperclip/geometry_spec.rb} +50 -52
- data/spec/paperclip/glue_spec.rb +44 -0
- data/{test/has_attached_file_test.rb → spec/paperclip/has_attached_file_spec.rb} +45 -28
- data/{test/integration_test.rb → spec/paperclip/integration_spec.rb} +134 -126
- data/{test/interpolations_test.rb → spec/paperclip/interpolations_spec.rb} +70 -46
- data/spec/paperclip/io_adapters/abstract_adapter_spec.rb +78 -0
- data/{test/io_adapters/attachment_adapter_test.rb → spec/paperclip/io_adapters/attachment_adapter_spec.rb} +27 -29
- data/{test/io_adapters/data_uri_adapter_test.rb → spec/paperclip/io_adapters/data_uri_adapter_spec.rb} +26 -17
- data/spec/paperclip/io_adapters/empty_string_adapter_spec.rb +17 -0
- data/{test/io_adapters/file_adapter_test.rb → spec/paperclip/io_adapters/file_adapter_spec.rb} +36 -40
- data/{test/io_adapters/http_url_proxy_adapter_test.rb → spec/paperclip/io_adapters/http_url_proxy_adapter_spec.rb} +31 -29
- data/spec/paperclip/io_adapters/identity_adapter_spec.rb +8 -0
- data/{test/io_adapters/nil_adapter_test.rb → spec/paperclip/io_adapters/nil_adapter_spec.rb} +7 -7
- data/{test/io_adapters/registry_test.rb → spec/paperclip/io_adapters/registry_spec.rb} +10 -7
- data/{test/io_adapters/stringio_adapter_test.rb → spec/paperclip/io_adapters/stringio_adapter_spec.rb} +20 -17
- data/{test/io_adapters/uploaded_file_adapter_test.rb → spec/paperclip/io_adapters/uploaded_file_adapter_spec.rb} +41 -41
- data/{test/io_adapters/uri_adapter_test.rb → spec/paperclip/io_adapters/uri_adapter_spec.rb} +53 -28
- data/spec/paperclip/matchers/have_attached_file_matcher_spec.rb +19 -0
- data/spec/paperclip/matchers/validate_attachment_content_type_matcher_spec.rb +99 -0
- data/spec/paperclip/matchers/validate_attachment_presence_matcher_spec.rb +69 -0
- data/spec/paperclip/matchers/validate_attachment_size_matcher_spec.rb +88 -0
- data/spec/paperclip/media_type_spoof_detector_spec.rb +79 -0
- data/spec/paperclip/meta_class_spec.rb +30 -0
- data/spec/paperclip/paperclip_missing_attachment_styles_spec.rb +84 -0
- data/{test/paperclip_test.rb → spec/paperclip/paperclip_spec.rb} +53 -48
- data/spec/paperclip/plural_cache_spec.rb +37 -0
- data/spec/paperclip/processor_helpers_spec.rb +57 -0
- data/{test/processor_test.rb → spec/paperclip/processor_spec.rb} +5 -5
- data/spec/paperclip/rails_environment_spec.rb +33 -0
- data/{test/rake_test.rb → spec/paperclip/rake_spec.rb} +15 -15
- data/spec/paperclip/schema_spec.rb +248 -0
- data/{test/storage/filesystem_test.rb → spec/paperclip/storage/filesystem_spec.rb} +18 -18
- data/spec/paperclip/storage/fog_spec.rb +535 -0
- data/spec/paperclip/storage/s3_live_spec.rb +182 -0
- data/spec/paperclip/storage/s3_spec.rb +1526 -0
- data/spec/paperclip/style_spec.rb +255 -0
- data/spec/paperclip/tempfile_factory_spec.rb +33 -0
- data/{test/thumbnail_test.rb → spec/paperclip/thumbnail_spec.rb} +123 -107
- data/spec/paperclip/url_generator_spec.rb +211 -0
- data/spec/paperclip/validators/attachment_content_type_validator_spec.rb +322 -0
- data/spec/paperclip/validators/attachment_file_name_validator_spec.rb +160 -0
- data/{test/validators/attachment_presence_validator_test.rb → spec/paperclip/validators/attachment_presence_validator_spec.rb} +20 -20
- data/{test/validators/attachment_size_validator_test.rb → spec/paperclip/validators/attachment_size_validator_spec.rb} +65 -58
- data/spec/paperclip/validators/media_type_spoof_detection_validator_spec.rb +52 -0
- data/spec/paperclip/validators_spec.rb +164 -0
- data/spec/spec_helper.rb +43 -0
- data/spec/support/assertions.rb +71 -0
- data/spec/support/deprecations.rb +9 -0
- data/spec/support/fake_model.rb +25 -0
- data/spec/support/fake_rails.rb +12 -0
- data/spec/support/fixtures/empty.html +1 -0
- data/spec/support/fixtures/empty.xlsx +0 -0
- data/spec/support/fixtures/spaced file.jpg +0 -0
- data/spec/support/matchers/accept.rb +5 -0
- data/spec/support/matchers/exist.rb +5 -0
- data/spec/support/matchers/have_column.rb +23 -0
- data/spec/support/model_reconstruction.rb +60 -0
- data/spec/support/rails_helpers.rb +7 -0
- data/spec/support/test_data.rb +13 -0
- data/spec/support/version_helper.rb +9 -0
- metadata +334 -219
- data/RUNNING_TESTS.md +0 -4
- data/gemfiles/3.0.gemfile +0 -11
- data/gemfiles/3.1.gemfile +0 -11
- data/gemfiles/4.0.gemfile +0 -11
- data/test/attachment_definitions_test.rb +0 -12
- data/test/attachment_registry_test.rb +0 -88
- data/test/filename_cleaner_test.rb +0 -14
- data/test/generator_test.rb +0 -84
- data/test/geometry_detector_test.rb +0 -24
- data/test/helper.rb +0 -232
- data/test/io_adapters/abstract_adapter_test.rb +0 -58
- data/test/io_adapters/empty_string_adapter_test.rb +0 -18
- data/test/io_adapters/identity_adapter_test.rb +0 -8
- data/test/matchers/have_attached_file_matcher_test.rb +0 -24
- data/test/matchers/validate_attachment_content_type_matcher_test.rb +0 -110
- data/test/matchers/validate_attachment_presence_matcher_test.rb +0 -69
- data/test/matchers/validate_attachment_size_matcher_test.rb +0 -86
- data/test/meta_class_test.rb +0 -32
- data/test/paperclip_missing_attachment_styles_test.rb +0 -90
- data/test/plural_cache_test.rb +0 -36
- data/test/schema_test.rb +0 -200
- data/test/storage/fog_test.rb +0 -473
- data/test/storage/s3_live_test.rb +0 -179
- data/test/storage/s3_test.rb +0 -1356
- data/test/style_test.rb +0 -213
- data/test/support/mock_model.rb +0 -2
- data/test/tempfile_factory_test.rb +0 -17
- data/test/url_generator_test.rb +0 -187
- data/test/validators/attachment_content_type_validator_test.rb +0 -324
- data/test/validators_test.rb +0 -61
- /data/{test → spec}/database.yml +0 -0
- /data/{test → spec/support}/fixtures/12k.png +0 -0
- /data/{test → spec/support}/fixtures/50x50.png +0 -0
- /data/{test → spec/support}/fixtures/5k.png +0 -0
- /data/{test → spec/support}/fixtures/animated +0 -0
- /data/{test → spec/support}/fixtures/animated.gif +0 -0
- /data/{test → spec/support}/fixtures/animated.unknown +0 -0
- /data/{test → spec/support}/fixtures/bad.png +0 -0
- /data/{test → spec/support}/fixtures/fog.yml +0 -0
- /data/{test → spec/support}/fixtures/rotated.jpg +0 -0
- /data/{test → spec/support}/fixtures/s3.yml +0 -0
- /data/{test → spec/support}/fixtures/spaced file.png +0 -0
- /data/{test → spec/support}/fixtures/text.txt +0 -0
- /data/{test → spec/support}/fixtures/twopage.pdf +0 -0
- /data/{test → spec/support}/fixtures/uppercase.PNG +0 -0
- /data/{test → spec}/support/mock_attachment.rb +0 -0
- /data/{test → spec}/support/mock_interpolator.rb +0 -0
- /data/{test → spec}/support/mock_url_generator_builder.rb +0 -0
@@ -0,0 +1,255 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Paperclip::Style do
|
5
|
+
context "A style rule" do
|
6
|
+
before do
|
7
|
+
@attachment = attachment path: ":basename.:extension",
|
8
|
+
styles: { foo: {geometry: "100x100#", format: :png} },
|
9
|
+
whiny: true
|
10
|
+
@style = @attachment.styles[:foo]
|
11
|
+
end
|
12
|
+
|
13
|
+
it "is held as a Style object" do
|
14
|
+
expect(@style).to be_a Paperclip::Style
|
15
|
+
end
|
16
|
+
|
17
|
+
it "gets processors from the attachment definition" do
|
18
|
+
assert_equal [:thumbnail], @style.processors
|
19
|
+
end
|
20
|
+
|
21
|
+
it "has the right geometry" do
|
22
|
+
assert_equal "100x100#", @style.geometry
|
23
|
+
end
|
24
|
+
|
25
|
+
it "is whiny if the attachment is" do
|
26
|
+
assert @style.whiny?
|
27
|
+
end
|
28
|
+
|
29
|
+
it "responds to hash notation" do
|
30
|
+
assert_equal [:thumbnail], @style[:processors]
|
31
|
+
assert_equal "100x100#", @style[:geometry]
|
32
|
+
end
|
33
|
+
|
34
|
+
it "returns the name of the style in processor options" do
|
35
|
+
assert_equal :foo, @style.processor_options[:style]
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context "A style rule with properties supplied as procs" do
|
40
|
+
before do
|
41
|
+
@attachment = attachment path: ":basename.:extension",
|
42
|
+
whiny_thumbnails: true,
|
43
|
+
processors: lambda {|a| [:test]},
|
44
|
+
styles: {
|
45
|
+
foo: lambda{|a| "300x300#"},
|
46
|
+
bar: {
|
47
|
+
geometry: lambda{|a| "300x300#"},
|
48
|
+
convert_options: lambda{|a| "-do_stuff"},
|
49
|
+
source_file_options: lambda{|a| "-do_extra_stuff"}
|
50
|
+
}
|
51
|
+
}
|
52
|
+
end
|
53
|
+
|
54
|
+
it "calls procs when they are needed" do
|
55
|
+
assert_equal "300x300#", @attachment.styles[:foo].geometry
|
56
|
+
assert_equal "300x300#", @attachment.styles[:bar].geometry
|
57
|
+
assert_equal [:test], @attachment.styles[:foo].processors
|
58
|
+
assert_equal [:test], @attachment.styles[:bar].processors
|
59
|
+
assert_equal "-do_stuff", @attachment.styles[:bar].convert_options
|
60
|
+
assert_equal "-do_extra_stuff", @attachment.styles[:bar].source_file_options
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context "An attachment with style rules in various forms" do
|
65
|
+
before do
|
66
|
+
styles = {}
|
67
|
+
styles[:aslist] = ["100x100", :png]
|
68
|
+
styles[:ashash] = {geometry: "100x100", format: :png}
|
69
|
+
styles[:asstring] = "100x100"
|
70
|
+
@attachment = attachment path: ":basename.:extension",
|
71
|
+
styles: styles
|
72
|
+
end
|
73
|
+
|
74
|
+
it "has the right number of styles" do
|
75
|
+
expect(@attachment.styles).to be_a Hash
|
76
|
+
assert_equal 3, @attachment.styles.size
|
77
|
+
end
|
78
|
+
|
79
|
+
it "has styles as Style objects" do
|
80
|
+
[:aslist, :ashash, :aslist].each do |s|
|
81
|
+
expect(@attachment.styles[s]).to be_a Paperclip::Style
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
it "has the right geometries" do
|
86
|
+
[:aslist, :ashash, :aslist].each do |s|
|
87
|
+
assert_equal @attachment.styles[s].geometry, "100x100"
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
it "has the right formats" do
|
92
|
+
assert_equal @attachment.styles[:aslist].format, :png
|
93
|
+
assert_equal @attachment.styles[:ashash].format, :png
|
94
|
+
assert_nil @attachment.styles[:asstring].format
|
95
|
+
end
|
96
|
+
|
97
|
+
it "retains order" do
|
98
|
+
assert_equal [:aslist, :ashash, :asstring], @attachment.styles.keys
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
context "An attachment with :convert_options" do
|
103
|
+
it "does not have called extra_options_for(:thumb/:large) on initialization" do
|
104
|
+
@attachment = attachment path: ":basename.:extension",
|
105
|
+
styles: {thumb: "100x100", large: "400x400"},
|
106
|
+
convert_options: {all: "-do_stuff", thumb: "-thumbnailize"}
|
107
|
+
@attachment.expects(:extra_options_for).never
|
108
|
+
@style = @attachment.styles[:thumb]
|
109
|
+
end
|
110
|
+
|
111
|
+
it "calls extra_options_for(:thumb/:large) when convert options are requested" do
|
112
|
+
@attachment = attachment path: ":basename.:extension",
|
113
|
+
styles: {thumb: "100x100", large: "400x400"},
|
114
|
+
convert_options: {all: "-do_stuff", thumb: "-thumbnailize"}
|
115
|
+
@style = @attachment.styles[:thumb]
|
116
|
+
@file = StringIO.new("...")
|
117
|
+
@file.stubs(:original_filename).returns("file.jpg")
|
118
|
+
|
119
|
+
@attachment.expects(:extra_options_for).with(:thumb)
|
120
|
+
@attachment.styles[:thumb].convert_options
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
context "An attachment with :source_file_options" do
|
125
|
+
it "does not have called extra_source_file_options_for(:thumb/:large) on initialization" do
|
126
|
+
@attachment = attachment path: ":basename.:extension",
|
127
|
+
styles: {thumb: "100x100", large: "400x400"},
|
128
|
+
source_file_options: {all: "-density 400", thumb: "-depth 8"}
|
129
|
+
@attachment.expects(:extra_source_file_options_for).never
|
130
|
+
@style = @attachment.styles[:thumb]
|
131
|
+
end
|
132
|
+
|
133
|
+
it "calls extra_options_for(:thumb/:large) when convert options are requested" do
|
134
|
+
@attachment = attachment path: ":basename.:extension",
|
135
|
+
styles: {thumb: "100x100", large: "400x400"},
|
136
|
+
source_file_options: {all: "-density 400", thumb: "-depth 8"}
|
137
|
+
@style = @attachment.styles[:thumb]
|
138
|
+
@file = StringIO.new("...")
|
139
|
+
@file.stubs(:original_filename).returns("file.jpg")
|
140
|
+
|
141
|
+
@attachment.expects(:extra_source_file_options_for).with(:thumb)
|
142
|
+
@attachment.styles[:thumb].source_file_options
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
context "A style rule with its own :processors" do
|
147
|
+
before do
|
148
|
+
@attachment = attachment path: ":basename.:extension",
|
149
|
+
styles: {
|
150
|
+
foo: {
|
151
|
+
geometry: "100x100#",
|
152
|
+
format: :png,
|
153
|
+
processors: [:test]
|
154
|
+
}
|
155
|
+
},
|
156
|
+
processors: [:thumbnail]
|
157
|
+
@style = @attachment.styles[:foo]
|
158
|
+
end
|
159
|
+
|
160
|
+
it "does not get processors from the attachment" do
|
161
|
+
@attachment.expects(:processors).never
|
162
|
+
assert_not_equal [:thumbnail], @style.processors
|
163
|
+
end
|
164
|
+
|
165
|
+
it "reports its own processors" do
|
166
|
+
assert_equal [:test], @style.processors
|
167
|
+
end
|
168
|
+
|
169
|
+
end
|
170
|
+
|
171
|
+
context "A style rule with :processors supplied as procs" do
|
172
|
+
before do
|
173
|
+
@attachment = attachment path: ":basename.:extension",
|
174
|
+
styles: {
|
175
|
+
foo: {
|
176
|
+
geometry: "100x100#",
|
177
|
+
format: :png,
|
178
|
+
processors: lambda{|a| [:test]}
|
179
|
+
}
|
180
|
+
},
|
181
|
+
processors: [:thumbnail]
|
182
|
+
end
|
183
|
+
|
184
|
+
it "defers processing of procs until they are needed" do
|
185
|
+
expect(@attachment.styles[:foo].instance_variable_get("@processors")).to be_a Proc
|
186
|
+
end
|
187
|
+
|
188
|
+
it "calls procs when they are needed" do
|
189
|
+
assert_equal [:test], @attachment.styles[:foo].processors
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
context "An attachment with :convert_options and :source_file_options in :styles" do
|
194
|
+
before do
|
195
|
+
@attachment = attachment path: ":basename.:extension",
|
196
|
+
styles: {
|
197
|
+
thumb: "100x100",
|
198
|
+
large: {geometry: "400x400",
|
199
|
+
convert_options: "-do_stuff",
|
200
|
+
source_file_options: "-do_extra_stuff"
|
201
|
+
}
|
202
|
+
}
|
203
|
+
@file = StringIO.new("...")
|
204
|
+
@file.stubs(:original_filename).returns("file.jpg")
|
205
|
+
end
|
206
|
+
|
207
|
+
it "has empty options for :thumb style" do
|
208
|
+
assert_equal "", @attachment.styles[:thumb].processor_options[:convert_options]
|
209
|
+
assert_equal "", @attachment.styles[:thumb].processor_options[:source_file_options]
|
210
|
+
end
|
211
|
+
|
212
|
+
it "has the right options for :large style" do
|
213
|
+
assert_equal "-do_stuff", @attachment.styles[:large].processor_options[:convert_options]
|
214
|
+
assert_equal "-do_extra_stuff", @attachment.styles[:large].processor_options[:source_file_options]
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
context "A style rule supplied with default format" do
|
219
|
+
before do
|
220
|
+
@attachment = attachment default_format: :png,
|
221
|
+
styles: {
|
222
|
+
asstring: "300x300#",
|
223
|
+
aslist: ["300x300#", :jpg],
|
224
|
+
ashash: {
|
225
|
+
geometry: "300x300#",
|
226
|
+
convert_options: "-do_stuff"
|
227
|
+
}
|
228
|
+
}
|
229
|
+
end
|
230
|
+
|
231
|
+
it "has the right number of styles" do
|
232
|
+
expect(@attachment.styles).to be_a Hash
|
233
|
+
assert_equal 3, @attachment.styles.size
|
234
|
+
end
|
235
|
+
|
236
|
+
it "has styles as Style objects" do
|
237
|
+
[:aslist, :ashash, :aslist].each do |s|
|
238
|
+
expect(@attachment.styles[s]).to be_a Paperclip::Style
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
it "has the right geometries" do
|
243
|
+
[:aslist, :ashash, :aslist].each do |s|
|
244
|
+
assert_equal @attachment.styles[s].geometry, "300x300#"
|
245
|
+
end
|
246
|
+
end
|
247
|
+
|
248
|
+
it "has the right formats" do
|
249
|
+
assert_equal @attachment.styles[:aslist].format, :jpg
|
250
|
+
assert_equal @attachment.styles[:ashash].format, :png
|
251
|
+
assert_equal @attachment.styles[:asstring].format, :png
|
252
|
+
end
|
253
|
+
|
254
|
+
end
|
255
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Paperclip::TempfileFactory do
|
4
|
+
it "is able to generate a tempfile with the right name" do
|
5
|
+
file = subject.generate("omg.png")
|
6
|
+
assert File.extname(file.path), "png"
|
7
|
+
end
|
8
|
+
|
9
|
+
it "is able to generate a tempfile with the right name with a tilde at the beginning" do
|
10
|
+
file = subject.generate("~omg.png")
|
11
|
+
assert File.extname(file.path), "png"
|
12
|
+
end
|
13
|
+
|
14
|
+
it "is able to generate a tempfile with the right name with a tilde at the end" do
|
15
|
+
file = subject.generate("omg.png~")
|
16
|
+
assert File.extname(file.path), "png"
|
17
|
+
end
|
18
|
+
|
19
|
+
it "is able to generate a tempfile from a file with a really long name" do
|
20
|
+
filename = "#{"longfilename" * 100}.png"
|
21
|
+
file = subject.generate(filename)
|
22
|
+
assert File.extname(file.path), "png"
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'is able to take nothing as a parameter and not error' do
|
26
|
+
file = subject.generate
|
27
|
+
assert File.exist?(file.path)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "does not throw Errno::ENAMETOOLONG when it has a really long name" do
|
31
|
+
expect { subject.generate("o" * 255) }.to_not raise_error
|
32
|
+
end
|
33
|
+
end
|