foundation_rails_helper 0.5.0 → 1.0.0

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.
@@ -9,28 +9,28 @@ describe "FoundationRailsHelper::FormHelper" do
9
9
 
10
10
  it 'should have FoundationRailsHelper::FormHelper as default buidler' do
11
11
  form_for(@author) do |builder|
12
- builder.class.should == FoundationRailsHelper::FormBuilder
12
+ expect(builder.class).to eq FoundationRailsHelper::FormBuilder
13
13
  end
14
14
  end
15
15
 
16
16
  it "should display labels by default" do
17
17
  form_for(@author) do |builder|
18
18
  node = Capybara.string builder.text_field(:login)
19
- node.should have_css('label[for="author_login"]', :text => "Login")
19
+ expect(node).to have_css('label[for="author_login"]', :text => "Login")
20
20
  end
21
21
  end
22
22
 
23
23
  it "should not display labels by if there are options without auto_labels: false" do
24
24
  form_for(@author, {html: {class: 'myclass'}}) do |builder|
25
25
  node = Capybara.string builder.text_field(:login)
26
- node.should have_css('label[for="author_login"]', :text => "Login")
26
+ expect(node).to have_css('label[for="author_login"]', :text => "Login")
27
27
  end
28
28
  end
29
29
 
30
30
  it "should not display labels by if there are options without auto_labels: false" do
31
31
  form_for(@author, {html: {class: 'myclass'}, auto_labels: false}) do |builder|
32
32
  node = Capybara.string builder.text_field(:login)
33
- node.should_not have_css('label[for="author_login"]', :text => "Login")
33
+ expect(node).to_not have_css('label[for="author_login"]', :text => "Login")
34
34
  end
35
35
  end
36
36
 
@@ -38,285 +38,306 @@ describe "FoundationRailsHelper::FormHelper" do
38
38
  it "should generate text_field input" do
39
39
  form_for(@author) do |builder|
40
40
  node = Capybara.string builder.text_field(:login)
41
- node.should have_css('label[for="author_login"]', :text => "Login")
42
- node.should have_css('input.medium.input-text[type="text"][name="author[login]"]')
43
- node.find_field('author_login').value.should == @author.login
41
+ expect(node).to have_css('label[for="author_login"]', :text => "Login")
42
+ expect(node).to have_css('input[type="text"][name="author[login]"]')
43
+ expect(node.find_field('author_login').value).to eq @author.login
44
44
  end
45
45
  end
46
46
 
47
47
  it "should generate text_field input without label" do
48
48
  form_for(@author) do |builder|
49
49
  node = Capybara.string builder.text_field(:login, :label => false)
50
- node.should_not have_css('label[for="author_login"]', :text => "Login")
51
- node.should have_css('input.medium.input-text[type="text"][name="author[login]"]')
52
- node.find_field('author_login').value.should == @author.login
50
+ expect(node).to_not have_css('label[for="author_login"]', :text => "Login")
51
+ expect(node).to have_css('input[type="text"][name="author[login]"]')
52
+ expect(node.find_field('author_login').value).to eq @author.login
53
+ end
54
+ end
55
+
56
+ it "should generate text_field with class from options" do
57
+ form_for(@author) do |builder|
58
+ node = Capybara.string builder.text_field(:login, :class => 'righteous')
59
+ expect(node).to have_css('input.righteous[type="text"][name="author[login]"]')
53
60
  end
54
61
  end
55
62
 
56
63
  it "should generate password_field input" do
57
64
  form_for(@author) do |builder|
58
65
  node = Capybara.string builder.password_field(:password)
59
- node.should have_css('label[for="author_password"]', :text => "Password")
60
- node.should have_css('input.medium.input-text[type="password"][name="author[password]"]')
61
- node.find_field('author_password').value.should be_nil
66
+ expect(node).to have_css('label[for="author_password"]', :text => "Password")
67
+ expect(node).to have_css('input[type="password"][name="author[password]"]')
68
+ expect(node.find_field('author_password').value).to be_nil
62
69
  end
63
70
  end
64
71
 
65
72
  it "should generate email_field input" do
66
73
  form_for(@author) do |builder|
67
74
  node = Capybara.string builder.email_field(:email)
68
- node.should have_css('label[for="author_email"]', :text => "Email")
69
- node.should have_css('input.medium.input-text[type="email"][name="author[email]"]')
70
- node.find_field('author_email').value.should == @author.email
75
+ expect(node).to have_css('label[for="author_email"]', :text => "Email")
76
+ expect(node).to have_css('input[type="email"][name="author[email]"]')
77
+ expect(node.find_field('author_email').value).to eq @author.email
71
78
  end
72
79
  end
73
80
 
74
81
  it "should generate url_field input" do
75
82
  form_for(@author) do |builder|
76
83
  node = Capybara.string builder.url_field(:url)
77
- node.should have_css('label[for="author_url"]', :text => "Url")
78
- node.should have_css('input.medium.input-text[type="url"][name="author[url]"]')
79
- node.find_field('author_url').value.should == @author.url
84
+ expect(node).to have_css('label[for="author_url"]', :text => "Url")
85
+ expect(node).to have_css('input[type="url"][name="author[url]"]')
86
+ expect(node.find_field('author_url').value).to eq @author.url
80
87
  end
81
88
  end
