paperclip 3.5.2 → 5.2.1

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