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