describe StatusCat::StatusHelper do
let( :checker ) { StatusCat::Checkers::ActiveRecord.new }
let( :name ) { t( :name, :scope => :status_cat ).freeze }
let( :value ) { t( :value, :scope => :status_cat ).freeze }
let( :status ) { t( :status, :scope => :status_cat ).freeze }
let( :ok ) { t( :ok, :scope => :status_cat ).freeze }
describe '#status_header' do
it 'generates a status table header' do
expected = "
#{name} | #{value} | #{status} |
"
expect( helper.status_header ).to eql( expected )
end
end
describe '#status_row' do
it 'generates a status table row' do
expected = "#{checker.name} | #{checker.value} | #{ok} |
"
expect( helper.status_row( checker ) ).to eql( expected )
end
it 'uses status_style to style the status column' do
style = :gangnam
expect( helper ).to receive( :status_style ).and_return( style )
expected = "#{checker.name} | #{checker.value} | #{ok} |
"
expect( helper.status_row( checker ) ).to eql( expected )
end
end
describe '#status_cell' do
it 'returns the status as a table cell' do
expected = "foo | "
expect( helper.status_cell( 'foo' ) ).to eql( expected )
end
it 'converts array statuses into html lists' do
expected = " | "
expect( helper.status_cell( [ 'foo', 'bar' ] ) ).to eql( expected )
end
end
describe '#status_style' do
it 'returns a green background when the status is nil' do
expect( checker ).to receive( :status ).and_return( nil )
expect( helper.status_style( checker ) ).to eql( 'background-color: green' )
end
it 'returns a red background when the status is not nil' do
expect( checker ).to receive( :status ).and_return( :fail )
expect( helper.status_style( checker ) ).to eql( 'background-color: red' )
end
end
describe '#status_table' do
it 'generates a status table' do
expected = "#{helper.status_header}#{helper.status_row( checker )}
"
expect( helper.status_table( [ checker ] ) ).to eql( expected )
end
end
describe '#status_title' do
it 'generates a page title' do
expected = "#{t( :h1, :scope => :status_cat )}
"
expect( helper.status_title ).to eql( expected )
end
end
describe '#status_report' do
it 'generates a text status report' do
all = StatusCat::Status.all
all.each { |s| allow( s ).to receive( :status ).and_return( nil ) }
actual = helper.status_report( all )
all.each { |s| expect( actual ).to match( /#{s}/ ) }
end
end
describe '#status_report_format' do
it 'generates a format string and length based on the max length of the given checkers' do
all = StatusCat::Status.all
all.each { |s| allow( s ).to receive( :status ).and_return( nil ) }
status_report_format = helper.status_report_format( all ).to_s
expect( status_report_format ).to match( /\["%\d+s | %\d+s | %\d+s\n", \d+\]/ )
end
end
describe '#status_report_header' do
it 'generates a header' do
expected = sprintf( StatusCat::Checkers::Base::FORMAT, name, value, status )
expect( helper.status_report_header ).to eql( expected )
end
it 'accepts a format string' do
format = '%s * %s * %s'
expected = sprintf( format, name, value, status )
expect( helper.status_report_header( format ) ).to eql( expected )
end
end
end