watir 7.2.0 → 7.2.1

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 (139) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/chrome.yml +1 -1
  3. data/.github/workflows/edge.yml +1 -1
  4. data/.github/workflows/firefox.yml +1 -1
  5. data/.github/workflows/ie.yml +1 -1
  6. data/.github/workflows/safari.yml +1 -1
  7. data/.github/workflows/unit.yml +1 -1
  8. data/.rubocop.yml +25 -12
  9. data/.rubocop_todo.yml +8 -1
  10. data/CHANGES.md +6 -1
  11. data/LICENSE +2 -2
  12. data/lib/watir/capabilities.rb +1 -1
  13. data/lib/watir/locators/anchor/selector_builder.rb +3 -0
  14. data/lib/watir/locators/element/matcher.rb +2 -1
  15. data/lib/watir/locators/element/selector_builder/regexp_disassembler.rb +2 -1
  16. data/lib/watir/locators/text_field/matcher.rb +0 -4
  17. data/lib/watir/version.rb +1 -1
  18. data/spec/locator_spec_helper.rb +0 -8
  19. data/spec/unit/capabilities_spec.rb +553 -561
  20. data/spec/unit/element_locator_spec.rb +89 -78
  21. data/spec/unit/match_elements/button_spec.rb +69 -62
  22. data/spec/unit/match_elements/element_spec.rb +303 -309
  23. data/spec/unit/match_elements/text_field_spec.rb +76 -73
  24. data/spec/unit/selector_builder/anchor_spec.rb +39 -33
  25. data/spec/unit/selector_builder/button_spec.rb +209 -202
  26. data/spec/unit/selector_builder/cell_spec.rb +48 -42
  27. data/spec/unit/selector_builder/element_spec.rb +634 -627
  28. data/spec/unit/selector_builder/row_spec.rb +119 -113
  29. data/spec/unit/selector_builder/text_field_spec.rb +195 -188
  30. data/spec/unit/selector_builder/textarea_spec.rb +22 -14
  31. data/spec/unit/wait_spec.rb +85 -81
  32. data/spec/watirspec/adjacent_spec.rb +249 -247
  33. data/spec/watirspec/after_hooks_spec.rb +161 -159
  34. data/spec/watirspec/alert_spec.rb +61 -58
  35. data/spec/watirspec/browser_spec.rb +409 -409
  36. data/spec/watirspec/capabilities_spec.rb +89 -99
  37. data/spec/watirspec/cookies_spec.rb +120 -118
  38. data/spec/watirspec/drag_and_drop_spec.rb +26 -24
  39. data/spec/watirspec/element_hidden_spec.rb +66 -60
  40. data/spec/watirspec/elements/area_spec.rb +49 -47
  41. data/spec/watirspec/elements/areas_spec.rb +27 -25
  42. data/spec/watirspec/elements/button_spec.rb +253 -251
  43. data/spec/watirspec/elements/buttons_spec.rb +36 -34
  44. data/spec/watirspec/elements/checkbox_spec.rb +48 -36
  45. data/spec/watirspec/elements/checkboxes_spec.rb +29 -27
  46. data/spec/watirspec/elements/collections_spec.rb +126 -119
  47. data/spec/watirspec/elements/date_field_spec.rb +185 -183
  48. data/spec/watirspec/elements/date_fields_spec.rb +29 -27
  49. data/spec/watirspec/elements/date_time_field_spec.rb +197 -195
  50. data/spec/watirspec/elements/date_time_fields_spec.rb +30 -28
  51. data/spec/watirspec/elements/dd_spec.rb +87 -85
  52. data/spec/watirspec/elements/dds_spec.rb +27 -25
  53. data/spec/watirspec/elements/del_spec.rb +106 -104
  54. data/spec/watirspec/elements/dels_spec.rb +26 -24
  55. data/spec/watirspec/elements/div_spec.rb +225 -221
  56. data/spec/watirspec/elements/divs_spec.rb +37 -35
  57. data/spec/watirspec/elements/dl_spec.rb +110 -108
  58. data/spec/watirspec/elements/dls_spec.rb +28 -26
  59. data/spec/watirspec/elements/dt_spec.rb +86 -84
  60. data/spec/watirspec/elements/dts_spec.rb +27 -25
  61. data/spec/watirspec/elements/element_spec.rb +794 -775
  62. data/spec/watirspec/elements/elements_spec.rb +40 -38
  63. data/spec/watirspec/elements/em_spec.rb +62 -60
  64. data/spec/watirspec/elements/ems_spec.rb +28 -26
  65. data/spec/watirspec/elements/filefield_spec.rb +116 -114
  66. data/spec/watirspec/elements/filefields_spec.rb +28 -26
  67. data/spec/watirspec/elements/font_spec.rb +20 -18
  68. data/spec/watirspec/elements/form_spec.rb +51 -49
  69. data/spec/watirspec/elements/forms_spec.rb +29 -27
  70. data/spec/watirspec/elements/frame_spec.rb +89 -87
  71. data/spec/watirspec/elements/frames_spec.rb +27 -25
  72. data/spec/watirspec/elements/hidden_spec.rb +81 -79
  73. data/spec/watirspec/elements/hiddens_spec.rb +28 -26
  74. data/spec/watirspec/elements/hn_spec.rb +59 -57
  75. data/spec/watirspec/elements/hns_spec.rb +26 -24
  76. data/spec/watirspec/elements/iframe_spec.rb +195 -191
  77. data/spec/watirspec/elements/iframes_spec.rb +31 -29
  78. data/spec/watirspec/elements/image_spec.rb +148 -146
  79. data/spec/watirspec/elements/images_spec.rb +26 -24
  80. data/spec/watirspec/elements/input_spec.rb +9 -7
  81. data/spec/watirspec/elements/ins_spec.rb +106 -104
  82. data/spec/watirspec/elements/inses_spec.rb +26 -24
  83. data/spec/watirspec/elements/label_spec.rb +56 -54
  84. data/spec/watirspec/elements/labels_spec.rb +26 -24
  85. data/spec/watirspec/elements/li_spec.rb +76 -74
  86. data/spec/watirspec/elements/link_spec.rb +173 -177
  87. data/spec/watirspec/elements/links_spec.rb +45 -43
  88. data/spec/watirspec/elements/lis_spec.rb +27 -25
  89. data/spec/watirspec/elements/list_spec.rb +44 -42
  90. data/spec/watirspec/elements/map_spec.rb +57 -55
  91. data/spec/watirspec/elements/maps_spec.rb +27 -25
  92. data/spec/watirspec/elements/meta_spec.rb +16 -14
  93. data/spec/watirspec/elements/metas_spec.rb +26 -24
  94. data/spec/watirspec/elements/ol_spec.rb +56 -65
  95. data/spec/watirspec/elements/ols_spec.rb +26 -24
  96. data/spec/watirspec/elements/option_spec.rb +91 -89
  97. data/spec/watirspec/elements/p_spec.rb +81 -79
  98. data/spec/watirspec/elements/pre_spec.rb +77 -75
  99. data/spec/watirspec/elements/pres_spec.rb +26 -24
  100. data/spec/watirspec/elements/ps_spec.rb +26 -24
  101. data/spec/watirspec/elements/radio_spec.rb +251 -249
  102. data/spec/watirspec/elements/radios_spec.rb +28 -26
  103. data/spec/watirspec/elements/select_list_spec.rb +537 -526
  104. data/spec/watirspec/elements/select_lists_spec.rb +32 -30
  105. data/spec/watirspec/elements/span_spec.rb +112 -110
  106. data/spec/watirspec/elements/spans_spec.rb +26 -24
  107. data/spec/watirspec/elements/strong_spec.rb +58 -58
  108. data/spec/watirspec/elements/strongs_spec.rb +28 -26
  109. data/spec/watirspec/elements/table_spec.rb +192 -139
  110. data/spec/watirspec/elements/tables_spec.rb +28 -26
  111. data/spec/watirspec/elements/tbody_spec.rb +74 -72
  112. data/spec/watirspec/elements/tbodys_spec.rb +40 -38
  113. data/spec/watirspec/elements/td_spec.rb +66 -64
  114. data/spec/watirspec/elements/tds_spec.rb +41 -39
  115. data/spec/watirspec/elements/text_field_spec.rb +206 -204
  116. data/spec/watirspec/elements/text_fields_spec.rb +30 -28
  117. data/spec/watirspec/elements/textarea_spec.rb +20 -18
  118. data/spec/watirspec/elements/textareas_spec.rb +18 -16
  119. data/spec/watirspec/elements/tfoot_spec.rb +65 -63
  120. data/spec/watirspec/elements/tfoots_spec.rb +42 -40
  121. data/spec/watirspec/elements/thead_spec.rb +65 -63
  122. data/spec/watirspec/elements/theads_spec.rb +42 -40
  123. data/spec/watirspec/elements/tr_spec.rb +48 -46
  124. data/spec/watirspec/elements/trs_spec.rb +42 -40
  125. data/spec/watirspec/elements/ul_spec.rb +56 -54
  126. data/spec/watirspec/elements/uls_spec.rb +26 -24
  127. data/spec/watirspec/radio_set_spec.rb +269 -267
  128. data/spec/watirspec/screenshot_spec.rb +20 -18
  129. data/spec/watirspec/scroll_spec.rb +152 -148
  130. data/spec/watirspec/shadow_root_spec.rb +86 -83
  131. data/spec/watirspec/user_editable_spec.rb +200 -198
  132. data/spec/watirspec/wait_spec.rb +289 -295
  133. data/spec/watirspec/window_switching_spec.rb +422 -434
  134. data/spec/watirspec_helper.rb +1 -23
  135. data/watir.gemspec +5 -4
  136. metadata +44 -33
  137. data/spec/watirspec/attributes_spec.rb +0 -18
  138. data/spec/watirspec/elements/table_nesting_spec.rb +0 -51
  139. data/spec/watirspec/special_chars_spec.rb +0 -23
