Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.idea
16 changes: 16 additions & 0 deletions features/step_definitions/teacher_views_average_class_grade.rb
Original file line number Diff line number Diff line change
@@ -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
12 changes: 12 additions & 0 deletions features/teacher_can_view_average_class_grade.feature
Original file line number Diff line number Diff line change
@@ -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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

probably don't want to leave as @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
6 changes: 6 additions & 0 deletions lib/teacher.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
20 changes: 20 additions & 0 deletions spec/teacher_spec.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
require_relative "../lib/teacher"
require_relative "../lib/student"
require_relative "../lib/assignment"
require "rspec"

describe Teacher do
Expand All @@ -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