omg_validator 0.0.6.2 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. data/.yardoc/checksums +15 -15
  2. data/.yardoc/objects/root.dat +0 -0
  3. data/Gemfile +1 -0
  4. data/Gemfile.lock +25 -25
  5. data/doc/OmgValidator.html +6 -4
  6. data/doc/OmgValidator/Validators.html +6 -4
  7. data/doc/OmgValidator/Validators/AlphaDashValidator.html +14 -10
  8. data/doc/OmgValidator/Validators/AlphaNumericValidator.html +14 -10
  9. data/doc/OmgValidator/Validators/AlphaValidator.html +14 -10
  10. data/doc/OmgValidator/Validators/DateValidator.html +5 -5
  11. data/doc/OmgValidator/Validators/DecimalValidator.html +13 -10
  12. data/doc/OmgValidator/Validators/EmailValidator.html +15 -11
  13. data/doc/OmgValidator/Validators/IntegerValidator.html +14 -10
  14. data/doc/OmgValidator/Validators/IpAddressValidator.html +15 -11
  15. data/doc/OmgValidator/Validators/NumericValidator.html +13 -10
  16. data/doc/OmgValidator/Validators/PhoneNumberValidator.html +15 -11
  17. data/doc/OmgValidator/Validators/PostalCodeValidator.html +14 -10
  18. data/doc/OmgValidator/Validators/PostalOrZipCodeValidator.html +14 -10
  19. data/doc/OmgValidator/Validators/StrongPasswordValidator.html +18 -13
  20. data/doc/OmgValidator/Validators/UrlValidator.html +17 -11
  21. data/doc/OmgValidator/Validators/ZipCodeValidator.html +13 -10
  22. data/doc/_index.html +4 -4
  23. data/doc/file.README.html +11 -13
  24. data/doc/frames.html +1 -1
  25. data/doc/index.html +11 -13
  26. data/doc/js/full_list.js +6 -0
  27. data/doc/method_list.html +12 -12
  28. data/doc/top-level-namespace.html +5 -3
  29. data/lib/omg_validator.rb +3 -0
  30. data/lib/omg_validator/validators/alpha_dash_validator.rb +3 -0
  31. data/lib/omg_validator/validators/alpha_numeric_validator.rb +3 -0
  32. data/lib/omg_validator/validators/alpha_validator.rb +3 -0
  33. data/lib/omg_validator/validators/decimal_validator.rb +3 -0
  34. data/lib/omg_validator/validators/email_validator.rb +4 -1
  35. data/lib/omg_validator/validators/integer_validator.rb +3 -0
  36. data/lib/omg_validator/validators/ip_address_validator.rb +4 -1
  37. data/lib/omg_validator/validators/numeric_validator.rb +3 -0
  38. data/lib/omg_validator/validators/phone_number_validator.rb +4 -1
  39. data/lib/omg_validator/validators/postal_code_validator.rb +3 -0
  40. data/lib/omg_validator/validators/postal_or_zip_code_validator.rb +3 -0
  41. data/lib/omg_validator/validators/strong_password_validator.rb +6 -3
  42. data/lib/omg_validator/validators/url_validator.rb +5 -2
  43. data/lib/omg_validator/validators/zip_code_validator.rb +3 -0
  44. data/lib/omg_validator/version.rb +1 -1
  45. data/omg_validator-0.0.6.2.gem +0 -0
  46. data/test/dummy/app/models/thing.rb +32 -0
  47. data/test/dummy/config/environments/test.rb +1 -1
  48. data/test/omg_validator_test.rb +248 -0
  49. data/test/support/things.rb +252 -0
  50. metadata +7 -2
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Top Level Namespace
8
8
 
9
- &mdash; Documentation by YARD 0.7.4
9
+ &mdash; Documentation by YARD 0.7.5
10
10
 
11
11
  </title>
12
12
 
@@ -91,12 +91,14 @@
91
91
 
92
92
 
93
93
 
94
+
95
+
94
96
  </div>
95
97
 
96
98
  <div id="footer">
