require File.dirname(__FILE__) + '/../../../../spec_helper'
require 'spec/runner/formatter/story/progress_bar_formatter'
module Spec
module Runner
module Formatter
module Story
describe ProgressBarFormatter do
before :each do
# given
@out = StringIO.new
@out.stub!(:tty?).and_return(true)
@tweaker = mock('tweaker')
@tweaker.stub!(:tweak_backtrace)
@options = mock('options')
@options.stub!(:colour).and_return(true)
@options.stub!(:backtrace_tweaker).and_return(@tweaker)
@formatter = ProgressBarFormatter.new(@options, @out)
end
it 'should print some white space before test summary' do
#when
@formatter.run_started(1)
@formatter.run_ended
#then
@out.string.should =~ /^\n{2}/
end
it "should print how long tests took to complete" do
#when
now = Time.now
future = now+1
Time.stub!(:now).and_return(now)
@formatter.run_started(1)
Time.stub!(:now).and_return(future)
@formatter.run_ended
#then
@out.string.should include("Finished in %f seconds" % (future-now))
end
it "should push green dot for passing scenario" do
#when
@formatter.scenario_started('','')
@formatter.step_succeeded('', '')
@formatter.scenario_ended
@formatter.story_ended '', ''
#then
@out.string.should eql("\e[32m.\e[0m")
end
it "should push red F for failure scenario" do
#when
@formatter.scenario_started('','')
@formatter.step_failed('', '')
@formatter.scenario_failed('', '', '')
@formatter.story_ended '', ''
#then
@out.string.should eql("\e[31mF\e[0m")
end
it "should push yellow P for pending scenario" do
#when
@formatter.scenario_started('','')
@formatter.step_pending('', '')
@formatter.scenario_pending('story', '', '')
@formatter.story_ended '', ''
#then
@out.string.should eql("\e[33mP\e[0m")
end
end
end
end
end
end