paperclip 3.5.4 → 6.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (216) hide show
  1. checksums.yaml +5 -5
  2. data/.codeclimate.yml +17 -0
  3. data/.github/issue_template.md +3 -0
  4. data/.gitignore +0 -6
  5. data/.hound.yml +1055 -0
  6. data/.rubocop.yml +1 -0
  7. data/.travis.yml +17 -20
  8. data/Appraisals +4 -16
  9. data/CONTRIBUTING.md +29 -13
  10. data/Gemfile +11 -3
  11. data/LICENSE +1 -3
  12. data/MIGRATING-ES.md +317 -0
  13. data/MIGRATING.md +375 -0
  14. data/NEWS +262 -49
  15. data/README.md +496 -169
  16. data/RELEASING.md +17 -0
  17. data/Rakefile +6 -8
  18. data/UPGRADING +12 -9
  19. data/features/basic_integration.feature +27 -8
  20. data/features/migration.feature +0 -24
  21. data/features/step_definitions/attachment_steps.rb +44 -36
  22. data/features/step_definitions/html_steps.rb +2 -2
  23. data/features/step_definitions/rails_steps.rb +68 -37
  24. data/features/step_definitions/s3_steps.rb +2 -2
  25. data/features/step_definitions/web_steps.rb +1 -103
  26. data/features/support/env.rb +3 -2
  27. data/features/support/file_helpers.rb +2 -2
  28. data/features/support/fixtures/gemfile.txt +1 -1
  29. data/features/support/paths.rb +1 -1
  30. data/features/support/rails.rb +2 -25
  31. data/gemfiles/4.2.gemfile +17 -0
  32. data/gemfiles/5.0.gemfile +17 -0
  33. data/lib/generators/paperclip/paperclip_generator.rb +9 -3
  34. data/lib/generators/paperclip/templates/paperclip_migration.rb.erb +2 -2
  35. data/lib/paperclip/attachment.rb +170 -52
  36. data/lib/paperclip/attachment_registry.rb +3 -2
  37. data/lib/paperclip/callbacks.rb +13 -1
  38. data/lib/paperclip/content_type_detector.rb +26 -22
  39. data/lib/paperclip/errors.rb +8 -1
  40. data/lib/paperclip/file_command_content_type_detector.rb +6 -8
  41. data/lib/paperclip/filename_cleaner.rb +0 -1
  42. data/lib/paperclip/geometry_detector_factory.rb +6 -4
  43. data/lib/paperclip/geometry_parser_factory.rb +1 -1
  44. data/lib/paperclip/glue.rb +1 -1
  45. data/lib/paperclip/has_attached_file.rb +17 -1
  46. data/lib/paperclip/helpers.rb +15 -11
  47. data/lib/paperclip/interpolations/plural_cache.rb +6 -5
  48. data/lib/paperclip/interpolations.rb +31 -13
  49. data/lib/paperclip/io_adapters/abstract_adapter.rb +34 -5
  50. data/lib/paperclip/io_adapters/attachment_adapter.rb +19 -8
  51. data/lib/paperclip/io_adapters/data_uri_adapter.rb +11 -16
  52. data/lib/paperclip/io_adapters/empty_string_adapter.rb +5 -4
  53. data/lib/paperclip/io_adapters/file_adapter.rb +12 -6
  54. data/lib/paperclip/io_adapters/http_url_proxy_adapter.rb +8 -7
  55. data/lib/paperclip/io_adapters/identity_adapter.rb +12 -6
  56. data/lib/paperclip/io_adapters/nil_adapter.rb +8 -5
  57. data/lib/paperclip/io_adapters/registry.rb +6 -2
  58. data/lib/paperclip/io_adapters/stringio_adapter.rb +15 -16
  59. data/lib/paperclip/io_adapters/uploaded_file_adapter.rb +10 -6
  60. data/lib/paperclip/io_adapters/uri_adapter.rb +43 -19
  61. data/lib/paperclip/locales/en.yml +1 -0
  62. data/lib/paperclip/logger.rb +1 -1
  63. data/lib/paperclip/matchers/have_attached_file_matcher.rb +2 -1
  64. data/lib/paperclip/matchers/validate_attachment_content_type_matcher.rb +4 -4
  65. data/lib/paperclip/matchers/validate_attachment_presence_matcher.rb +2 -1
  66. data/lib/paperclip/matchers/validate_attachment_size_matcher.rb +2 -1
  67. data/lib/paperclip/media_type_spoof_detector.rb +93 -0
  68. data/lib/paperclip/processor.rb +15 -43
  69. data/lib/paperclip/processor_helpers.rb +50 -0
  70. data/lib/paperclip/rails_environment.rb +25 -0
  71. data/lib/paperclip/schema.rb +10 -8
  72. data/lib/paperclip/storage/filesystem.rb +14 -3
  73. data/lib/paperclip/storage/fog.rb +38 -20
  74. data/lib/paperclip/storage/s3.rb +124 -73
  75. data/lib/paperclip/style.rb +8 -3
  76. data/lib/paperclip/tempfile_factory.rb +5 -1
  77. data/lib/paperclip/thumbnail.rb +34 -19
  78. data/lib/paperclip/url_generator.rb +26 -14
  79. data/lib/paperclip/validators/attachment_content_type_validator.rb +4 -0
  80. data/lib/paperclip/validators/attachment_file_name_validator.rb +80 -0
  81. data/lib/paperclip/validators/attachment_file_type_ignorance_validator.rb +29 -0
  82. data/lib/paperclip/validators/attachment_presence_validator.rb +4 -0
  83. data/lib/paperclip/validators/attachment_size_validator.rb +5 -3
  84. data/lib/paperclip/validators/media_type_spoof_detection_validator.rb +31 -0
  85. data/lib/paperclip/validators.rb +11 -4
  86. data/lib/paperclip/version.rb +3 -1
  87. data/lib/paperclip.rb +31 -11
  88. data/lib/tasks/paperclip.rake +34 -5
  89. data/paperclip.gemspec +21 -16
  90. data/shoulda_macros/paperclip.rb +0 -1
  91. data/spec/paperclip/attachment_definitions_spec.rb +13 -0
  92. data/{test/attachment_processing_test.rb → spec/paperclip/attachment_processing_spec.rb} +17 -21
  93. data/spec/paperclip/attachment_registry_spec.rb +158 -0
  94. data/{test/attachment_test.rb → spec/paperclip/attachment_spec.rb} +519 -409
  95. data/{test/content_type_detector_test.rb → spec/paperclip/content_type_detector_spec.rb} +17 -20
  96. data/spec/paperclip/file_command_content_type_detector_spec.rb +40 -0
  97. data/spec/paperclip/filename_cleaner_spec.rb +13 -0
  98. data/spec/paperclip/geometry_detector_spec.rb +39 -0
  99. data/{test/geometry_parser_test.rb → spec/paperclip/geometry_parser_spec.rb} +27 -27
  100. data/{test/geometry_test.rb → spec/paperclip/geometry_spec.rb} +50 -52
  101. data/spec/paperclip/glue_spec.rb +44 -0
  102. data/spec/paperclip/has_attached_file_spec.rb +158 -0
  103. data/{test/integration_test.rb → spec/paperclip/integration_spec.rb} +174 -129
  104. data/{test/interpolations_test.rb → spec/paperclip/interpolations_spec.rb} +79 -46
  105. data/spec/paperclip/io_adapters/abstract_adapter_spec.rb +160 -0
  106. data/{test/io_adapters/attachment_adapter_test.rb → spec/paperclip/io_adapters/attachment_adapter_spec.rb} +33 -32
  107. data/spec/paperclip/io_adapters/data_uri_adapter_spec.rb +89 -0
  108. data/spec/paperclip/io_adapters/empty_string_adapter_spec.rb +17 -0
  109. data/{test/io_adapters/file_adapter_test.rb → spec/paperclip/io_adapters/file_adapter_spec.rb} +38 -42
  110. data/spec/paperclip/io_adapters/http_url_proxy_adapter_spec.rb +138 -0
  111. data/spec/paperclip/io_adapters/identity_adapter_spec.rb +8 -0
  112. data/{test/io_adapters/nil_adapter_test.rb → spec/paperclip/io_adapters/nil_adapter_spec.rb} +7 -7
  113. data/{test/io_adapters/registry_test.rb → spec/paperclip/io_adapters/registry_spec.rb} +12 -9
  114. data/{test/io_adapters/stringio_adapter_test.rb → spec/paperclip/io_adapters/stringio_adapter_spec.rb} +21 -18
  115. data/{test/io_adapters/uploaded_file_adapter_test.rb → spec/paperclip/io_adapters/uploaded_file_adapter_spec.rb} +46 -46
  116. data/spec/paperclip/io_adapters/uri_adapter_spec.rb +220 -0
  117. data/spec/paperclip/matchers/have_attached_file_matcher_spec.rb +19 -0
  118. data/spec/paperclip/matchers/validate_attachment_content_type_matcher_spec.rb +109 -0
  119. data/spec/paperclip/matchers/validate_attachment_presence_matcher_spec.rb +69 -0
  120. data/spec/paperclip/matchers/validate_attachment_size_matcher_spec.rb +88 -0
  121. data/spec/paperclip/media_type_spoof_detector_spec.rb +120 -0
  122. data/spec/paperclip/meta_class_spec.rb +30 -0
  123. data/spec/paperclip/paperclip_missing_attachment_styles_spec.rb +84 -0
  124. data/spec/paperclip/paperclip_spec.rb +192 -0
  125. data/spec/paperclip/plural_cache_spec.rb +37 -0
  126. data/spec/paperclip/processor_helpers_spec.rb +57 -0
  127. data/{test/processor_test.rb → spec/paperclip/processor_spec.rb} +7 -7
  128. data/spec/paperclip/rails_environment_spec.rb +33 -0
  129. data/{test/rake_test.rb → spec/paperclip/rake_spec.rb} +15 -15
  130. data/spec/paperclip/schema_spec.rb +248 -0
  131. data/{test/storage/filesystem_test.rb → spec/paperclip/storage/filesystem_spec.rb} +18 -18
  132. data/spec/paperclip/storage/fog_spec.rb +566 -0
  133. data/spec/paperclip/storage/s3_live_spec.rb +188 -0
  134. data/spec/paperclip/storage/s3_spec.rb +1693 -0
  135. data/spec/paperclip/style_spec.rb +254 -0
  136. data/spec/paperclip/tempfile_factory_spec.rb +33 -0
  137. data/spec/paperclip/tempfile_spec.rb +35 -0
  138. data/{test/thumbnail_test.rb → spec/paperclip/thumbnail_spec.rb} +158 -137
  139. data/spec/paperclip/url_generator_spec.rb +221 -0
  140. data/spec/paperclip/validators/attachment_content_type_validator_spec.rb +322 -0
  141. data/spec/paperclip/validators/attachment_file_name_validator_spec.rb +160 -0
  142. data/{test/validators/attachment_presence_validator_test.rb → spec/paperclip/validators/attachment_presence_validator_spec.rb} +20 -20
  143. data/{test/validators/attachment_size_validator_test.rb → spec/paperclip/validators/attachment_size_validator_spec.rb} +77 -64
  144. data/spec/paperclip/validators/media_type_spoof_detection_validator_spec.rb +52 -0
  145. data/spec/paperclip/validators_spec.rb +164 -0
  146. data/spec/spec_helper.rb +46 -0
  147. data/spec/support/assertions.rb +82 -0
  148. data/spec/support/fake_model.rb +25 -0
  149. data/spec/support/fake_rails.rb +12 -0
  150. data/spec/support/fixtures/empty.html +1 -0
  151. data/spec/support/fixtures/empty.xlsx +0 -0
  152. data/spec/support/fixtures/spaced file.jpg +0 -0
  153. data/spec/support/matchers/accept.rb +5 -0
  154. data/spec/support/matchers/exist.rb +5 -0
  155. data/spec/support/matchers/have_column.rb +23 -0
  156. data/{test → spec}/support/mock_attachment.rb +2 -0
  157. data/{test → spec}/support/mock_url_generator_builder.rb +2 -2
  158. data/spec/support/model_reconstruction.rb +68 -0
  159. data/spec/support/reporting.rb +11 -0
  160. data/spec/support/test_data.rb +13 -0
  161. data/spec/support/version_helper.rb +9 -0
  162. metadata +344 -226
  163. data/RUNNING_TESTS.md +0 -4
  164. data/cucumber/paperclip_steps.rb +0 -6
  165. data/gemfiles/3.0.gemfile +0 -11
  166. data/gemfiles/3.1.gemfile +0 -11
  167. data/gemfiles/3.2.gemfile +0 -11
  168. data/gemfiles/4.0.gemfile +0 -11
  169. data/test/attachment_definitions_test.rb +0 -12
  170. data/test/attachment_registry_test.rb +0 -88
  171. data/test/file_command_content_type_detector_test.rb +0 -27
  172. data/test/filename_cleaner_test.rb +0 -14
  173. data/test/generator_test.rb +0 -84
  174. data/test/geometry_detector_test.rb +0 -24
  175. data/test/has_attached_file_test.rb +0 -125
  176. data/test/helper.rb +0 -232
  177. data/test/io_adapters/abstract_adapter_test.rb +0 -58
  178. data/test/io_adapters/data_uri_adapter_test.rb +0 -74
  179. data/test/io_adapters/empty_string_adapter_test.rb +0 -18
  180. data/test/io_adapters/http_url_proxy_adapter_test.rb +0 -102
  181. data/test/io_adapters/identity_adapter_test.rb +0 -8
  182. data/test/io_adapters/uri_adapter_test.rb +0 -102
  183. data/test/matchers/have_attached_file_matcher_test.rb +0 -24
  184. data/test/matchers/validate_attachment_content_type_matcher_test.rb +0 -110
  185. data/test/matchers/validate_attachment_presence_matcher_test.rb +0 -69
  186. data/test/matchers/validate_attachment_size_matcher_test.rb +0 -86
  187. data/test/meta_class_test.rb +0 -32
  188. data/test/paperclip_missing_attachment_styles_test.rb +0 -90
  189. data/test/paperclip_test.rb +0 -217
  190. data/test/plural_cache_test.rb +0 -36
  191. data/test/schema_test.rb +0 -200
  192. data/test/storage/fog_test.rb +0 -473
  193. data/test/storage/s3_live_test.rb +0 -179
  194. data/test/storage/s3_test.rb +0 -1356
  195. data/test/style_test.rb +0 -213
  196. data/test/support/mock_model.rb +0 -2
  197. data/test/tempfile_factory_test.rb +0 -17
  198. data/test/url_generator_test.rb +0 -187
  199. data/test/validators/attachment_content_type_validator_test.rb +0 -324
  200. data/test/validators_test.rb +0 -61
  201. /data/{test → spec}/database.yml +0 -0
  202. /data/{test → spec/support}/fixtures/12k.png +0 -0
  203. /data/{test → spec/support}/fixtures/50x50.png +0 -0
  204. /data/{test → spec/support}/fixtures/5k.png +0 -0
  205. /data/{test → spec/support}/fixtures/animated +0 -0
  206. /data/{test → spec/support}/fixtures/animated.gif +0 -0
  207. /data/{test → spec/support}/fixtures/animated.unknown +0 -0
  208. /data/{test → spec/support}/fixtures/bad.png +0 -0
  209. /data/{test → spec/support}/fixtures/fog.yml +0 -0
  210. /data/{test → spec/support}/fixtures/rotated.jpg +0 -0
  211. /data/{test → spec/support}/fixtures/s3.yml +0 -0
  212. /data/{test → spec/support}/fixtures/spaced file.png +0 -0
  213. /data/{test → spec/support}/fixtures/text.txt +0 -0
  214. /data/{test → spec/support}/fixtures/twopage.pdf +0 -0
  215. /data/{test → spec/support}/fixtures/uppercase.PNG +0 -0
  216. /data/{test → spec}/support/mock_interpolator.rb +0 -0
