lawrencepit-remarkable_paperclip 0.6.2 → 0.6.3

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.
@@ -0,0 +1,46 @@
1
+ module Remarkable
2
+ module Paperclip
3
+ module Matchers
4
+ class AllowAttachmentContentTypeForMatcher < Remarkable::ActiveRecord::Base
5
+ arguments :attribute
6
+
7
+ optional :in, :splat => true
8
+
9
+ assertions :is_valid?
10
+
11
+ protected
12
+
13
+ def is_valid?
14
+ @options[:in].each do |value|
15
+ return false, :value => value.inspect unless allow?(value)
16
+ end
17
+ true
18
+ end
19
+
20
+ def interpolation_options
21
+ { :in => array_to_sentence(@options[:in].map{|i| i.inspect}) }
22
+ end
23
+
24
+ private
25
+
26
+ def allow?(content_types)
27
+ content_types.all? do |content_type|
28
+ file = StringIO.new
29
+ file.content_type = content_type
30
+ attachment = @subject.attachment_for(@attribute)
31
+ attachment.assign(file)
32
+ attachment.errors[:content_type].nil?
33
+ end
34
+ end
35
+
36
+ end
37
+
38
+ def allow_attachment_content_type_for(attribute, *args, &block)
39
+ options = args.extract_options!
40
+ AllowAttachmentContentTypeForMatcher.new(attribute, options.merge!(:in => args), &block).spec(self)
41
+ end
42
+ alias_method :validate_attachment_content_type, :allow_attachment_content_type_for
43
+
44
+ end
45
+ end
46
+ end
@@ -24,11 +24,11 @@ module Remarkable
24
24
  actuals = attachment_definition[:styles].clone
25
25
  match = @options[:styles].all? do |key, value|
26
26
  actual = actuals.delete(key)
27
- actual == value || case actual
27
+ value == actual || value == case actual
28
28
  when Hash then actual[:geometry]
29
29
  when Array then actual[0]
30
30
  else actual
31
- end == value
31
+ end
32
32
  end
33
33
  return (match && actuals.size == 0),
34
34
  :styles => @options[:styles].inspect, :actual => attachment_definition[:styles].inspect
@@ -2,7 +2,7 @@ require 'paperclip/extension'
2
2
  require 'matchers/have_attached_file_matcher'
3
3
  require 'matchers/validate_attachment_size_matcher'
4
4
  require 'matchers/validate_attachment_presence_matcher'
5
- require 'matchers/validate_attachment_content_type_matcher'
5
+ require 'matchers/allow_attachment_content_type_for_matcher'
6
6
 
7
7
  if defined?(Spec::Rails)
8
8
  Remarkable.include_matchers!(Remarkable::Paperclip, Spec::Rails::Example::ModelExampleGroup)
data/locale/en.yml CHANGED
@@ -31,13 +31,7 @@ en:
31
31
  description: "validate attachment presence of attached file {{attribute}}"
32
32
  expectations:
33
33
  invalid_when_not_present: "{{subject_name}} to be invalid when attached file {{attribute}} is not present"
34
- validate_attachment_content_type:
35
- description: "validate attachment content type of attached file {{attribute}}"
34
+ allow_attachment_content_type_for:
35
+ description: "allow {{in}} as content type for attachment {{attribute}}"
36
36
  expectations:
37
- allows_match: "{{subject_name}} to accept content types {{allows}} for attached file {{attribute}}"
38
- rejects_match: "{{subject_name}} to reject content types {{rejects}} for attached file {{attribute}}"
39
- optionals:
40
- allows:
41
- positive: "allowing {{inspect}}"
42
- rejects:
43
- positive: "rejecting {{inspect}}"
37
+ is_valid: "{{subject_name}} to be valid when content type for attachment {{attribute}} is set to {{value}}"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lawrencepit-remarkable_paperclip
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: 0.6.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lawrence Pit
@@ -30,7 +30,7 @@ files:
30
30
  - lib/matchers/have_attached_file_matcher.rb
31
31
  - lib/matchers/validate_attachment_presence_matcher.rb
32
32
  - lib/matchers/validate_attachment_size_matcher.rb
33
- - lib/matchers/validate_attachment_content_type_matcher.rb
33
+ - lib/matchers/allow_attachment_content_type_for_matcher.rb
34
34
  has_rdoc: false
35
35
  homepage: http://github.com/lawrencepit/remarkable_paperclip
36
36
  post_install_message:
@@ -1,47 +0,0 @@
1
- module Remarkable
2
- module Paperclip
3
- module Matchers
4
- class ValidateAttachmentContentTypeMatcher < Remarkable::ActiveRecord::Base
5
- arguments :attribute
6
-
7
- optionals :allows, :rejects
8
-
9
- assertions :allows_match?, :rejects_match?
10
-
11
- protected
12
-
13
- def allows_match?
14
- return true unless @options.key?(:allows)
15
- allow?(@options[:allows])
16
- end
17
-
18
- def rejects_match?
19
- return true unless @options.key?(:rejects)
20
- !allow?(@options[:rejects])
21
- end
22
-
23
- def interpolation_options
24
- { :allows => @options[:allows].inspect, :rejects => @options[:rejects].inspect }
25
- end
26
-
27
- private
28
-
29
- def allow?(content_types)
30
- content_types.all? do |content_type|
31
- file = StringIO.new
32
- file.content_type = content_type
33
- attachment = @subject.attachment_for(@attribute)
34
- attachment.assign(file)
35
- attachment.errors[:content_type].nil?
36
- end
37
- end
38
-
39
- end
40
-
41
- def validate_attachment_content_type(*args)
42
- ValidateAttachmentContentTypeMatcher.new(*args).spec(self)
43
- end
44
-
45
- end
46
- end
47
- end