82
89
 
83
90
  it "should generate phone_field input" do
84
91
  form_for(@author) do |builder|
85
92
  node = Capybara.string builder.phone_field(:phone)
86
- node.should have_css('label[for="author_phone"]', :text => "Phone")
87
- node.should have_css('input.medium.input-text[type="tel"][name="author[phone]"]')
88
- node.find_field('author_phone').value.should == @author.phone
93
+ expect(node).to have_css('label[for="author_phone"]', :text => "Phone")
94
+ expect(node).to have_css('input[type="tel"][name="author[phone]"]')
95
+ expect(node.find_field('author_phone').value).to eq @author.phone
89
96
  end
90
97
  end
91
98
 
92
99
  it "should generate number_field input" do
93
100
  form_for(@author) do |builder|
94
101
  node = Capybara.string builder.number_field(:some_number)
95
- node.should have_css('label[for="author_some_number"]', :text => "Some number")
96
- node.should have_css('input.medium.input-text[type="number"][name="author[some_number]"]')
97
- node.find_field('author_some_number').value.should == @author.some_number
102
+ expect(node).to have_css('label[for="author_some_number"]', :text => "Some number")
103
+ expect(node).to have_css('input[type="number"][name="author[some_number]"]')
104
+ expect(node.find_field('author_some_number').value).to eq @author.some_number
98
105
  end
99
106
  end
100
107
 
101
108
  it "should generate text_area input" do
102
109
  form_for(@author) do |builder|
103
110
  node = Capybara.string builder.text_area(:description)
104
- node.should have_css('label[for="author_description"]', :text => "Description")
105
- node.should have_css('textarea.medium.input-text[name="author[description]"]')
106
- node.find_field('author_description').value.strip.should == @author.description
111
+ expect(node).to have_css('label[for="author_description"]', :text => "Description")
112
+ expect(node).to have_css('textarea[name="author[description]"]')
113
+ expect(node.find_field('author_description').value.strip).to eq @author.description
107
114
  end
108
115
  end
109
116
 
110
117
  it "should generate file_field input" do
111
118
  form_for(@author) do |builder|
112
119
  node = Capybara.string builder.file_field(:avatar)
113
- node.should have_css('label[for="author_avatar"]', :text => "Avatar")
114
- node.should have_css('input.medium.input-text[type="file"][name="author[avatar]"]')
115
- node.find_field('author_avatar').value.should be_nil
120
+ expect(node).to have_css('label[for="author_avatar"]', :text => "Avatar")
121
+ expect(node).to have_css('input[type="file"][name="author[avatar]"]')
122
+ expect(node.find_field('author_avatar').value).to be_nil
116
123
  end
117
124
  end
118
125
 
119
126
  it "should generate select input" do
120
127
  form_for(@author) do |builder|
121
128
  node = Capybara.string builder.select(:description, [["Choice #1", :a], ["Choice #2", :b]])
122
- node.should have_css('label[for="author_description"]', :text => "Description")
123
- node.should have_css('select[name="author[description]"]')
124
- node.should have_css('select[name="author[description]"] option[value="a"]', :text => "Choice #1")
125
- node.should have_css('select[name="author[description]"] option[value="b"]', :text => "Choice #2")
129
+ expect(node).to have_css('label[for="author_description"]', :text => "Description")
130
+ expect(node).to have_css('select[name="author[description]"]')
131
+ expect(node).to have_css('select[name="author[description]"] option[value="a"]', :text => "Choice #1")
132
+ expect(node).to have_css('select[name="author[description]"] option[value="b"]', :text => "Choice #2")
126
133
  end
127
134
  end
128
135
 
129
136
  it "should generate check_box input" do
130
137
  form_for(@author) do |builder|
131
138
  node = Capybara.string builder.check_box(:active)
132
- node.should have_css('label[for="author_active"] input[type="hidden"][name="author[active]"][value="0"]')
133
- node.should have_css('label[for="author_active"] input[type="checkbox"][name="author[active]"]')
134
- node.should have_css('label[for="author_active"]', :text => "Active")
139
+ expect(node).to have_css('label[for="author_active"] input[type="hidden"][name="author[active]"][value="0"]')
140
+ expect(node).to have_css('label[for="author_active"] input[type="checkbox"][name="author[active]"]')
141
+ expect(node).to have_css('label[for="author_active"]', :text => "Active")
135
142
  end
136
143
  end
137
144
  it "should generate check_box input without a label" do
138
145
  form_for(@author) do |builder|
139
146
  node = Capybara.string builder.check_box(:active, :label => false)
140
- node.should have_css('input[type="hidden"][name="author[active]"][value="0"]')
141
- node.should have_css('input[type="checkbox"][name="author[active]"]')
142
- node.should_not have_css('label[for="author_active"]')
147
+ expect(node).to have_css('input[type="hidden"][name="author[active]"][value="0"]')
148
+ expect(node).to have_css('input[type="checkbox"][name="author[active]"]')
149
+ expect(node).to_not have_css('label[for="author_active"]')
143
150
  end
144
151
  end
145
152
 
146
153
  it "should generate radio_button input" do
147
154
  form_for(@author) do |builder|