@@ -1,324 +0,0 @@
1
- require './test/helper'
2
-
3
- class AttachmentContentTypeValidatorTest < Test::Unit::TestCase
4
- def setup
5
- rebuild_model
6
- @dummy = Dummy.new
7
- super
8
- end
9
-
10
- def build_validator(options)
11
- @validator = Paperclip::Validators::AttachmentContentTypeValidator.new(options.merge(
12
- :attributes => :avatar
13
- ))
14
- end
15
-
16
- context "with a nil content type" do
17
- setup do
18
- build_validator :content_type => "image/jpg"
19
- @dummy.stubs(:avatar_content_type => nil)
20
- @validator.validate(@dummy)
21
- end
22
-
23
- should "not set an error message" do
24
- assert @dummy.errors[:avatar_content_type].blank?
25
- end
26
- end
27
-
28
- context "with :allow_nil option" do
29
- context "as true" do
30
- setup do
31
- build_validator :content_type => "image/png", :allow_nil => true
32
- @dummy.stubs(:avatar_content_type => nil)
33
- @validator.validate(@dummy)
34
- end
35
-
36
- should "allow avatar_content_type as nil" do
37
- assert @dummy.errors[:avatar_content_type].blank?
38
- end
39
- end
40
-
41
- context "as false" do
42
- setup do
43
- build_validator :content_type => "image/png", :allow_nil => false
44
- @dummy.stubs(:avatar_content_type => nil)
45
- @validator.validate(@dummy)
46
- end
47
-
48
- should "not allow avatar_content_type as nil" do
49
- assert @dummy.errors[:avatar_content_type].present?
50
- end
51
- end
52
- end
53
-
54
- context "with a failing validation" do
55
- setup do
56
- build_validator :content_type => "image/png", :allow_nil => false
57
- @dummy.stubs(:avatar_content_type => nil)
58
- @validator.validate(@dummy)
59
- end
60
-
61
- should "add error to the base object" do
62
- assert @dummy.errors[:avatar].present?,
63
- "Error not added to base attribute"
64
- end
65
-
66
- should "add error to base object as a string" do
67
- assert_kind_of String, @dummy.errors[:avatar].first,
68
- "Error added to base attribute as something other than a String"
69
- end
70
- end
71
-
72
- context "with a successful validation" do
73
- setup do
74
- build_validator :content_type => "image/png", :allow_nil => false
75
- @dummy.stubs(:avatar_content_type => "image/png")
76
- @validator.validate(@dummy)
77
- end
78
-
79
- should "not add error to the base object" do
80
- assert @dummy.errors[:avatar].blank?,
81
- "Error was added to base attribute"
82
- end
83
- end
84
-
85
- context "with :allow_blank option" do
86
- context "as true" do
87
- setup do
88
- build_validator :content_type => "image/png", :allow_blank => true
89
- @dummy.stubs(:avatar_content_type => "")
90
- @validator.validate(@dummy)
91
- end
92
-
93
- should "allow avatar_content_type as blank" do
94
- assert @dummy.errors[:avatar_content_type].blank?
95
- end
96
- end
97
-
98
- context "as false" do
99
- setup do
100
- build_validator :content_type => "image/png", :allow_blank => false
101
- @dummy.stubs(:avatar_content_type => "")
102
- @validator.validate(@dummy)
103
- end
104
-
105
- should "not allow avatar_content_type as blank" do
106
- assert @dummy.errors[:avatar_content_type].present?
107
- end
108
- end
109
- end
110
-
111
- context "whitelist format" do
112
- context "with an allowed type" do
113
- context "as a string" do
114
- setup do
115
- build_validator :content_type => "image/jpg"
116
- @dummy.stubs(:avatar_content_type => "image/jpg")
117
- @validator.validate(@dummy)
118
- end
119
-
120
- should "not set an error message" do
121
- assert @dummy.errors[:avatar_content_type].blank?
122
- end
123
- end
124
-
125
- context "as an regexp" do
126
- setup do
127
- build_validator :content_type => /^image\/.*/
128
- @dummy.stubs(:avatar_content_type => "image/jpg")
129
- @validator.validate(@dummy)
130
- end
131
-
132
- should "not set an error message" do
133
- assert @dummy.errors[:avatar_content_type].blank?
134
- end
135
- end
136
-
137
- context "as a list" do
138
- setup do
139
- build_validator :content_type => ["image/png", "image/jpg", "image/jpeg"]
140
- @dummy.stubs(:avatar_content_type => "image/jpg")
141
- @validator.validate(@dummy)
142
- end
143
-
144
- should "not set an error message" do
145
- assert @dummy.errors[:avatar_content_type].blank?
146
- end
147
- end
148
- end
149
-
150
- context "with a disallowed type" do
151
- context "as a string" do
152
- setup do
153
- build_validator :content_type => "image/png"
154
- @dummy.stubs(:avatar_content_type => "image/jpg")
155
- @validator.validate(@dummy)
156
- end
157
-
158
- should "set a correct default error message" do
159
- assert @dummy.errors[:avatar_content_type].present?
160
- assert_includes @dummy.errors[:avatar_content_type], "is invalid"
161
- end
162
- end
163
-
164
- context "as a regexp" do
165
- setup do
166
- build_validator :content_type => /^text\/.*/
167
- @dummy.stubs(:avatar_content_type => "image/jpg")
168
- @validator.validate(@dummy)
169
- end
170
-
171
- should "set a correct default error message" do
172
- assert @dummy.errors[:avatar_content_type].present?
173
- assert_includes @dummy.errors[:avatar_content_type], "is invalid"
174
- end
175
- end
176
-
177
- context "with :message option" do
178
- context "without interpolation" do
179
- setup do
180
- build_validator :content_type => "image/png", :message => "should be a PNG image"
181
- @dummy.stubs(:avatar_content_type => "image/jpg")
182
- @validator.validate(@dummy)
183
- end
184
-
185
- should "set a correct error message" do
186
- assert_includes @dummy.errors[:avatar_content_type], "should be a PNG image"
187
- end
188
- end
189
-
190
- context "with interpolation" do
191
- setup do
192
- build_validator :content_type => "image/png", :message => "should have content type %{types}"
193
- @dummy.stubs(:avatar_content_type => "image/jpg")
194
- @validator.validate(@dummy)
195
- end
196
-
197
- should "set a correct error message" do
198
- assert_includes @dummy.errors[:avatar_content_type], "should have content type image/png"
199
- end
200
- end
201
- end
202
- end
203
- end
204
-
205
- context "blacklist format" do
206
- context "with an allowed type" do
207
- context "as a string" do
208
- setup do
209
- build_validator :not => "image/gif"
210
- @dummy.stubs(:avatar_content_type => "image/jpg")
211
- @validator.validate(@dummy)
212
- end
213
-
214
- should "not set an error message" do
215
- assert @dummy.errors[:avatar_content_type].blank?
216
- end
217
- end
218
-
219
- context "as an regexp" do
220
- setup do
221
- build_validator :not => /^text\/.*/
222
- @dummy.stubs(:avatar_content_type => "image/jpg")
223
- @validator.validate(@dummy)
224
- end
225
-
226
- should "not set an error message" do
227
- assert @dummy.errors[:avatar_content_type].blank?
228
- end
229
- end
230
-
231
- context "as a list" do
232
- setup do
233
- build_validator :not => ["image/png", "image/jpg", "image/jpeg"]
234
- @dummy.stubs(:avatar_content_type => "image/gif")
235
- @validator.validate(@dummy)
236
- end
237
-
238
- should "not set an error message" do
239
- assert @dummy.errors[:avatar_content_type].blank?
240
- end
241
- end
242
- end
243
-
244
- context "with a disallowed type" do
245
- context "as a string" do
246
- setup do
247
- build_validator :not => "image/png"
248
- @dummy.stubs(:avatar_content_type => "image/png")
249
- @validator.validate(@dummy)
250
- end
251
-
252
- should "set a correct default error message" do
253
- assert @dummy.errors[:avatar_content_type].present?
254
- assert_includes @dummy.errors[:avatar_content_type], "is invalid"
255
- end
256
- end
257
-
258
- context "as a regexp" do
259
- setup do
260
- build_validator :not => /^text\/.*/
261
- @dummy.stubs(:avatar_content_type => "text/plain")
262
- @validator.validate(@dummy)
263
- end
264
-
265
- should "set a correct default error message" do
266
- assert @dummy.errors[:avatar_content_type].present?
267
- assert_includes @dummy.errors[:avatar_content_type], "is invalid"
268
- end
269
- end
270
-
271
- context "with :message option" do
272
- context "without interpolation" do
273
- setup do
274
- build_validator :not => "image/png", :message => "should not be a PNG image"
275
- @dummy.stubs(:avatar_content_type => "image/png")
276
- @validator.validate(@dummy)
277
- end
278
-
279
- should "set a correct error message" do
280
- assert_includes @dummy.errors[:avatar_content_type], "should not be a PNG image"
281
- end
282
- end
283
-
284
- context "with interpolation" do
285
- setup do
286
- build_validator :not => "image/png", :message => "should not have content type %{types}"
287
- @dummy.stubs(:avatar_content_type => "image/png")
288
- @validator.validate(@dummy)
289
- end
290
-
291
- should "set a correct error message" do
292
- assert_includes @dummy.errors[:avatar_content_type], "should not have content type image/png"
293
- end
294
- end
295
- end
296
- end
297
- end
298
-
299
- context "using the helper" do
300
- setup do
301
- Dummy.validates_attachment_content_type :avatar, :content_type => "image/jpg"
302
- end
303
-
304
- should "add the validator to the class" do
305
- assert Dummy.validators_on(:avatar).any?{ |validator| validator.kind == :attachment_content_type }
306
- end
307
- end
308
-
309
- context "given options" do
310
- should "raise argument error if no required argument was given" do
311
- assert_raises(ArgumentError) do
312
- build_validator :message => "Some message"
313
- end
314
- end
315
-
316
- should "not raise argument error if :content_type was given" do
317
- build_validator :content_type => "image/jpg"
318
- end
319
-
320
- should "not raise argument error if :not was given" do
321
- build_validator :not => "image/jpg"
322
- end
323
- end
324
- end
@@ -1,61 +0,0 @@
1
- require './test/helper'
2
-
3
- class ValidatorsTest < Test::Unit::TestCase
4
- def setup
5
- rebuild_model
6
- end
7
-
8
- context "using the helper" do
9
- setup do
10
- Dummy.validates_attachment :avatar, :presence => true, :content_type => { :content_type => "image/jpeg" }, :size => { :in => 0..10.kilobytes }
11
- end
12
-
13
- should "add the attachment_presence validator to the class" do
14
- assert Dummy.validators_on(:avatar).any?{ |validator| validator.kind == :attachment_presence }
15
- end
16
-
17
- should "add the attachment_content_type validator to the class" do
18
- assert Dummy.validators_on(:avatar).any?{ |validator| validator.kind == :attachment_content_type }
19
- end
20
-
21
- should "add the attachment_size validator to the class" do
22
- assert Dummy.validators_on(:avatar).any?{ |validator| validator.kind == :attachment_size }
23
- end
24
-
25
- should 'prevent you from attaching a file that violates that validation' do
26
- Dummy.class_eval{ validate(:name) { raise "DO NOT RUN THIS" } }
27
- dummy = Dummy.new(:avatar => File.new(fixture_file("12k.png")))
28
- assert_equal [:avatar_content_type, :avatar, :avatar_file_size], dummy.errors.keys
29
- assert_raise(RuntimeError){ dummy.valid? }
30
- end
31
- end
32
-
33
- context "using the helper with a conditional" do
34
- setup do
35
- Dummy.validates_attachment :avatar, :presence => true,
36
- :content_type => { :content_type => "image/jpeg" },
37
- :size => { :in => 0..10.kilobytes },
38
- :if => :title_present?
39
- end
40
-
41
- should "validate the attachment if title is present" do
42
- Dummy.class_eval do
43
- def title_present?
44
- true
45
- end
46
- end
47
- dummy = Dummy.new(:avatar => File.new(fixture_file("12k.png")))
48
- assert_equal [:avatar_content_type, :avatar, :avatar_file_size], dummy.errors.keys
49
- end
50
-
51
- should "not validate attachment if tile is not present" do
52
- Dummy.class_eval do
53
- def title_present?
54
- false
55
- end
56
- end
57
- dummy = Dummy.new(:avatar => File.new(fixture_file("12k.png")))
58
- assert_equal [], dummy.errors.keys
59
- end
60
- end
61
- end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes