spec/watirspec/elements/radio_spec.rb in watir-7.2.0 vs spec/watirspec/elements/radio_spec.rb in watir-7.2.1
- old
+ new
@@ -1,257 +1,259 @@
# frozen_string_literal: true
require 'watirspec_helper'
-describe 'Radio' do
- before :each do
- browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
- end
-
- # Exists method
- describe '#exists?' do
- it 'returns true if the radio button exists' do
- expect(browser.radio(id: 'new_user_newsletter_yes')).to exist
- expect(browser.radio(id: /new_user_newsletter_yes/)).to exist
- expect(browser.radio(name: 'new_user_newsletter')).to exist
- expect(browser.radio(name: /new_user_newsletter/)).to exist
- expect(browser.radio(value: 'yes')).to exist
- expect(browser.radio(value: /yes/)).to exist
- expect(browser.radio(text: 'Yes')).to exist
- expect(browser.radio(text: /Yes/)).to exist
- expect(browser.radio(class: 'huge')).to exist
- expect(browser.radio(class: /huge/)).to exist
- expect(browser.radio(index: 0)).to exist
- expect(browser.radio(xpath: "//input[@id='new_user_newsletter_yes']")).to exist
+module Watir
+ describe Radio do
+ before do
+ browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
end
- it 'returns the first radio if given no args' do
- expect(browser.radio).to exist
- end
+ # Exists method
+ describe '#exists?' do
+ it 'returns true if the radio button exists' do
+ expect(browser.radio(id: 'new_user_newsletter_yes')).to exist
+ expect(browser.radio(id: /new_user_newsletter_yes/)).to exist
+ expect(browser.radio(name: 'new_user_newsletter')).to exist
+ expect(browser.radio(name: /new_user_newsletter/)).to exist
+ expect(browser.radio(value: 'yes')).to exist
+ expect(browser.radio(value: /yes/)).to exist
+ expect(browser.radio(text: 'Yes')).to exist
+ expect(browser.radio(text: /Yes/)).to exist
+ expect(browser.radio(class: 'huge')).to exist
+ expect(browser.radio(class: /huge/)).to exist
+ expect(browser.radio(index: 0)).to exist
+ expect(browser.radio(xpath: "//input[@id='new_user_newsletter_yes']")).to exist
+ end
- it 'returns true if the radio button exists (search by name and value)' do
- expect(browser.radio(name: 'new_user_newsletter', value: 'yes')).to exist
- browser.radio(xpath: "//input[@name='new_user_newsletter' and @value='yes']").set
- end
+ it 'returns the first radio if given no args' do
+ expect(browser.radio).to exist
+ end
- it 'returns true for element with upper case type' do
- expect(browser.radio(id: 'new_user_newsletter_probably')).to exist
- end
+ it 'returns true if the radio button exists (search by name and value)' do
+ expect(browser.radio(name: 'new_user_newsletter', value: 'yes')).to exist
+ browser.radio(xpath: "//input[@name='new_user_newsletter' and @value='yes']").set
+ end
- it 'returns false if the radio button does not exist' do
- expect(browser.radio(id: 'no_such_id')).to_not exist
- expect(browser.radio(id: /no_such_id/)).to_not exist
- expect(browser.radio(name: 'no_such_name')).to_not exist
- expect(browser.radio(name: /no_such_name/)).to_not exist
- expect(browser.radio(value: 'no_such_value')).to_not exist
- expect(browser.radio(value: /no_such_value/)).to_not exist
- expect(browser.radio(text: 'no_such_text')).to_not exist
- expect(browser.radio(text: /no_such_text/)).to_not exist
- expect(browser.radio(class: 'no_such_class')).to_not exist
- expect(browser.radio(class: /no_such_class/)).to_not exist
- expect(browser.radio(index: 1337)).to_not exist
- expect(browser.radio(xpath: "input[@id='no_such_id']")).to_not exist
- end
+ it 'returns true for element with upper case type' do
+ expect(browser.radio(id: 'new_user_newsletter_probably')).to exist
+ end
- it 'returns false if the radio button does not exist (search by name and value)' do
- expect(browser.radio(name: 'new_user_newsletter', value: 'no_such_value')).to_not exist
- expect(browser.radio(xpath: "//input[@name='new_user_newsletter' and @value='no_such_value']")).to_not exist
- expect(browser.radio(name: 'no_such_name', value: 'yes')).to_not exist
- expect(browser.radio(xpath: "//input[@name='no_such_name' and @value='yes']")).to_not exist
- end
+ it 'returns false if the radio button does not exist' do
+ expect(browser.radio(id: 'no_such_id')).not_to exist
+ expect(browser.radio(id: /no_such_id/)).not_to exist
+ expect(browser.radio(name: 'no_such_name')).not_to exist
+ expect(browser.radio(name: /no_such_name/)).not_to exist
+ expect(browser.radio(value: 'no_such_value')).not_to exist
+ expect(browser.radio(value: /no_such_value/)).not_to exist
+ expect(browser.radio(text: 'no_such_text')).not_to exist
+ expect(browser.radio(text: /no_such_text/)).not_to exist
+ expect(browser.radio(class: 'no_such_class')).not_to exist
+ expect(browser.radio(class: /no_such_class/)).not_to exist
+ expect(browser.radio(index: 1337)).not_to exist
+ expect(browser.radio(xpath: "input[@id='no_such_id']")).not_to exist
+ end
- it 'returns true for radios with a string value' do
- expect(browser.radio(name: 'new_user_newsletter', value: 'yes')).to exist
- expect(browser.radio(name: 'new_user_newsletter', value: 'no')).to exist
- end
+ it 'returns false if the radio button does not exist (search by name and value)' do
+ expect(browser.radio(name: 'new_user_newsletter', value: 'no_such_value')).not_to exist
+ expect(browser.radio(xpath: "//input[@name='new_user_newsletter' and @value='no_such_value']")).not_to exist
+ expect(browser.radio(name: 'no_such_name', value: 'yes')).not_to exist
+ expect(browser.radio(xpath: "//input[@name='no_such_name' and @value='yes']")).not_to exist
+ end
- it "raises TypeError when 'what' argument is invalid" do
- expect { browser.radio(id: 3.14).exists? }.to raise_error(TypeError)
- end
- end
+ it 'returns true for radios with a string value' do
+ expect(browser.radio(name: 'new_user_newsletter', value: 'yes')).to exist
+ expect(browser.radio(name: 'new_user_newsletter', value: 'no')).to exist
+ end
- # Attribute methods
- describe '#id' do
- it 'returns the id attribute if the radio exists and has an attribute' do
- expect(browser.radio(index: 0).id).to eq 'new_user_newsletter_yes'
+ it "raises TypeError when 'what' argument is invalid" do
+ expect { browser.radio(id: 3.14).exists? }.to raise_error(TypeError)
+ end
end
- it "returns an empty string if the radio exists and the attribute doesn't" do
- expect(browser.radio(index: 2).id).to eq ''
- end
+ # Attribute methods
+ describe '#id' do
+ it 'returns the id attribute if the radio exists and has an attribute' do
+ expect(browser.radio(index: 0).id).to eq 'new_user_newsletter_yes'
+ end
- it "raises UnknownObjectException if the radio doesn't exist" do
- expect { browser.radio(index: 1337).id }.to raise_unknown_object_exception
- end
- end
+ it "returns an empty string if the radio exists and the attribute doesn't" do
+ expect(browser.radio(index: 2).id).to eq ''
+ end
- describe '#name' do
- it 'returns the name attribute if the radio exists' do
- expect(browser.radio(id: 'new_user_newsletter_yes').name).to eq 'new_user_newsletter'
+ it "raises UnknownObjectException if the radio doesn't exist" do
+ expect { browser.radio(index: 1337).id }.to raise_unknown_object_exception
+ end
end
- it "returns an empty string if the radio exists and the attribute doesn't" do
- expect(browser.radio(id: 'new_user_newsletter_absolutely').name).to eq ''
- end
+ describe '#name' do
+ it 'returns the name attribute if the radio exists' do
+ expect(browser.radio(id: 'new_user_newsletter_yes').name).to eq 'new_user_newsletter'
+ end
- it "raises UnknownObjectException if the radio doesn't exist" do
- expect { browser.radio(index: 1337).name }.to raise_unknown_object_exception
- end
- end
+ it "returns an empty string if the radio exists and the attribute doesn't" do
+ expect(browser.radio(id: 'new_user_newsletter_absolutely').name).to eq ''
+ end
- describe '#text' do
- it 'returns the text if the radio exists' do
- expect(browser.radio(id: 'new_user_newsletter_yes').text).to eq 'Yes'
+ it "raises UnknownObjectException if the radio doesn't exist" do
+ expect { browser.radio(index: 1337).name }.to raise_unknown_object_exception
+ end
end
- it "raises UnknownObjectException if the radio doesn't exist" do
- expect { browser.radio(index: 1337).text }.to raise_unknown_object_exception
- end
+ describe '#text' do
+ it 'returns the text if the radio exists' do
+ expect(browser.radio(id: 'new_user_newsletter_yes').text).to eq 'Yes'
+ end
- it 'returns empty string when there is no label' do
- form = browser.form(id: 'new_user')
- expect(form.radio(index: 2).text).to eq ''
- end
- end
+ it "raises UnknownObjectException if the radio doesn't exist" do
+ expect { browser.radio(index: 1337).text }.to raise_unknown_object_exception
+ end
- describe '#title' do
- it 'returns the title attribute if the radio exists' do
- expect(browser.radio(id: 'new_user_newsletter_no').title).to eq 'Traitor!'
+ it 'returns empty string when there is no label' do
+ form = browser.form(id: 'new_user')
+ expect(form.radio(index: 2).text).to eq ''
+ end
end
- it "returns an empty string if the radio exists and the attribute doesn't" do
- expect(browser.radio(id: 'new_user_newsletter_yes').title).to eq ''
- end
+ describe '#title' do
+ it 'returns the title attribute if the radio exists' do
+ expect(browser.radio(id: 'new_user_newsletter_no').title).to eq 'Traitor!'
+ end
- it "raises UnknownObjectException if the radio doesn't exist" do
- expect { browser.radio(index: 1337).title }.to raise_unknown_object_exception
- end
- end
+ it "returns an empty string if the radio exists and the attribute doesn't" do
+ expect(browser.radio(id: 'new_user_newsletter_yes').title).to eq ''
+ end
- describe '#type' do
- it 'returns the type attribute if the radio exists' do
- expect(browser.radio(index: 0).type).to eq 'radio'
+ it "raises UnknownObjectException if the radio doesn't exist" do
+ expect { browser.radio(index: 1337).title }.to raise_unknown_object_exception
+ end
end
- it "raises UnknownObjectException if the radio doesn't exist" do
- expect { browser.radio(index: 1337).type }.to raise_unknown_object_exception
- end
- end
+ describe '#type' do
+ it 'returns the type attribute if the radio exists' do
+ expect(browser.radio(index: 0).type).to eq 'radio'
+ end
- describe '#value' do
- it 'returns the value attribute if the radio exists' do
- expect(browser.radio(id: 'new_user_newsletter_yes').value).to eq 'yes'
+ it "raises UnknownObjectException if the radio doesn't exist" do
+ expect { browser.radio(index: 1337).type }.to raise_unknown_object_exception
+ end
end
- it "raises UnknownObjectException if the radio doesn't exist" do
- expect { browser.radio(index: 1337).value }.to raise_unknown_object_exception
- end
- end
+ describe '#value' do
+ it 'returns the value attribute if the radio exists' do
+ expect(browser.radio(id: 'new_user_newsletter_yes').value).to eq 'yes'
+ end
- describe '#respond_to?' do
- it 'returns true for all attribute methods' do
- expect(browser.radio(index: 0)).to respond_to(:class_name)
- expect(browser.radio(index: 0)).to respond_to(:id)
- expect(browser.radio(index: 0)).to respond_to(:name)
- expect(browser.radio(index: 0)).to respond_to(:title)
- expect(browser.radio(index: 0)).to respond_to(:type)
- expect(browser.radio(index: 0)).to respond_to(:value)
+ it "raises UnknownObjectException if the radio doesn't exist" do
+ expect { browser.radio(index: 1337).value }.to raise_unknown_object_exception
+ end
end
- end
- # Access methods
- describe '#enabled?' do
- it 'returns true if the radio button is enabled' do
- expect(browser.radio(id: 'new_user_newsletter_yes')).to be_enabled
- expect(browser.radio(xpath: "//input[@id='new_user_newsletter_yes']")).to be_enabled
+ describe '#respond_to?' do
+ it 'returns true for all attribute methods' do
+ expect(browser.radio(index: 0)).to respond_to(:class_name)
+ expect(browser.radio(index: 0)).to respond_to(:id)
+ expect(browser.radio(index: 0)).to respond_to(:name)
+ expect(browser.radio(index: 0)).to respond_to(:title)
+ expect(browser.radio(index: 0)).to respond_to(:type)
+ expect(browser.radio(index: 0)).to respond_to(:value)
+ end
end
- it 'returns false if the radio button is disabled' do
- expect(browser.radio(id: 'new_user_newsletter_nah')).to_not be_enabled
- expect(browser.radio(xpath: "//input[@id='new_user_newsletter_nah']")).to_not be_enabled
- end
+ # Access methods
+ describe '#enabled?' do
+ it 'returns true if the radio button is enabled' do
+ expect(browser.radio(id: 'new_user_newsletter_yes')).to be_enabled
+ expect(browser.radio(xpath: "//input[@id='new_user_newsletter_yes']")).to be_enabled
+ end
- it "raises UnknownObjectException if the radio button doesn't exist" do
- expect { browser.radio(id: 'no_such_id').enabled? }.to raise_unknown_object_exception
- expect { browser.radio(xpath: "//input[@id='no_such_id']").enabled? }.to raise_unknown_object_exception
- end
- end
+ it 'returns false if the radio button is disabled' do
+ expect(browser.radio(id: 'new_user_newsletter_nah')).not_to be_enabled
+ expect(browser.radio(xpath: "//input[@id='new_user_newsletter_nah']")).not_to be_enabled
+ end
- describe '#disabled?' do
- it 'returns true if the radio is disabled' do
- expect(browser.radio(id: 'new_user_newsletter_nah')).to be_disabled
+ it "raises UnknownObjectException if the radio button doesn't exist" do
+ expect { browser.radio(id: 'no_such_id').enabled? }.to raise_unknown_object_exception
+ expect { browser.radio(xpath: "//input[@id='no_such_id']").enabled? }.to raise_unknown_object_exception
+ end
end
- it 'returns false if the radio is enabled' do
- expect(browser.radio(id: 'new_user_newsletter_yes')).to_not be_disabled
- end
+ describe '#disabled?' do
+ it 'returns true if the radio is disabled' do
+ expect(browser.radio(id: 'new_user_newsletter_nah')).to be_disabled
+ end
- it "raises UnknownObjectException if the radio doesn't exist" do
- expect { browser.radio(index: 1337).disabled? }.to raise_unknown_object_exception
- end
- end
+ it 'returns false if the radio is enabled' do
+ expect(browser.radio(id: 'new_user_newsletter_yes')).not_to be_disabled
+ end
- describe '#set' do
- it 'sets the radio button' do
- browser.radio(id: 'new_user_newsletter_no').set
- expect(browser.radio(id: 'new_user_newsletter_no')).to be_set
+ it "raises UnknownObjectException if the radio doesn't exist" do
+ expect { browser.radio(index: 1337).disabled? }.to raise_unknown_object_exception
+ end
end
- it 'sets the radio button when found by :xpath' do
- browser.radio(xpath: "//input[@id='new_user_newsletter_no']").set
- expect(browser.radio(xpath: "//input[@id='new_user_newsletter_no']")).to be_set
- end
+ describe '#set' do
+ it 'sets the radio button' do
+ browser.radio(id: 'new_user_newsletter_no').set
+ expect(browser.radio(id: 'new_user_newsletter_no')).to be_set
+ end
- it 'fires the onclick event' do
- browser.radio(id: 'new_user_newsletter_no').set
- browser.radio(id: 'new_user_newsletter_yes').set
- expect(messages).to eq ['clicked: new_user_newsletter_no', 'clicked: new_user_newsletter_yes']
- end
+ it 'sets the radio button when found by :xpath' do
+ browser.radio(xpath: "//input[@id='new_user_newsletter_no']").set
+ expect(browser.radio(xpath: "//input[@id='new_user_newsletter_no']")).to be_set
+ end
- it 'fires the onchange event' do
- browser.radio(value: 'certainly').set
- expect(messages).to eq ['changed: new_user_newsletter']
+ it 'fires the onclick event' do
+ browser.radio(id: 'new_user_newsletter_no').set
+ browser.radio(id: 'new_user_newsletter_yes').set
+ expect(messages).to eq ['clicked: new_user_newsletter_no', 'clicked: new_user_newsletter_yes']
+ end
- browser.radio(value: 'certainly').set
- expect(messages).to eq ['changed: new_user_newsletter'] # no event fired here - didn't change
+ it 'fires the onchange event' do
+ browser.radio(value: 'certainly').set
+ expect(messages).to eq ['changed: new_user_newsletter']
- browser.radio(value: 'yes').set
- browser.radio(value: 'certainly').set
- list = ['changed: new_user_newsletter', 'clicked: new_user_newsletter_yes', 'changed: new_user_newsletter']
- expect(messages).to eq list
- end
+ browser.radio(value: 'certainly').set
+ expect(messages).to eq ['changed: new_user_newsletter'] # no event fired here - didn't change
- it "raises UnknownObjectException if the radio button doesn't exist" do
- expect { browser.radio(name: 'no_such_name').set }.to raise_unknown_object_exception
- expect { browser.radio(xpath: "//input[@name='no_such_name']").set }.to raise_unknown_object_exception
- end
+ browser.radio(value: 'yes').set
+ browser.radio(value: 'certainly').set
+ list = ['changed: new_user_newsletter', 'clicked: new_user_newsletter_yes', 'changed: new_user_newsletter']
+ expect(messages).to eq list
+ end
- it 'raises ObjectDisabledException if the radio is disabled' do
- expect { browser.radio(id: 'new_user_newsletter_nah').set }.to raise_object_disabled_exception
- expect { browser.radio(xpath: "//input[@id='new_user_newsletter_nah']").set }.to raise_object_disabled_exception
- end
- end
+ it "raises UnknownObjectException if the radio button doesn't exist" do
+ expect { browser.radio(name: 'no_such_name').set }.to raise_unknown_object_exception
+ expect { browser.radio(xpath: "//input[@name='no_such_name']").set }.to raise_unknown_object_exception
+ end
- # Other
- describe '#set?' do
- it 'returns true if the radio button is set' do
- expect(browser.radio(id: 'new_user_newsletter_yes')).to be_set
+ it 'raises ObjectDisabledException if the radio is disabled' do
+ expect { browser.radio(id: 'new_user_newsletter_nah').set }.to raise_object_disabled_exception
+ expect { browser.radio(xpath: "//input[@id='new_user_newsletter_nah']").set }.to raise_object_disabled_exception
+ end
end
- it 'returns false if the radio button unset' do
- expect(browser.radio(id: 'new_user_newsletter_no')).to_not be_set
- end
+ # Other
+ describe '#set?' do
+ it 'returns true if the radio button is set' do
+ expect(browser.radio(id: 'new_user_newsletter_yes')).to be_set
+ end
- it 'returns the state for radios with string values' do
- expect(browser.radio(name: 'new_user_newsletter', value: 'no')).to_not be_set
- browser.radio(name: 'new_user_newsletter', value: 'no').set
- expect(browser.radio(name: 'new_user_newsletter', value: 'no')).to be_set
- browser.radio(name: 'new_user_newsletter', value: 'yes').set
- expect(browser.radio(name: 'new_user_newsletter', value: 'no')).to_not be_set
- end
+ it 'returns false if the radio button unset' do
+ expect(browser.radio(id: 'new_user_newsletter_no')).not_to be_set
+ end
- it "raises UnknownObjectException if the radio button doesn't exist" do
- expect { browser.radio(id: 'no_such_id').set? }.to raise_unknown_object_exception
- expect { browser.radio(xpath: "//input[@id='no_such_id']").set? }.to raise_unknown_object_exception
+ it 'returns the state for radios with string values' do
+ expect(browser.radio(name: 'new_user_newsletter', value: 'no')).not_to be_set
+ browser.radio(name: 'new_user_newsletter', value: 'no').set
+ expect(browser.radio(name: 'new_user_newsletter', value: 'no')).to be_set
+ browser.radio(name: 'new_user_newsletter', value: 'yes').set
+ expect(browser.radio(name: 'new_user_newsletter', value: 'no')).not_to be_set
+ end
+
+ it "raises UnknownObjectException if the radio button doesn't exist" do
+ expect { browser.radio(id: 'no_such_id').set? }.to raise_unknown_object_exception
+ expect { browser.radio(xpath: "//input[@id='no_such_id']").set? }.to raise_unknown_object_exception
+ end
end
end
end