Basic ident and phone validations

This commit is contained in:
Andres Keskküla 2014-07-25 14:19:21 +03:00
parent 256f564327
commit 1645b3e96f
6 changed files with 45 additions and 3 deletions

View file

@ -37,6 +37,9 @@ gem 'nokogiri', '~> 1.6.2.1'
# For punycode
gem 'simpleidn', '~> 0.0.5'
#for EE-id validation
gem 'isikukood'
group :assets do
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
gem 'therubyracer', platforms: :ruby

View file

@ -62,6 +62,7 @@ GEM
hike (1.2.3)
hpricot (0.8.6)
i18n (0.6.9)
isikukood (0.1.2)
jbuilder (2.1.1)
activesupport (>= 3.0.0, < 5)
multi_json (~> 1.2)
@ -185,6 +186,7 @@ DEPENDENCIES
fabrication (~> 2.11.3)
faker (~> 1.3.0)
haml-rails (~> 0.5.3)
isikukood
jbuilder (~> 2.0)
jquery-rails
nokogiri (~> 1.6.2.1)

View file

@ -1,7 +1,16 @@
class Contact < ActiveRecord::Base
#TODO Estonian id validation
#TODO Foreign contact will get email with activation link/username/temp password
#TODO Phone number validation, in first phase very minimam in order to support current registries
has_many :addresses
validate :ident_must_be_valid
validates :phone, format: { with: /\+\d{3}\.\d+/, message: "bad format" }
def ident_must_be_valid
#TODO Ident can also be passport number or company registry code.
#so have to make changes to validations (and doc/schema) accordingly
return true unless ident.present?
code = Isikukood.new(ident)
errors.add(:ident, 'bad format') unless code.valid?
end
end

View file

@ -17,10 +17,10 @@
<contact:cc>EE</contact:cc>
</contact:addr>
</contact:postalInfo>
<contact:voice x="1234">+1.7035555555</contact:voice>
<contact:voice x="1234">+123.7035555555</contact:voice>
<contact:fax>+1.7035555556</contact:fax>
<contact:email>jdoe@example.com</contact:email>
<contact:ident>12345678901</contact:ident>
<contact:ident>37605030299</contact:ident>
<contact:authInfo>
<contact:pw>2fooBAR</contact:pw>
</contact:authInfo>

View file

@ -0,0 +1,6 @@
Fabricator(:contact) do
name Faker::Name.name
phone '+372.12345678'
email Faker::Internet.email
ident '37605030299'
end

View file

@ -2,4 +2,26 @@ require "rails_helper"
describe Contact do
it { should have_many(:addresses) }
context 'with invalid attribute' do
before(:each) { @contact = Fabricate(:contact) }
it 'phone should return false' do
@contact.phone = "32341"
expect(@contact.valid?).to be false
end
it 'ident should return false' do
@contact.ident = "123abc"
expect(@contact.valid?).to be false
end
end
context 'with valid attributes' do
before(:each) { @contact = Fabricate(:contact) }
it 'should return true' do
expect(@contact.valid?).to be true
end
end
end