2022-01-10 13:15:50 -08:00
require " rails_helper "
describe BootstrapHelper , :type = > :helper do
2022-07-19 08:18:27 -07:00
include ActiveSupport :: Testing :: TimeHelpers
2022-01-10 13:15:50 -08:00
describe '#nav_entry' do
it 'should return a HTML navigation item which links to a given address' do
allow ( self ) . to receive ( :current_page? ) . and_return ( false )
expect ( nav_entry ( 'Example' , '/example' ) ) . to (
eq ( '<li class="nav-item "><a class="nav-link" href="/example">Example</a></li>' )
)
end
it 'should return with an active attribute if the link matches the current URL' do
allow ( self ) . to receive ( :current_page? ) . and_return ( true )
expect ( nav_entry ( 'Example' , '/example' ) ) . to (
eq ( '<li class="nav-item active "><a class="nav-link" href="/example">Example</a></li>' )
)
end
it 'should include an icon if given' do
allow ( self ) . to receive ( :current_page? ) . and_return ( false )
expect ( nav_entry ( 'Example' , '/example' , icon : 'beaker' ) ) . to (
eq ( '<li class="nav-item "><a class="nav-link" href="/example"><i class="fa fa-beaker"></i> Example</a></li>' )
)
end
it 'should only include an icon if wanted' do
allow ( self ) . to receive ( :current_page? ) . and_return ( false )
expect ( nav_entry ( 'Example' , '/example' , icon : 'beaker' , icon_only : true ) ) . to (
eq ( '<li class="nav-item "><a class="nav-link" href="/example"><i class="fa fa-beaker" title="Example"></i></a></li>' )
)
end
it 'should include a badge if given' do
allow ( self ) . to receive ( :current_page? ) . and_return ( false )
expect ( nav_entry ( 'Example' , '/example' , badge : 3 ) ) . to (
eq ( '<li class="nav-item "><a class="nav-link" href="/example">Example <span class="badge">3</span></a></li>' )
)
expect ( nav_entry ( 'Example' , '/example' , badge : 3 , badge_color : 'primary' , badge_pill : true ) ) . to (
eq ( '<li class="nav-item "><a class="nav-link" href="/example">Example <span class="badge badge-primary badge-pill">3</span></a></li>' )
)
end
end
describe " # list_group_item " do
it 'should return a HTML navigation item which links to a given address' do
allow ( self ) . to receive ( :current_page? ) . and_return ( false )
expect ( list_group_item ( 'Example' , '/example' ) ) . to (
eq ( '<a href="/example" class="list-group-item list-group-item-action ">Example</a>' )
)
end
it 'should return with an active attribute if the link matches the current URL' do
allow ( self ) . to receive ( :current_page? ) . and_return ( true )
expect ( list_group_item ( 'Example' , '/example' ) ) . to (
eq ( '<a href="/example" class="list-group-item list-group-item-action active ">Example</a>' )
)
end
it 'should include a badge if given' do
allow ( self ) . to receive ( :current_page? ) . and_return ( false )
expect ( list_group_item ( 'Example' , '/example' , badge : 3 ) ) . to (
eq ( '<a href="/example" class="list-group-item list-group-item-action ">Example <span class="badge">3</span></a>' )
)
end
end
describe " # bootstrap_color " do
it 'should map error and alert to danger' do
expect ( bootstrap_color ( " error " ) ) . to eq ( " danger " )
expect ( bootstrap_color ( " alert " ) ) . to eq ( " danger " )
end
it 'should map notice to info' do
expect ( bootstrap_color ( " notice " ) ) . to eq ( " info " )
end
it 'should return any uncovered value' do
expect ( bootstrap_color ( " success " ) ) . to eq ( " success " )
end
end
describe " # tooltip " do
it 'should return the proper markup' do
2023-01-04 08:35:17 -08:00
expect ( tooltip ( " Example Text " , " This is in a tooltip " ) ) . to eq ( " <span title= \" This is in a tooltip \" data-bs-toggle= \" tooltip \" data-bs-placement= \" bottom \" >Example Text</span> " )
2022-01-10 13:15:50 -08:00
end
end
describe " # time_tooltip " do
it 'should return a tooltip with proper time values' do
2022-07-19 08:18:27 -07:00
travel_to ( Time . utc ( 1984 ) ) do
2022-01-10 13:15:50 -08:00
@user = FactoryBot . create ( :user )
2022-07-19 08:18:27 -07:00
travel 10 . minutes
2022-01-10 13:15:50 -08:00
2023-01-04 08:35:17 -08:00
expect ( time_tooltip ( @user ) ) . to eq ( " <span title= \" Sun, 01 Jan 1984 00:00:00 +0000 \" data-bs-toggle= \" tooltip \" data-bs-placement= \" bottom \" >10 minutes</span> " )
2022-01-10 13:15:50 -08:00
end
end
end
describe " # hidespan " do
it 'should return the proper markup' do
expect ( hidespan ( " Hidden Text " , " d-none " ) ) . to eq ( " <span class= \" d-none \" >Hidden Text</span> " )
end
end
2022-07-19 08:18:27 -07:00
end