| Name | Total Lines | Lines of Code | Total Coverage | Code Coverage |
|---|---|---|---|---|
| app/models/grade_entry_student.rb | 49 | 30 | 44.90%
|
40.00%
|
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.
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