Adds nickname-related validations & name to User
This commit is contained in:
@@ -2,7 +2,11 @@ class User < ActiveRecord::Base
|
||||
devise :database_authenticatable, :registerable, :confirmable,
|
||||
:recoverable, :rememberable, :trackable, :validatable
|
||||
|
||||
validates :first_name, presence: true, unless: :use_nickname?
|
||||
validates :last_name, presence: true, unless: :use_nickname?
|
||||
validates :nickname, presence: true, if: :use_nickname?
|
||||
|
||||
def name
|
||||
"#{first_name} #{last_name}"
|
||||
use_nickname? ? nickname : "#{first_name} #{last_name}"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,4 +1,50 @@
|
||||
require 'rails_helper'
|
||||
|
||||
describe User do
|
||||
subject { build(:user) }
|
||||
|
||||
it "is valid" do
|
||||
expect(subject).to be_valid
|
||||
end
|
||||
|
||||
describe 'use_nickname' do
|
||||
describe 'when true' do
|
||||
before { subject.use_nickname = true }
|
||||
|
||||
it "activates the validation of nickname" do
|
||||
subject.nickname = nil
|
||||
expect(subject).to_not be_valid
|
||||
|
||||
subject.nickname = "dredd"
|
||||
expect(subject).to be_valid
|
||||
end
|
||||
|
||||
it "calculates the name using the nickname" do
|
||||
subject.nickname = "dredd"
|
||||
expect(subject.name).to eq("dredd")
|
||||
end
|
||||
end
|
||||
|
||||
describe 'when false' do
|
||||
before { subject.use_nickname = false }
|
||||
|
||||
it "activates the validation of first_name and last_name" do
|
||||
subject.first_name = nil
|
||||
subject.last_name = nil
|
||||
expect(subject).to_not be_valid
|
||||
|
||||
subject.first_name = "Joseph"
|
||||
subject.last_name = "Dredd"
|
||||
expect(subject).to be_valid
|
||||
end
|
||||
|
||||
it "calculates the name using first_name and last_name" do
|
||||
subject.first_name = "Joseph"
|
||||
subject.last_name = "Dredd"
|
||||
expect(subject.name).to eq("Joseph Dredd")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user