| Class | Paperclip::Shoulda::Matchers::ValidateAttachmentContentTypeMatcher |
| In: |
lib/paperclip/matchers/validate_attachment_content_type_matcher.rb
|
| Parent: | Object |
# File lib/paperclip/matchers/validate_attachment_content_type_matcher.rb, line 18
18: def initialize attachment_name
19: @attachment_name = attachment_name
20: end
# File lib/paperclip/matchers/validate_attachment_content_type_matcher.rb, line 22
22: def allowing *types
23: @allowed_types = types.flatten
24: self
25: end
# File lib/paperclip/matchers/validate_attachment_content_type_matcher.rb, line 49
49: def description
50: "validate the content types allowed on attachment #{@attachment_name}"
51: end
# File lib/paperclip/matchers/validate_attachment_content_type_matcher.rb, line 39
39: def failure_message
40: "Content types #{@allowed_types.join(", ")} should be accepted" +
41: " and #{@rejected_types.join(", ")} rejected by #{@attachment_name}"
42: end
# File lib/paperclip/matchers/validate_attachment_content_type_matcher.rb, line 32
32: def matches? subject
33: @subject = subject
34: @subject = @subject.class unless Class === @subject
35: @allowed_types && @rejected_types &&
36: allowed_types_allowed? && rejected_types_rejected?
37: end
# File lib/paperclip/matchers/validate_attachment_content_type_matcher.rb, line 44
44: def negative_failure_message
45: "Content types #{@allowed_types.join(", ")} should be rejected" +
46: " and #{@rejected_types.join(", ")} accepted by #{@attachment_name}"
47: end
# File lib/paperclip/matchers/validate_attachment_content_type_matcher.rb, line 27
27: def rejecting *types
28: @rejected_types = types.flatten
29: self
30: end
# File lib/paperclip/matchers/validate_attachment_content_type_matcher.rb, line 55
55: def allow_types?(types)
56: types.all? do |type|
57: file = StringIO.new(".")
58: file.content_type = type
59: (subject = @subject.new).attachment_for(@attachment_name).assign(file)
60: subject.valid?
61: subject.errors["#{@attachment_name}_content_type""#{@attachment_name}_content_type"].blank?
62: end
63: end
# File lib/paperclip/matchers/validate_attachment_content_type_matcher.rb, line 65
65: def allowed_types_allowed?
66: allow_types?(@allowed_types)
67: end