Skip to content

Commit 280a85a

Browse files
committedMar 17, 2010
Changed rspec matchers to accept an instance or a class
1 parent ae97ec6 commit 280a85a

9 files changed

+72
-36
lines changed
 

‎lib/paperclip/matchers/have_attached_file_matcher.rb

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ def initialize attachment_name
1212

1313
def matches? subject
1414
@subject = subject
15+
@subject = @subject.class unless Class === @subject
1516
responds? && has_column? && included?
1617
end
1718

‎lib/paperclip/matchers/validate_attachment_content_type_matcher.rb

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ def rejecting *types
2222

2323
def matches? subject
2424
@subject = subject
25+
@subject = @subject.class unless Class === @subject
2526
@allowed_types && @rejected_types &&
2627
allowed_types_allowed? && rejected_types_rejected?
2728
end

‎lib/paperclip/matchers/validate_attachment_presence_matcher.rb

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ def initialize attachment_name
1212

1313
def matches? subject
1414
@subject = subject
15+
@subject = @subject.class unless Class === @subject
1516
error_when_not_valid? && no_error_when_valid?
1617
end
1718

‎lib/paperclip/matchers/validate_attachment_size_matcher.rb

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ def in range
2828

2929
def matches? subject
3030
@subject = subject
31+
@subject = @subject.class unless Class === @subject
3132
lower_than_low? && higher_than_low? && lower_than_high? && higher_than_high?
3233
end
3334

‎test/helper.rb

+20
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,23 @@ def silence_warnings
106106
ensure
107107
$VERBOSE = old_verbose
108108
end
109+
110+
def should_accept_dummy_class
111+
should "accept the class" do
112+
assert_accepts @matcher, @dummy_class
113+
end
114+
115+
should "accept an instance of that class" do
116+
assert_accepts @matcher, @dummy_class.new
117+
end
118+
end
119+
120+
def should_reject_dummy_class
121+
should "reject the class" do
122+
assert_rejects @matcher, @dummy_class
123+
end
124+
125+
should "reject an instance of that class" do
126+
assert_rejects @matcher, @dummy_class.new
127+
end
128+
end

‎test/matchers/have_attached_file_matcher_test.rb

+9-6
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,17 @@ class HaveAttachedFileMatcherTest < Test::Unit::TestCase
88
@matcher = self.class.have_attached_file(:avatar)
99
end
1010

11-
should "reject a class with no attachment" do
12-
assert_rejects @matcher, @dummy_class
11+
context "given a class with no attachment" do
12+
should_reject_dummy_class
1313
end
1414

15-
should "accept a class with an attachment" do
16-
modify_table("dummies"){|d| d.string :avatar_file_name }
17-
@dummy_class.has_attached_file :avatar
18-
assert_accepts @matcher, @dummy_class
15+
context "given a class with an attachment" do
16+
setup do
17+
modify_table("dummies"){|d| d.string :avatar_file_name }
18+
@dummy_class.has_attached_file :avatar
19+
end
20+
21+
should_accept_dummy_class
1922
end
2023
end
2124
end

‎test/matchers/validate_attachment_content_type_matcher_test.rb

+14-8
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,24 @@ class ValidateAttachmentContentTypeMatcherTest < Test::Unit::TestCase
1414
rejecting(%w(audio/mp3 application/octet-stream))
1515
end
1616

17-
should "reject a class with no validation" do
18-
assert_rejects @matcher, @dummy_class
17+
context "given a class with no validation" do
18+
should_reject_dummy_class
1919
end
2020

21-
should "reject a class with a validation that doesn't match" do
22-
@dummy_class.validates_attachment_content_type :avatar, :content_type => %r{audio/.*}
23-
assert_rejects @matcher, @dummy_class
21+
context "given a class with a validation that doesn't match" do
22+
setup do
23+
@dummy_class.validates_attachment_content_type :avatar, :content_type => %r{audio/.*}
24+
end
25+
26+
should_reject_dummy_class
2427
end
2528