148
- node = Capybara.string builder.label(:active) + builder.radio_button(:active, "ok")
149
- node.should have_css('label[for="author_active_ok"] input[type="radio"][name="author[active]"]')
155
+ node = Capybara.string builder.radio_button(:active, "ok")
156
+ expect(node).to have_css('label[for="author_active_ok"]')
157
+ expect(node).to have_css('input[type="radio"][name="author[active]"]')
150
158
  end
151
159
  end
152
-
153
- it "should generate radio_button input" do
160
+ it "should generate radio_button input with a label" do
154
161
  form_for(@author) do |builder|
155
- node = Capybara.string builder.radio_button(:active, true, text: "Functioning")
156
- node.should have_css('input[type="radio"][name="author[active]"]')
157
- node.should have_css('label[for="author_active_true"]', text: "Functioning")
162
+ node = Capybara.string builder.radio_button(:active, true, label: "Functioning")
163
+ expect(node).to have_css('label[for="author_active_true"]', text: "Functioning")
164
+ expect(node).to have_css('input[type="radio"][name="author[active]"]')
165
+ end
166
+ end
167
+ it "should generate radio_button without a label" do
168
+ form_for(@author) do |builder|
169
+ node = Capybara.string builder.radio_button(:active, "ok", label: false)
170
+ expect(node).to_not have_css('label[for="author_active_ok"]')
171
+ expect(node).to have_css('input[type="radio"][name="author[active]"]')
172
+ end
173
+ end
174
+ it "should generate radio_button with label options" do
175
+ form_for(@author) do |builder|
176
+ node = Capybara.string builder.radio_button(:active, "ok", class: 'very', label_options: { class: 'special' })
177
+ expect(node).to have_css('label.special[for="author_active_ok"]')
178
+ expect(node).to have_css('input.very[type="radio"][name="author[active]"]')
158
179
  end
159
180
  end
160
181
 
161
182
  it "should generate date_select input" do
162
183
  form_for(@author) do |builder|
163
184
  node = Capybara.string builder.label(:birthdate) + builder.date_select(:birthdate)
164
- node.should have_css('label[for="author_birthdate"]', :text => "Birthdate")
165
- %w(1 2 3).each {|i| node.should have_css("select.medium.input-text[name='author[birthdate(#{i}i)]']") }
166
- node.should have_css('select#author_birthdate_1i option[selected="selected"][value="1969"]')
167
- node.should have_css('select#author_birthdate_2i option[selected="selected"][value="6"]')
168
- node.should have_css('select#author_birthdate_3i option[selected="selected"][value="18"]')
169
- %w(4 5).each {|i| node.should_not have_css("select.medium.input-text[name='author[birthdate(#{i}i)]']") }
185
+ expect(node).to have_css('label[for="author_birthdate"]', :text => "Birthdate")
186
+ %w(1 2 3).each {|i| expect(node).to have_css("select[name='author[birthdate(#{i}i)]']") }
187
+ expect(node).to have_css('select#author_birthdate_1i option[selected="selected"][value="1969"]')
188
+ expect(node).to have_css('select#author_birthdate_2i option[selected="selected"][value="6"]')
189
+ expect(node).to have_css('select#author_birthdate_3i option[selected="selected"][value="18"]')
190
+ %w(4 5).each {|i| expect(node).to_not have_css("select[name='author[birthdate(#{i}i)]']") }
170
191
  end
171
192
  end
172
193
 
173
194
  it "should generate date_select input with :discard_year => true" do
174
195
  form_for(@author) do |builder|
175
196
  node = Capybara.string builder.label(:birthdate) + builder.date_select(:birthdate, :discard_year => true)
176
- node.should have_css('label[for="author_birthdate"]', :text => "Birthdate")
177
- %w(2 3).each {|i| node.should have_css("select.medium.input-text[name='author[birthdate(#{i}i)]']") }
178
- node.should_not have_css('select#author_birthdate_1i option[selected="selected"][value="1969"]')
179
- node.should have_css('select#author_birthdate_2i option[selected="selected"][value="6"]')
180
- node.should have_css('select#author_birthdate_3i option[selected="selected"][value="18"]')
181
- %w(1 4 5).each {|i| node.should_not have_css("select.medium.input-text[name='author[birthdate(#{i}i)]']") }
197
+ expect(node).to have_css('label[for="author_birthdate"]', :text => "Birthdate")
198
+ %w(2 3).each {|i| expect(node).to have_css("select[name='author[birthdate(#{i}i)]']") }
199
+ expect(node).to_not have_css('select#author_birthdate_1i option[selected="selected"][value="1969"]')
200
+ expect(node).to have_css('select#author_birthdate_2i option[selected="selected"][value="6"]')
201
+ expect(node).to have_css('select#author_birthdate_3i option[selected="selected"][value="18"]')
202
+ %w(1 4 5).each {|i| expect(node).to_not have_css("select[name='author[birthdate(#{i}i)]']") }
182
203
  end
183
204
  end
184
205
 
185
206
  it "should generate datetime_select input" do
186
207
  form_for(@author) do |builder|
187
208
  node = Capybara.string builder.label(:birthdate) + builder.datetime_select(:birthdate)
