Adds nickname-related validations & name to User

This commit is contained in:
kikito
2015-08-06 16:53:18 +02:00
parent 23a21d14f2
commit 72c33330cf
2 changed files with 51 additions and 1 deletions

View File

@@ -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

View File

@@ -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