diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..485dee6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea diff --git a/features/step_definitions/teacher_views_average_class_grade.rb b/features/step_definitions/teacher_views_average_class_grade.rb new file mode 100644 index 0000000..02e787d --- /dev/null +++ b/features/step_definitions/teacher_views_average_class_grade.rb @@ -0,0 +1,16 @@ +Given /^I have an assignment$/ do + @teacher = Teacher.new + @student1, @student2 = Student.new, Student.new + @assignment1, @assignment2 = Assignment.new, Assignment.new +end + +When /^I'm done grading the assignment$/ do + @teacher.submit_assignment(@student1,@assignment1) + @teacher.record_grade(@student1,90) + @teacher.submit_assignment(@student2,@assignment2) + @teacher.record_grade(@student2,70) +end + +Then /^I can see the average class grade$/ do + @teacher.average_grade.should == 80 +end \ No newline at end of file diff --git a/features/teacher_can_view_average_class_grade.feature b/features/teacher_can_view_average_class_grade.feature new file mode 100644 index 0000000..648f9e4 --- /dev/null +++ b/features/teacher_can_view_average_class_grade.feature @@ -0,0 +1,12 @@ +Feature: Teacher can see average class grade + + As a Teacher + I can see the average class grade + So that I can see overall class performance + + @wip + Scenario: Teacher can see average class grade + + Given I have an assignment + When I'm done grading the assignment + Then I can see the average class grade diff --git a/lib/teacher.rb b/lib/teacher.rb index d68ffe9..95133e3 100644 --- a/lib/teacher.rb +++ b/lib/teacher.rb @@ -16,4 +16,10 @@ def submit_assignment(student, assignment) def assignment_for_student(student) @assignments[student] end + + def average_grade + sum = 0 + @assignments.each { |k, v| sum += v.grade } + sum / @assignments.length + end end diff --git a/spec/teacher_spec.rb b/spec/teacher_spec.rb index 66894cc..17a423f 100644 --- a/spec/teacher_spec.rb +++ b/spec/teacher_spec.rb @@ -1,4 +1,6 @@ require_relative "../lib/teacher" +require_relative "../lib/student" +require_relative "../lib/assignment" require "rspec" describe Teacher do @@ -19,4 +21,22 @@ subject.record_grade(student, 95) end end + + describe 'should get average grade' do + it 'should get the average grade' do + student1, student2 = stub, stub + assignment1, assignment2 = mock, mock + subject.submit_assignment(student1, assignment1) + subject.submit_assignment(student2, assignment2) + + assignment1.should_receive(:grade=).with(90) + assignment2.should_receive(:grade=).with(80) + subject.record_grade(student1, 90) + subject.record_grade(student2, 80) + + assignment1.should_receive(:grade).and_return(90) + assignment2.should_receive(:grade).and_return(80) + subject.average_grade.should == 85 + end + end end