188
- node.should have_css('label[for="author_birthdate"]', :text => "Birthdate")
189
- %w(1 2 3 4 5).each {|i| node.should have_css("select.medium.input-text[name='author[birthdate(#{i}i)]']") }
190
- node.should have_css('select#author_birthdate_1i option[selected="selected"][value="1969"]')
191
- node.should have_css('select#author_birthdate_2i option[selected="selected"][value="6"]')
192
- node.should have_css('select#author_birthdate_3i option[selected="selected"][value="18"]')
193
- node.should have_css('select#author_birthdate_4i option[selected="selected"][value="20"]')
194
- node.should have_css('select#author_birthdate_5i option[selected="selected"][value="30"]')
209
+ expect(node).to have_css('label[for="author_birthdate"]', :text => "Birthdate")
210
+ %w(1 2 3 4 5).each {|i| expect(node).to have_css("select[name='author[birthdate(#{i}i)]']") }
211
+ expect(node).to have_css('select#author_birthdate_1i option[selected="selected"][value="1969"]')
212
+ expect(node).to have_css('select#author_birthdate_2i option[selected="selected"][value="6"]')
213
+ expect(node).to have_css('select#author_birthdate_3i option[selected="selected"][value="18"]')
214
+ expect(node).to have_css('select#author_birthdate_4i option[selected="selected"][value="20"]')
215
+ expect(node).to have_css('select#author_birthdate_5i option[selected="selected"][value="30"]')
195
216
  end
196
217
  end
197
218
 
198
219
  it "should generate datetime_select input with :discard_year => true" do
199
220
  form_for(@author) do |builder|
200
221
  node = Capybara.string builder.label(:birthdate) + builder.datetime_select(:birthdate, :discard_year => true)
201
- node.should have_css('label[for="author_birthdate"]', :text => "Birthdate")
202
- %w(2 3 4 5).each {|i| node.should have_css("select.medium.input-text[name='author[birthdate(#{i}i)]']") }
203
- node.should_not have_css('select#author_birthdate_1i option[selected="selected"][value="1969"]')
204
- node.should have_css('select#author_birthdate_2i option[selected="selected"][value="6"]')
205
- node.should have_css('select#author_birthdate_3i option[selected="selected"][value="18"]')
206
- node.should have_css('select#author_birthdate_4i option[selected="selected"][value="20"]')
207
- node.should have_css('select#author_birthdate_5i option[selected="selected"][value="30"]')
208
- %w(1).each {|i| node.should_not have_css("select.medium.input-text[name='author[birthdate(#{i}i)]']") }
222
+ expect(node).to have_css('label[for="author_birthdate"]', :text => "Birthdate")
223
+ %w(2 3 4 5).each {|i| expect(node).to have_css("select[name='author[birthdate(#{i}i)]']") }
224
+ expect(node).to_not have_css('select#author_birthdate_1i option[selected="selected"][value="1969"]')
225
+ expect(node).to have_css('select#author_birthdate_2i option[selected="selected"][value="6"]')
226
+ expect(node).to have_css('select#author_birthdate_3i option[selected="selected"][value="18"]')
227
+ expect(node).to have_css('select#author_birthdate_4i option[selected="selected"][value="20"]')
228
+ expect(node).to have_css('select#author_birthdate_5i option[selected="selected"][value="30"]')
229
+ %w(1).each {|i| expect(node).to_not have_css("select[name='author[birthdate(#{i}i)]']") }
209
230
  end
210
231
  end
211
232
 
212
233
  it "should generate time_zone_select input" do
213
234
  form_for(@author) do |builder|
214
235
  node = Capybara.string builder.label(:time_zone) + builder.time_zone_select(:time_zone)
215
- node.should have_css('label[for="author_time_zone"]', :text => "Time zone")
216
- node.should have_css('select[name="author[time_zone]"]')
217
- node.should have_css('select[name="author[time_zone]"] option[value="Perth"]', :text => "(GMT+08:00) Perth")
236
+ expect(node).to have_css('label[for="author_time_zone"]', :text => "Time zone")
237
+ expect(node).to have_css('select[name="author[time_zone]"]')
238
+ expect(node).to have_css('select[name="author[time_zone]"] option[value="Perth"]', :text => "(GMT+08:00) Perth")
218
239
  end
219
240
  end
220
241
 
221
242
  it "should generate date_field input" do
222
243
  form_for(@author) do |builder|
223
244
  node = Capybara.string builder.date_field(:publish_date)
224
- node.should have_css('label[for="author_publish_date"]', :text => "date")
225
- node.should have_css('input.medium.input-text[type="date"][name="author[publish_date]"]')
226
- node.find_field('author_publish_date').value.should == @author.publish_date.to_s
245
+ expect(node).to have_css('label[for="author_publish_date"]', :text => "date")
246
+ expect(node).to have_css('input[type="date"][name="author[publish_date]"]')
247
+ expect(node.find_field('author_publish_date').value).to eq @author.publish_date.to_s
227
248
  end
228
249
  end
229
250
 
230
251
  it "should generate datetime_field input" do
231
252
  form_for(@author) do |builder|
232
253
  node = Capybara.string builder.datetime_field(:forty_two)
233
- node.should have_css('label[for="author_forty_two"]', :text => "Forty two")
234
- node.should have_css('input.medium.input-text[type="datetime"][name="author[forty_two]"]')
254
+ expect(node).to have_css('label[for="author_forty_two"]', :text => "Forty two")
255
+ expect(node).to have_css('input[type="datetime"][name="author[forty_two]"]')
235
256
  value = DateTime.parse( node.find_field('author_forty_two').value)