97
- Generated on Fri Mar 30 11:50:31 2012 by
99
+ Generated on Thu Apr 5 00:05:42 2012 by
98
100
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
99
- 0.7.4 (ruby-1.9.2).
101
+ 0.7.5 (ruby-1.9.2).
100
102
  </div>
101
103
 
102
104
  </body>
@@ -14,9 +14,12 @@ require "omg_validator/validators/alpha_validator"
14
14
  require "omg_validator/validators/date_validator"
15
15
  require "omg_validator/validators/decimal_validator"
16
16
  require "omg_validator/validators/email_validator"
17
+ require "omg_validator/validators/url_validator"
18
+ require "omg_validator/validators/ip_address_validator"
17
19
  require "omg_validator/validators/integer_validator"
18
20
  require "omg_validator/validators/numeric_validator"
19
21
  require "omg_validator/validators/phone_number_validator"
20
22
  require "omg_validator/validators/postal_code_validator"
21
23
  require "omg_validator/validators/postal_or_zip_code_validator"
24
+ require "omg_validator/validators/strong_password_validator"
22
25
  require "omg_validator/validators/zip_code_validator"
@@ -3,6 +3,9 @@ module OmgValidator
3
3
  # Checks whether input only contains alpha-numberic characters and dashes
4
4
  #
5
5
  # validates :perma_link, alpha_dash: true
6
+ #
7
+ # matches: alpha-dash-23, ll2-ada, 343, Dfsdf, -,
8
+ # does not match: $10.00, sub.domain, id=343, (232)
6
9
  class AlphaDashValidator < ActiveModel::EachValidator
7
10
  def validate_each(record, attribute, value)
8
11
  return nil if value.nil?
@@ -3,6 +3,9 @@ module OmgValidator
3
3
  # Checks whether input only contains alpha-numberic characters
4
4
  #
5
5
  # validates :title, alpha_numberic: true
6
+ #
7
+ # matches: alpha23, Testing, 343, hello,
8
+ # does not match: 324-343, alpha-dash, id=343, (232)
6
9
  class AlphaNumericValidator < ActiveModel::EachValidator
7
10
  def validate_each(record, attribute, value)
8
11
  return nil if value.nil?
@@ -3,6 +3,9 @@ module OmgValidator
3
3
  # Checks whether input only contains alphabetic characters
4
4
  #
5
5
  # validates :name, alpha: true
6
+ #
7
+ # matches: alpha, testing, Hello,
8
+ # does not match: sub.domain, alpha-dash, id=343, (232)
6
9
  class AlphaValidator < ActiveModel::EachValidator
7
10
  def validate_each(record, attribute, value)
8
11
  return nil if value.nil?
@@ -3,6 +3,9 @@ module OmgValidator
3
3
  # Checks whether input is a valid floating point number
4
4
  #
5
5
  # validates :total_value, decimal: true
6
+ #
7
+ # matches: 10.00, -23.12, 9.99, 1.9002302
8
+ # does not match: 123, 99, -23, 1,000
6
9
  class DecimalValidator < ActiveModel::EachValidator
7
10
  def validate_each(record, attribute, value)
8
11
  return nil if value.nil?
@@ -3,10 +3,13 @@ module OmgValidator
3
3
  # Checks whether input is a valid email address
4
4
  #
5
5
  # validates :email, email: true
6
+ #
7
+ # matches: email@domain.com, my_user@domain.edu.org, sub.domain@ohyeah.com,
8
+ # does not match: mail@you@rock.com, domain.com
6
9
  class EmailValidator < ActiveModel::EachValidator
7
10
  def validate_each(record, attribute, value)
8
11
  return nil if value.nil?
9
- reg = /\A[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]+\z/
12
+ reg = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]+$/
10
13
  unless reg.match(value)
11
14
  record.errors[attribute] = "must be a valid email address"
12
15
  end
@@ -3,6 +3,9 @@ module OmgValidator
3
3
  # Checks whether input is a valid integer
4
4
  #
5
5
  # validates :count, integer: true
