forked from thoughtbot/shoulda-matchers
-
Notifications
You must be signed in to change notification settings - Fork 0
/
disallow_value_matcher_spec.rb
63 lines (53 loc) · 1.83 KB
/
disallow_value_matcher_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
require 'spec_helper'
describe Shoulda::Matchers::ActiveModel::DisallowValueMatcher do
let(:matcher_class) { Shoulda::Matchers::ActiveModel::DisallowValueMatcher }
context "an attribute with a format validation" do
let(:model) do
define_model :example, :attr => :string do
validates_format_of :attr, :with => /abc/
end.new
end
it "does not allow a good value" do
matcher_class.new("abcde").for(:attr).matches?(model).should be_false
end
it "allows a bad value" do
matcher_class.new("xyz").for(:attr).matches?(model).should be_true
end
end
context 'description' do
let(:model) do
define_model :example, :attr => :string do
validates_presence_of :attr
end.new
end
it 'is correct' do
matcher_class.new(nil).for(:attr).description.should == 'not allow attr to be set to nil'
end
end
context 'failure_message' do
let(:model) do
define_model :example, :attr => :string do
validates_presence_of :attr
end.new
end
it 'is correct' do
expected_failure_message = 'Expected errors when attr is set to "present", got no errors'
matcher = matcher_class.new('present').for(:attr)
matcher.matches?(model).should be_false
matcher.failure_message.should == expected_failure_message
end
end
context 'negative_failure_message' do
let(:model) do
define_model :example, :attr => :string do
validates_presence_of :attr
end.new
end
it 'is correct' do
expected_negative_failure_message = %{Did not expect errors when attr is set to nil, got error: ["attr can't be blank (nil)"]}
matcher = matcher_class.new(nil).for(:attr)
matcher.matches?(model).should be_true
matcher.negative_failure_message.should == expected_negative_failure_message
end
end
end