diff --git a/train.rb b/train.rb index bc6dbcb..cc86f1c 100644 --- a/train.rb +++ b/train.rb @@ -1,15 +1,34 @@ class Conductor - attr_reader :engineer + attr_reader :engineer, :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.message(engineer.slow_down!) end end class Engineer + + attr_reader :message_board + + def initialize(message_board) + @message_board = message_board + end + + def confirm! + message_board.confirm_slow_down! + end +end + +class MessageBoard + + def message(msg) + msg + end + end \ No newline at end of file diff --git a/train_spec.rb b/train_spec.rb index de4cff5..7533d60 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 - + let(:engineer) { Engineer.new (message_board)} + let(:conductor) { Conductor.new(message_board, engineer)} + let(:message_board) { MessageBoard.new } + + it "Should notify the messageboard to slow down when danger is imminent" do + engineer.should_receive(:slow_down!) + conductor.see_danger_coming! + end +end + +describe Engineer do + + let(:engineer) { Engineer.new (message_board)} + let(:conductor) { Conductor.new(message_board, engineer)} + let(:message_board) { MessageBoard.new } + + it "Should receive the slowdown message" do + engineer.should_receive(:slow_down!) + conductor.see_danger_coming! + end + + it "Should reply to the Message Board with a slow down confirmation" do + message_board.should_receive(:confirm_slow_down!) + engineer.confirm! + end end \ No newline at end of file