236
- value.should == @author.forty_two.to_s
257
+ expect(value).to eq @author.forty_two.to_s
237
258
  end
238
259
  end
239
260
 
240
261
  it "should generate datetime_local_field" do
241
262
  form_for(@author) do |builder|
242
263
  node = Capybara.string builder.datetime_local_field(:forty_two)
243
- node.should have_css('label[for="author_forty_two"]', :text => "Forty two")
244
- node.should have_css('input.medium.input-text[type="datetime-local"][name="author[forty_two]"]')
245
- node.find_field('author_forty_two').value.should == @author.forty_two.strftime("%Y-%m-%dT%H:%M:%S")
264
+ expect(node).to have_css('label[for="author_forty_two"]', :text => "Forty two")
265
+ expect(node).to have_css('input[type="datetime-local"][name="author[forty_two]"]')
266
+ expect(node.find_field('author_forty_two').value).to eq @author.forty_two.strftime("%Y-%m-%dT%H:%M:%S")
246
267
  end
247
268
  end
248
269
 
249
270
  it "should generate month_field input" do
250
271
  form_for(@author) do |builder|
251
272
  node = Capybara.string builder.month_field(:forty_two)
252
- node.should have_css('label[for="author_forty_two"]', :text => "Forty two")
253
- node.should have_css('input.medium.input-text[type="month"][name="author[forty_two]"]')
254
- node.find_field('author_forty_two').value.should == @author.forty_two.strftime("%Y-%m")
273
+ expect(node).to have_css('label[for="author_forty_two"]', :text => "Forty two")
274
+ expect(node).to have_css('input[type="month"][name="author[forty_two]"]')
275
+ expect(node.find_field('author_forty_two').value).to eq @author.forty_two.strftime("%Y-%m")
255
276
  end
256
277
  end
257
278
 
258
279
  it "should generate week_field" do
259
280
  form_for(@author) do |builder|
260
281
  node = Capybara.string builder.week_field(:forty_two)
261
- node.should have_css('label[for="author_forty_two"]', :text => "Forty two")
262
- node.should have_css('input.medium.input-text[type="week"][name="author[forty_two]"]')
263
- node.find_field('author_forty_two').value.should == @author.forty_two.strftime("%Y-W%V")
282
+ expect(node).to have_css('label[for="author_forty_two"]', :text => "Forty two")
283
+ expect(node).to have_css('input[type="week"][name="author[forty_two]"]')
284
+ expect(node.find_field('author_forty_two').value).to eq @author.forty_two.strftime("%Y-W%V")
264
285
  end
265
286
  end
266
287
 
267
288
  it "should generate time_field" do
268
289
  form_for(@author) do |builder|
269
290
  node = Capybara.string builder.time_field(:forty_two)
270
- node.should have_css('label[for="author_forty_two"]', :text => "Forty two")
271
- node.should have_css('input.medium.input-text[type="time"][name="author[forty_two]"]')
272
- node.find_field('author_forty_two').value.should == @author.forty_two.strftime("%H:%M:%S.%L")
291
+ expect(node).to have_css('label[for="author_forty_two"]', :text => "Forty two")
292
+ expect(node).to have_css('input[type="time"][name="author[forty_two]"]')
293
+ expect(node.find_field('author_forty_two').value).to eq @author.forty_two.strftime("%H:%M:%S.%L")
273
294
  end
274
295
  end
275
296
 
276
297
  it "should generate range_field" do
277
298
  form_for(@author) do |builder|
278
299
  node = Capybara.string builder.range_field(:some_number)
279
- node.should have_css('label[for="author_some_number"]', :text => "Some number")
280
- node.should have_css('input.medium.input-text[type="range"][name="author[some_number]"]')
281
- node.find_field('author_some_number').value.should == @author.some_number
300
+ expect(node).to have_css('label[for="author_some_number"]', :text => "Some number")
301
+ expect(node).to have_css('input[type="range"][name="author[some_number]"]')
302
+ expect(node.find_field('author_some_number').value).to eq @author.some_number
282
303
  end
283
304
  end
284
305
 
285
306
  it "should generate search_field" do
286
307
  form_for(@author) do |builder|
287
308
  node = Capybara.string builder.search_field(:description)
288
- node.should have_css('label[for="author_description"]', :text => "Description")
289
- node.should have_css('input.medium.input-text[type="search"][name="author[description]"]')
290
- node.find_field('author_description').value.should == @author.description
309
+ expect(node).to have_css('label[for="author_description"]', :text => "Description")
310
+ expect(node).to have_css('input[type="search"][name="author[description]"]')
311
+ expect(node.find_field('author_description').value).to eq @author.description
291
312
  end
292
313
  end
293
314
 
294
315
  it "should generate color_field" do
295
316
  form_for(@author) do |builder|
296
317
  node = Capybara.string builder.color_field(:favorite_color)
297
- node.should have_css('label[for="author_favorite_color"]', :text => "Favorite color")
298
- node.should have_css('input.medium.input-text[type="color"][name="author[favorite_color]"]')
299
- node.find_field('author_favorite_color').value.should == @author.favorite_color
318
+ expect(node).to have_css('label[for="author_favorite_color"]', :text => "Favorite color")
319
+ expect(node).to have_css('input[type="color"][name="author[favorite_color]"]')
320
+ expect(node.find_field('author_favorite_color').value).to eq @author.favorite_color
300
321
  end
