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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e28fd41e5406e9d587414ae53528c6ab0ea6542950b16ba990a6f51f120bd192
4
- data.tar.gz: 55add0e3513f0fe48f4924322e06456f4481ec4ce213be561b24cacd5342ebd0
3
+ metadata.gz: f7f7021ca57db2d5fe1a6f878acb5b030bde446515fc0a7ad12ca9bd1c31d8e8
4
+ data.tar.gz: dc288f41af3d6df1a5f649accf8e39cd6b6c549308867dff2ac90122be895c1b
5
5
  SHA512:
6
- metadata.gz: '0866bce8c7f7d4bbb327681eb31b185534c5322533281e2adf56919dd6fbb6ca2d1315500a88b0b85d89b9524ff83b5435c3df41a164cab0c5f4154e07f52332'
7
- data.tar.gz: 065aea8ed9dc5f4581163ec02e92a25671e548714c05b90b6e229b0af8856795fe07c2a4037beea6d2a9a0332bc840a6ee56682d75994b32fb8f543ac8075802
6
+ metadata.gz: f86c1a1c257400e3e4dacb1c5afb05066c41d43b71d999512277baa382f3263f4c97e5ec6af9c53ecf5fbb5c8ea1d17226c8258dc74cbd2a3516998628621a7c
7
+ data.tar.gz: f5080b7f8df260c69b31d3fa8e32c7a7f4646f9195aa5687686234afd6dd52a3763f695b20764f00b43b319d70dc6659b0e81f1d93c5aaa7b61adbc094ccaf87
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -28,57 +28,106 @@ shared: &shared
28
28
  command: bundle exec rake
29
29
 
30
30
  jobs:
31
- # RAILS_VERSION=5.1.6
32
- "ruby-2.4/rails-5.1.6":
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.6
37
+ RAILS_VERSION=5.1.7
38
38
 
39
- "ruby-2.5/rails-5.1.6":
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.6
44
+ RAILS_VERSION=5.1.7
45
45
 
46
- "ruby-2.6/rails-5.1.6":
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.6
51
+ RAILS_VERSION=5.1.7
52
52
 
53
- # RAILS_VERSION=5.2.2
54
- "ruby-2.4/rails-5.2.2":
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.2
66
+ RAILS_VERSION=5.2.4
60
67
 
61
- "ruby-2.5/rails-5.2.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.2
73
+ RAILS_VERSION=5.2.4
67
74
 
68
- "ruby-2.6/rails-5.2.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.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.6"
80
- - "ruby-2.5/rails-5.1.6"
81
- - "ruby-2.6/rails-5.1.6"
82
- - "ruby-2.4/rails-5.2.2"
83
- - "ruby-2.5/rails-5.2.2"
84
- - "ruby-2.6/rails-5.2.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"
@@ -1,6 +1,6 @@
1
1
  # UNRELEASED
2
2
 
3
- # 5.x.y
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.0.0' # <-- mind the patch version
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
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |s|
3
3
  s.name = 'activevalidators'
4
- s.version = '5.1.0'
4
+ s.version = '6.0.0'
5
5
  s.platform = Gem::Platform::RUBY
6
6
  s.authors = ['Franck Verrot']
7
7
  s.email = ['franck@verrot.fr']
@@ -1,25 +1,25 @@
1
1
  -----BEGIN CERTIFICATE-----
2
2
  MIIEMDCCApigAwIBAgIBATANBgkqhkiG9w0BAQsFADAhMR8wHQYDVQQDDBZmcmFu
