From c163d1123e35598424d295b7e8c0461063b741c4 Mon Sep 17 00:00:00 2001 From: Emma Whamond Date: Wed, 8 Jan 2025 17:03:57 -0600 Subject: [PATCH] 82 | Scope query for completed and assigned evaluations --- app/helpers/evaluations_helper.rb | 4 +++- spec/helpers/evaluations_helper_spec.rb | 20 ++++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/app/helpers/evaluations_helper.rb b/app/helpers/evaluations_helper.rb index 81048e05..43e8b1b5 100644 --- a/app/helpers/evaluations_helper.rb +++ b/app/helpers/evaluations_helper.rb @@ -36,7 +36,9 @@ def average_score(submission) return Score.new(0, "0", "N/A") if assigned_evaluations.empty? - completed_evaluations = submission.evaluations.where.not(completed_at: nil) + completed_evaluations = submission.evaluations. + where(evaluator_submission_assignment: assigned_evaluations). + where.not(completed_at: nil) unless completed_evaluations.count == assigned_evaluations.count return Score.new(0, "0", "N/A") diff --git a/spec/helpers/evaluations_helper_spec.rb b/spec/helpers/evaluations_helper_spec.rb index d586f5df..0b8aeac1 100644 --- a/spec/helpers/evaluations_helper_spec.rb +++ b/spec/helpers/evaluations_helper_spec.rb @@ -126,8 +126,24 @@ end it "does not include recused scores in the average" do - assigned = create(:evaluator_submission_assignment, :assigned, :completed, submission:) - recused = create(:evaluator_submission_assignment, :recused, :assigned, :completed, submission:) + submission = create(:submission) + + assigned = create(:evaluator_submission_assignment, :assigned, submission: submission) + create(:evaluation, + evaluator_submission_assignment: assigned, + submission: submission, + total_score: 60, + completed_at: Time.current + ) + + recused = create(:evaluator_submission_assignment, :recused, submission: submission) + create(:evaluation, + evaluator_submission_assignment: recused, + submission: submission, + total_score: 80, + completed_at: Time.current + ) + result = helper.average_score(submission) expect(result.raw_score).to eq(assigned.evaluation.total_score) end