Skip to content

Commit

Permalink
Extract Class.
Browse files Browse the repository at this point in the history
  • Loading branch information
josemotanet committed May 29, 2013
1 parent f3d34d5 commit 0285023
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 0 deletions.
54 changes: 54 additions & 0 deletions extract-class/lib/after.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
class Student

attr_reader :terms

def initialize
@terms = [
Term.new(:first),
Term.new(:second),
Term.new(:third)
]
end

def set_all_grades_to grade
terms.each { |term| term.set_all_grades_to(grade) }
end

def first_term_grade
term(:first).grade
end

def second_term_grade
term(:second).grade
end

def third_term_grade
term(:third).grade
end

def term reference
terms.find { |term| term.name == reference }
end
end

class Term

attr_reader :name, :assiduity, :test, :behavior

def initialize name
@name = name
@assiduity = 0
@test = 0
@behavior = 0
end

def set_all_grades_to grade
@assiduity = grade
@test = grade
@behavior = grade
end

def grade
(assiduity + test + behavior) / 3
end
end
25 changes: 25 additions & 0 deletions extract-class/lib/before.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
class Student
attr_accessor :first_term_assiduity, :first_term_test, :first_term_behavior
attr_accessor :second_term_assiduity, :second_term_test, :second_term_behavior
attr_accessor :third_term_assiduity, :third_term_test, :third_term_behavior

def set_all_grades_to grade
%w(first second third).each do |which_term|
%w(assiduity test behavior).each do |criteria|
send "#{which_term}_term_#{criteria}=".to_sym, grade
end
end
end

def first_term_grade
(first_term_assiduity + first_term_test + first_term_behavior) / 3
end

def second_term_grade
(second_term_assiduity + second_term_test + second_term_behavior) / 3
end

def third_term_grade
(third_term_assiduity + third_term_test + third_term_behavior) / 3
end
end
11 changes: 11 additions & 0 deletions extract-class/test/test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,14 @@

require 'before' if ENV["BEFORE"]
require 'after' unless ENV["BEFORE"]

describe Student do
it "has a grade for all three terms" do
student = Student.new
student.set_all_grades_to 10

student.first_term_grade.must_equal 10
student.second_term_grade.must_equal 10
student.third_term_grade.must_equal 10
end
end

0 comments on commit 0285023

Please sign in to comment.