3
- Y2svREM9dmVycm90L0RDPWZyMB4XDTE4MTIyMTAxMzgwNVoXDTE5MTIyMTAxMzgw
4
- NVowITEfMB0GA1UEAwwWZnJhbmNrL0RDPXZlcnJvdC9EQz1mcjCCAaIwDQYJKoZI
5
- hvcNAQEBBQADggGPADCCAYoCggGBANjZ/7L2ECEQAVOYvMl0JOwyVXKRCsLnVrmP
6
- mcwpCMFL0ennkpLJcqiDNsm0b/RkJHSLu3FMoYrIU5KoaP7iMIsLGv846aw2wSNI
7
- G5XWGnRY9dWVu7Gz2OZbsDi18WT94Y/s2yf+orPLAiaJb451decYEpHqLTiaJhhJ
8
- xHckJixfDVwZGJpow7rrJAJMbU9ZCJFUFAfNpgkOqhbBU4Ehi1umbC/ZBsVDiRVa
9
- ZjfNhe7kgx6jo3EfPY4izPW2IKkpk7nJKNfZnM2r0cnpPJbhyH1m5fsikBD5tRNe
10
- YxJpxDPf8UBTTXqoeSSQygiHWWZVbH3zj2jWzi5T0do5PbZcCeoIKR4TyOgbOgBW
11
- Ra7bm9uVXo6MQWpp0aeC/X+F2Y/dFjXAP/TPL89ownd3XZUaNDdZfS6aKBMG3a5C
12
- gcRLMt1hOJchslGNtvkq5W4Wq8hw+zNHzTMpRkIsYTbvlJCDxXRKR3jwPDTRvNAl
13
- aemBW1g3yerHeDQr6GtxKEvhmHdw/wIDAQABo3MwcTAJBgNVHRMEAjAAMAsGA1Ud
14
- DwQEAwIEsDAdBgNVHQ4EFgQUgG77cLAMzowManymHX63DbvfR5IwGwYDVR0RBBQw
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
- MA0GCSqGSIb3DQEBCwUAA4IBgQAofcg/2kPT9VMBGEuO17F3yH6fiJboQeLL1nlM
17
- ULZv5LyyqV6Yq0cQ+TZMGHd/hbvBFTN9/55WmiN66tYLaunyfr4aUflCQcM/qu2g
18
- Ieoz8QLxfIi24DCDezpODHaud6Qt0VmMpalSOxbCuMeNnXLpnxbP/7fJBJoum5GS
19
- CqGuH81fXy7KAAlgMBcsYb3+vZJhuAeM/zSrE5Hmf1zApTEVZc4Y0dO6eRC6WbXW
20
- pJfyNXyITkkr7pTRYO/wj3lFoeDqfGXb48HvpJ54lqfeIvr9Hek7grcyQGfZ1rFY
21
- Dx3RTjxParzCWk/HCFHQiZmU5lnOl7GShwAZrG6l0UHST3/YNCA52KDrmC/T0A2N
22
- d2MQGgSZerYTx+HRKlradglBDPCs4nxQj5pnoDvGbngeZUua+ZZGFM9SXBT3zAIQ
23
- akLQjJWKHQCzyqDChJHRGhlxyVFKP2JwqFgzE3p1l64JArsb7BEqhpoBPXMwlChE
24
- HgzCBTsCU0syQBb1s6lBz2HrWA4=
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?.must_equal true
10
- subject.errors.size.must_equal 0
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?.must_equal true
17
- subject.errors.size.must_equal 0
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?.must_equal false
24
- subject.errors.size.must_equal 1
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?.must_equal false
30
- subject.errors.size.must_equal 1
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?.must_equal false
36
- subject.errors.size.must_equal 1
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 "Barcode format (format_not_supported) not supported"
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 ":format cannot be blank!"
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?.must_equal true
83
- subject.errors.size.must_equal 0
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?.must_equal false
88
- subject.errors.size.must_equal 1
89
- subject.errors[:card].include?(subject.errors.generate_message(:card, :invalid)).must_equal true
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?.must_equal true
10
- subject.errors.size.must_equal 0
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?.must_equal true
16
- subject.errors.size.must_equal 0
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?.must_equal true
22
- subject.errors.size.must_equal 0
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?.must_equal false
28
- subject.errors.size.must_equal 1
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?.must_equal true
36
- subject.errors.size.must_equal 0
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?.must_equal true
42
- subject.errors.size.must_equal 0
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?.must_equal true
48
- subject.errors.size.must_equal 0
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?.must_equal false
54
- subject.errors.size.must_equal 1
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?.must_equal false
62
- subject.errors.size.must_equal 1
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?.must_equal true
68
- subject.errors.size.must_equal 0
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?.must_equal false
74
- subject.errors.size.must_equal 1
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?.must_equal false
80
- subject.errors.size.must_equal 1
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?.must_equal true
86
- subject.errors.size.must_equal 0
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?.must_equal false
94
- subject.errors.size.must_equal 1
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?.must_equal false
101
- subject.errors.size.must_equal 1
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?.must_equal false
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 true
109
+ _(subject.errors[:email].include?(message)).must_equal(true)
110
110
  end
111
111
  end
112
112