vendredi 15 avril 2016

rspec testing getter and setter methods

task.rb

#executor (user class) has one profile and has many tasks.

def task_name_company
  [executor.try(:profile).try(:first_name), executor.try(:profile).try(:last_name), executor.try(:profile).try(:company)].join(' ')
end

def task_name_company=(name)
  self.executor = User.joins(:profile).where("CONCAT_WS(' ', first_name, last_name, company) LIKE ?", "%#{name}%").first if name.present?
rescue ArgumentError
  self.executor = nil
end

task_spec.rb

let(:task) = { create(:task) }
let(:user) = { create(:user) }
let(:profile = { create(:profile) }


# I tested the getter like this and seems to be working
it "task_name_company getter" do
  task.executor.profile = profile
  expect(task.task_name_company).to eq("John Doe ABC Inc")
end

# I don't know how to test the setter method

it "task_name_company setter" do
end

Aucun commentaire:

Enregistrer un commentaire