adds methods to add/remove official position

This commit is contained in:
Juanjo Bazán
2015-08-16 21:52:27 +02:00
parent d80fd8e468
commit e29ae67f31
3 changed files with 42 additions and 0 deletions

View File

@@ -8,6 +8,7 @@ class User < ActiveRecord::Base
validates :first_name, presence: true, unless: :use_nickname?
validates :last_name, presence: true, unless: :use_nickname?
validates :nickname, presence: true, if: :use_nickname?
validates :official_level, inclusion: {in: 0..5}
def name
use_nickname? ? nickname : "#{first_name} #{last_name}"
@@ -29,4 +30,12 @@ class User < ActiveRecord::Base
def official?
official_level && official_level > 0
end
def add_official_position!(position, level)
update official_position: position, official_level: level.to_i
end
def remove_official_position!
update official_position: nil, official_level: 0
end
end

View File

@@ -12,6 +12,7 @@
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20150815154430) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"

View File

@@ -120,4 +120,36 @@ describe User do
end
end
describe "add_official_position!" do
it "is false when level not valid" do
expect(subject.add_official_position!("Boss", 89)).to be false
end
it "updates official position fields" do
expect(subject).not_to be_official
subject.add_official_position!("Veterinarian", 2)
expect(subject).to be_official
expect(subject.official_position).to eq("Veterinarian")
expect(subject.official_level).to eq(2)
subject.add_official_position!("Brain surgeon", 3)
expect(subject.official_position).to eq("Brain surgeon")
expect(subject.official_level).to eq(3)
end
end
describe "remove_official_position!" do
it "updates official position fields" do
subject.add_official_position!("Brain surgeon", 3)
expect(subject).to be_official
subject.remove_official_position!
expect(subject).not_to be_official
expect(subject.official_position).to be_nil
expect(subject.official_level).to eq(0)
end
end
end