diff --git a/train.rb b/train.rb index bc6dbcb..b3c1a02 100644 --- a/train.rb +++ b/train.rb @@ -1,15 +1,35 @@ class Conductor - attr_reader :engineer + attr_reader :engineer + attr_reader :message_board - def initialize(engineer) - @engineer = engineer + def initialize(message_board, engineer) + @engineer = engineer + @message_board = message_board end def see_danger_coming! - engineer.slow_down! + message_board.send_message(engineer.slow_down!) end end class Engineer -end \ No newline at end of file + + attr_reader :message_board + + def initialize(message_board) + @message_board = message_board + end + + def avert_danger! + message_board.confirm_slow_down + end +end + +class MessageBoard + + def send_message(message) + message + end + +end diff --git a/train_spec.rb b/train_spec.rb index de4cff5..f2bf11e 100644 --- a/train_spec.rb +++ b/train_spec.rb @@ -2,12 +2,29 @@ require './train' describe Conductor do - let(:engineer) { Engineer.new } - let(:conductor) { Conductor.new(engineer)} - - it "should tell the engineer to slow down" do - engineer.should_receive(:slow_down!) - conductor.see_danger_coming! - end - -end \ No newline at end of file + let(:message_board) { MessageBoard.new()} + let(:engineer) { Engineer.new (message_board)} + let(:conductor) { Conductor.new(message_board,engineer)} + + it "sees trouble and tells the engineer to slow down via the message board" do + engineer.should_receive(:slow_down!) + conductor.see_danger_coming! + end +end + +describe Engineer do + + let(:message_board) { MessageBoard.new()} + let(:engineer) { Engineer.new (message_board)} + let(:conductor) { Conductor.new(message_board,engineer)} + + it "receives the slows down message" do + engineer.should_receive(:slow_down!) + conductor.see_danger_coming! + end + + it "replies back with the confirmation message via the message board" do + message_board.should_receive(:confirm_slow_down) + engineer.avert_danger! + end +end