format_validator 0.0.4 → 0.0.5

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
  SHA1:
3
- metadata.gz: c12190d354629682f5b6170ee284421d864abe59
4
- data.tar.gz: 5d9bc02e416b14c2644cef9d2c6f5d6b105648e7
3
+ metadata.gz: 85766a3287dd11e546adc7d1422e7351cc2abff2
4
+ data.tar.gz: d0f70f024444a0baca1efc91848277aa6b7acbd1
5
5
  SHA512:
6
- metadata.gz: e10d8ea27a8cda27fde3897b63c7234777280002ccfc8e5fcdd73d8e01f20144526dbb87203e26d3506df5d96146878839533b800731f3bab1f507fa8ac31654
7
- data.tar.gz: 8425a246aae184a2fe81b1e2b98ce1f55d75eda5ea02220c75abf1e8dca6074ef4585a47423e79bca8b8b9fed96a25c16acf1b9250c15b815f37d8dd68f494de
6
+ metadata.gz: 47de56e8c03ef94eedccb0224206de5f04ba966bd2aab49b2b60d73d6e45ec9be5da6bb553b817d22762cc98b3c2eb567dd247c63df435ee5e908a203d9cfded
7
+ data.tar.gz: a710d6418ec8d4a03e46972832e999de93b17ba8b62f550850ada005fee093ef53d607005a7bd8dba92538fbffc47dbcaba84f872f7a257c72358db717044a4e
data/.travis.yml CHANGED
@@ -1,3 +1,4 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - 1.9.3
4
+ - 2.0.0
data/CHANGELOG CHANGED
@@ -15,3 +15,10 @@
15
15
  * Validate hostname
16
16
  * Update README
17
17
  * Minor fix for url validator regex
18
+
19
+
20
+ ## v0.0.5
21
+
22
+ * Add validations for zip code short format
23
+ * Validate SSN
24
+ * Change regex to be treated as string
data/README.md CHANGED
@@ -19,7 +19,9 @@ validates :email, email_format: true
19
19
  validates :url, url_format: true
20
20
  validates :hostname, hostname_format: true
21
21
  validates :zip_code, zip_code_format: true
22
+ validates :zip_code, zip_code_short_format: true
22
23
  validates :expiration_date, future_date: true
