File: //usr/local/rvm/src/ruby-2.5.9/spec/mspec/spec/runner/formatters/file_spec.rb
require File.dirname(__FILE__) + '/../../spec_helper'
require 'mspec/runner/formatters/file'
require 'mspec/runner/mspec'
require 'mspec/runner/example'
describe FileFormatter, "#register" do
before :each do
@formatter = FileFormatter.new
MSpec.stub(:register)
MSpec.stub(:unregister)
end
it "registers self with MSpec for :load, :unload actions" do
MSpec.should_receive(:register).with(:load, @formatter)
MSpec.should_receive(:register).with(:unload, @formatter)
@formatter.register
end
it "unregisters self with MSpec for :before, :after actions" do
MSpec.should_receive(:unregister).with(:before, @formatter)
MSpec.should_receive(:unregister).with(:after, @formatter)
@formatter.register
end
end
describe FileFormatter, "#load" do
before :each do
@state = ExampleState.new ContextState.new("describe"), "it"
@formatter = FileFormatter.new
@formatter.exception ExceptionState.new(nil, nil, SpecExpectationNotMetError.new("Failed!"))
end
it "resets the #failure? flag to false" do
@formatter.failure?.should be_true
@formatter.load @state
@formatter.failure?.should be_false
end
it "resets the #exception? flag to false" do
@formatter.exception?.should be_true
@formatter.load @state
@formatter.exception?.should be_false
end
end
describe FileFormatter, "#unload" do
before :each do
$stdout = @out = IOStub.new
@formatter = FileFormatter.new
@state = ExampleState.new ContextState.new("describe"), "it"
end
after :each do
$stdout = STDOUT
end
it "prints a '.' if there was no exception raised" do
@formatter.unload(@state)
@out.should == "."
end
it "prints an 'F' if there was an expectation failure" do
exc = SpecExpectationNotMetError.new "failed"
@formatter.exception ExceptionState.new(@state, nil, exc)
@formatter.unload(@state)
@out.should == "F"
end
it "prints an 'E' if there was an exception other than expectation failure" do
exc = MSpecExampleError.new("boom!")
@formatter.exception ExceptionState.new(@state, nil, exc)
@formatter.unload(@state)
@out.should == "E"
end
it "prints an 'E' if there are mixed exceptions and exepctation failures" do
exc = SpecExpectationNotMetError.new "failed"
@formatter.exception ExceptionState.new(@state, nil, exc)
exc = MSpecExampleError.new("boom!")
@formatter.exception ExceptionState.new(@state, nil, exc)
@formatter.unload(@state)
@out.should == "E"
end
end