301
322
  end
302
323
 
303
324
  it "should generate collection_select input" do
304
325
  form_for(@author) do |builder|
305
326
  node = Capybara.string builder.collection_select(:favorite_book, Book.all, :id, :title)
306
- node.should have_css('label[for="author_favorite_book"]', :text => "Favorite book")
307
- node.should have_css('select[name="author[favorite_book]"]')
308
- node.should have_css('select[name="author[favorite_book]"] option[value="78"]', :text => "Gulliver's Travels")
309
- node.should have_css('select[name="author[favorite_book]"] option[value="133"]', :text => "Treasure Island")
327
+ expect(node).to have_css('label[for="author_favorite_book"]', :text => "Favorite book")
328
+ expect(node).to have_css('select[name="author[favorite_book]"]')
329
+ expect(node).to have_css('select[name="author[favorite_book]"] option[value="78"]', :text => "Gulliver's Travels")
330
+ expect(node).to have_css('select[name="author[favorite_book]"] option[value="133"]', :text => "Treasure Island")
310
331
  end
311
332
  end
312
333
 
313
334
  it "should generate grouped_collection_select input" do
314
335
  form_for(@author) do |builder|
315
336
  node = Capybara.string builder.grouped_collection_select(:favorite_book, Genre.all, :books, :name, :id, :title)
316
- node.should have_css('label[for="author_favorite_book"]', :text => "Favorite book")
317
- node.should have_css('select[name="author[favorite_book]"]')
318
- node.should have_css('select[name="author[favorite_book]"] optgroup[label="Exploration"] option[value="78"]', :text => "Gulliver's Travels")
319
- node.should have_css('select[name="author[favorite_book]"] optgroup[label="Pirate Exploits"] option[value="133"]', :text => "Treasure Island")
337
+ expect(node).to have_css('label[for="author_favorite_book"]', :text => "Favorite book")
338
+ expect(node).to have_css('select[name="author[favorite_book]"]')
339
+ expect(node).to have_css('select[name="author[favorite_book]"] optgroup[label="Exploration"] option[value="78"]', :text => "Gulliver's Travels")
340
+ expect(node).to have_css('select[name="author[favorite_book]"] optgroup[label="Pirate Exploits"] option[value="133"]', :text => "Treasure Island")
320
341
  end
321
342
  end
322
343
  end
@@ -325,14 +346,14 @@ describe "FoundationRailsHelper::FormHelper" do
325
346
  it "should not display errors" do
326
347
  form_for(@author) do |builder|
327
348
  node = Capybara.string builder.text_field(:login)
328
- node.should_not have_css('small.error')
349
+ expect(node).to_not have_css('small.error')
329
350
  end
330
351
  end
331
352
  it "should display errors" do
332
353
  form_for(@author) do |builder|
333
- @author.stub!(:errors).and_return({:login => ['required']})
354
+ allow(@author).to receive(:errors).and_return({:login => ['required']})
334
355
  node = Capybara.string builder.text_field(:login)
335
- node.should have_css('small.error', :text => "required")
356
+ expect(node).to have_css('small.error', :text => "required")
336
357
  end
337
358
  end
338
359
  %w(file_field email_field text_field telephone_field phone_field
@@ -343,69 +364,69 @@ describe "FoundationRailsHelper::FormHelper" do
343
364
  ).each do |field|
344
365
  it "should display errors on #{field} inputs" do
345
366
  form_for(@author) do |builder|
346
- @author.stub!(:errors).and_return({:description => ['required']})
367
+ allow(@author).to receive(:errors).and_return({:description => ['required']})
347
368
  node = Capybara.string builder.public_send(field, :description)
348
- node.should have_css('label.error[for="author_description"]')
349
- node.should have_css('input.error[name="author[description]"]')
369
+ expect(node).to have_css('label.error[for="author_description"]')
370
+ expect(node).to have_css('input.error[name="author[description]"]')
350
371
  end
351
372
  end
352
373
  end
353
374
  it "should display errors on text_area inputs" do
354
375
  form_for(@author) do |builder|
355
- @author.stub!(:errors).and_return({:description => ['required']})
376
+ allow(@author).to receive(:errors).and_return({:description => ['required']})
356
377
  node = Capybara.string builder.text_area(:description)
357
- node.should have_css('label.error[for="author_description"]')
358
- node.should have_css('textarea.error[name="author[description]"]')
378
+ expect(node).to have_css('label.error[for="author_description"]')
379
+ expect(node).to have_css('textarea.error[name="author[description]"]')
359
380
  end
360
381
  end
361
382
  it "should display errors on select inputs" do
362
383
  form_for(@author) do |builder|
363
- @author.stub!(:errors).and_return({:favorite_book => ['required']})
384
+ allow(@author).to receive(:errors).and_return({:favorite_book => ['required']})
364
385
  node = Capybara.string builder.select(:favorite_book, [["Choice #1", :a], ["Choice #2", :b]])