@@ -2,189 +2,191 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'DateField' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
8
- end
9
-
10
- # Exists method
11
- describe '#exists?' do
12
- it 'returns true if the element exists' do
13
- expect(browser.date_field(id: 'html5_date')).to exist
14
- expect(browser.date_field(id: /html5_date/)).to exist
15
- expect(browser.date_field(name: 'html5_date')).to exist
16
- expect(browser.date_field(name: /html5_date/)).to exist
17
- expect(browser.date_field(text: '')).to exist
18
- expect(browser.date_field(text: //)).to exist
19
- expect(browser.date_field(index: 0)).to exist
20
- expect(browser.date_field(label: 'HTML5 Date')).to exist
21
- expect(browser.date_field(label: /Date$/)).to exist
22
- end
23
-
24
- it 'returns true when using xpath',
25
- except: {browser: :ie, reason: 'Date type not recognized'} do
26
- expect(browser.date_field(xpath: "//input[@id='html5_date']")).to exist
27
- end
28
-
29
- it 'returns the date field if given no args' do
30
- expect(browser.date_field).to exist
31
- end
32
-
33
- it 'respects date fields types',
34
- except: {browser: :ie, reason: 'Date type not recognized'} do
35
- expect(browser.date_field.type).to eq('date')
36
- end
37
-
38
- it 'returns false if the element does not exist' do
39
- expect(browser.date_field(id: 'no_such_id')).to_not exist
40
- expect(browser.date_field(id: /no_such_id/)).to_not exist
41
- expect(browser.date_field(name: 'no_such_name')).to_not exist
42
- expect(browser.date_field(name: /no_such_name/)).to_not exist
43
- expect(browser.date_field(value: 'no_such_value')).to_not exist
44
- expect(browser.date_field(value: /no_such_value/)).to_not exist
45
- expect(browser.date_field(text: 'no_such_text')).to_not exist
46
- expect(browser.date_field(text: /no_such_text/)).to_not exist
47
- expect(browser.date_field(class: 'no_such_class')).to_not exist
48
- expect(browser.date_field(class: /no_such_class/)).to_not exist
49
- expect(browser.date_field(index: 1337)).to_not exist
50
- expect(browser.date_field(xpath: "//input[@id='no_such_id']")).to_not exist
51
- expect(browser.date_field(label: 'bad label')).to_not exist
52
- expect(browser.date_field(label: /bad label/)).to_not exist
53
- end
54
-
55
- it "raises TypeError when 'what' argument is invalid" do
56
- expect { browser.date_field(id: 3.14).exists? }.to raise_error(TypeError)
57
- end
58
- end
59
-
60
- # Attribute methods
61
- describe '#id' do
62
- it 'returns the id attribute if the date field exists' do
63
- expect(browser.date_field(name: 'html5_date').id).to eq 'html5_date'
64
- end
65
-
66
- it "raises UnknownObjectException if the date field doesn't exist" do
67
- expect { browser.date_field(index: 1337).id }.to raise_unknown_object_exception
68
- end
69
- end
70
-
71
- describe '#name' do
72
- it 'returns the name attribute if the date field exists' do
73
- expect(browser.date_field(id: 'html5_date').name).to eq 'html5_date'
74
- end
75
-
76
- it "raises UnknownObjectException if the date field doesn't exist" do
77
- expect { browser.date_field(index: 1337).name }.to raise_unknown_object_exception
78
- end
79
- end
80
-
81
- describe '#type' do
82
- it 'returns the type attribute if the date field exists',
83
- except: {browser: :ie, reason: 'Date type not recognized'} do
84
- expect(browser.date_field(id: 'html5_date').type).to eq 'date'
85
- end
86
-
87
- it "raises UnknownObjectException if the date field doesn't exist" do
88
- expect { browser.date_field(index: 1337).type }.to raise_unknown_object_exception
89
- end
90
- end
91
-
92
- describe '#value' do
93
- it 'returns the value attribute if the date field exists' do
94
- expect(browser.date_field(id: 'html5_date').value).to eq ''
95
- end
96
-
97
- it "raises UnknownObjectException if the date field doesn't exist" do
98
- expect { browser.date_field(index: 1337).value }.to raise_unknown_object_exception
99
- end
100
- end
101
-
102
- describe '#respond_to?' do
103
- it 'returns true for all attribute methods' do
104
- expect(browser.date_field).to respond_to(:class_name)
105
- expect(browser.date_field).to respond_to(:id)
106
- expect(browser.date_field).to respond_to(:name)
107
- expect(browser.date_field).to respond_to(:title)
108
- expect(browser.date_field).to respond_to(:type)
109
- expect(browser.date_field).to respond_to(:value)
110
- end
111
- end
112
-
113
- # Access methods
114
- describe '#enabled?' do
115
- it 'returns true for enabled date fields' do
116
- expect(browser.browser.date_field(id: 'html5_date')).to be_enabled
117
- end
118
-
119
- it "raises UnknownObjectException if the date field doesn't exist" do
120
- expect { browser.browser.date_field(id: 'no_such_id').enabled? }.to raise_unknown_object_exception
121
- end
122
- end
123
-
124
- # Manipulation methods
125
- describe '#value= ' do
126
- it 'sets the value of the element' do
127
- date = browser.date_field(id: 'html5_date')
128
- date.value = Date.today
129
- expect(Date.parse(date.value)).to eq Date.today
130
- end
131
-
132
- it 'sets the value when accessed through the enclosing Form' do
133
- date_field = browser.form(id: 'new_user').date_field(id: 'html5_date')
134
- date_field.value = Date.today
135
- expect(Date.parse(date_field.value)).to eq Date.today
136
- end
137
-
138
- it "raises UnknownObjectException if the date field doesn't exist" do
139
- expect { browser.date_field(id: 'no_such_id').value = Date.today }.to raise_unknown_object_exception
140
- end
141
-
142
- it 'raises ArgumentError if using non-Date parameter' do
143
- expect { browser.date_field(id: 'no_such_id').value = 'foo' }.to raise_exception ArgumentError
144
- end
145
- end
146
-
147
- describe '#set!' do
148
- it 'sets the value of the element' do
149
- date = browser.date_field(id: 'html5_date')
150
- date.set!(Date.today)
151
- expect(Date.parse(date.value)).to eq Date.today
152
- end
153
-
154
- it 'sets the value when accessed through the enclosing Form' do
155
- date_field = browser.form(id: 'new_user').date_field(id: 'html5_date')
156
- date_field.set!(Date.today)
157
- expect(Date.parse(date_field.value)).to eq Date.today
158
- end
159
-
160
- it 'raises ArgumentError when no arguments are provided' do
161
- expect { browser.date_field(id: 'html5_date').set! }.to raise_exception ArgumentError
162
- end
163
-
164
- it "raises UnknownObjectException if the date field doesn't exist" do
165
- expect { browser.date_field(id: 'no_such_id').set!(Date.today) }.to raise_unknown_object_exception
166
- end
167
- end
168
-
169
- describe '#set' do
170
- it 'sets the value of the element' do
171
- date = browser.date_field(id: 'html5_date')
172
- date.set(Date.today)
173
- expect(Date.parse(date.value)).to eq Date.today
174
- end
175
-
176
- it 'sets the value when accessed through the enclosing Form' do
177
- date_field = browser.form(id: 'new_user').date_field(id: 'html5_date')
178
- date_field.set(Date.today)
179
- expect(Date.parse(date_field.value)).to eq Date.today
180
- end
181
-
182
- it 'raises ArgumentError when no arguments are provided' do
183
- expect { browser.date_field(id: 'html5_date').set }.to raise_exception ArgumentError
184
- end
185
-
186
- it "raises UnknownObjectException if the date field doesn't exist" do
187
- expect { browser.date_field(id: 'no_such_id').set(Date.today) }.to raise_unknown_object_exception
5
+ module Watir
6
+ describe DateField do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
9
+ end
10
+
11
+ # Exists method
12
+ describe '#exists?' do
13
+ it 'returns true if the element exists' do
14
+ expect(browser.date_field(id: 'html5_date')).to exist
15
+ expect(browser.date_field(id: /html5_date/)).to exist
16
+ expect(browser.date_field(name: 'html5_date')).to exist
17
+ expect(browser.date_field(name: /html5_date/)).to exist
18
+ expect(browser.date_field(text: '')).to exist
19
+ expect(browser.date_field(text: //)).to exist
20
+ expect(browser.date_field(index: 0)).to exist
21
+ expect(browser.date_field(label: 'HTML5 Date')).to exist
22
+ expect(browser.date_field(label: /Date$/)).to exist
23
+ end
24
+
25
+ it 'returns true when using xpath',
26
+ except: {browser: :ie, reason: 'Date type not recognized'} do
27
+ expect(browser.date_field(xpath: "//input[@id='html5_date']")).to exist
28
+ end
29
+
30
+ it 'returns the date field if given no args' do
31
+ expect(browser.date_field).to exist
32
+ end
33
+
34
+ it 'respects date fields types',
35
+ except: {browser: :ie, reason: 'Date type not recognized'} do
36
+ expect(browser.date_field.type).to eq('date')
37
+ end
38
+
39
+ it 'returns false if the element does not exist' do
40
+ expect(browser.date_field(id: 'no_such_id')).not_to exist
41
+ expect(browser.date_field(id: /no_such_id/)).not_to exist
42
+ expect(browser.date_field(name: 'no_such_name')).not_to exist
43
+ expect(browser.date_field(name: /no_such_name/)).not_to exist
44
+ expect(browser.date_field(value: 'no_such_value')).not_to exist
45
+ expect(browser.date_field(value: /no_such_value/)).not_to exist
46
+ expect(browser.date_field(text: 'no_such_text')).not_to exist
47
+ expect(browser.date_field(text: /no_such_text/)).not_to exist
48
+ expect(browser.date_field(class: 'no_such_class')).not_to exist
49
+ expect(browser.date_field(class: /no_such_class/)).not_to exist
50
+ expect(browser.date_field(index: 1337)).not_to exist
51
+ expect(browser.date_field(xpath: "//input[@id='no_such_id']")).not_to exist
52
+ expect(browser.date_field(label: 'bad label')).not_to exist
53
+ expect(browser.date_field(label: /bad label/)).not_to exist
54
+ end
55
+
56
+ it "raises TypeError when 'what' argument is invalid" do
57
+ expect { browser.date_field(id: 3.14).exists? }.to raise_error(TypeError)
58
+ end
59
+ end
60
+
61
+ # Attribute methods
62
+ describe '#id' do
63
+ it 'returns the id attribute if the date field exists' do
64
+ expect(browser.date_field(name: 'html5_date').id).to eq 'html5_date'
65
+ end
66
+
67
+ it "raises UnknownObjectException if the date field doesn't exist" do
68
+ expect { browser.date_field(index: 1337).id }.to raise_unknown_object_exception
69
+ end
70
+ end
71
+
72
+ describe '#name' do
73
+ it 'returns the name attribute if the date field exists' do
74
+ expect(browser.date_field(id: 'html5_date').name).to eq 'html5_date'
75
+ end
76
+
77
+ it "raises UnknownObjectException if the date field doesn't exist" do
78
+ expect { browser.date_field(index: 1337).name }.to raise_unknown_object_exception
79
+ end
80
+ end
81
+
82
+ describe '#type' do
83
+ it 'returns the type attribute if the date field exists',
84
+ except: {browser: :ie, reason: 'Date type not recognized'} do
85
+ expect(browser.date_field(id: 'html5_date').type).to eq 'date'
86
+ end
87
+
88
+ it "raises UnknownObjectException if the date field doesn't exist" do
89
+ expect { browser.date_field(index: 1337).type }.to raise_unknown_object_exception
90
+ end
91
+ end
92
+
93
+ describe '#value' do
94
+ it 'returns the value attribute if the date field exists' do
95
+ expect(browser.date_field(id: 'html5_date').value).to eq ''
96
+ end
97
+
98
+ it "raises UnknownObjectException if the date field doesn't exist" do
99
+ expect { browser.date_field(index: 1337).value }.to raise_unknown_object_exception
100
+ end
101
+ end
102
+
103
+ describe '#respond_to?' do
104
+ it 'returns true for all attribute methods' do
105
+ expect(browser.date_field).to respond_to(:class_name)
106
+ expect(browser.date_field).to respond_to(:id)
107
+ expect(browser.date_field).to respond_to(:name)
108
+ expect(browser.date_field).to respond_to(:title)
109
+ expect(browser.date_field).to respond_to(:type)
110
+ expect(browser.date_field).to respond_to(:value)
111
+ end
112
+ end
113
+
114
+ # Access methods
115
+ describe '#enabled?' do
116
+ it 'returns true for enabled date fields' do
117
+ expect(browser.browser.date_field(id: 'html5_date')).to be_enabled
118
+ end
119
+
120
+ it "raises UnknownObjectException if the date field doesn't exist" do
121
+ expect { browser.browser.date_field(id: 'no_such_id').enabled? }.to raise_unknown_object_exception
122
+ end
123
+ end
124
+
125
+ # Manipulation methods
126
+ describe '#value=' do
127
+ it 'sets the value of the element' do
128
+ date = browser.date_field(id: 'html5_date')
129
+ date.value = Date.today
130
+ expect(Date.parse(date.value)).to eq Date.today
131
+ end
132
+
133
+ it 'sets the value when accessed through the enclosing Form' do
134
+ date_field = browser.form(id: 'new_user').date_field(id: 'html5_date')
135
+ date_field.value = Date.today
136
+ expect(Date.parse(date_field.value)).to eq Date.today
137
+ end
138
+
139
+ it "raises UnknownObjectException if the date field doesn't exist" do
140
+ expect { browser.date_field(id: 'no_such_id').value = Date.today }.to raise_unknown_object_exception
141
+ end
142
+
143
+ it 'raises ArgumentError if using non-Date parameter' do
144
+ expect { browser.date_field(id: 'no_such_id').value = 'foo' }.to raise_exception ArgumentError
145
+ end
146
+ end
147
+
148
+ describe '#set!' do
149
+ it 'sets the value of the element' do
150
+ date = browser.date_field(id: 'html5_date')
151
+ date.set!(Date.today)
152
+ expect(Date.parse(date.value)).to eq Date.today
153
+ end
154
+
155
+ it 'sets the value when accessed through the enclosing Form' do
156
+ date_field = browser.form(id: 'new_user').date_field(id: 'html5_date')
157
+ date_field.set!(Date.today)
158
+ expect(Date.parse(date_field.value)).to eq Date.today
159
+ end
160
+
161
+ it 'raises ArgumentError when no arguments are provided' do
162
+ expect { browser.date_field(id: 'html5_date').set! }.to raise_exception ArgumentError
163
+ end
164
+
165
+ it "raises UnknownObjectException if the date field doesn't exist" do
166
+ expect { browser.date_field(id: 'no_such_id').set!(Date.today) }.to raise_unknown_object_exception
167
+ end
168
+ end
169
+
170
+ describe '#set' do
171
+ it 'sets the value of the element' do
172
+ date = browser.date_field(id: 'html5_date')
173
+ date.set(Date.today)
174
+ expect(Date.parse(date.value)).to eq Date.today
175
+ end
176
+
177
+ it 'sets the value when accessed through the enclosing Form' do
178
+ date_field = browser.form(id: 'new_user').date_field(id: 'html5_date')
179
+ date_field.set(Date.today)
180
+ expect(Date.parse(date_field.value)).to eq Date.today
181
+ end
182
+
183
+ it 'raises ArgumentError when no arguments are provided' do
184
+ expect { browser.date_field(id: 'html5_date').set }.to raise_exception ArgumentError
185
+ end
186
+
187
+ it "raises UnknownObjectException if the date field doesn't exist" do
188
+ expect { browser.date_field(id: 'no_such_id').set(Date.today) }.to raise_unknown_object_exception
189
+ end
188
190
  end
189
191
  end
190
192
  end
@@ -2,43 +2,45 @@
2
2
 
3
3
  require 'watirspec_helper'
4
4
 
5
- describe 'DateFields' do
6
- before :each do
7
- browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
8
- end
5
+ module Watir
6
+ describe DateFieldCollection do
7
+ before do
8
+ browser.goto(WatirSpec.url_for('forms_with_input_elements.html'))
9
+ end
9
10
 
10
- describe 'with selectors' do
11
- it 'returns the matching elements' do
12
- expect(browser.date_fields(name: 'html5_date').to_a).to eq [browser.date_field(name: 'html5_date')]
11
+ describe 'with selectors' do
12
+ it 'returns the matching elements' do
13
+ expect(browser.date_fields(name: 'html5_date').to_a).to eq [browser.date_field(name: 'html5_date')]
14
+ end
13
15
  end
14
- end
15
16
 
16
- describe '#length' do
17
- it 'returns the number of date_fields' do
18
- expect(browser.date_fields.length).to eq 1
17
+ describe '#length' do
18
+ it 'returns the number of date_fields' do
19
+ expect(browser.date_fields.length).to eq 1
20
+ end
19
21
  end
20
- end
21
22
 
22
- describe '#[]' do
23
- it 'returns the date_field at the given index' do
24
- expect(browser.date_fields[0].id).to eq 'html5_date'
23
+ describe '#[]' do
24
+ it 'returns the date_field at the given index' do
25
+ expect(browser.date_fields[0].id).to eq 'html5_date'
26
+ end
25
27
  end
26
- end
27
28
 
28
- describe '#each' do
29
- it 'iterates through date_fields correctly' do
30
- count = 0
29
+ describe '#each' do
30
+ it 'iterates through date_fields correctly' do
31
+ count = 0
31
32
 
32
- browser.date_fields.each_with_index do |c, index|
33
- expect(c).to be_instance_of(Watir::DateField)
34
- expect(c.name).to eq browser.date_field(index: index).name
35
- expect(c.id).to eq browser.date_field(index: index).id
36
- expect(c.value).to eq browser.date_field(index: index).value
33
+ browser.date_fields.each_with_index do |c, index|
34
+ expect(c).to be_instance_of(DateField)
35
+ expect(c.name).to eq browser.date_field(index: index).name
36
+ expect(c.id).to eq browser.date_field(index: index).id
37
+ expect(c.value).to eq browser.date_field(index: index).value
37
38
 
38
- count += 1
39
- end
39
+ count += 1
40
+ end
40
41
 
41
- expect(count).to be > 0
42
+ expect(count).to be > 0
43
+ end
42
44
  end
43
45
  end
44
46
  end