2016-03-08 00:52:19 +00:00
# frozen_string_literal: true
2012-07-21 20:44:10 +00:00
Capybara :: SpecHelper . spec " # choose " 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 choose a radio button by id " do
@session . choose ( " gender_male " )
@session . click_button ( 'awesome' )
2013-11-14 17:43:36 +00:00
expect ( extract_results ( @session ) [ 'gender' ] ) . to eq ( 'male' )
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 choose a radio button by label " do
@session . choose ( " Both " )
@session . click_button ( 'awesome' )
2013-11-14 17:43:36 +00:00
expect ( extract_results ( @session ) [ 'gender' ] ) . to eq ( 'both' )
2012-07-21 20:44:10 +00:00
end
2009-12-15 19:58:51 +00:00
2012-09-06 07:33:43 +00:00
it " casts to string " do
@session . choose ( " Both " )
@session . click_button ( :'awesome' )
2013-11-14 17:43:36 +00:00
expect ( extract_results ( @session ) [ 'gender' ] ) . to eq ( 'both' )
2012-09-06 07:33:43 +00:00
end
2012-07-21 20:44:10 +00:00
context " with a locator that doesn't exist " do
it " should raise an error " do
2017-07-19 22:59:40 +00:00
msg = " Unable to find visible radio button \" does not exist \" that is not disabled "
2012-10-30 13:26:19 +00:00
expect do
2012-07-21 20:44:10 +00:00
@session . choose ( 'does not exist' )
2012-10-30 13:26:19 +00:00
end . to raise_error ( Capybara :: ElementNotFound , msg )
2009-12-15 19:58:51 +00:00
end
end
2012-09-09 15:18:03 +00:00
context " with a disabled radio button " do
it " should raise an error " do
2012-10-30 13:26:19 +00:00
expect do
2012-09-09 15:18:03 +00:00
@session . choose ( 'Disabled Radio' )
2012-10-30 13:26:19 +00:00
end . to raise_error ( Capybara :: ElementNotFound )
2012-09-09 15:18:03 +00:00
end
end
2013-02-24 15:48:14 +00:00
context " with :exact option " do
it " should accept partial matches when false " do
2016-10-04 18:10:29 +00:00
@session . choose ( " Mal " , exact : false )
2013-02-24 15:48:14 +00:00
@session . click_button ( 'awesome' )
2013-11-14 17:43:36 +00:00
expect ( extract_results ( @session ) [ 'gender' ] ) . to eq ( 'male' )
2013-02-24 15:48:14 +00:00
end
it " should not accept partial matches when true " do
expect do
2016-10-04 18:10:29 +00:00
@session . choose ( " Mal " , exact : true )
2013-02-24 15:48:14 +00:00
end . to raise_error ( Capybara :: ElementNotFound )
end
end
2013-10-20 17:59:07 +00:00
context " with `option` option " do
it " can check radio buttons by their value " do
2016-10-04 18:10:29 +00:00
@session . choose ( 'form[gender]' , option : " male " )
2013-10-20 17:59:07 +00:00
@session . click_button ( 'awesome' )
2013-11-14 17:43:36 +00:00
expect ( extract_results ( @session ) [ 'gender' ] ) . to eq ( " male " )
2013-10-20 17:59:07 +00:00
end
it " should raise an error if option not found " do
expect do
2016-10-04 18:10:29 +00:00
@session . choose ( 'form[gender]' , option : " hermaphrodite " )
2013-10-20 17:59:07 +00:00
end . to raise_error ( Capybara :: ElementNotFound )
end
end
2016-04-21 23:30:44 +00:00
2016-04-22 17:11:19 +00:00
context " with hidden radio buttons " 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
it " should select by clicking the link if available " do
@session . choose ( " party_democrat " )
@session . click_button ( 'awesome' )
expect ( extract_results ( @session ) [ 'party' ] ) . to eq ( 'democrat' )
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
2017-07-19 22:59:40 +00:00
expect { @session . choose ( " party_democrat " , allow_label_click : false ) } . to raise_error ( Capybara :: ElementNotFound , 'Unable to find visible radio button "party_democrat" 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 23:30:44 +00:00
end
2016-10-10 21:43:40 +00:00
it " should return the chosen radio button " do
el = @session . find ( :radio_button , 'gender_male' )
expect ( @session . choose ( " gender_male " ) ) . to eq el
end
2010-01-18 19:33:22 +00:00
end