365
- node.should have_css('label.error[for="author_favorite_book"]')
366
- node.should have_css('select.error[name="author[favorite_book]"]')
386
+ expect(node).to have_css('label.error[for="author_favorite_book"]')
387
+ expect(node).to have_css('select.error[name="author[favorite_book]"]')
367
388
  end
368
389
  end
369
390
  it "should display errors on date_select inputs" do
370
391
  form_for(@author) do |builder|
371
- @author.stub!(:errors).and_return({:birthdate => ['required']})
392
+ allow(@author).to receive(:errors).and_return({:birthdate => ['required']})
372
393
  node = Capybara.string builder.date_select(:birthdate)
373
- node.should have_css('label.error[for="author_birthdate"]')
374
- %w(1 2 3).each {|i| node.should have_css("select.error[name='author[birthdate(#{i}i)]']") }
394
+ expect(node).to have_css('label.error[for="author_birthdate"]')
395
+ %w(1 2 3).each {|i| expect(node).to have_css("select.error[name='author[birthdate(#{i}i)]']") }
375
396
  end
376
397
  end
377
398
  it "should display errors on datetime_select inputs" do
378
399
  form_for(@author) do |builder|
379
- @author.stub!(:errors).and_return({:birthdate => ['required']})
400
+ allow(@author).to receive(:errors).and_return({:birthdate => ['required']})
380
401
  node = Capybara.string builder.datetime_select(:birthdate)
381
- node.should have_css('label.error[for="author_birthdate"]')
382
- %w(1 2 3 4 5).each {|i| node.should have_css("select.error[name='author[birthdate(#{i}i)]']") }
402
+ expect(node).to have_css('label.error[for="author_birthdate"]')
403
+ %w(1 2 3 4 5).each {|i| expect(node).to have_css("select.error[name='author[birthdate(#{i}i)]']") }
383
404
  end
384
405
  end
385
406
  it "should display errors on time_zone_select inputs" do
386
407
  form_for(@author) do |builder|
387
- @author.stub!(:errors).and_return({:time_zone => ['required']})
408
+ allow(@author).to receive(:errors).and_return({:time_zone => ['required']})
388
409
  node = Capybara.string builder.time_zone_select(:time_zone)
389
- node.should have_css('label.error[for="author_time_zone"]')
390
- node.should have_css('select.error[name="author[time_zone]"]')
410
+ expect(node).to have_css('label.error[for="author_time_zone"]')
411
+ expect(node).to have_css('select.error[name="author[time_zone]"]')
391
412
  end
392
413
  end
393
414
 
394
415
  it "should display errors on collection_select inputs" do
395
416
  form_for(@author) do |builder|
396
- @author.stub!(:errors).and_return({:favorite_book => ['required']})
417
+ allow(@author).to receive(:errors).and_return({:favorite_book => ['required']})
397
418
  node = Capybara.string builder.collection_select(:favorite_book, Book.all, :id, :title)
398
- node.should have_css('label.error[for="author_favorite_book"]')
399
- node.should have_css('select.error[name="author[favorite_book]"]')
419
+ expect(node).to have_css('label.error[for="author_favorite_book"]')
420
+ expect(node).to have_css('select.error[name="author[favorite_book]"]')
400
421
  end
401
422
  end
402
423
 
403
424
  it "should display errors on grouped_collection_select inputs" do
404
425
  form_for(@author) do |builder|
405
- @author.stub!(:errors).and_return({:favorite_book => ['required']})
426
+ allow(@author).to receive(:errors).and_return({:favorite_book => ['required']})
406
427
  node = Capybara.string builder.grouped_collection_select(:favorite_book, Genre.all, :books, :name, :id, :title)
407
- node.should have_css('label.error[for="author_favorite_book"]')
408
- node.should have_css('select.error[name="author[favorite_book]"]')
428
+ expect(node).to have_css('label.error[for="author_favorite_book"]')
429
+ expect(node).to have_css('select.error[name="author[favorite_book]"]')
409
430
  end
410
431
  end
411
432
 
@@ -413,16 +434,16 @@ describe "FoundationRailsHelper::FormHelper" do
413
434
 
414
435
  it "should display HTML errors when the option is specified" do
415
436
  form_for(@author) do |builder|
416
- @author.stub!(:errors).and_return({:login => ['required <a href="link_target">link</a>']})
437
+ allow(@author).to receive(:errors).and_return({:login => ['required <a href="link_target">link</a>']})
417
438
  node = Capybara.string builder.text_field(:login, html_safe_errors: true)
418
- node.should have_link('link', href: 'link_target')
439
+ expect(node).to have_link('link', href: 'link_target')
419
440
  end
420
441
  end
421
442
  it "should not display HTML errors when the option is not specified" do
422
443
  form_for(@author) do |builder|
423
- @author.stub!(:errors).and_return({:login => ['required <a href="link_target">link</a>']})
444
+ allow(@author).to receive(:errors).and_return({:login => ['required <a href="link_target">link</a>']})
424
445
  node = Capybara.string builder.text_field(:login)
425
- node.should_not have_link('link', href: 'link')
446
+ expect(node).to_not have_link('link', href: 'link')
426
447
  end
427
448
  end
428
449
 
@@ -432,11 +453,147 @@ describe "FoundationRailsHelper::FormHelper" do
432
453
  builder.check_box(:active, label: true) +
433
454
  builder.text_field(:description, label: 'Tell me about you')
434
455
 
