У меня есть метод области действия в модели оценки, который я вызываю в AssessmentsController для сбора оценок, но я не могу создать тест для этого метода, потому что: 1) в ответ я не получаю risk_value
, но в контроллер (@assessments.with_assessment_progresses(@customer_id)
) я получаю это:
[
{
"id": 4,
"name": "Assessment_1",
"created_at": "2020-04-01T17:29:50.528Z",
"updated_at": "2020-04-01T17:29:50.528Z",
"risk_value": "3.92156862745098"
},
...
]
2) Я не понимаю, как удалить created_at
и updated_at
из результата.
app / models /valuation.rb
scope :with_assessment_progresses, ->(customer_id) {
joins(Arel.sql("LEFT JOIN assessment_progresses ON (assessment_progresses.assessment_id = assessments.id AND assessment_progresses.customer_id = #{customer_id})")).
select("assessments.*, assessment_progresses.risk_value")
}
spec / models /valuation_spe c .rb
describe "Method 'with_assessment_progresses'" do
let!(:admin) { create(:admin) }
let!(:customer) { create(:customer, created_by: admin.id) }
let!(:assessment) { create(:assessment) }
let!(:assessment_progress_1) { create(:assessment_progress, customer_id: customer.id, assessment_id: assessment.id, risk_value: 3.812) }
it "return assessments with risk_value for customer" do
assessment_with_risk = Assessment.with_assessment_progresses(customer.id)
assessment_with_risk.delete("created_at")
assessment_with_risk.delete("updated_at")
expect(assessment_with_risk.length).to eq(1)
expect(assessment_with_risk).to eq(
[
{
"id"=> assessment.id,
"name"=> assessment.name,
"risk_value"=> assessment_progress_1.risk_value
}
]
)
end
end