6
+ #
7
+ # matches: 10, 20, 2323, -20, 10000000,
8
+ # does not match: 10.50, -22.21, 1,000, ten
6
9
  class IntegerValidator < ActiveModel::EachValidator
7
10
  def validate_each(record, attribute, value)
8
11
  return nil if value.nil?
@@ -3,10 +3,13 @@ module OmgValidator
3
3
  # Checks whether input is a valid IP Address
4
4
  #
5
5
  # validates :ip_address, ip_adress: true
6
+ #
7
+ # matches: 101.101.102.123, 9.199.22.212, 255.255.255.0, 127.0.0.1
8
+ # does not match: 101.101.102.565, 255.256.256.0, 90.0.0, 12.12.54.34.123
6
9
  class IpAddressValidator < ActiveModel::EachValidator
7
10
  def validate_each(record, attribute, value)
8
11
  return nil if value.nil?
9
- reg = '/\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/'
12
+ reg = /^\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$\b/
10
13
  unless reg.match(value)
11
14
  record.errors[attribute] = "must be a valid IP address"
12
15
  end
@@ -3,6 +3,9 @@ module OmgValidator
3
3
  # Checks whether input is a valid number
4
4
  #
5
5
  # validates :count, number: true
6
+ #
7
+ # matches: 123, 523.12, -23, -23.12
8
+ # does not match: six, 23.23.12, 1,000
6
9
  class NumericValidator < ActiveModel::EachValidator
7
10
  def validate_each(record, attribute, value)
8
11
  return nil if value.nil?
@@ -4,10 +4,13 @@ module OmgValidator
4
4
  # Currently only supports American and Canadian formats
5
5
  #
6
6
  # validates :phone, phone_number: true
7
+ #
8
+ # matches: 2342343423, 1-800-232-1232, 100-232-2322, 1905-232-2323,
9
+ # does not match: 3434343434343, 333333333, 905-232-23239, (111) 232-2322
7
10
  class PhoneNumberValidator < ActiveModel::EachValidator
8
11
  def validate_each(record, attribute, value)
9
12
  return nil if value.nil?
10
- reg = /^(1?(-?\d{3})-?)?(\d{3})(-?\d{4})$/
13
+ reg = /^(\d[ -\.]?)?(\d{3}[ -\.]?)?\d{3}[ -\.]?\d{4}(x\d+)?$/
11
14
  unless reg.match(value)
12
15
  record.errors[attribute] = "must be a valid phone number"
13
16
  end
@@ -3,6 +3,9 @@ module OmgValidator
3
3
  # Checks whether input is a valid postal code
4
4
  #
5
5
  # validates :postal_code, postal_code: true
6
+ #
7
+ # matches: L2J 4T5, l2a 9d1, h2o 4g1, h2o4g1
8
+ # does not match: z2n 1n3, aan 2j2, LL2J 4T5, 5j4 f1d
6
9
  class PostalCodeValidator < ActiveModel::EachValidator
7
10
  def validate_each(record, attribute, value)
8
11
  return nil if value.nil?
@@ -3,6 +3,9 @@ module OmgValidator
3
3
  # Checks whether input is a valid postal code or a valid zip code
4
4
  #
5
5
  # validates :zip_code, postal_or_zip_code: true
6
+ #
7
+ # matches: L2J 4T5, l2a 9d1, h2o 4g1, h2o4g1, 90210, 20037-8001, 12345
8
+ # does not match: z2n 1n3, aan 2j2, LL2J 4T5, 123456, 20037-001, 207-01
6
9
  class PostalOrZipCodeValidator < ActiveModel::EachValidator
7
10
  def validate_each(record, attribute, value)
8
11
  return nil if value.nil?
@@ -1,15 +1,18 @@
1
1
  module OmgValidator
2
2
  module Validators
3
3
  # Checks whether password input is a strong password
4
- # Must contain a least one number, one lower case letter and one upper case letter
4
+ # Must contain a least one number, one lower case letter and one upper case letter and must be at least 8 characters
5
5
  #
6
6
  # validates :password, strong_password: true
