marekj-watirloo 0.0.3 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. data/History.txt +12 -0
  2. data/Manifest.txt +59 -34
  3. data/README.rdoc +63 -80
  4. data/Rakefile.rb +32 -39
  5. data/config/locker.yml +0 -0
  6. data/lib/watirloo.rb +9 -162
  7. data/lib/watirloo/browsers.rb +73 -0
  8. data/lib/watirloo/desktop.rb +44 -0
  9. data/lib/watirloo/{firewatir_ducktape.rb → extension/firewatir_ducktape.rb} +0 -0
  10. data/lib/watirloo/extension/object.rb +26 -0
  11. data/lib/watirloo/{watir_ducktape.rb → extension/watir_ducktape.rb} +181 -16
  12. data/lib/watirloo/extension/watir_reflector.rb +83 -0
  13. data/lib/watirloo/locker.rb +84 -0
  14. data/lib/watirloo/page.rb +105 -0
  15. data/spec/browser_spec.rb +38 -0
  16. data/spec/browser_threads_spec.rb +45 -0
  17. data/spec/checkbox_group_spec.rb +136 -0
  18. data/spec/checkbox_groups_spec.rb +55 -0
  19. data/spec/checkboxes_value_spec.rb +35 -0
  20. data/spec/desktop_spec.rb +54 -0
  21. data/spec/extra/browser_events_spec.rb +76 -0
  22. data/spec/extra/page_objects_metrics.rb +139 -0
  23. data/spec/face_mixing_spec.rb +55 -0
  24. data/{test → spec}/firewatir/attach_instance_test.rb +0 -0
  25. data/spec/firewatir/spec_results.html +263 -0
  26. data/spec/firewatir/spec_results.txt +23 -0
  27. data/spec/firewatir/spec_results_failed.txt +3 -0
  28. data/{test → spec}/html/census.html +0 -0
  29. data/spec/html/checkbox_group1.html +33 -0
  30. data/spec/html/labels.html +53 -0
  31. data/spec/html/no_title.html +13 -0
  32. data/{test → spec}/html/person.html +0 -0
  33. data/spec/html/radio_group.html +35 -0
  34. data/{test → spec}/html/select_lists.html +0 -0
  35. data/spec/input_element_spec.rb +51 -0
  36. data/spec/label_spec.rb +65 -0
  37. data/spec/locker_spec.rb +49 -0
  38. data/spec/page_spec.rb +53 -0
  39. data/spec/person_def_wrappers_spec.rb +40 -0
  40. data/spec/radio_group_spec.rb +95 -0
  41. data/spec/radio_groups_spec.rb +55 -0
  42. data/spec/reflector_spec.rb +82 -0
  43. data/spec/select_list_options_spec.rb +40 -0
  44. data/spec/select_lists_spec.rb +151 -0
  45. data/{test/test_helper.rb → spec/spec_helper.rb} +6 -4
  46. data/spec/spec_helper_ff.rb +5 -0
  47. data/spec/spec_helper_runner.rb +13 -0
  48. data/spec/spec_results.html +566 -0
  49. data/spec/spec_results.txt +179 -0
  50. data/spec/spec_results_failed.txt +1 -0
  51. data/spec/text_fields_spec.rb +56 -0
  52. data/watirloo.gemspec +44 -44
  53. metadata +80 -39
  54. data/lib/watirloo/reflector.rb +0 -137
  55. data/test/checkbox_group_test.rb +0 -83
  56. data/test/checkboxes_value_test.rb +0 -50
  57. data/test/html/checkbox_group1.html +0 -20
  58. data/test/html/labels.html +0 -32
  59. data/test/html/radio_group.html +0 -41
  60. data/test/interfaces_test.rb +0 -79
  61. data/test/label_test.rb +0 -64
  62. data/test/person_def_wrappers_test.rb +0 -55
  63. data/test/radio_group_test.rb +0 -97
  64. data/test/select_list_in_class_test.rb +0 -39
  65. data/test/select_list_options_test.rb +0 -39
  66. data/test/select_lists_test.rb +0 -145
  67. data/test/text_fields_test.rb +0 -68