24
+ validates :ssn, ssn_format: true
23
25
  ```
24
26
 
25
27
  ## Contributing
@@ -2,7 +2,7 @@ module ActiveModel
2
2
  module Validations
3
3
  class EmailFormatValidator < ActiveModel::EachValidator
4
4
  def validate_each(object, attribute, value)
5
- unless value =~ /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i
5
+ unless value =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
6
6
  object.errors[attribute] << (options[:message] || I18n.t('form.errors.email'))
7
7
  end
8
8
  end
@@ -0,0 +1,11 @@
1
+ module ActiveModel
2
+ module Validations
3
+ class SsnFormatValidator < ActiveModel::EachValidator
4
+ def validate_each(object, attribute, value)
5
+ unless value =~ /\A\d{3}-\d{2}-\d{4}\z/
6
+ object.errors[attribute] << (options[:message] || I18n.t('form.errors.ssn'))
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module FormatValidator
2
- VERSION = '0.0.4'
2
+ VERSION = '0.0.5'
3
3
  end
@@ -2,7 +2,15 @@ module ActiveModel
2
2
  module Validations
3
3
  class ZipCodeFormatValidator < ActiveModel::EachValidator
4
4
  def validate_each(object, attribute, value)
5
- unless value =~ /^\d{5}(-\d{4})?$/
5
+ unless value =~ /\A\d{5}(-\d{4})?\z/
6
+ object.errors[attribute] << (options[:message] || I18n.t('form.errors.zip_code'))
7
+ end
8
+ end
9
+ end
10
+
11
+ class ZipCodeShortFormatValidator < ActiveModel::EachValidator
12
+ def validate_each(object, attribute, value)
13
+ unless value =~ /\A\d{5}\z/
6
14
  object.errors[attribute] << (options[:message] || I18n.t('form.errors.zip_code'))
7
15
  end
8
16
  end
@@ -4,6 +4,7 @@ require 'format_validator/url_format_validator'
4
4
  require 'format_validator/hostname_format_validator'
5
5
  require 'format_validator/zip_code_format_validator'
6
6
  require 'format_validator/future_date_validator'
7
+ require 'format_validator/ssn_format_validator'
7
8
 
8
9
  module FormatValidator
9
10
  I18n.load_path << File.expand_path('../locales/en.yml', __FILE__)
data/lib/locales/en.yml CHANGED
@@ -3,6 +3,7 @@ en:
3
3
  errors:
4
4
  date: must be in the future
5
5
  email: is invalid
6
- url: is invalid
7
6
  hostname: is invalid
7
+ ssn: is invalid
8
+ url: is invalid
8
9
  zip_code: is invalid
@@ -0,0 +1,34 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe 'SsnFormatValidator' do
4
+ describe '#validate_each' do
5
+ let(:klass) do
6
+ Class.new do
7
+ include ActiveModel::Validations
8
+ attr_accessor :ssn
9
+ validates :ssn, ssn_format: true
10
+ end
11
+ end
12
+
13
+ subject { klass.new }
14
+
15
+ describe 'valid' do
16
+ it 'should not add any error' do
17
+ subject.ssn = '123-45-6789'
18
+ subject.valid?.must_equal true
19
+ subject.errors.messages.must_be_empty
20
+ end
21
+ end
22
+
23
+ describe 'invalid' do
24
+ ['123456789', '123 45 6789', '123', '1234567890'].each do |invalid_ssn|
25
+ it "should add error when ssn is #{invalid_ssn}" do
26
+ subject.ssn = invalid_ssn
27
+ subject.valid?.must_equal false
28
+ subject.errors.messages.size.must_equal 1
29
+ subject.errors.messages[:ssn].must_equal ['is invalid']
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -34,3 +34,38 @@ describe 'ZipCodeFormatValidator' do
34
34
  end
35
35
  end
36
36
  end
37
+
38
+ describe 'ZipCodeShortFormatValidator' do
39
+ describe '#validate_each' do
40
+ let(:klass) do
41
+ Class.new do
42
+ include ActiveModel::Validations
43
+ attr_accessor :zip_code
44
+ validates :zip_code, zip_code_short_format: true
45
+ end
46
+ end
47
+
48
+ subject { klass.new }
49
+
50
+ describe 'valid' do
51
+ %w[12345].each do |zip|
52
+ it 'should not add any error' do
53
+ subject.zip_code = zip
54
+ subject.valid?.must_equal true
55
+ subject.errors.messages.must_be_empty
56
+ end
57
+ end
58
+ end
59
+
60
+ describe 'invalid' do
61
+ ['123', '123456', '123 45', '1234X', '12345-1234', '12345-234X', '12345 6789'].each do |invalid_zip_code|
62
+ it "should add error when zip code is #{invalid_zip_code}" do
63
+ subject.zip_code = invalid_zip_code
64
+ subject.valid?.must_equal false
65
+ subject.errors.messages.size.must_equal 1
66
+ subject.errors.messages[:zip_code].must_equal ['is invalid']
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: format_validator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jamal El Milahi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-05 00:00:00.000000000 Z
11
+ date: 2014-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -71,6 +71,7 @@ files:
71
71
  - lib/format_validator/email_format_validator.rb
72
72
  - lib/format_validator/future_date_validator.rb
73
73
  - lib/format_validator/hostname_format_validator.rb
74
+ - lib/format_validator/ssn_format_validator.rb
74
75
  - lib/format_validator/url_format_validator.rb
75
76
  - lib/format_validator/version.rb
76
77
  - lib/format_validator/zip_code_format_validator.rb
@@ -78,6 +79,7 @@ files:
78
79
  - spec/format_validator/email_format_validator_spec.rb
79
80
  - spec/format_validator/future_date_validator_spec.rb
80
81
  - spec/format_validator/hostname_format_validator_spec.rb
82
+ - spec/format_validator/ssn_format_validator_spec.rb
81
83
  - spec/format_validator/url_format_validator_spec.rb
82
84
  - spec/format_validator/zip_code_format_validator_spec.rb
83
85
  - spec/spec_helper.rb
@@ -101,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
101
103
  version: '0'
102
104
  requirements: []
103
105
  rubyforge_project:
104
- rubygems_version: 2.0.2
106
+ rubygems_version: 2.0.3
105
107
  signing_key:
106
108
  specification_version: 4
107
109
  summary: format_validator is a gem that adds the missing format validators to Active
@@ -110,6 +112,7 @@ test_files:
110
112
  - spec/format_validator/email_format_validator_spec.rb
111
113
  - spec/format_validator/future_date_validator_spec.rb
112
114
  - spec/format_validator/hostname_format_validator_spec.rb
115
+ - spec/format_validator/ssn_format_validator_spec.rb
113
116
  - spec/format_validator/url_format_validator_spec.rb
114
117
  - spec/format_validator/zip_code_format_validator_spec.rb
115
118
  - spec/spec_helper.rb