26-
should "accept a class with a validation" do
27-
@dummy_class.validates_attachment_content_type :avatar, :content_type => %r{image/.*}
28-
assert_accepts @matcher, @dummy_class
29+
context "given a class with a matching validation" do
30+
setup do
31+
@dummy_class.validates_attachment_content_type :avatar, :content_type => %r{image/.*}
32+
end
33+
34+
should_accept_dummy_class
2935
end
3036
end
3137
end

‎test/matchers/validate_attachment_presence_matcher_test.rb

+8-5
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,16 @@ class ValidateAttachmentPresenceMatcherTest < Test::Unit::TestCase
1111
@matcher = self.class.validate_attachment_presence(:avatar)
1212
end
1313

14-
should "reject a class with no validation" do
15-
assert_rejects @matcher, @dummy_class
14+
context "given a class with no validation" do
15+
should_reject_dummy_class
1616
end
1717

18-
should "accept a class with a validation" do
19-
@dummy_class.validates_attachment_presence :avatar
20-
assert_accepts @matcher, @dummy_class
18+
context "given a class with a matching validation" do
19+
setup do
20+
@dummy_class.validates_attachment_presence :avatar
21+
end
22+
23+
should_accept_dummy_class
2124
end
2225
end
2326
end

‎test/matchers/validate_attachment_size_matcher_test.rb

+17-17
Original file line numberDiff line numberDiff line change
@@ -14,37 +14,37 @@ class ValidateAttachmentSizeMatcherTest < Test::Unit::TestCase
1414
context "of limited size" do
1515
setup{ @matcher = self.class.validate_attachment_size(:avatar).in(256..1024) }
1616

17-
should "reject a class with no validation" do
18-
assert_rejects @matcher, @dummy_class
17+
context "given a class with no validation" do
18+
should_reject_dummy_class
1919
end
2020

21-
should "reject a class with a validation that's too high" do
22-
@dummy_class.validates_attachment_size :avatar, :in => 256..2048
23-
assert_rejects @matcher, @dummy_class
21+
context "given a class with a validation that's too high" do
22+
setup { @dummy_class.validates_attachment_size :avatar, :in => 256..2048 }
23+
should_reject_dummy_class
2424
end
2525

26-
should "reject a class with a validation that's too low" do
27-
@dummy_class.validates_attachment_size :avatar, :in => 0..1024
28-
assert_rejects @matcher, @dummy_class
26+
context "given a class with a validation that's too low" do
27+
setup { @dummy_class.validates_attachment_size :avatar, :in => 0..1024 }
28+
should_reject_dummy_class
2929
end
3030

31-
should "accept a class with a validation that matches" do
32-
@dummy_class.validates_attachment_size :avatar, :in => 256..1024
33-
assert_accepts @matcher, @dummy_class
31+
context "given a class with a validation that matches" do
32+
setup { @dummy_class.validates_attachment_size :avatar, :in => 256..1024 }
33+
should_accept_dummy_class
3434
end
3535
end
3636

3737
context "validates_attachment_size with infinite range" do
3838
setup{ @matcher = self.class.validate_attachment_size(:avatar) }
3939

40-
should "accept a class with an upper limit" do
41-
@dummy_class.validates_attachment_size :avatar, :less_than => 1
42-
assert_accepts @matcher, @dummy_class
40+
context "given a class with an upper limit" do
41+
setup { @dummy_class.validates_attachment_size :avatar, :less_than => 1 }
42+
should_accept_dummy_class
4343
end
4444

45-
should "accept a class with no upper limit" do
46-
@dummy_class.validates_attachment_size :avatar, :greater_than => 1
47-
assert_accepts @matcher, @dummy_class
45+
context "given a class with no upper limit" do
46+
setup { @dummy_class.validates_attachment_size :avatar, :greater_than => 1 }
47+
should_accept_dummy_class
4848
end
4949
end
5050
end

0 commit comments

Comments
 (0)
Please sign in to comment.