From 6ad7230c59dec63ded6fad280e179a185e56153c Mon Sep 17 00:00:00 2001 From: drammopo Date: Sun, 9 Feb 2014 22:32:06 +0200 Subject: [PATCH 1/2] Feature: Initial attempt at the exercise. --- train.rb | 30 +++++++++++++++++++++++++----- train_spec.rb | 32 +++++++++++++++++++++++--------- 2 files changed, 48 insertions(+), 14 deletions(-) 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..7ad6a3a 100644 --- a/train_spec.rb +++ b/train_spec.rb @@ -2,12 +2,26 @@ 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 "should see trouble and tell the `message_board` to slow down" 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 "slows down and tells the `message_board` `confirm_slow_down`" do + engineer.should_receive(:slow_down!) + conductor.see_danger_coming! + message_board.should_receive(:confirm_slow_down) + engineer.avert_danger! + end +end From 3c456e1a6cc13b807f5c9bf5c1cf26bd96cc6367 Mon Sep 17 00:00:00 2001 From: drammopo Date: Tue, 11 Feb 2014 21:16:50 +0200 Subject: [PATCH 2/2] Changed specification block to reflect 1 assertion per block. --- train_spec.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/train_spec.rb b/train_spec.rb index 7ad6a3a..f2bf11e 100644 --- a/train_spec.rb +++ b/train_spec.rb @@ -6,7 +6,7 @@ let(:engineer) { Engineer.new (message_board)} let(:conductor) { Conductor.new(message_board,engineer)} - it "should see trouble and tell the `message_board` to slow down" do + 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 @@ -18,9 +18,12 @@ let(:engineer) { Engineer.new (message_board)} let(:conductor) { Conductor.new(message_board,engineer)} - it "slows down and tells the `message_board` `confirm_slow_down`" do + 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