@@ -0,0 +1,23 @@
1
+
2
+ text field wrapped in label tag without for attribute defined
3
+ - parent of text_field should be Watir Element (FAILED - 1)
4
+ - parent tagName should be a LABEL (FAILED - 2)
5
+ - parent text returns text of label (FAILED - 3)
6
+
7
+ label for text field not wrapped
8
+ - text value of label
9
+
10
+ SelectList selections
11
+ - selected returns preselected item in single select
12
+ - selected returns preselected value in single select
13
+ - selected returns nil for none selected items in multi select
14
+ - selected returns nil for none selected values in multi select
15
+ - set item text and find selected item and text for multiselect
16
+ - set value and find selected item and value for multiselect
17
+ - set and query option by text for single select
18
+ - set and query option by value for single select
19
+ - set by text multple items for multiselect selects each item
20
+ - set by value multple items for multiselect selects each item
21
+ - set items array for single select selects each in turn. selected is the last item in array
22
+ - set item after multiple items were set returns all values selected for multiselect
23
+ - set using position for multiselect
@@ -0,0 +1,3 @@
1
+ text field wrapped in label tag without for attribute defined parent of text_field should be Watir Element
2
+ text field wrapped in label tag without for attribute defined parent tagName should be a LABEL
3
+ text field wrapped in label tag without for attribute defined parent text returns text of label
File without changes
@@ -0,0 +1,33 @@
1
+ <!--
2
+ Document : checbox_group
3
+ -->
4
+ <!DOCtype HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
5
+ <html>
6
+ <head>
7
+ <title></title>
8
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
9
+ </head>
10
+ <body>
11
+ <form name="forma">
12
+ <h3>Pets CheckboxGroup. Each has value. Acts like MultiSelectList. none, one ore more items can be checked.</h3>
13
+ <input name="pets" type="checkbox" value="cat">Cat<br />
14
+ <input name="pets" type="checkbox" value="dog">Dog<br />
15
+ <input name="pets" type="checkbox" value="zook">Zook<br />
16
+ <input name="pets" type="checkbox" value="zebra">Zebra<br />
17
+ <input name="pets" type="checkbox" value="wumpa">Wumpa<br />
18
+ <h3>Single CheckboxToggle Only. Acts like RadioGroup on/off switch.</h3>
19
+ <input name="singleIndicator" type="checkbox">Toggle Me<br />
20
+ </form>
21
+ <form name="formb">
22
+ <h3>Petsa (with last names) CheckboxGroup. Each has value. Acts like MultiSelectList. none, one ore more items can be checked.</h3>
23
+ <input name="petsa" type="checkbox" value="cata">Cat Mleczus<br />
24
+ <input name="petsa" type="checkbox" value="doga">Dog Wuffski<br />
25
+ <input name="petsa" type="checkbox" value="zooka">Zook ZookaZeeka<br />
26
+ <input name="petsa" type="checkbox" value="zebraa">Zebra Pregowana<br />
27
+ <input name="petsa" type="checkbox" value="wumpaa">Wumpa OompaPlumpa<br />
28
+ <h3>Single CheckboxToggle Only. Acts like RadioGroup on/off switch.</h3>
29
+ <input name="singleIndicatora" type="checkbox">Toggle Me Me<br />
30
+ </form>
31
+
32
+ </body>
33
+ </html>
@@ -0,0 +1,53 @@
1
+ <!--
2
+ Document : labels
3
+ http://www.w3.org/TR/html401/interact/forms.html#edef-LABEL
4
+ -->
5
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
6
+ <html>
7
+ <head>
8
+ <title>Labels</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
10
+ </head>
11
+ <body>
12
+ <h3> About Labels </h3>
13
+ <p><a href="http://www.w3.org/TR/html401/interact/forms.html#edef-LABEL">html401 label spec</a> --
14
+ label atribute :for holds a value of element :id it is bound to. Click on label sets the element with specified :id
15
+ <br />
16
+ checkbox, text_field, radiobutton do not have explicit labels like buttons
17
+ </p>
18
+
19
+ <h3>Implicit label wraps text_field without for attribute. Click does not transfer focus to control</h3>
20
+ <p>not a standard usage for label</p>
21
+ <form id="wrap_without_for"action="" method="get">
22
+ <p>
23
+ <label>First Name<input type="text" name="fn"></label>
24
+ </p>
25
+ <p>
26
+ <label><input type="text" name="ln">Last Name</label>
27
+ </p>
28
+ </form>
29
+
30
+ <h3>Explicit Label For Item with Id. Click transfers focus to control associated by id</h3>
31
+ <form id="label_for_id"action="" method="get">
32
+ <p>
33
+ <label for="first_nm">FirstName For</label>
34
+ <input type="text" name="firstname" id="first_nm">
35
+
36
+ <label for="last_nm">LastName For</label>
37
+ <input type="text" name="lastname" id="last_nm">
38
+
39
+ <br />
40
+
41
+ <label for="gender_code">Select Gender</label>
42
+ <select name="sex_cd" id="gender_code">
43
+ <option value="" selected></option>
44
+ <option value="M">Male</option>
45
+ <option value="F">Female</option>
46
+ </select>
47
+
48
+
49
+ </p>
50
+ </form>
51
+
52
+ </body>
53
+ </html>
@@ -0,0 +1,13 @@
1
+ <!--
2
+ no title set for window
3
+ -->
4
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
5
+ <html>
6
+ <head>
7
+ <title></title>
8
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
9
+ </head>
10
+ <body>
11
+ <div id="notitle">THIS IE HAS NO TITLE</div>
12
+ </body>
13
+ </html>
File without changes
@@ -0,0 +1,35 @@
1
+ <!-- Document : radio_group --> <!DOCTYPE HTML PUBLIC "-//W3C//Dtd HTML 4.01 Transitional//EN">
2
+ <html>
3
+ <head>
4
+ <title>radio_groups</title>
5
+ <meta http-equiv="Content-Type" content="text/html;
6
+ charset=UTF-8"> </head>
7
+ <body>
8
+ <h3>wanna eat what?</h3>
9
+ <form name="radios2" action="/"> <table border="0">
10
+ <tbody>
11
+ <tr><td><input type="radio" name="food" value="hotdog" /></td><td>Hothund</td></tr>
12
+ <tr><td><input type="radio" name="food" value="burger" checked /></td><td>Burgier</td></tr>
13
+ <tr><td><input type="radio" name="food" value="tofu" /></td><td>Tofoo</td></tr>
14
+ </tbody></table>
15
+ </form>
16
+ <h3>wannaa eata whata?</h3>
17
+ <form name="radios3" action="/"> <table border="0">
18
+ <tbody>
19
+ <tr><td><input type="radio" name="fooda" value="hotdoga" /></td><td>Hothunda</td></tr>
20
+ <tr><td><input type="radio" name="fooda" value="burgera" /></td><td>Burgiera</td></tr>
21
+ <tr><td><input type="radio" name="fooda" value="tofua" checked/></td><td>Tofooa</td></tr>
22
+ </tbody></table>
23
+ </form>
24
+
25
+ <h3>fooda same name but scoped to diff form name</h3>
26
+ <form name="radios4" action="/"> <table border="0">
27
+ <tbody>
28
+ <tr><td><input type="radio" name="fooda" value="hotdoga_t" /></td><td>Hothunda_t</td></tr>
29
+ <tr><td><input type="radio" name="fooda" value="burgera_t" /></td><td>Burgiera_t</td></tr>
30
+ <tr><td><input type="radio" name="fooda" value="tofua_t" checked/></td><td>Tofooa_t</td></tr>
31
+ </tbody></table>
32
+ </form>
33
+
34
+ </body>
35
+ </html>
File without changes
@@ -0,0 +1,51 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ module Watir
4
+ module Container
5
+
6
+ def input_label(label)
7
+ what = self.label(:text, label).for
8
+ raise "label for attribute is blank" if what == ""
9
+ input_id(what)
10
+ end
11
+
12
+ # If user knowns the Label that has a for attribute pointing to an element we can access that element by
13
+ # input_element(:lable, 'Text Of Label')
14
+ def input_id(what)
15
+ raise "provide a String for Id" unless what.kind_of?(String)
16
+ # for input_element('bla') convention to (:id,'bla')
17
+ mystery_element = self.document.getElementById(what)
18
+ raise 'Element not found' unless mystery_element
19
+ mystery_type = mystery_element.invoke('type')
20
+ return text_field(:id, what) if TextField::INPUT_TYPES.include? mystery_type
21
+ return select_list(:id, what) if SelectList::INPUT_TYPES.include? mystery_type
22
+ # TODO working on this
23
+ end
24
+ end
25
+
26
+ end
27
+
28
+ describe 'Mystery input element' do
29
+
30
+ include Watirloo::Page
31
+
32
+ before do
33
+ browser.goto testfile('labels.html')
34
+ end
35
+
36
+ it 'the id is text_field' do
37
+ browser.input_id('first_nm').should be_kind_of(Watir::TextField)
38
+ end
39
+
40
+ it 'the label points to text_field' do
41
+ browser.input_label('FirstName For').should be_kind_of(Watir::TextField)
42
+ end
43
+
44
+ it "the id should return select_list" do
45
+ browser.input_id('gender_code').should be_kind_of(Watir::SelectList)
46
+ end
47
+
48
+
49
+ end
50
+
51
+
@@ -0,0 +1,65 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+
4
+ describe 'text field wrapped in label tag without for attribute defined' do
5
+
6
+ include Watirloo::Page
7
+ face(:first) { doc.text_field(:name, 'fn') }
8
+ face(:last) { doc.text_field(:name, 'ln') }
9
+
10
+ before do
11
+ browser.goto testfile('labels.html')
12
+ end
13
+
14
+ it 'parent of text_field should be Watir Element' do
15
+ if browser.kind_of?(FireWatir::Firefox)
16
+ first.parent.should be_kind_of(String)
17
+ last.parent.should be_kind_of?(String)
18
+ flunk('FIXME Firefox returns String for parent and not Element')
19
+
20
+ elsif browser.kind_of?(Watir::IE)
21
+ first.parent.should be_kind_of(Watir::Element)
22
+ last.parent.should be_kind_of(Watir::Element)
23
+ end
24
+
25
+ end
26
+
27
+ it 'parent tagName should be a LABEL' do
28
+ if browser.kind_of?(Watir::IE)
29
+ first.parent.document.tagName.should == "LABEL"
30
+ last.parent.document.tagName.should == "LABEL"
31
+
32
+ elsif browser.kind_of?(FireWatir::Firefox)
33
+ flunk('FIXME Firefox returns String for parent and not Element')
34
+ end
35
+ end
36
+
37
+ it 'parent text returns text of label' do
38
+ if browser.kind_of?(Watir::IE)
39
+ first.parent.text.should == 'First Name'
40
+ last.parent.text.should == 'Last Name'
41
+
42
+ elsif browser.kind_of?(FireWatir::Firefox)
43
+ flunk('FIXME Firefox returns String for parent and not Element.')
44
+ end
45
+ end
46
+ end
47
+
48
+
49
+
50
+ describe 'label for text field not wrapped' do
51
+
52
+ # reopen the class and add more interfaces
53
+ include Watirloo::Page
54
+ face(:first_label) { doc.label(:for, 'first_nm') }
55
+ face(:last_label) { doc.label(:for, 'last_nm') }
56
+
57
+ before do
58
+ browser.goto testfile('labels.html')
59
+ end
60
+
61
+ it 'text value of label' do
62
+ first_label.text.should == 'FirstName For'
63
+ last_label.text.should == 'LastName For'
64
+ end
65
+ end
@@ -0,0 +1,49 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+
4
+ describe "Locker" do
5
+
6
+ it "locker file does not exist. create it. mapping should return empty hash" do
7
+ Watirloo::Locker.mapping.clear
8
+ FileUtils.rm_f(Watirloo::Locker.locker) if FileTest.exist?(Watirloo::Locker.locker) #remove locker file
9
+ FileTest.exist?(Watirloo::Locker.locker).should be_false
10
+ Watirloo::Locker.mapping.should == {}
11
+ end
12
+
13
+ it "clear should create locker file and save empty mapping" do
14
+ Watirloo::Locker.clear
15
+ FileTest.exist?(Watirloo::Locker.locker).should be_true
16
+ Watirloo::Locker.mapping.should == {}
17
+ end
18
+
19
+ it 'add stores ie.hwnd with friendly name and adds it to mapping' do
20
+ ie = Watir::IE.new
21
+ Watirloo::Locker.add(ie, 'one')
22
+ Watirloo::Locker.add(ie, 'two')
23
+ end
24
+
25
+ it 'mapping holds what was added' do
26
+ Watirloo::Locker.mapping.keys.sort.should == ['one', 'two']
27
+ Watirloo::Locker.mapping['one'].should == Watirloo::Locker.mapping['two']
28
+ end
29
+
30
+ it 'remove deletes a key value record ' do
31
+ Watirloo::Locker.remove 'two'
32
+ Watirloo::Locker.mapping.keys.should_not include('two')
33
+ end
34
+
35
+ it 'browser reattaches to named browser based on windows handle' do
36
+ ie = Watirloo::Locker.browser 'one'
37
+ ie.should be_kind_of(Watir::IE)
38
+ ie.hwnd.should == Watirloo::Locker.mapping['one']
39
+ ie.should exist
40
+ ie.close
41
+ ie.should_not exist
42
+ end
43
+
44
+ it 'browser attach to nonexisting windows behaves like IE.attach, it raises error' do
45
+ sleep 6 # if previous test closes a browser we need to wait to ensure we don't reattach to a closing browser
46
+ (lambda {Watirloo::Locker.browser('one')}).should raise_error(Watir::Exception::NoMatchingWindowFoundException) #points to the same hwnd as 'one' but at this time does not exist any more
47
+ end
48
+
49
+ end
data/spec/page_spec.rb ADDED
@@ -0,0 +1,53 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe "Page class with face definitions" do
4
+ class Page1
5
+ include Watirloo::Page
6
+ end
7
+
8
+ it 'has face method as singleton' do
9
+ Page1.singleton_methods.should include('face')
10
+ end
11
+
12
+ it 'face class method defines method' do
13
+ Page1.face(:bla) do
14
+ "hello"
15
+ end
16
+ page = Page1.new
17
+ page.should respond_to(:bla)
18
+ page.bla.should == 'hello'
19
+ end
20
+
21
+ it 'face accepts args used by method body' do
22
+ Page1.face(:foo) do |x|
23
+ x * 2
24
+ end
25
+ page = Page1.new
26
+ page.foo(2).should == 4
27
+ page.foo("bla").should == "blabla"
28
+ end
29
+ end
30
+
31
+ describe "Page faces included in rspec" do
32
+
33
+ include Watirloo::Page
34
+ face(:last1) {doc.text_field(:name, 'last_name0')}
35
+ face(:last) {|nbr| doc.text_field(:name, "last_name#{nbr+1}")}
36
+
37
+ before do
38
+ browser.goto testfile('census.html')
39
+ end
40
+
41
+
42
+ it 'face defines a watir element access' do
43
+ last1.set "Zippididuda"
44
+ last1.value.should == 'Zippididuda'
45
+ end
46
+
47
+ it 'faces with arguments' do
48
+ last(1).set "Zorro"
49
+ last(1).value.should == "Zorro"
50
+ end
51
+
52
+
53
+ end
@@ -0,0 +1,40 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe "Person Page interfaces defined by def wrappers and class definitions" do
4
+
5
+ include Watirloo::Page
6
+ # declare accessing elements
7
+ face( :first ) { doc.text_field(:name, 'first_nm') }
8
+ face( :street) { doc.text_field(:name, 'addr1') }
9
+
10
+ # def wrapper helper with suggested semantic name returns dom element
11
+ def last
12
+ doc.text_field(:name, 'last_nm')
13
+ end
14
+
15
+ def dob
16
+ doc.text_field(:name, 'dob')
17
+ end
18
+
19
+ before :each do
20
+ browser.goto testfile('person.html')
21
+ end
22
+
23
+ it 'calling face when there is wrapper method' do
24
+ last.set 'Wonkatonka'
25
+ last.value.should == 'Wonkatonka'
26
+ end
27
+
28
+ it 'calling interface when there is definition and no method' do
29
+ first.set 'Oompaloompa'
30
+ first.value.should == 'Oompaloompa'
31
+ end
32
+
33
+ it 'spray method by convetion has keys correspondig to interface names for watir elements' do
34
+ datamap = {:street => '13 Sad Enchiladas Lane', :dob => '02/03/1977'}
35
+ spray datamap
36
+ street.value.should == datamap[:street]
37
+ dob.value.should == datamap[:dob]
38
+ end
39
+
40
+ end
@@ -0,0 +1,95 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe 'RadioGroup class access in watir browser' do
4
+ include Watirloo::Page
5
+
6
+ before :each do
7
+ browser.goto testfile('radio_group.html')
8
+ end
9
+
10
+ it 'browser responds to radio_group' do
11
+ browser.should respond_to(:radio_group)
12
+ end
13
+
14
+ it 'radio group needs :what value with implicit :how=name' do
15
+ rg = browser.radio_group('food')
16
+ rg.size.should == 3
17
+ rg.values.should == %w[hotdog burger tofu]
18
+ end
19
+ end
20
+
21
+
22
+ describe 'RadioGroup class interface in watirloo' do
23
+
24
+ include Watirloo::Page
25
+ face :meals_to_go do
26
+ doc.radio_group('food')
27
+ end
28
+
29
+ before do
30
+ browser.goto testfile('radio_group.html')
31
+ end
32
+
33
+ it 'container radio_group method returns RadioGroup class' do
34
+ # verify browser namespace explicitly
35
+ if browser.kind_of?(FireWatir::Firefox)
36
+ meals_to_go.should be_kind_of(FireWatir::RadioGroup)
37
+ elsif browser.kind_of?(Watir::IE)
38
+ meals_to_go.should be_kind_of(Watir::RadioGroup)
39
+ end
40
+ end
41
+
42
+ it 'size or count returns how many radios in a group' do
43
+ meals_to_go.size.should == 3
44
+ meals_to_go.count.should == 3
45
+ end
46
+
47
+ it 'values returns value attributes text items as an array' do
48
+ meals_to_go.values.should == ["hotdog", "burger", "tofu"]
49
+ end
50
+
51
+ it 'selected_value returns internal option value for selected radio item in a group' do
52
+ meals_to_go.selected.should == 'burger'
53
+ meals_to_go.selected_value.should == 'burger'
54
+ meals_to_go.selected_values.should == ['burger'] # matches select_list api
55
+ end
56
+
57
+ it 'set selects radio by position in a group' do
58
+ meals_to_go.set 3
59
+ meals_to_go.selected.should == 'tofu'
60
+ meals_to_go.selected_value.should == 'tofu'
61
+ meals_to_go.selected_values.should == ['tofu']
62
+ meals_to_go.selected.should_not == 'hotdog'
63
+
64
+ meals_to_go.set 1
65
+ meals_to_go.selected.should == 'hotdog'
66
+ meals_to_go.selected_value.should == 'hotdog'
67
+ meals_to_go.selected_values.should == ['hotdog']
68
+ meals_to_go.selected.should_not == 'tofu'
69
+ end
70
+
71
+ it 'set selects radio by value in a group. selected returns value' do
72
+ meals_to_go.set 'hotdog'
73
+ meals_to_go.selected.should == 'hotdog'
74
+ meals_to_go.selected.should_not == 'tofu'
75
+
76
+ meals_to_go.set 'tofu'
77
+ meals_to_go.selected_value.should == 'tofu'
78
+ meals_to_go.selected.should_not == 'hotdog'
79
+ end
80
+
81
+ it 'set position throws exception if number not within the range of group size' do
82
+ lambda{ meals_to_go.set 7 }.should raise_error(Watir::Exception::WatirException)
83
+ end
84
+
85
+ it 'set value throws exception if value not found in options' do
86
+ lambda{ meals_to_go.set 'banannnanna' }.should raise_error(Watir::Exception::WatirException)
87
+ end
88
+
89
+ # TODO do I want to provide mapping of human generated semantic values for radios
90
+ # to actual values here in the radio_group or at the Watirllo level only?
91
+ it 'set throws exception if sybmol is used. it should accept Fixnum or String element only' do
92
+ lambda{ meals_to_go.set :yes }.should raise_error(Watir::Exception::WatirException)
93
+ end
94
+
95
+ end