activevalidators 5.1.0 → 6.0.0
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.circleci/config.yml +69 -20
- data/ChangeLog.md +13 -1
- data/README.md +1 -1
- data/activevalidators.gemspec +1 -1
- data/certs/franckverrot.pem +21 -21
- data/test/validations/barcode_test.rb +12 -12
- data/test/validations/credit_card_test.rb +5 -5
- data/test/validations/email_test.rb +32 -32
- data/test/validations/hex_color_test.rb +12 -12
- data/test/validations/ip_test.rb +16 -16
- data/test/validations/nino_test.rb +14 -14
- data/test/validations/password_test.rb +6 -6
- data/test/validations/phone_test.rb +16 -16
- data/test/validations/postal_code_test.rb +18 -18
- data/test/validations/regexp_test.rb +6 -6
- data/test/validations/respond_to_test.rb +6 -6
- data/test/validations/sin_test.rb +12 -12
- data/test/validations/siren_test.rb +14 -14
- data/test/validations/slug_test.rb +8 -8
- data/test/validations/ssn_test.rb +10 -10
- data/test/validations/tracking_number_test.rb +5 -5
- data/test/validations/twitter_test.rb +43 -43
- data/test/validations/url_test.rb +30 -30
- metadata +23 -23
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7f7021ca57db2d5fe1a6f878acb5b030bde446515fc0a7ad12ca9bd1c31d8e8
|
4
|
+
data.tar.gz: dc288f41af3d6df1a5f649accf8e39cd6b6c549308867dff2ac90122be895c1b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f86c1a1c257400e3e4dacb1c5afb05066c41d43b71d999512277baa382f3263f4c97e5ec6af9c53ecf5fbb5c8ea1d17226c8258dc74cbd2a3516998628621a7c
|
7
|
+
data.tar.gz: f5080b7f8df260c69b31d3fa8e32c7a7f4646f9195aa5687686234afd6dd52a3763f695b20764f00b43b319d70dc6659b0e81f1d93c5aaa7b61adbc094ccaf87
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/.circleci/config.yml
CHANGED
@@ -28,57 +28,106 @@ shared: &shared
|
|
28
28
|
command: bundle exec rake
|
29
29
|
|
30
30
|
jobs:
|
31
|
-
# RAILS_VERSION=5.1.
|
32
|
-
"ruby-2.4/rails-5.1.
|
31
|
+
# RAILS_VERSION=5.1.7
|
32
|
+
"ruby-2.4/rails-5.1.7":
|
33
33
|
<<: *shared
|
34
34
|
docker:
|
35
35
|
- image: circleci/ruby:2.4
|
36
36
|
environment:
|
37
|
-
RAILS_VERSION=5.1.
|
37
|
+
RAILS_VERSION=5.1.7
|
38
38
|
|
39
|
-
"ruby-2.5/rails-5.1.
|
39
|
+
"ruby-2.5/rails-5.1.7":
|
40
40
|
<<: *shared
|
41
41
|
docker:
|
42
42
|
- image: circleci/ruby:2.5
|
43
43
|
environment:
|
44
|
-
RAILS_VERSION=5.1.
|
44
|
+
RAILS_VERSION=5.1.7
|
45
45
|
|
46
|
-
"ruby-2.6/rails-5.1.
|
46
|
+
"ruby-2.6/rails-5.1.7":
|
47
47
|
<<: *shared
|
48
48
|
docker:
|
49
49
|
- image: circleci/ruby:2.6
|
50
50
|
environment:
|
51
|
-
RAILS_VERSION=5.1.
|
51
|
+
RAILS_VERSION=5.1.7
|
52
52
|
|
53
|
-
|
54
|
-
|
53
|
+
"ruby-2.7/rails-5.1.7":
|
54
|
+
<<: *shared
|
55
|
+
docker:
|
56
|
+
- image: circleci/ruby:2.7
|
57
|
+
environment:
|
58
|
+
RAILS_VERSION=5.1.7
|
59
|
+
|
60
|
+
# RAILS_VERSION=5.2.4
|
61
|
+
"ruby-2.4/rails-5.2.4":
|
55
62
|
<<: *shared
|
56
63
|
docker:
|
57
64
|
- image: circleci/ruby:2.4
|
58
65
|
environment:
|
59
|
-
RAILS_VERSION=5.2.
|
66
|
+
RAILS_VERSION=5.2.4
|
60
67
|
|
61
|
-
"ruby-2.5/rails-5.2.
|
68
|
+
"ruby-2.5/rails-5.2.4":
|
62
69
|
<<: *shared
|
63
70
|
docker:
|
64
71
|
- image: circleci/ruby:2.5
|
65
72
|
environment:
|
66
|
-
RAILS_VERSION=5.2.
|
73
|
+
RAILS_VERSION=5.2.4
|
67
74
|
|
68
|
-
"ruby-2.6/rails-5.2.
|
75
|
+
"ruby-2.6/rails-5.2.4":
|
69
76
|
<<: *shared
|
70
77
|
docker:
|
71
78
|
- image: circleci/ruby:2.6
|
72
79
|
environment:
|
73
|
-
RAILS_VERSION=5.2.
|
80
|
+
RAILS_VERSION=5.2.4
|
81
|
+
|
82
|
+
"ruby-2.7/rails-5.2.4":
|
83
|
+
<<: *shared
|
84
|
+
docker:
|
85
|
+
- image: circleci/ruby:2.7
|
86
|
+
environment:
|
87
|
+
RAILS_VERSION=5.2.4
|
88
|
+
|
89
|
+
# RAILS_VERSION=6.0.2
|
90
|
+
"ruby-2.4/rails-6.0.2":
|
91
|
+
<<: *shared
|
92
|
+
docker:
|
93
|
+
- image: circleci/ruby:2.4
|
94
|
+
environment:
|
95
|
+
RAILS_VERSION=6.0.2
|
96
|
+
|
97
|
+
"ruby-2.5/rails-6.0.2":
|
98
|
+
<<: *shared
|
99
|
+
docker:
|
100
|
+
- image: circleci/ruby:2.5
|
101
|
+
environment:
|
102
|
+
RAILS_VERSION=6.0.2
|
103
|
+
|
104
|
+
"ruby-2.6/rails-6.0.2":
|
105
|
+
<<: *shared
|
106
|
+
docker:
|
107
|
+
- image: circleci/ruby:2.6
|
108
|
+
environment:
|
109
|
+
RAILS_VERSION=6.0.2
|
110
|
+
|
111
|
+
"ruby-2.7/rails-6.0.2":
|
112
|
+
<<: *shared
|
113
|
+
docker:
|
114
|
+
- image: circleci/ruby:2.7
|
115
|
+
environment:
|
116
|
+
RAILS_VERSION=6.0.2
|
74
117
|
|
75
118
|
workflows:
|
76
119
|
version: 2
|
77
120
|
build:
|
78
121
|
jobs:
|
79
|
-
- "ruby-2.4/rails-5.1.
|
80
|
-
- "ruby-2.5/rails-5.1.
|
81
|
-
- "ruby-2.6/rails-5.1.
|
82
|
-
- "ruby-2.
|
83
|
-
- "ruby-2.
|
84
|
-
- "ruby-2.
|
122
|
+
- "ruby-2.4/rails-5.1.7"
|
123
|
+
- "ruby-2.5/rails-5.1.7"
|
124
|
+
- "ruby-2.6/rails-5.1.7"
|
125
|
+
- "ruby-2.7/rails-5.1.7"
|
126
|
+
- "ruby-2.4/rails-5.2.4"
|
127
|
+
- "ruby-2.5/rails-5.2.4"
|
128
|
+
- "ruby-2.6/rails-5.2.4"
|
129
|
+
- "ruby-2.7/rails-5.2.4"
|
130
|
+
- "ruby-2.4/rails-6.0.2"
|
131
|
+
- "ruby-2.5/rails-6.0.2"
|
132
|
+
- "ruby-2.6/rails-6.0.2"
|
133
|
+
- "ruby-2.7/rails-6.0.2"
|
data/ChangeLog.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# UNRELEASED
|
2
2
|
|
3
|
-
#
|
3
|
+
# 6.x.y
|
4
4
|
|
5
5
|
## BREAKING CHANGES
|
6
6
|
|
@@ -9,6 +9,18 @@
|
|
9
9
|
## CHANGES
|
10
10
|
|
11
11
|
|
12
|
+
# 6.0.0
|
13
|
+
|
14
|
+
## BREAKING CHANGES
|
15
|
+
|
16
|
+
## DEPRECATION
|
17
|
+
|
18
|
+
## CHANGES
|
19
|
+
|
20
|
+
* Add support for Rails 6
|
21
|
+
* Add support for Ruby 2.7
|
22
|
+
|
23
|
+
|
12
24
|
# 5.1.0
|
13
25
|
|
14
26
|
## BREAKING CHANGES
|
data/README.md
CHANGED
@@ -32,7 +32,7 @@ This projects follows [Semantic Versioning a.k.a SemVer](http://semver.org). If
|
|
32
32
|
What it means is that you should specify an ActiveValidators version like this :
|
33
33
|
|
34
34
|
```ruby
|
35
|
-
gem 'activevalidators', '~> 5.
|
35
|
+
gem 'activevalidators', '~> 5.1.0' # <-- mind the patch version
|
36
36
|
```
|
37
37
|
|
38
38
|
Once you have `require`'d the gem, you will have to activate the validators you
|
data/activevalidators.gemspec
CHANGED
data/certs/franckverrot.pem
CHANGED
@@ -1,25 +1,25 @@
|
|
1
1
|
-----BEGIN CERTIFICATE-----
|
2
2
|
MIIEMDCCApigAwIBAgIBATANBgkqhkiG9w0BAQsFADAhMR8wHQYDVQQDDBZmcmFu
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
3
|
+
Y2svREM9dmVycm90L0RDPWZyMB4XDTE5MTIzMTA0NDkyOFoXDTIwMTIzMDA0NDky
|
4
|
+
OFowITEfMB0GA1UEAwwWZnJhbmNrL0RDPXZlcnJvdC9EQz1mcjCCAaIwDQYJKoZI
|
5
|
+
hvcNAQEBBQADggGPADCCAYoCggGBAMdPy9SjSIWxUF0E6AZycgmgJYJPzFRuLBi4
|
6
|
+
JoT7QSgBoY85Lmzgy/tk0dEeha1B6Wt4xSR5XB1v3pws77IVGofZ4Pr46mueJlBo
|
7
|
+
f3U2Xm8nykUWjufBqbKgwvdrnFq/utrWNjO+8oMYCEfKzsAQM5u1pcwUknR1ZR/s
|
8
|
+
HdD8V9/bACS6rDuiOt7XBCosgxJ78ImtIBjldWy+6KssuEuacoGglqqAsisazvdc
|
9
|
+
3DkzqqnB6Mlg1+LYtuQ9m5bViA87FH3AD2H+EIYKsr7Q/1jfMFzH2U6m/jBNTQ/v
|
10
|
+
uuD9PbiHtXatzmW1H/6OcsoS9lV2jjU09vJYOOGaXEMLqbAC9WxYaoE34GwAX6EL
|
11
|
+
VOGVmtYMdwSkgMamDs6iUTqRZl4LMxtWff54T5EHk+ul6yDs/1ND5nbOeFpkz6JK
|
12
|
+
eHUnxTxTgD48Zo3PWCtvGK36ZHVj0RmB3GqNZBr/Z+vfGeVTjzQXyy7+Gu7okGdN
|
13
|
+
s1gcDoVe1uUSbot1Hi9yOwG94MV0BQIDAQABo3MwcTAJBgNVHRMEAjAAMAsGA1Ud
|
14
|
+
DwQEAwIEsDAdBgNVHQ4EFgQUIWiEXS2Ddxrtivykq3L2AJMcNWAwGwYDVR0RBBQw
|
15
15
|
EoEQZnJhbmNrQHZlcnJvdC5mcjAbBgNVHRIEFDASgRBmcmFuY2tAdmVycm90LmZy
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
16
|
+
MA0GCSqGSIb3DQEBCwUAA4IBgQCFMXnQLS2lC537h5iMXJsxXffgrQmxElrpyJL6
|
17
|
+
0Edlr0udk9WWrvcfAeDDnciKEclzIHC9CSE3zzAX2wtLq+52JPp9f9T3ZAv+VgR6
|
18
|
+
azNNOkYuyr1b8IVUVPQDjm+wjfeKvSF5pSbLCoRsswZzdyoCLj7d+E+eGt2+vksd
|
19
|
+
6O9SYwJqLNmul8V4XU6og+CkLzlHlnLnJ64WYPmd0M/RAW0NWRbDjD440mlw7p4U
|
20
|
+
6ZiUKsOT6zcDUcotKyHDjQbx17Mw0z7ETzOh1/rpuxnOWXbEEcHFbqZVcvII9Zqn
|
21
|
+
EoFKzXPEEv2cl71U9NMNp/ChoCEpaY4+ZwSbpefjEeyuG64leJt7ZrFVzUK7yYlL
|
22
|
+
upHY23hQxN/JZ/5w6PMX16CuRQyy8QiM3v3G6/tUC+tz8e87gUR38T+kZz9WswzF
|
23
|
+
dRt6SQwLMV0PupkBmyc7hvwkjo0eXQ+SbuxwqYu03GBEapii1kjozUclRJI7Nj97
|
24
|
+
Viwe79MCVe/o/vXeOr6Gso2TSEY=
|
25
25
|
-----END CERTIFICATE-----
|
@@ -6,34 +6,34 @@ describe "Barcode Validation" do
|
|
6
6
|
it "accepts valid EAN13s" do
|
7
7
|
["9782940199617", "9782940199600"].each do |barcode|
|
8
8
|
subject = build_barcode_record :ean13, :barcode => barcode
|
9
|
-
subject.valid
|
10
|
-
subject.errors.size.must_equal
|
9
|
+
_(subject.valid?).must_equal(true)
|
10
|
+
_(subject.errors.size).must_equal(0)
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
14
|
it "accepts EAN13s as integers" do
|
15
15
|
subject = build_barcode_record :ean13, :barcode => 9782940199617
|
16
|
-
subject.valid
|
17
|
-
subject.errors.size.must_equal
|
16
|
+
_(subject.valid?).must_equal(true)
|
17
|
+
_(subject.errors.size).must_equal(0)
|
18
18
|
end
|
19
19
|
|
20
20
|
describe "for invalid EAN13s" do
|
21
21
|
it "rejects invalid EAN13s" do
|
22
22
|
subject = build_barcode_record :ean13, :barcode => "9782940199616"
|
23
|
-
subject.valid
|
24
|
-
subject.errors.size.must_equal
|
23
|
+
_(subject.valid?).must_equal(false)
|
24
|
+
_(subject.errors.size).must_equal(1)
|
25
25
|
end
|
26
26
|
|
27
27
|
it "rejects EAN13s with invalid length" do
|
28
28
|
subject = build_barcode_record :ean13, :barcode => "50239201872045879"
|
29
|
-
subject.valid
|
30
|
-
subject.errors.size.must_equal
|
29
|
+
_(subject.valid?).must_equal(false)
|
30
|
+
_(subject.errors.size).must_equal(1)
|
31
31
|
end
|
32
32
|
|
33
33
|
it "rejects EAN13s with invalid value (not only integers)" do
|
34
34
|
subject = build_barcode_record :ean13, :barcode => "502392de872e4"
|
35
|
-
subject.valid
|
36
|
-
subject.errors.size.must_equal
|
35
|
+
_(subject.valid?).must_equal(false)
|
36
|
+
_(subject.errors.size).must_equal(1)
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
@@ -43,14 +43,14 @@ describe "Barcode Validation" do
|
|
43
43
|
error = assert_raises ArgumentError do
|
44
44
|
build_barcode_record :format_not_supported, :barcode => "9782940199617"
|
45
45
|
end
|
46
|
-
error.message.must_equal
|
46
|
+
_(error.message).must_equal("Barcode format (format_not_supported) not supported")
|
47
47
|
end
|
48
48
|
|
49
49
|
it "raises an error when you omit format option" do
|
50
50
|
error = assert_raises ArgumentError do
|
51
51
|
build_barcode_record nil, :barcode => "9782940199617"
|
52
52
|
end
|
53
|
-
error.message.must_equal
|
53
|
+
_(error.message).must_equal(":format cannot be blank!")
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
@@ -79,14 +79,14 @@ describe "Credit Card Validation" do
|
|
79
79
|
end
|
80
80
|
|
81
81
|
def card_is_valid?(subject)
|
82
|
-
subject.valid
|
83
|
-
subject.errors.size.must_equal
|
82
|
+
_(subject.valid?).must_equal(true)
|
83
|
+
_(subject.errors.size).must_equal(0)
|
84
84
|
end
|
85
85
|
|
86
86
|
def card_is_invalid?(subject)
|
87
|
-
subject.valid
|
88
|
-
subject.errors.size.must_equal
|
89
|
-
subject.errors[:card].include?(subject.errors.generate_message(:card, :invalid)).must_equal
|
87
|
+
_(subject.valid?).must_equal(false)
|
88
|
+
_(subject.errors.size).must_equal(1)
|
89
|
+
_(subject.errors[:card].include?(subject.errors.generate_message(:card, :invalid))).must_equal(true)
|
90
90
|
end
|
91
91
|
|
92
92
|
end
|
@@ -6,107 +6,107 @@ describe "Email Validation" do
|
|
6
6
|
|
7
7
|
it "accepts valid emails" do
|
8
8
|
subject = build_email_record({:email => 'franck@verrot.fr'}, {:strict => true})
|
9
|
-
subject.valid
|
10
|
-
subject.errors.size.must_equal
|
9
|
+
_(subject.valid?).must_equal(true)
|
10
|
+
_(subject.errors.size).must_equal(0)
|
11
11
|
end
|
12
12
|
|
13
13
|
it "accepts valid emails" do
|
14
14
|
subject = build_email_record({:email => 'franck@edu.verrot-gouv.fr'}, {:strict => true})
|
15
|
-
subject.valid
|
16
|
-
subject.errors.size.must_equal
|
15
|
+
_(subject.valid?).must_equal(true)
|
16
|
+
_(subject.errors.size).must_equal(0)
|
17
17
|
end
|
18
18
|
|
19
19
|
it "accepts complete emails" do
|
20
20
|
subject = build_email_record({:email => 'Mikel Lindsaar (My email address) <mikel@test.lindsaar.net>'}, {:strict => true})
|
21
|
-
subject.valid
|
22
|
-
subject.errors.size.must_equal
|
21
|
+
_(subject.valid?).must_equal(true)
|
22
|
+
_(subject.errors.size).must_equal(0)
|
23
23
|
end
|
24
24
|
|
25
25
|
it "accepts email addresses without TLD" do
|
26
26
|
subject = build_email_record({:email => 'franck@verrotfr'}, {:strict => true})
|
27
|
-
subject.valid
|
28
|
-
subject.errors.size.must_equal
|
27
|
+
_(subject.valid?).must_equal(false)
|
28
|
+
_(subject.errors.size).must_equal(1)
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
32
|
describe "strict: false (default)" do
|
33
33
|
it "accepts valid emails" do
|
34
34
|
subject = build_email_record :email => 'franck@verrot.fr'
|
35
|
-
subject.valid
|
36
|
-
subject.errors.size.must_equal
|
35
|
+
_(subject.valid?).must_equal(true)
|
36
|
+
_(subject.errors.size).must_equal(0)
|
37
37
|
end
|
38
38
|
|
39
39
|
it "accepts valid emails" do
|
40
40
|
subject = build_email_record :email => 'franck@edu.verrot-gouv.fr'
|
41
|
-
subject.valid
|
42
|
-
subject.errors.size.must_equal
|
41
|
+
_(subject.valid?).must_equal(true)
|
42
|
+
_(subject.errors.size).must_equal(0)
|
43
43
|
end
|
44
44
|
|
45
45
|
it "accepts complete emails" do
|
46
46
|
subject = build_email_record :email => 'Mikel Lindsaar (My email address) <mikel@test.lindsaar.net>'
|
47
|
-
subject.valid
|
48
|
-
subject.errors.size.must_equal
|
47
|
+
_(subject.valid?).must_equal(true)
|
48
|
+
_(subject.errors.size).must_equal(0)
|
49
49
|
end
|
50
50
|
|
51
51
|
it "rejects email addresses without TLD" do
|
52
52
|
subject = build_email_record :email => 'franck@verrotfr'
|
53
|
-
subject.valid
|
54
|
-
subject.errors.size.must_equal
|
53
|
+
_(subject.valid?).must_equal(false)
|
54
|
+
_(subject.errors.size).must_equal(1)
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
58
58
|
describe "with: #<Proc>" do
|
59
59
|
it "rejects any false result" do
|
60
60
|
subject = build_email_record({:email => "franck@verrot.fr"}, {:with => lambda {|e| false }})
|
61
|
-
subject.valid
|
62
|
-
subject.errors.size.must_equal
|
61
|
+
_(subject.valid?).must_equal(false)
|
62
|
+
_(subject.errors.size).must_equal(1)
|
63
63
|
end
|
64
64
|
|
65
65
|
it "accepts any true result" do
|
66
66
|
subject = build_email_record({:email => "franck@verrot.fr"}, {:with => lambda {|e| true }})
|
67
|
-
subject.valid
|
68
|
-
subject.errors.size.must_equal
|
67
|
+
_(subject.valid?).must_equal(true)
|
68
|
+
_(subject.errors.size).must_equal(0)
|
69
69
|
end
|
70
70
|
|
71
71
|
it "passes in the parsed email address" do
|
72
72
|
subject = build_email_record({:email => "franck@hotmail.com"}, {:with => lambda {|email| not email.domain == "hotmail.com" }})
|
73
|
-
subject.valid
|
74
|
-
subject.errors.size.must_equal
|
73
|
+
_(subject.valid?).must_equal(false)
|
74
|
+
_(subject.errors.size).must_equal(1)
|
75
75
|
end
|
76
76
|
|
77
77
|
it "rejects a nil result" do
|
78
78
|
subject = build_email_record({:email => "franck@verrot.fr"}, {:with => lambda {|email| email.domain =~ /\.com\Z/ }})
|
79
|
-
subject.valid
|
80
|
-
subject.errors.size.must_equal
|
79
|
+
_(subject.valid?).must_equal(false)
|
80
|
+
_(subject.errors.size).must_equal(1)
|
81
81
|
end
|
82
82
|
|
83
83
|
it "accepts a numerical result" do
|
84
84
|
subject = build_email_record({:email => "franck@verrot.fr"}, {:with => lambda {|email| email.domain =~ /\.fr\Z/ }})
|
85
|
-
subject.valid
|
86
|
-
subject.errors.size.must_equal
|
85
|
+
_(subject.valid?).must_equal(true)
|
86
|
+
_(subject.errors.size).must_equal(0)
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
90
|
describe "for invalid emails" do
|
91
91
|
it "rejects invalid emails" do
|
92
92
|
subject = build_email_record :email => 'franck.fr'
|
93
|
-
subject.valid
|
94
|
-
subject.errors.size.must_equal
|
93
|
+
_(subject.valid?).must_equal(false)
|
94
|
+
_(subject.errors.size).must_equal(1)
|
95
95
|
end
|
96
96
|
|
97
97
|
it 'rejects local emails' do
|
98
98
|
subject = build_email_record :email => 'franck.fr'
|
99
99
|
subject.email = 'franck'
|
100
|
-
subject.valid
|
101
|
-
subject.errors.size.must_equal
|
100
|
+
_(subject.valid?).must_equal(false)
|
101
|
+
_(subject.errors.size).must_equal(1)
|
102
102
|
end
|
103
103
|
|
104
104
|
it 'generates an error message of type invalid' do
|
105
105
|
subject = build_email_record :email => 'franck@verrot@fr'
|
106
|
-
subject.valid
|
106
|
+
_(subject.valid?).must_equal(false)
|
107
107
|
|
108
108
|
message = subject.errors.generate_message(:email, :invalid)
|
109
|
-
subject.errors[:email].include?(message).must_equal
|
109
|
+
_(subject.errors[:email].include?(message)).must_equal(true)
|
110
110
|
end
|
111
111
|
end
|
112
112
|
|