7
+ #
8
+ # matches: ASdj3j3jsS, 8#adCje3, pwd#fdJa9, To34zNbsr30,
9
+ # does not match: password, sdfsdfs3, Jsdsdsdj, G3hn$h
7
10
  class StrongPasswordValidator < ActiveModel::EachValidator
8
11
  def validate_each(record, attribute, value)
9
12
  return nil if value.nil?
10
- reg = '/^\w*(?=\w*\d)(?=\w*[a-z])(?=\w*[A-Z])\w*$/'
13
+ reg = /(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/
11
14
  unless reg.match(value)
12
- record.errors[attribute] = "must contain at least a number, a lower case letter, and a upper case letter"
15
+ record.errors[attribute] = "must contain at least a number, a lower case letter, a upper case letter and must be at least 8 characters"
13
16
  end
14
17
  end
15
18
  end
@@ -4,10 +4,13 @@ module OmgValidator
4
4
  # Supports the protocols: http, https and ftp
5
5
  #
6
6
  # validates :url, url: true
7
- class UrlValidator < ActiveModel::EachValidator
7
+ #
8
+ # matches: http://www.example.com, www.example.com, example.com, sub.example.com
9
+ # does not match: @asd.com, domain.c, domain.asd., amasd@asd.com.a
10
+ class UrlValidator < ActiveModel::EachValidator
8
11
  def validate_each(record, attribute, value)
9
12
  return nil if value.nil?
10
- reg = '`.*?((http|ftp|https)://[\w#$&+,\/:;=?@.-]+)[^\w#$&+,\/:;=?@.-]*?`i'
13
+ reg = /^((https?):\/\/)?([a-z\d]+([\-\.][a-z\d]+)*\.[a-z]{2,6})((:(\d{1,5}))?(\/.*)?)?$/
11
14
  unless reg.match(value)
12
15
  record.errors[attribute] = "must be a valid url"
13
16
  end
@@ -3,6 +3,9 @@ module OmgValidator
3
3
  # Checks whether input is a valid zip code
4
4
  #
5
5
  # validates :zip_code, zip_code: true
6
+ #
7
+ # matches: 90210, 20037-8001, 12345
8
+ # does not match: 123456, 20037-001, 207-01
6
9
  class ZipCodeValidator < ActiveModel::EachValidator
7
10
  def validate_each(record, attribute, value)
8
11
  return nil if value.nil?
@@ -1,4 +1,4 @@
1
1
  module OmgValidator
2
2
  #Version of Gem
3
- VERSION = "0.0.6.2"
3
+ VERSION = "0.0.7"
4
4
  end
Binary file
@@ -0,0 +1,32 @@
1
+ require 'active_model'
2
+
3
+ class Thing
4
+ include ActiveModel::Validations
5
+
6
+ attr_accessor :alpha, :alpha_numeric, :alpha_dash, :zip_code, :postal_or_zip_code, :postal_code,
7
+ :decimal, :integer, :numeric, :email, :ip_address, :url, :phone, :password, :date
8
+
9
+ validates :alpha, alpha: true
10
+ validates :alpha_numeric, alpha_numeric: true
11
+ validates :alpha_dash, alpha_dash: true
12
+ validates :zip_code, zip_code: true
13
+ validates :postal_or_zip_code, postal_or_zip_code: true
14
+ validates :postal_code, postal_code: true
15
+ validates :decimal, decimal: true
16
+ validates :integer, integer: true
17
+ validates :numeric, numeric: true
18
+ validates :email, email: true
19
+ validates :ip_address, ip_address: true
20
+ validates :url, url: true
21
+ validates :phone, phone_number: true
22
+ validates :password, strong_password: true
23
+ validates :date, date: true
24
+
25
+ def initialize(options = {})
26
+ @alpha = options[:alpha] unless options[:alpha].nil?
27
+ @alpha_numeric = options[:alpha_numeric] unless options[:alpha_numeric].nil?
28
+ @alpha_dash = options[:alpha_dash] unless options[:alpha_dash].nil?
29
+ @zip_code = options[:zip_code] unless options[:zip_code].nil?
30
+ @postal_or_zip_code = options[:postal_or_zip_code] unless options[:postal_or_zip_code].nil?
31
+ end
32
+ end
@@ -27,7 +27,7 @@ Dummy::Application.configure do
27
27
  # Tell Action Mailer not to deliver emails to the real world.
28
28
  # The :test delivery method accumulates sent emails in the
29
29
  # ActionMailer::Base.deliveries array.
30
- config.action_mailer.delivery_method = :test
30
+ #config.action_mailer.delivery_method = :test
31
31
 
32
32
  # Use SQL instead of Active Record's schema dumper when creating the test database.
33
33
  # This is necessary if your schema can't be completely dumped by the schema dumper,
@@ -1,7 +1,255 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class OmgValidatorTest < ActiveSupport::TestCase
4
+ def setup
5
+ @thing = nil
6
+ @thing = Thing.new({
7
+ alpha: Things.alphas[:valid].sample,
8
+ alpha_numeric: Things.alpha_numerics[:valid].sample,
9
+ alpha_dash: Things.alpha_dashes[:valid].sample,
10
+ zip_code: Things.zip_codes[:valid].sample,
11
+ postal_or_zip_code: Things.postal_codes[:valid].sample
12
+ })
13
+ end
14
+
15
+ def teardown
16
+ @thing = nil
17
+ end
18
+
4
19
  test "truth" do
5
20
  assert_kind_of Module, OmgValidator
6
21
  end
22
+
23
+ # alpha
24
+ test "thing should be invalid if alpha contains non-alpha characters" do
25
+ Things.alphas[:invalid].each do |alpha|
26
+ @thing.alpha = alpha
27
+ assert !@thing.valid?, "#{alpha} - #{@thing.errors.full_messages.join("\n")}"
28
+ end
29
+ end
30
+
31
+ test "thing should be valid if alpha contains only alpha characters" do
32
+ Things.alphas[:valid].each do |alpha|
33
+ @thing.alpha = alpha
34
+ assert @thing.valid?, "#{alpha} - #{@thing.errors.full_messages.join("\n")}"
35
+ end
36
+ end
37
+
38
+ # alpha numeric
39
+ test "thing should be invalid if alpha_numeric contains non-alpha-numeric characters" do
40
+ Things.alpha_numerics[:invalid].each do |alpha_numeric|
41
+ @thing.alpha_numeric = alpha_numeric
42
+ assert !@thing.valid?, "#{alpha_numeric} - #{@thing.errors.full_messages.join("\n")}"
43
+ end
44
+ end
45
+
46
+
47
+ test "thing should be valid if alpha_numeric contains only alpha-numeric characters" do
48
+ Things.alpha_numerics[:valid].each do |alpha_numeric|
49
+ @thing.alpha_numeric = alpha_numeric
50
+ assert @thing.valid?, "#{alpha_numeric} - #{@thing.errors.full_messages.join("\n")}"
51
+ end
52
+ end
53
+
54
+ # alpha dash
55
+ test "thing should be invalid if alpha_dash contains non-alpha-numeric-dashes characters" do
56
+ Things.alpha_dashes[:invalid].each do |alpha_dash|
57
+ @thing.alpha_dash = alpha_dash
58
+ assert !@thing.valid?, "#{alpha_dash} - #{@thing.errors.full_messages.join("\n")}"
59
+ end
60
+ end
61
+
62
+ test "thing should be valid if alpha_dash contains only alpha-numeric-dashes characters" do
63
+ Things.alpha_dashes[:valid].each do |alpha_dash|
64
+ @thing.alpha_dash = alpha_dash
65
+ assert @thing.valid? "#{alpha_dash} - #{@thing.errors.full_messages.join("\n")}"
66
+ end
67
+ end
68
+
69
+ test "thing should be valid if alpha_dash contains only alpha or dash characters" do
70
+ Things.alpha_dashes[:valid].each do |alpha_dash|
71
+ @thing.alpha_dash = alpha_dash
72
+ assert @thing.valid?, "#{alpha_dash} - #{@thing.errors.full_messages.join("\n")}"
73
+ end
74
+ end
75
+
76
+ # zip code
77
+ test "thing should be invalid if zip_code is not a valid zip_code" do
78
+ Things.zip_codes[:invalid].each do |zip|
79
+ @thing.zip_code = zip
80
+ assert !@thing.valid?, "#{zip} - #{@thing.errors.full_messages.join("\n")}"
81
+ end
82
+ end
83
+
84
+ test "thing should be valid if zip_code is a valid zip code" do
85
+ Things.zip_codes[:valid].each do |zip|
86
+ @thing.zip_code = zip
87
+ assert @thing.valid?, "#{zip} - #{@thing.errors.full_messages.join("\n")}"
88
+ end
89
+ end
90
+
91
+ # postal or zip code
92
+ test "thing should be invalid if postal_or_zip_code is not a valid postal or zip code" do
93
+ Things.postal_codes[:invalid].concat(Things.zip_codes[:invalid]).each do |zip_or_postal|
94
+ @thing.postal_or_zip_code = zip_or_postal
95
+ assert !@thing.valid?, "#{zip_or_postal} - #{@thing.errors.full_messages.join("\n")}"
96
+ end
97
+ end
98
+
99
+ test "thing should be valid if postal_or_zip_code is a valid postal or zip code" do
100
+ Things.postal_codes[:valid].concat(Things.zip_codes[:valid]).each do |zip_or_postal|
101
+ @thing.postal_or_zip_code = zip_or_postal
102
+ assert @thing.valid?, "#{zip_or_postal} - #{@thing.errors.full_messages.join("\n")}"
103
+ end
104
+ end
105
+
106
+ # postal code
107
+ test "thing should be valid if postal_code is a valid postal code" do
108
+ Things.postal_codes[:valid].each do |code|
109
+ @thing.postal_code = code
110
+ assert @thing.valid?, "#{code} - #{@thing.errors.full_messages.join("\n")}"
111
+ end
112
+ end
113
+
114
+ test "thing should be invalid if postal_code is not a valid postal code" do
115
+ Things.postal_codes[:invalid].each do |code|
116
+ @thing.postal_code = code
117
+ assert !@thing.valid?, "#{code} - #{@thing.errors.full_messages.join("\n")}"
118
+ end
119
+ end
120
+
121
+ # decimals
122
+ test "thing should be valid if decimal is a valid decimal" do
123
+ Things.decimals[:valid].each do |decimal|
124
+ @thing.decimal = decimal
125
+ assert @thing.valid?, "#{decimal} - #{@thing.errors.full_messages.join("\n")}"
126
+ end
127
+ end
128
+
129
+ test "thing should be invalid if decimal is not a valid decimal" do
130
+ Things.decimals[:invalid].each do |decimal|
131
+ @thing.decimal = decimal
132
+ assert !@thing.valid?, "#{decimal} - #{@thing.errors.full_messages.join("\n")}"
133
+ end
134
+ end
135
+
136
+ # integer
137
+ test "thing should be valid if integer is a valid integer" do
138
+ Things.integers[:valid].each do |integer|
139
+ @thing.integer = integer
140
+ assert @thing.valid?, "#{integer} - #{@thing.errors.full_messages.join("\n")}"
141
+ end
142
+ end
143
+
144
+ test "thing should be invalid if integer is not a valid integer" do
145
+ Things.integers[:invalid].each do |integer|
146
+ @thing.integer = integer
147
+ assert !@thing.valid?, "#{integer} - #{@thing.errors.full_messages.join("\n")}"
148
+ end
149
+ end
150
+
151
+ # numeric
152
+ test "thing should be valid if numeric is a valid numeric" do
153
+ Things.numeric[:valid].each do |numeric|
154
+ @thing.numeric = numeric
155
+ assert @thing.valid?, "#{numeric} - #{@thing.errors.full_messages.join("\n")}"
156
+ end
157
+ end
158
+
159
+ test "thing should be invalid if numeric is not a valid numeric" do
160
+ Things.numeric[:invalid].each do |numeric|
161
+ @thing.numeric = numeric
162
+ assert !@thing.valid?, "#{numeric} - #{@thing.errors.full_messages.join("\n")}"
163
+ end
164
+ end
165
+
166
+ # email
167
+ test "thing should be valid if email is a valid email" do
168
+ Things.emails[:valid].each do |email|
169
+ @thing.email = email
170
+ assert @thing.valid?, "#{email} - #{@thing.errors.full_messages.join("\n")}"
171
+ end
172
+ end
173
+
174
+ test "thing should be invalid if email is not a valid email" do
175
+ Things.emails[:invalid].each do |email|
176
+ @thing.email = email
177
+ assert !@thing.valid?, "#{email} - #{@thing.errors.full_messages.join("\n")}"
178
+ end
179
+ end
180
+
181
+ # ip address
182
+ test "thing should be valid if ip_address is a valid ip address" do
183
+ Things.ip_addresses[:valid].each do |ip|
184
+ @thing.ip_address = ip
185
+ assert @thing.valid?, "#{ip} - #{@thing.errors.full_messages.join("\n")}"
186
+ end
187
+ end
188
+
189
+ test "thing should be invalid if ip_address is not a valid ip address" do
190
+ Things.ip_addresses[:invalid].each do |ip|
191
+ @thing.ip_address = ip
192
+ assert !@thing.valid?, "#{ip} - #{@thing.errors.full_messages.join("\n")}"
193
+ end
194
+ end
195
+
196
+ # url
197
+ test "thing should be valid if url is a valid url" do
198
+ Things.urls[:valid].each do |url|
199
+ @thing.url = url
200
+ assert @thing.valid?, "#{url} - #{@thing.errors.full_messages.join("\n")}"
201
+ end
202
+ end
203
+
204
+ test "thing should be invalid if url is not a valid url" do
205
+ Things.urls[:invalid].each do |url|
206
+ @thing.url = url
207
+ assert !@thing.valid?, "#{url} - #{@thing.errors.full_messages.join("\n")}"
208
+ end
209
+ end
210
+
211
+ # phone number
212
+ test "thing should be valid if phone is a valid phone number" do
213
+ Things.phone_numbers[:valid].each do |phone|
214
+ @thing.phone = phone
215
+ assert @thing.valid?, "#{phone} - #{@thing.errors.full_messages.join("\n")}"
216
+ end
217
+ end
218
+
219
+ test "thing should be invalid if phone is not a valid phone number" do
220
+ Things.phone_numbers[:invalid].each do |phone|
221
+ @thing.phone = phone
222
+ assert !@thing.valid?, "#{phone} - #{@thing.errors.full_messages.join("\n")}"
223
+ end
224
+ end
225
+
226
+ # strong password
227
+ test "thing should be valid if password is a valid strong password" do
228
+ Things.strong_passwords[:valid].each do |password|
229
+ @thing.password = password
230
+ assert @thing.valid?, "#{password} - #{@thing.errors.full_messages.join("\n")}"
231
+ end
232
+ end
233
+
234
+ test "thing should be invalid if password is not a valid strong password" do
235
+ Things.strong_passwords[:invalid].each do |password|
236
+ @thing.password = password
237
+ assert !@thing.valid?, "#{password} - #{@thing.errors.full_messages.join("\n")}"
238
+ end
239
+ end
240
+
241
+ # date
242
+ test "thing should be valid if date is a valid date" do
243
+ Things.dates[:valid].each do |date|
244
+ @thing.date = date
245
+ assert @thing.valid?, "#{date} - #{@thing.errors.full_messages.join("\n")}"
246
+ end
247
+ end
248
+
249
+ test "thing should be invalid if date is not a valid date" do
250
+ Things.dates[:invalid].each do |date|
251
+ @thing.date = date
252
+ assert !@thing.valid?, "#{date} - #{@thing.errors.full_messages.join("\n")}"
253
+ end
254
+ end
7
255
  end