ama_validators 0.0.5 → 0.0.6
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
- data/.gitignore +2 -0
- data/.travis.yml +1 -1
- data/lib/ama_validators/name_format_validator.rb +7 -0
- data/lib/ama_validators/province_validator.rb +24 -0
- data/lib/ama_validators/version.rb +1 -1
- data/lib/ama_validators.rb +2 -0
- data/spec/name_format_validator_spec.rb +51 -0
- data/spec/province_validator_spec.rb +52 -0
- metadata +9 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64029a3e49c71deed296020736920b6907e0d572
|
4
|
+
data.tar.gz: 894448afc757c3165d1634f0011fa2974d05fb4a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a9b49b334d61fc0f831328317cb21212020b2520be6e5bd5ecd5d276aa8b13cd2fa9d44945e792b0b33da363ab19ea83f205779a81d41941403773fc87e0d537
|
7
|
+
data.tar.gz: 6ffae19b0cfa27123b2ed6e6a851caa2f1abb460cdcaaffea0b56325b1dca29bbd3a8da2a0ac2127461241b095fcb7b22b719b1df80f962dee67d9ac1f3d72f4
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -0,0 +1,7 @@
|
|
1
|
+
class NameFormatValidator < ActiveModel::EachValidator
|
2
|
+
def validate_each(object, attribute, value)
|
3
|
+
unless value =~ /\A[\sa-zA-ZÀàÂâÄäÈèÉéÊêËëÎîÏïÔôŒœÙùÛûÜüŸÿÇç,.'-]+\z/
|
4
|
+
object.errors[attribute] << (options[:message] || "We're sorry your name cannot contain any special characters")
|
5
|
+
end
|
6
|
+
end
|
7
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# Use this with
|
2
|
+
# validates :your_province_field, province: { country: :your_country_field }
|
3
|
+
|
4
|
+
class ProvinceValidator < ActiveModel::EachValidator
|
5
|
+
def validate_each(object, attribute, value)
|
6
|
+
provinces = PROV_STATE[object.send(options[:country])]
|
7
|
+
if !provinces.try(:include?, value)
|
8
|
+
object.errors[attribute] << (options[:message] || 'Province/State is in selected country.')
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
PROV_STATE = {
|
13
|
+
canada: ['Alberta', 'British Columbia', 'Manitoba', 'New Brunswick', 'Newfoundland', 'Nova Scotia',
|
14
|
+
'Northwest Territories', 'Nunavut', 'Ontario', 'Prince Edward Island', 'Saskatchewan',
|
15
|
+
'Quebec', 'Yukon'],
|
16
|
+
usa: ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware',
|
17
|
+
'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky',
|
18
|
+
'Louisiana', 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi',
|
19
|
+
'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', 'New Mexico',
|
20
|
+
'New York', 'North Carolina', 'North Dakota', 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania',
|
21
|
+
'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont',
|
22
|
+
'Virginia', 'Washington', 'Washington, D.C', 'West Virginia', 'Wisconsin', 'Wyoming']
|
23
|
+
}
|
24
|
+
end
|
data/lib/ama_validators.rb
CHANGED
@@ -7,5 +7,7 @@ module AmaValidators
|
|
7
7
|
require 'ama_validators/credit_card_format_validator'
|
8
8
|
require 'ama_validators/membership_number_format_validator'
|
9
9
|
require 'ama_validators/phone_number_format_validator'
|
10
|
+
require 'ama_validators/province_validator'
|
11
|
+
require 'ama_validators/name_format_validator'
|
10
12
|
|
11
13
|
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'factories/profiles.rb'
|
2
|
+
|
3
|
+
describe NameFormatValidator do
|
4
|
+
|
5
|
+
let(:subject) { NameFormatValidator }
|
6
|
+
let (:object) { Profile.new }
|
7
|
+
|
8
|
+
invalid_names = %w[A%^dam G∫ Ra©©øøl œ∑´®††a †††¬∆µ ©ƒ∂ßåΩ ≈ç√∫µ@]
|
9
|
+
valid_names = %w[George Jerry Elaine Kramer Jean-François Noël étè]
|
10
|
+
|
11
|
+
context 'Wrong name format' do
|
12
|
+
context 'No message is sent on the options' do
|
13
|
+
it 'it returns error message expecified on the validator' do
|
14
|
+
n = subject.new( { attributes: :first_name } )
|
15
|
+
invalid_names.each do |invalid_name|
|
16
|
+
expect(n.validate_each(object, :first_name, invalid_name)).to include("We're sorry your name cannot contain any special characters")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'Message is sent on the options' do
|
22
|
+
it 'it returns error message expecified on the options' do
|
23
|
+
n = subject.new( { message: 'Test error message', attributes: :first_name } )
|
24
|
+
invalid_names.each do |invalid_name|
|
25
|
+
expect(n.validate_each(object, :first_name, invalid_name)).to include('Test error message')
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'Correct name format' do
|
32
|
+
|
33
|
+
context 'No message is sent on the options' do
|
34
|
+
it 'it does not return error message' do
|
35
|
+
n = subject.new( { attributes: :first_name } )
|
36
|
+
valid_names.each do |valid_name|
|
37
|
+
expect(n.validate_each(object, :first_name, valid_name)).to equal(nil)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context 'Message is sent on the options' do
|
43
|
+
it 'it does not return error message' do
|
44
|
+
n = subject.new( { message: 'Test error message', attributes: :first_name } )
|
45
|
+
valid_names.each do |valid_name|
|
46
|
+
expect(n.validate_each(object, :first_name, valid_name)).to equal(nil)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ProvinceValidator do
|
4
|
+
class Validatable
|
5
|
+
include ActiveModel::Validations
|
6
|
+
include ActiveModel::Model
|
7
|
+
attr_accessor :country, :province
|
8
|
+
|
9
|
+
validates :province, province: { country: :country }
|
10
|
+
end
|
11
|
+
|
12
|
+
subject { Validatable.new({ country: country, province: province }) }
|
13
|
+
|
14
|
+
context 'province is in selected country' do
|
15
|
+
let(:country) { :canada }
|
16
|
+
let(:province) { 'Alberta' }
|
17
|
+
|
18
|
+
it 'is valid' do
|
19
|
+
expect(subject).to be_valid
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'province is not in selected country' do
|
24
|
+
let(:country) { :canada }
|
25
|
+
let(:province) { 'Alabama' }
|
26
|
+
|
27
|
+
it 'is not valid' do
|
28
|
+
expect(subject).to_not be_valid
|
29
|
+
expect(subject.errors[:province]).to_not be_empty
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'province is blank' do
|
34
|
+
let(:country) { :canada }
|
35
|
+
let(:province) { '' }
|
36
|
+
|
37
|
+
it 'is not valid' do
|
38
|
+
expect(subject).to_not be_valid
|
39
|
+
expect(subject.errors[:province]).to_not be_empty
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context 'province is nil' do
|
44
|
+
let(:country) { :canada }
|
45
|
+
let(:province) { nil }
|
46
|
+
|
47
|
+
it 'is not valid' do
|
48
|
+
expect(subject).to_not be_valid
|
49
|
+
expect(subject.errors[:province]).to_not be_empty
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ama_validators
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael van den Beuken
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date:
|
16
|
+
date: 2015-10-22 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: bundler
|
@@ -139,15 +139,19 @@ files:
|
|
139
139
|
- lib/ama_validators/credit_card_format_validator.rb
|
140
140
|
- lib/ama_validators/email_format_validator.rb
|
141
141
|
- lib/ama_validators/membership_number_format_validator.rb
|
142
|
+
- lib/ama_validators/name_format_validator.rb
|
142
143
|
- lib/ama_validators/phone_number_format_validator.rb
|
143
144
|
- lib/ama_validators/postal_code_format_validator.rb
|
145
|
+
- lib/ama_validators/province_validator.rb
|
144
146
|
- lib/ama_validators/version.rb
|
145
147
|
- spec/credit_card_format_validator_spec.rb
|
146
148
|
- spec/email_format_validator_spec.rb
|
147
149
|
- spec/factories/profiles.rb
|
148
150
|
- spec/membership_number_format_validator_spec.rb
|
151
|
+
- spec/name_format_validator_spec.rb
|
149
152
|
- spec/phone_number_format_validator_spec.rb
|
150
153
|
- spec/postal_code_format_validator_spec.rb
|
154
|
+
- spec/province_validator_spec.rb
|
151
155
|
- spec/spec_helper.rb
|
152
156
|
homepage: https://github.com/amaabca/ama_validators
|
153
157
|
licenses:
|
@@ -169,7 +173,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
169
173
|
version: '0'
|
170
174
|
requirements: []
|
171
175
|
rubyforge_project:
|
172
|
-
rubygems_version: 2.4.
|
176
|
+
rubygems_version: 2.4.5
|
173
177
|
signing_key:
|
174
178
|
specification_version: 4
|
175
179
|
summary: This gem will compile the following validators - Credit card - Email - Membership
|
@@ -180,6 +184,8 @@ test_files:
|
|
180
184
|
- spec/email_format_validator_spec.rb
|
181
185
|
- spec/factories/profiles.rb
|
182
186
|
- spec/membership_number_format_validator_spec.rb
|
187
|
+
- spec/name_format_validator_spec.rb
|
183
188
|
- spec/phone_number_format_validator_spec.rb
|
184
189
|
- spec/postal_code_format_validator_spec.rb
|
190
|
+
- spec/province_validator_spec.rb
|
185
191
|
- spec/spec_helper.rb
|