435
- node.should_not have_css('label[for="author_login"]')
436
- node.should have_css('label[for="author_active"]', text: 'Active')
437
- node.should have_css('label[for="author_description"]', text: 'Tell me about you')
456
+ expect(node).to_not have_css('label[for="author_login"]')
457
+ expect(node).to have_css('label[for="author_active"]', text: 'Active')
458
+ expect(node).to have_css('label[for="author_description"]', text: 'Tell me about you')
459
+ end
460
+ end
461
+
462
+ context 'when class option given' do
463
+ it "should add it to the error class" do
464
+ form_for(@author) do |builder|
465
+ allow(@author).to receive(:errors).and_return({:email => ['required']})
466
+ node = Capybara.string builder.text_field(:email, class: 'righteous')
467
+ expect(node).to have_css('input.righteous.error[name="author[email]"]')
468
+ end
469
+ end
470
+ end
471
+
472
+ context 'when invalid class option given' do
473
+ it "should add it to the error class" do
474
+ form_for(@author) do |builder|
475
+ allow(@author).to receive(:errors).and_return({:email => ['required']})
476
+ node = Capybara.string builder.text_field(:email, class: :illgotten)
477
+ expect(node).to have_css('input.illgotten.error[name="author[email]"]')
478
+ end
479
+ end
480
+ end
481
+ end
482
+
483
+ describe 'submit button generator' do
484
+ after :each do
485
+ FoundationRailsHelper.reset
486
+ end
487
+
488
+ context 'when button_class config is not set' do
489
+ it "should display form button with default class" do
490
+ form_for(@author) do |builder|
491
+ node = Capybara.string builder.submit('Save')
492
+ expect(node).to have_css('input[type="submit"][class="small radius success button"]')
493
+ end
494
+ end
495
+ end
496
+
497
+ context 'when button_class config is "superduper"' do
498
+ before do
499
+ FoundationRailsHelper.configure do |config|
500
+ config.button_class = 'superduper'
501
+ end
502
+ end
503
+
504
+ it "should display form button with 'superduper' class" do
505
+ form_for(@author) do |builder|
506
+ node = Capybara.string builder.submit('Save')
507
+ expect(node).to have_css('input[type="submit"][class="superduper"]')
508
+ end
509
+ end
510
+ end
511
+
512
+ context 'when option value is "superduper"' do
513
+ it "should display form button with 'superduper' class" do
514
+ form_for(@author) do |builder|
515
+ node = Capybara.string builder.submit('Save', class: 'superduper')
516
+ expect(node).to have_css('input[type="submit"][class="superduper"]')
517
+ end
518
+ end
519
+ end
520
+ end
521
+
522
+ describe 'submit button generator' do
523
+ after :each do
524
+ FoundationRailsHelper.reset
525
+ end
526
+
527
+ context 'when button_class config is not set' do
528
+ it "should display form button with default class" do
529
+ form_for(@author) do |builder|
530
+ node = Capybara.string builder.submit('Save')
531
+ expect(node).to have_css('input[type="submit"][class="small radius success button"]')
532
+ end
533
+ end
534
+ end
535
+
536
+ context 'when button_class config is "superduper"' do
537
+ before do
538
+ FoundationRailsHelper.configure do |config|
539
+ config.button_class = 'superduper'
540
+ end
541
+ end
542
+
543
+ it "should display form button with 'superduper' class" do
544
+ form_for(@author) do |builder|
545
+ node = Capybara.string builder.submit('Save')
546
+ expect(node).to have_css('input[type="submit"][class="superduper"]')
547
+ end
548
+ end
549
+ end
550
+
551
+ context 'when option value is "superduper"' do
552
+ it "should display form button with 'superduper' class" do
553
+ form_for(@author) do |builder|
554
+ node = Capybara.string builder.submit('Save', class: 'superduper')
555
+ expect(node).to have_css('input[type="submit"][class="superduper"]')
556
+ end
557
+ end
558
+ end
559
+ end
560
+
561
+ describe 'submit button generator' do
562
+ after :each do
563
+ FoundationRailsHelper.reset
564
+ end
565
+
566
+ context 'when button_class config is not set' do
567
+ it "should display form button with default class" do
568
+ form_for(@author) do |builder|
569
+ node = Capybara.string builder.submit('Save')
570
+ expect(node).to have_css('input[type="submit"][class="small radius success button"]')
571
+ end
438
572
  end
439
573
  end
440
574
 
575
+ context 'when button_class config is "superduper"' do
576
+ before do
577
+ FoundationRailsHelper.configure do |config|
578
+ config.button_class = 'superduper'
579
+ end
580
+ end
581
+
582
+ it "should display form button with 'superduper' class" do
583
+ form_for(@author) do |builder|
584
+ node = Capybara.string builder.submit('Save')
585
+ expect(node).to have_css('input[type="submit"][class="superduper"]')
586
+ end
587
+ end
588
+ end
589
+
590
+ context 'when option value is "superduper"' do
591
+ it "should display form button with 'superduper' class" do
592
+ form_for(@author) do |builder|
593
+ node = Capybara.string builder.submit('Save', class: 'superduper')
594
+ expect(node).to have_css('input[type="submit"][class="superduper"]')
595
+ end
596
+ end
597
+ end
441
598
  end
442
599
  end