Add Mobile Phone validation to SpeakerProfile

This commit is contained in:
Petko Bordjukov 2014-08-07 14:45:58 +03:00
parent 867d2f4fab
commit 068ea45cbe
5 changed files with 35 additions and 3 deletions

View File

@ -21,6 +21,9 @@ gem 'devise-i18n'
gem 'simple_form' gem 'simple_form'
# Phone validation
gem 'phony_rails'
group :development do group :development do
gem 'spring' gem 'spring'
gem 'spring-commands-rspec' gem 'spring-commands-rspec'

View File

@ -47,6 +47,9 @@ GEM
coffee-script-source coffee-script-source
execjs execjs
coffee-script-source (1.7.1) coffee-script-source (1.7.1)
countries (0.9.3)
currencies (~> 0.4.2)
currencies (0.4.2)
devise (3.2.4) devise (3.2.4)
bcrypt (~> 3.0) bcrypt (~> 3.0)
orm_adapter (~> 0.1) orm_adapter (~> 0.1)
@ -99,6 +102,11 @@ GEM
mini_portile (= 0.6.0) mini_portile (= 0.6.0)
orm_adapter (0.5.0) orm_adapter (0.5.0)
pg (0.17.1) pg (0.17.1)
phony (2.2.14)
phony_rails (0.6.1)
activesupport (>= 3.0)
countries (>= 0.8.2)
phony (~> 2.1)
polyglot (0.3.5) polyglot (0.3.5)
pry (0.10.0) pry (0.10.0)
coderay (~> 1.1.0) coderay (~> 1.1.0)
@ -221,6 +229,7 @@ DEPENDENCIES
guard-rspec guard-rspec
jquery-rails jquery-rails
pg pg
phony_rails
rails (= 4.1.4) rails (= 4.1.4)
rails-erd rails-erd
rails-i18n rails-i18n

View File

@ -4,6 +4,8 @@ class SpeakerProfile < ActiveRecord::Base
validates :first_name, presence: true validates :first_name, presence: true
validates :last_name, presence: true validates :last_name, presence: true
validates :photo_url, presence: true validates :photo_url, presence: true
validates :mobile_phone, presence: true validates :mobile_phone, phony_plausible: true, presence: true
validates :biography, presence: true validates :biography, presence: true
phony_normalize :mobile_phone, default_country_code: 'BG'
end end

View File

@ -21,3 +21,6 @@
bg: bg:
hello: "Здравей, свят" hello: "Здравей, свят"
errors:
messages:
improbable_phone: 'не е валиден телефонен номер'

View File

@ -13,10 +13,25 @@ RSpec.describe SpeakerProfile, :type => :model do
expect(build(:speaker_profile, photo_url: nil)).to have_error_on :photo_url expect(build(:speaker_profile, photo_url: nil)).to have_error_on :photo_url
end end
it 'is invalid without a mobile phone' do describe 'mobile_phone' do
it 'must be present' do
expect(build(:speaker_profile, mobile_phone: nil)).to have_error_on :mobile_phone expect(build(:speaker_profile, mobile_phone: nil)).to have_error_on :mobile_phone
end end
it 'must be a valid phone number' do
expect(build(:speaker_profile, mobile_phone: 'abc')).to have_error_on :mobile_phone
end
it 'is stored in a normalized form' do
speaker_profile = create :speaker_profile, mobile_phone: '0883444555'
expect(speaker_profile.mobile_phone).to eq '359883444555'
speaker_profile.mobile_phone = '+1883444555'
speaker_profile.save
expect(speaker_profile.mobile_phone).to eq '1883444555'
end
end
it 'is invalid without a bio' do it 'is invalid without a bio' do
expect(build(:speaker_profile, biography: nil)).to have_error_on :biography expect(build(:speaker_profile, biography: nil)).to have_error_on :biography
end end