2016-03-08 00:52:19 +00:00
# frozen_string_literal: true
2018-03-01 00:11:41 +00:00
2012-07-21 20:44:10 +00:00
Capybara :: SpecHelper . spec " # uncheck " do
before do
@session . visit ( '/form' )
end
2009-12-15 19:58:51 +00:00
2012-07-21 20:44:10 +00:00
it " should uncheck a checkbox by id " do
@session . uncheck ( " form_pets_hamster " )
@session . click_button ( 'awesome' )
2013-11-14 17:43:36 +00:00
expect ( extract_results ( @session ) [ 'pets' ] ) . to include ( 'dog' )
expect ( extract_results ( @session ) [ 'pets' ] ) . not_to include ( 'hamster' )
2012-07-21 20:44:10 +00:00
end
2009-12-15 19:58:51 +00:00
2012-07-21 20:44:10 +00:00
it " should uncheck a checkbox by label " do
@session . uncheck ( " Hamster " )
@session . click_button ( 'awesome' )
2013-11-14 17:43:36 +00:00
expect ( extract_results ( @session ) [ 'pets' ] ) . to include ( 'dog' )
expect ( extract_results ( @session ) [ 'pets' ] ) . not_to include ( 'hamster' )
2009-12-15 19:58:51 +00:00
end
2012-09-06 07:33:43 +00:00
2018-04-27 16:39:34 +00:00
it " should work without a locator string " do
@session . uncheck ( id : " form_pets_hamster " )
@session . click_button ( 'awesome' )
expect ( extract_results ( @session ) [ 'pets' ] ) . to include ( 'dog' )
expect ( extract_results ( @session ) [ 'pets' ] ) . not_to include ( 'hamster' )
end
2012-09-06 07:33:43 +00:00
it " casts to string " do
2018-03-01 00:11:41 +00:00
@session . uncheck ( :form_pets_hamster )
2012-09-06 07:33:43 +00:00
@session . click_button ( 'awesome' )
2013-11-14 17:43:36 +00:00
expect ( extract_results ( @session ) [ 'pets' ] ) . to include ( 'dog' )
expect ( extract_results ( @session ) [ 'pets' ] ) . not_to include ( 'hamster' )
2012-09-06 07:33:43 +00:00
end
2013-02-24 15:48:33 +00:00
context " with :exact option " do
it " should accept partial matches when false " do
2016-10-04 18:10:29 +00:00
@session . uncheck ( 'Ham' , exact : false )
2013-02-24 15:48:33 +00:00
@session . click_button ( 'awesome' )
2013-11-14 17:43:36 +00:00
expect ( extract_results ( @session ) [ 'pets' ] ) . not_to include ( 'hamster' )
2013-02-24 15:48:33 +00:00
end
it " should not accept partial matches when true " do
expect do
2016-10-04 18:10:29 +00:00
@session . uncheck ( 'Ham' , exact : true )
2013-02-24 15:48:33 +00:00
end . to raise_error ( Capybara :: ElementNotFound )
end
end
2016-04-21 21:25:14 +00:00
2016-04-22 17:11:19 +00:00
context " when checkbox hidden " do
2016-08-01 21:14:10 +00:00
context " with Capybara.automatic_label_click == true " do
around do | spec |
old_click_label , Capybara . automatic_label_click = Capybara . automatic_label_click , true
spec . run
Capybara . automatic_label_click = old_click_label
end
2016-04-21 21:25:14 +00:00
2016-08-01 21:14:10 +00:00
it " should uncheck via clicking the label with :for attribute if possible " do
2018-04-27 18:01:47 +00:00
expect ( @session . find ( :checkbox , 'form_cars_jaguar' , checked : true , visible : :hidden ) ) . to be_truthy
2016-08-01 21:14:10 +00:00
@session . uncheck ( 'form_cars_jaguar' )
@session . click_button ( 'awesome' )
expect ( extract_results ( @session ) [ 'cars' ] ) . not_to include ( 'jaguar' )
end
2016-04-21 21:25:14 +00:00
2016-08-01 21:14:10 +00:00
it " should uncheck via clicking the wrapping label if possible " do
2018-04-27 18:01:47 +00:00
expect ( @session . find ( :checkbox , 'form_cars_koenigsegg' , checked : true , visible : :hidden ) ) . to be_truthy
2016-08-01 21:14:10 +00:00
@session . uncheck ( 'form_cars_koenigsegg' )
@session . click_button ( 'awesome' )
expect ( extract_results ( @session ) [ 'cars' ] ) . not_to include ( 'koenigsegg' )
end
2016-04-21 21:25:14 +00:00
2016-08-01 21:14:10 +00:00
it " should not click the label if unneeded " do
2018-04-27 18:01:47 +00:00
expect ( @session . find ( :checkbox , 'form_cars_tesla' , unchecked : true , visible : :hidden ) ) . to be_truthy
2016-08-01 21:14:10 +00:00
@session . uncheck ( 'form_cars_tesla' )
@session . click_button ( 'awesome' )
expect ( extract_results ( @session ) [ 'cars' ] ) . not_to include ( 'tesla' )
end
it " should raise original error when no label available " do
2018-01-12 00:45:50 +00:00
expect { @session . uncheck ( 'form_cars_porsche' ) } . to raise_error ( Capybara :: ElementNotFound , 'Unable to find visible checkbox "form_cars_porsche" that is not disabled' )
2016-08-01 21:14:10 +00:00
end
2016-04-22 17:11:19 +00:00
2016-08-01 21:14:10 +00:00
it " should raise error if not allowed to click label " do
2018-03-01 00:11:41 +00:00
expect { @session . uncheck ( 'form_cars_jaguar' , allow_label_click : false ) } . to raise_error ( Capybara :: ElementNotFound , 'Unable to find visible checkbox "form_cars_jaguar" that is not disabled' )
2016-08-01 21:14:10 +00:00
end
2016-04-22 17:11:19 +00:00
end
2016-04-21 21:25:14 +00:00
end
2010-01-18 19:33:22 +00:00
end