VRFS-1576 added validation and tests

This commit is contained in:
Jonathan Kolyer 2014-04-20 23:20:27 +00:00
parent 245727806d
commit 62dbeaa818
2 changed files with 29 additions and 4 deletions

View File

@ -4,16 +4,18 @@ class JamRuby::AffiliatePartner < ActiveRecord::Base
attr_accessible :partner_name, :partner_code, :partner_user_id
PARTNER_CODE_REGEX = /^[#{Regexp.escape('abcdefghijklmnopqrstuvwxyz0123456789-._+,')}]+{2,128}$/i
validates :user_email, format: {with: JamRuby::User::VALID_EMAIL_REGEX}, :if => :user_email
validates :partner_name, presence: true
validates :partner_code, presence: true
validates :partner_code, presence: true, format: { with: PARTNER_CODE_REGEX }
validates :partner_user, presence: true
def self.create_with_params(params={})
oo = self.new
oo.partner_name = params[:partner_name]
oo.partner_code = params[:partner_code]
oo.partner_user = User.where(:email => params[:user_email]).limit(1).first
oo.partner_name = params[:partner_name].try(:strip)
oo.partner_code = params[:partner_code].try(:strip)
oo.partner_user = User.where(:email => params[:user_email].try(:strip)).limit(1).first
oo.partner_user_id = oo.partner_user.try(:id)
oo.save!
oo

View File

@ -14,6 +14,29 @@ describe AffiliatePartner do
expect(partner.partner_user).to eq(user)
user.reload
expect(user.affiliate_partner).to eq(partner)
expect{AffiliatePartner.create_with_params({:partner_name => Faker::Company.name,
:partner_code => 'a',
:user_email => user.email})}
.to raise_error(ActiveRecord::RecordInvalid)
expect{AffiliatePartner.create_with_params({:partner_name => Faker::Company.name,
:partner_code => 'foo bar',
:user_email => user.email})}
.to raise_error(ActiveRecord::RecordInvalid)
expect{AffiliatePartner.create_with_params({:partner_name => '',
:partner_code => Faker::Lorem.word,
:user_email => user.email})}
.to raise_error(ActiveRecord::RecordInvalid)
expect{AffiliatePartner.create_with_params({:partner_name => Faker::Company.name,
:partner_code => Faker::Lorem.word,
:user_email => Faker::Internet.email})}
.to raise_error(ActiveRecord::RecordInvalid)
code = Faker::Lorem.word
oo = AffiliatePartner.create_with_params({:partner_name => Faker::Company.name,
:partner_code => " #{code} ",
:user_email => user.email})
expect(oo.partner_code).to eq(code)
end
it 'has user referrals' do