Rcov C0 Coverage Information - RCov

app/models/grade_entry_student.rb

Name Total Lines Lines of Code Total Coverage Code Coverage
app/models/grade_entry_student.rb 49 30
44.90%
40.00%

Key

Code reported as executed by Ruby looks like this...and this: this line is also marked as covered.Lines considered as run by rcov, but not reported by Ruby, look like this,and this: these lines were inferred by rcov (using simple heuristics).Finally, here's a line marked as not executed.

Coverage Details

1 # GradeEntryStudent represents a row (i.e. a student's grades for each question)
2 # in a grade entry form.
3 class GradeEntryStudent < ActiveRecord::Base
4   belongs_to :user
5   belongs_to :grade_entry_form
6 
7   has_many  :grades, :dependent => :destroy
8   has_many  :grade_entry_items, :through => :grades
9 
10   validates_associated :user
11   validates_associated :grade_entry_form
12 
13   validates_numericality_of :user_id, :only_integer => true, :greater_than => 0,
14                             :message => I18n.t('invalid_id')
15   validates_numericality_of :grade_entry_form_id, :only_integer => true, :greater_than => 0,
16                             :message => I18n.t('invalid_id')
17 
18   # Given a row from a CSV file in the format
19   # username,q1mark,q2mark,...,
20   # create or update the GradeEntryStudent and Grade objects that
21   # correspond to the student
22   def self.create_or_update_from_csv_row(row, grade_entry_form)
23     # Get the grade entry items for this grade entry form
24     grade_entry_items = grade_entry_form.grade_entry_items
25 
26     working_row = row.clone
27     user_name = working_row.shift
28 
29     # Attempt to find the student
30     student = Student.find_by_user_name(user_name)
31     if student.nil?
32       raise I18n.t('grade_entry_forms.csv.invalid_user_name')
33     end
34 
35     # Create the GradeEntryStudent if it doesn't already exist
36     grade_entry_student = grade_entry_form.grade_entry_students.find_or_create_by_user_id(student.id)
37 
38     # Create or update the student's grade for each question
39     grade_entry_items.each do |grade_entry_item|
40       grade_for_grade_entry_item = working_row.shift
41       grade = grade_entry_student.grades.find_or_create_by_grade_entry_item_id(grade_entry_item.id)
42       grade.grade = grade_for_grade_entry_item
43       if !grade.save
44         raise RuntimeError.new(grade.errors)
45       end
46     end
47   end
48 
49 end

Generated on Tue Feb 07 00:07:36 -0500 2012 with rcov 0.9.10