bootstrap_form 2.7.0 → 4.0.0.alpha1
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.
- checksums.yaml +5 -5
- data/.gitignore +14 -0
- data/.travis.yml +29 -0
- data/CHANGELOG.md +227 -0
- data/CONTRIBUTING.md +57 -0
- data/Dangerfile +54 -0
- data/Gemfile +21 -0
- data/{MIT-LICENSE → LICENSE.txt} +1 -1
- data/README.md +154 -87
- data/Rakefile +5 -15
- data/UPGRADE-4.0.md +79 -0
- data/bootstrap_form.gemspec +28 -0
- data/demo/README.md +17 -0
- data/demo/Rakefile +6 -0
- data/demo/app/controllers/application_controller.rb +2 -0
- data/demo/app/controllers/bootstrap_controller.rb +16 -0
- data/demo/app/helpers/bootstrap_helper.rb +23 -0
- data/{test/dummy → demo}/app/models/address.rb +0 -0
- data/demo/app/models/application_record.rb +3 -0
- data/{test/dummy → demo}/app/models/faux_user.rb +0 -0
- data/{test/dummy → demo}/app/models/super_user.rb +0 -0
- data/{test/dummy → demo}/app/models/user.rb +0 -0
- data/demo/app/views/bootstrap/form.html.erb +53 -0
- data/demo/app/views/layouts/application.html.erb +65 -0
- data/demo/bin/bundle +3 -0
- data/{test/dummy → demo}/bin/rails +1 -1
- data/{test/dummy → demo}/bin/rake +0 -0
- data/demo/bin/setup +36 -0
- data/demo/bin/update +31 -0
- data/demo/bin/yarn +11 -0
- data/{test/dummy → demo}/config.ru +2 -1
- data/demo/config/application.rb +24 -0
- data/demo/config/boot.rb +5 -0
- data/{test/dummy → demo}/config/database.yml +8 -12
- data/demo/config/environment.rb +5 -0
- data/demo/config/environments/development.rb +60 -0
- data/{test/dummy → demo}/config/environments/test.rb +15 -20
- data/demo/config/initializers/application_controller_renderer.rb +8 -0
- data/demo/config/initializers/assets.rb +14 -0
- data/{test/dummy → demo}/config/initializers/backtrace_silencers.rb +0 -0
- data/demo/config/initializers/cookies_serializer.rb +5 -0
- data/{test/dummy → demo}/config/initializers/filter_parameter_logging.rb +0 -0
- data/{test/dummy → demo}/config/initializers/inflections.rb +0 -0
- data/{test/dummy → demo}/config/initializers/mime_types.rb +0 -1
- data/{test/dummy → demo}/config/initializers/wrap_parameters.rb +2 -2
- data/{test/dummy → demo}/config/locales/en.yml +10 -0
- data/demo/config/puma.rb +56 -0
- data/{test/dummy → demo}/config/routes.rb +2 -0
- data/demo/config/spring.rb +6 -0
- data/demo/config/storage.yml +35 -0
- data/demo/db/schema.rb +24 -0
- data/{test/dummy/public/favicon.ico → demo/log/.keep} +0 -0
- data/demo/package.json +5 -0
- data/demo/public/favicon.ico +0 -0
- data/lib/bootstrap_form/form_builder.rb +221 -96
- data/lib/bootstrap_form/helper.rb +26 -16
- data/lib/bootstrap_form/helpers/bootstrap.rb +37 -24
- data/lib/bootstrap_form/version.rb +1 -1
- metadata +67 -252
- data/lib/bootstrap_form/helpers/nested_form.rb +0 -33
- data/test/bootstrap_checkbox_test.rb +0 -144
- data/test/bootstrap_fields_test.rb +0 -152
- data/test/bootstrap_form_group_test.rb +0 -289
- data/test/bootstrap_form_test.rb +0 -209
- data/test/bootstrap_other_components_test.rb +0 -86
- data/test/bootstrap_radio_button_test.rb +0 -124
- data/test/bootstrap_selects_test.rb +0 -160
- data/test/dummy/Gemfile +0 -45
- data/test/dummy/Gemfile.lock +0 -120
- data/test/dummy/README.rdoc +0 -28
- data/test/dummy/Rakefile +0 -10
- data/test/dummy/app/assets/javascripts/application.js +0 -16
- data/test/dummy/app/assets/stylesheets/application.css +0 -13
- data/test/dummy/app/controllers/application_controller.rb +0 -5
- data/test/dummy/app/helpers/application_helper.rb +0 -2
- data/test/dummy/app/views/layouts/application.html.erb +0 -14
- data/test/dummy/bin/bundle +0 -3
- data/test/dummy/config/application.rb +0 -23
- data/test/dummy/config/boot.rb +0 -4
- data/test/dummy/config/environment.rb +0 -5
- data/test/dummy/config/environments/development.rb +0 -29
- data/test/dummy/config/environments/production.rb +0 -80
- data/test/dummy/config/initializers/secret_token.rb +0 -12
- data/test/dummy/config/initializers/session_store.rb +0 -3
- data/test/dummy/db/migrate/20130703191909_create_users.rb +0 -13
- data/test/dummy/db/migrate/20130703191937_create_addresses.rb +0 -13
- data/test/dummy/db/migrate/20130912171202_add_preferences_to_user.rb +0 -5
- data/test/dummy/db/migrate/20140327190145_add_terms_to_user.rb +0 -5
- data/test/dummy/db/migrate/20140922133133_add_type_to_users.rb +0 -5
- data/test/dummy/db/schema.rb +0 -39
- data/test/dummy/db/seeds.rb +0 -7
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/test.log +0 -38160
- data/test/dummy/public/404.html +0 -58
- data/test/dummy/public/422.html +0 -58
- data/test/dummy/public/500.html +0 -57
- data/test/dummy/public/robots.txt +0 -5
- data/test/dummy/test/fixtures/addresses.yml +0 -15
- data/test/dummy/test/fixtures/users.yml +0 -15
- data/test/dummy/test/models/address_test.rb +0 -7
- data/test/dummy/test/models/user_test.rb +0 -7
- data/test/dummy/test/test_helper.rb +0 -15
- data/test/special_form_class_models_test.rb +0 -43
- data/test/test_helper.rb +0 -86
data/test/bootstrap_form_test.rb
DELETED
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
class BootstrapFormTest < ActionView::TestCase
|
|
4
|
-
include BootstrapForm::Helper
|
|
5
|
-
|
|
6
|
-
def setup
|
|
7
|
-
setup_test_fixture
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
test "default-style forms" do
|
|
11
|
-
expected = %{<form accept-charset="UTF-8" action="/users" class="new_user" id="new_user" method="post" role="form"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div></form>}
|
|
12
|
-
assert_equivalent_xml expected, bootstrap_form_for(@user) { |f| nil }
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
test "inline-style forms" do
|
|
16
|
-
expected = %{<form accept-charset="UTF-8" action="/users" class="form-inline" id="new_user" method="post" role="form"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div></form>}
|
|
17
|
-
assert_equivalent_xml expected, bootstrap_form_for(@user, layout: :inline) { |f| nil }
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
test "horizontal-style forms" do
|
|
21
|
-
expected = %{<form accept-charset="UTF-8" action="/users" class="form-horizontal" id="new_user" method="post" role="form"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div><div class="form-group"><label class="control-label col-sm-2 required" for="user_email">Email</label><div class="col-sm-10"><input class="form-control" id="user_email" name="user[email]" type="email" value="steve@example.com" /></div></div></form>}
|
|
22
|
-
assert_equivalent_xml expected, bootstrap_form_for(@user, layout: :horizontal) { |f| f.email_field :email }
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
test "existing styles aren't clobbered when specifying a form style" do
|
|
26
|
-
expected = %{<form accept-charset="UTF-8" action="/users" class="my-style form-horizontal" id="new_user" method="post" role="form"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div><div class="form-group"><label class="control-label col-sm-2 required" for="user_email">Email</label><div class="col-sm-10"><input class="form-control" id="user_email" name="user[email]" type="email" value="steve@example.com" /></div></div></form>}
|
|
27
|
-
assert_equivalent_xml expected, bootstrap_form_for(@user, layout: :horizontal, html: { class: "my-style" }) { |f| f.email_field :email }
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
test "given role attribute should not be covered by default role attribute" do
|
|
31
|
-
expected = %{<form accept-charset="UTF-8" action="/users" class="new_user" id="new_user" method="post" role="not-a-form"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div></form>}
|
|
32
|
-
assert_equivalent_xml expected, bootstrap_form_for(@user, html: { role: 'not-a-form'}) {|f| nil}
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
test "bootstrap_form_tag acts like a form tag" do
|
|
36
|
-
expected = %{<form accept-charset="UTF-8" action="/users" method="post" role="form"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div><div class="form-group"><label class="control-label" for="email">Your Email</label><input class="form-control" id="email" name="email" type="text" /></div></form>}
|
|
37
|
-
assert_equivalent_xml expected, bootstrap_form_tag(url: '/users') { |f| f.text_field :email, label: "Your Email" }
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
test "bootstrap_form_tag does not clobber custom options" do
|
|
41
|
-
expected = %{<form accept-charset="UTF-8" action="/users" method="post" role="form"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div><div class="form-group"><label class="control-label" for="ID">Email</label><input class="form-control" id="ID" name="NAME" type="text" /></div></form>}
|
|
42
|
-
assert_equivalent_xml expected, bootstrap_form_tag(url: '/users') { |f| f.text_field :email, name: 'NAME', id: "ID" }
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
test "bootstrap_form_tag allows an empty name for checkboxes" do
|
|
46
|
-
expected = %{<form accept-charset="UTF-8" action="/users" method="post" role="form"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div><div class="checkbox"><label for="_misc"><input name="[misc]" type="hidden" value="0" /><input id="_misc" name="[misc]" type="checkbox" value="1" /> Misc</label></div></form>}
|
|
47
|
-
assert_equivalent_xml expected, bootstrap_form_tag(url: '/users') { |f| f.check_box :misc }
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
test "errors display correctly and inline_errors are turned off by default when label_errors is true" do
|
|
51
|
-
@user.email = nil
|
|
52
|
-
@user.valid?
|
|
53
|
-
|
|
54
|
-
expected = %{<form accept-charset=\"UTF-8\" action=\"/users\" class=\"new_user\" id=\"new_user\" method=\"post\" role=\"form\"><div style=\"margin:0;padding:0;display:inline\"><input name=\"utf8\" type=\"hidden\" value=\"✓\" /></div><div class=\"form-group has-error\"><label class=\"control-label required\" for=\"user_email\">Email can't be blank, is too short (minimum is 5 characters)</label><input class=\"form-control\" id=\"user_email\" name=\"user[email]\" type=\"text\" /></div></form>}
|
|
55
|
-
assert_equivalent_xml expected, bootstrap_form_for(@user, label_errors: true) { |f| f.text_field :email }
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
test "errors display correctly and inline_errors can also be on when label_errors is true" do
|
|
59
|
-
@user.email = nil
|
|
60
|
-
@user.valid?
|
|
61
|
-
|
|
62
|
-
expected = %{<form accept-charset=\"UTF-8\" action=\"/users\" class=\"new_user\" id=\"new_user\" method=\"post\" role=\"form\"><div style=\"margin:0;padding:0;display:inline\"><input name=\"utf8\" type=\"hidden\" value=\"✓\" /></div><div class=\"form-group has-error\"><label class=\"control-label required\" for=\"user_email\">Email can't be blank, is too short (minimum is 5 characters)</label><input class=\"form-control\" id=\"user_email\" name=\"user[email]\" type=\"text\" /><span class=\"help-block\">can't be blank, is too short (minimum is 5 characters)</span></div></form>}
|
|
63
|
-
assert_equivalent_xml expected, bootstrap_form_for(@user, label_errors: true, inline_errors: true) { |f| f.text_field :email }
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
test "label error messages use humanized attribute names" do
|
|
67
|
-
I18n.backend.store_translations(:en, {activerecord: {attributes: {user: {email: 'Your e-mail address'}}}})
|
|
68
|
-
|
|
69
|
-
@user.email = nil
|
|
70
|
-
@user.valid?
|
|
71
|
-
|
|
72
|
-
expected = %{<form accept-charset=\"UTF-8\" action=\"/users\" class=\"new_user\" id=\"new_user\" method=\"post\" role=\"form\"><div style=\"margin:0;padding:0;display:inline\"><input name=\"utf8\" type=\"hidden\" value=\"✓\" /></div><div class=\"form-group has-error\"><label class=\"control-label required\" for=\"user_email\">Your e-mail address can't be blank, is too short (minimum is 5 characters)</label><input class=\"form-control\" id=\"user_email\" name=\"user[email]\" type=\"text\" /><span class=\"help-block\">can't be blank, is too short (minimum is 5 characters)</span></div></form>}
|
|
73
|
-
assert_equivalent_xml expected, bootstrap_form_for(@user, label_errors: true, inline_errors: true) { |f| f.text_field :email }
|
|
74
|
-
|
|
75
|
-
I18n.backend.store_translations(:en, {activerecord: {attributes: {user: {email: nil}}}})
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
test "alert message is wrapped correctly" do
|
|
79
|
-
@user.email = nil
|
|
80
|
-
@user.valid?
|
|
81
|
-
expected = %{<div class="alert alert-danger"><p>Please fix the following errors:</p><ul class="rails-bootstrap-forms-error-summary"><li>Email can't be blank</li><li>Email is too short (minimum is 5 characters)</li><li>Terms must be accepted</li></ul></div>}
|
|
82
|
-
assert_equivalent_xml expected, @builder.alert_message('Please fix the following errors:')
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
test "changing the class name for the alert message" do
|
|
86
|
-
@user.email = nil
|
|
87
|
-
@user.valid?
|
|
88
|
-
expected = %{<div class="my-css-class"><p>Please fix the following errors:</p><ul class="rails-bootstrap-forms-error-summary"><li>Email can't be blank</li><li>Email is too short (minimum is 5 characters)</li><li>Terms must be accepted</li></ul></div>}
|
|
89
|
-
assert_equivalent_xml expected, @builder.alert_message('Please fix the following errors:', class: 'my-css-class')
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
test "alert_message contains the error summary when inline_errors are turned off" do
|
|
93
|
-
@user.email = nil
|
|
94
|
-
@user.valid?
|
|
95
|
-
|
|
96
|
-
output = bootstrap_form_for(@user, inline_errors: false) do |f|
|
|
97
|
-
f.alert_message('Please fix the following errors:')
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
expected = %{<form accept-charset="UTF-8" action="/users" class="new_user" id="new_user" method="post" role="form"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div><div class="alert alert-danger"><p>Please fix the following errors:</p><ul class="rails-bootstrap-forms-error-summary"><li>Email can't be blank</li><li>Email is too short (minimum is 5 characters)</li><li>Terms must be accepted</li></ul></div></form>}
|
|
101
|
-
assert_equivalent_xml expected, output
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
test "alert_message allows the error_summary to be turned off" do
|
|
105
|
-
@user.email = nil
|
|
106
|
-
@user.valid?
|
|
107
|
-
|
|
108
|
-
output = bootstrap_form_for(@user, inline_errors: false) do |f|
|
|
109
|
-
f.alert_message('Please fix the following errors:', error_summary: false)
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
expected = %{<form accept-charset="UTF-8" action="/users" class="new_user" id="new_user" method="post" role="form"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div><div class="alert alert-danger"><p>Please fix the following errors:</p></div></form>}
|
|
113
|
-
assert_equivalent_xml expected, output
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
test "alert_message allows the error_summary to be turned on with inline_errors also turned on" do
|
|
117
|
-
@user.email = nil
|
|
118
|
-
@user.valid?
|
|
119
|
-
|
|
120
|
-
output = bootstrap_form_for(@user, inline_errors: true) do |f|
|
|
121
|
-
f.alert_message('Please fix the following errors:', error_summary: true)
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
expected = %{<form accept-charset="UTF-8" action="/users" class="new_user" id="new_user" method="post" role="form"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div><div class="alert alert-danger"><p>Please fix the following errors:</p><ul class="rails-bootstrap-forms-error-summary"><li>Email can't be blank</li><li>Email is too short (minimum is 5 characters)</li><li>Terms must be accepted</li></ul></div></form>}
|
|
125
|
-
assert_equivalent_xml expected, output
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
test "error_summary returns an unordered list of errors" do
|
|
129
|
-
@user.email = nil
|
|
130
|
-
@user.valid?
|
|
131
|
-
|
|
132
|
-
expected = %{<ul class="rails-bootstrap-forms-error-summary"><li>Email can't be blank</li><li>Email is too short (minimum is 5 characters)</li><li>Terms must be accepted</li></ul>}
|
|
133
|
-
assert_equivalent_xml expected, @builder.error_summary
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
test 'errors_on renders the errors for a specific attribute when invalid' do
|
|
137
|
-
@user.email = nil
|
|
138
|
-
@user.valid?
|
|
139
|
-
|
|
140
|
-
expected = %{<div class="alert alert-danger">Email can't be blank, Email is too short (minimum is 5 characters)</div>}
|
|
141
|
-
assert_equivalent_xml expected, @builder.errors_on(:email)
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
test "custom label width for horizontal forms" do
|
|
145
|
-
expected = %{<form accept-charset="UTF-8" action="/users" class="form-horizontal" id="new_user" method="post" role="form"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div><div class="form-group"><label class="control-label col-sm-1 required" for="user_email">Email</label><div class="col-sm-10"><input class="form-control" id="user_email" name="user[email]" type="email" value="steve@example.com" /></div></div></form>}
|
|
146
|
-
assert_equivalent_xml expected, bootstrap_form_for(@user, layout: :horizontal) { |f| f.email_field :email, label_col: 'col-sm-1' }
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
test "offset for form group without label respects label width for horizontal forms" do
|
|
150
|
-
expected = %{<form accept-charset="UTF-8" action="/users" class="form-horizontal" id="new_user" method="post" role="form"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div><div class="form-group"><div class="col-md-10 col-md-offset-2"><input class="btn btn-default" name="commit" type="submit" value="Create User" /></div></div></form>}
|
|
151
|
-
assert_equivalent_xml expected, bootstrap_form_for(@user, layout: :horizontal, label_col: 'col-md-2', control_col: 'col-md-10') { |f| f.form_group { f.submit } }
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
test "custom input width for horizontal forms" do
|
|
155
|
-
expected = %{<form accept-charset="UTF-8" action="/users" class="form-horizontal" id="new_user" method="post" role="form"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div><div class="form-group"><label class="control-label col-sm-2 required" for="user_email">Email</label><div class="col-sm-5"><input class="form-control" id="user_email" name="user[email]" type="email" value="steve@example.com" /></div></div></form>}
|
|
156
|
-
assert_equivalent_xml expected, bootstrap_form_for(@user, layout: :horizontal) { |f| f.email_field :email, control_col: 'col-sm-5' }
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
test "the field contains the error and is not wrapped in div.field_with_errors when bootstrap_form_for is used" do
|
|
160
|
-
@user.email = nil
|
|
161
|
-
@user.valid?
|
|
162
|
-
|
|
163
|
-
output = bootstrap_form_for(@user) do |f|
|
|
164
|
-
f.text_field(:email, help: 'This is required')
|
|
165
|
-
end
|
|
166
|
-
|
|
167
|
-
expected = %{<form accept-charset="UTF-8" action="/users" class="new_user" id="new_user" method="post" role="form"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div><div class="form-group has-error"><label class="control-label required" for="user_email">Email</label><input class="form-control" id="user_email" name="user[email]" type="text" /><span class="help-block">can't be blank, is too short (minimum is 5 characters)</span></div></form>}
|
|
168
|
-
assert_equivalent_xml expected, output
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
test "the field is wrapped with div.field_with_errors when form_for is used" do
|
|
172
|
-
@user.email = nil
|
|
173
|
-
@user.valid?
|
|
174
|
-
|
|
175
|
-
output = form_for(@user, builder: BootstrapForm::FormBuilder) do |f|
|
|
176
|
-
f.text_field(:email, help: 'This is required')
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
expected = %{<form accept-charset="UTF-8" action="/users" class="new_user" id="new_user" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div><div class="form-group has-error"><div class="field_with_errors"><label class="control-label required" for="user_email">Email</label></div><div class="field_with_errors"><input class="form-control" id="user_email" name="user[email]" type="text" /></div><span class="help-block">can't be blank, is too short (minimum is 5 characters)</span></div></form>}
|
|
180
|
-
assert_equivalent_xml expected, output
|
|
181
|
-
end
|
|
182
|
-
|
|
183
|
-
test "help is preserved when inline_errors: false is passed to bootstrap_form_for" do
|
|
184
|
-
@user.email = nil
|
|
185
|
-
@user.valid?
|
|
186
|
-
|
|
187
|
-
output = bootstrap_form_for(@user, inline_errors: false) do |f|
|
|
188
|
-
f.text_field(:email, help: 'This is required')
|
|
189
|
-
end
|
|
190
|
-
|
|
191
|
-
expected = %{<form accept-charset="UTF-8" action="/users" class="new_user" id="new_user" method="post" role="form"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div><div class="form-group has-error"><label class="control-label required" for="user_email">Email</label><input class="form-control" id="user_email" name="user[email]" type="text" /><span class="help-block">This is required</span></div></form>}
|
|
192
|
-
assert_equivalent_xml expected, output
|
|
193
|
-
end
|
|
194
|
-
|
|
195
|
-
test "allows the form object to be nil" do
|
|
196
|
-
builder = BootstrapForm::FormBuilder.new :other_model, nil, self, {}
|
|
197
|
-
expected = %{<div class="form-group"><label class="control-label" for="other_model_email">Email</label><input class="form-control" id="other_model_email" name="other_model[email]" type="text" /></div>}
|
|
198
|
-
assert_equivalent_xml expected, builder.text_field(:email)
|
|
199
|
-
end
|
|
200
|
-
|
|
201
|
-
test 'errors_on hide attribute name in message' do
|
|
202
|
-
@user.email = nil
|
|
203
|
-
@user.valid?
|
|
204
|
-
|
|
205
|
-
expected = %{<div class="alert alert-danger">can't be blank, is too short (minimum is 5 characters)</div>}
|
|
206
|
-
|
|
207
|
-
assert_equivalent_xml expected, @builder.errors_on(:email, hide_attribute_name: true)
|
|
208
|
-
end
|
|
209
|
-
end
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
class BootstrapOtherComponentsTest < ActionView::TestCase
|
|
4
|
-
include BootstrapForm::Helper
|
|
5
|
-
|
|
6
|
-
def setup
|
|
7
|
-
setup_test_fixture
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
test "static control" do
|
|
11
|
-
output = @horizontal_builder.static_control :email
|
|
12
|
-
|
|
13
|
-
expected = %{<div class="form-group"><label class="control-label col-sm-2 required" for="user_email">Email</label><div class="col-sm-10"><p class="form-control-static">steve@example.com</p></div></div>}
|
|
14
|
-
assert_equivalent_xml expected, output
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
test "static control doesn't require an actual attribute" do
|
|
18
|
-
output = @horizontal_builder.static_control nil, label: "My Label" do
|
|
19
|
-
"this is a test"
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
expected = %{<div class="form-group"><label class="control-label col-sm-2" for="user_">My Label</label><div class="col-sm-10"><p class="form-control-static">this is a test</p></div></div>}
|
|
23
|
-
assert_equivalent_xml expected, output
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
test "static control doesn't require a name" do
|
|
27
|
-
output = @horizontal_builder.static_control label: "Custom Label" do
|
|
28
|
-
"Custom Control"
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
expected = %{<div class="form-group"><label class="control-label col-sm-2" for="user_">Custom Label</label><div class="col-sm-10"><p class="form-control-static">Custom Control</p></div></div>}
|
|
32
|
-
assert_equivalent_xml expected, output
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
test "custom control does't wrap given block in a p tag" do
|
|
36
|
-
output = @horizontal_builder.custom_control :email do
|
|
37
|
-
"this is a test"
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
expected = %{<div class="form-group"><label class="control-label col-sm-2 required" for="user_email">Email</label><div class="col-sm-10">this is a test</div></div>}
|
|
41
|
-
assert_equal expected, output
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
test "custom control doesn't require an actual attribute" do
|
|
45
|
-
output = @horizontal_builder.custom_control nil, label: "My Label" do
|
|
46
|
-
"this is a test"
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
expected = %{<div class="form-group"><label class="control-label col-sm-2" for="user_">My Label</label><div class="col-sm-10">this is a test</div></div>}
|
|
50
|
-
assert_equal expected, output
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
test "custom control doesn't require a name" do
|
|
54
|
-
output = @horizontal_builder.custom_control label: "Custom Label" do
|
|
55
|
-
"Custom Control"
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
expected = %{<div class="form-group"><label class="control-label col-sm-2" for="user_">Custom Label</label><div class="col-sm-10">Custom Control</div></div>}
|
|
59
|
-
assert_equal expected, output
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
test "submit button defaults to rails action name" do
|
|
63
|
-
expected = %{<input class="btn btn-default" name="commit" type="submit" value="Create User" />}
|
|
64
|
-
assert_equivalent_xml expected, @builder.submit
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
test "submit button uses default button classes" do
|
|
68
|
-
expected = %{<input class="btn btn-default" name="commit" type="submit" value="Submit Form" />}
|
|
69
|
-
assert_equivalent_xml expected, @builder.submit("Submit Form")
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
test "override submit button classes" do
|
|
73
|
-
expected = %{<input class="btn btn-primary" name="commit" type="submit" value="Submit Form" />}
|
|
74
|
-
assert_equivalent_xml expected, @builder.submit("Submit Form", class: "btn btn-primary")
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
test "primary button uses proper css classes" do
|
|
78
|
-
expected = %{<input class="btn btn-primary" name="commit" type="submit" value="Submit Form" />}
|
|
79
|
-
assert_equivalent_xml expected, @builder.primary("Submit Form")
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
test "override primary button classes" do
|
|
83
|
-
expected = %{<input class="btn btn-primary disabled" name="commit" type="submit" value="Submit Form" />}
|
|
84
|
-
assert_equivalent_xml expected, @builder.primary("Submit Form", class: "btn btn-primary disabled")
|
|
85
|
-
end
|
|
86
|
-
end
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
class BootstrapRadioButtonTest < ActionView::TestCase
|
|
4
|
-
include BootstrapForm::Helper
|
|
5
|
-
|
|
6
|
-
def setup
|
|
7
|
-
setup_test_fixture
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
test "radio_button is wrapped correctly" do
|
|
11
|
-
expected = %{<div class="radio"><label for="user_misc_1"><input id="user_misc_1" name="user[misc]" type="radio" value="1" /> This is a radio button</label></div>}
|
|
12
|
-
assert_equivalent_xml expected, @builder.radio_button(:misc, '1', label: 'This is a radio button')
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
test "radio_button disabled label is set correctly" do
|
|
16
|
-
expected = %{<div class="radio disabled"><label for="user_misc_1"><input disabled="disabled" id="user_misc_1" name="user[misc]" type="radio" value="1" /> This is a radio button</label></div>}
|
|
17
|
-
assert_equivalent_xml expected, @builder.radio_button(:misc, '1', label: 'This is a radio button', disabled: true)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
test "radio_button label class is set correctly" do
|
|
21
|
-
expected = %{<div class="radio"><label class="btn" for="user_misc_1"><input id="user_misc_1" name="user[misc]" type="radio" value="1" /> This is a radio button</label></div>}
|
|
22
|
-
assert_equivalent_xml expected, @builder.radio_button(:misc, '1', label: 'This is a radio button', label_class: 'btn')
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
test "radio_button inline label is set correctly" do
|
|
26
|
-
expected = %{<label class="radio-inline" for="user_misc_1"><input id="user_misc_1" name="user[misc]" type="radio" value="1" /> This is a radio button</label>}
|
|
27
|
-
assert_equivalent_xml expected, @builder.radio_button(:misc, '1', label: 'This is a radio button', inline: true)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
test "radio_button disabled inline label is set correctly" do
|
|
31
|
-
expected = %{<label class="radio-inline disabled" for="user_misc_1"><input disabled="disabled" id="user_misc_1" name="user[misc]" type="radio" value="1" /> This is a radio button</label>}
|
|
32
|
-
assert_equivalent_xml expected, @builder.radio_button(:misc, '1', label: 'This is a radio button', inline: true, disabled: true)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
test "radio_button inline label class is set correctly" do
|
|
36
|
-
expected = %{<label class="radio-inline btn" for="user_misc_1"><input id="user_misc_1" name="user[misc]" type="radio" value="1" /> This is a radio button</label>}
|
|
37
|
-
assert_equivalent_xml expected, @builder.radio_button(:misc, '1', label: 'This is a radio button', inline: true, label_class: 'btn')
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
test 'collection_radio_buttons renders the form_group correctly' do
|
|
41
|
-
collection = [Address.new(id: 1, street: 'Foobar')]
|
|
42
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_misc">This is a radio button collection</label><div class="radio"><label for="user_misc_1"><input id="user_misc_1" name="user[misc]" type="radio" value="1" /> Foobar</label></div><span class="help-block">With a help!</span></div>}
|
|
43
|
-
|
|
44
|
-
assert_equivalent_xml expected, @builder.collection_radio_buttons(:misc, collection, :id, :street, label: 'This is a radio button collection', help: 'With a help!')
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
test 'collection_radio_buttons renders multiple radios correctly' do
|
|
48
|
-
collection = [Address.new(id: 1, street: 'Foo'), Address.new(id: 2, street: 'Bar')]
|
|
49
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_misc">Misc</label><div class="radio"><label for="user_misc_1"><input id="user_misc_1" name="user[misc]" type="radio" value="1" /> Foo</label></div><div class="radio"><label for="user_misc_2"><input id="user_misc_2" name="user[misc]" type="radio" value="2" /> Bar</label></div></div>}
|
|
50
|
-
|
|
51
|
-
assert_equivalent_xml expected, @builder.collection_radio_buttons(:misc, collection, :id, :street)
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
test 'collection_radio_buttons renders inline radios correctly' do
|
|
55
|
-
collection = [Address.new(id: 1, street: 'Foo'), Address.new(id: 2, street: 'Bar')]
|
|
56
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_misc">Misc</label><label class="radio-inline" for="user_misc_1"><input id="user_misc_1" name="user[misc]" type="radio" value="1" /> Foo</label><label class="radio-inline" for="user_misc_2"><input id="user_misc_2" name="user[misc]" type="radio" value="2" /> Bar</label></div>}
|
|
57
|
-
|
|
58
|
-
assert_equivalent_xml expected, @builder.collection_radio_buttons(:misc, collection, :id, :street, inline: true)
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
test 'collection_radio_buttons renders with checked option correctly' do
|
|
62
|
-
collection = [Address.new(id: 1, street: 'Foo'), Address.new(id: 2, street: 'Bar')]
|
|
63
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_misc">Misc</label><div class="radio"><label for="user_misc_1"><input checked="checked" id="user_misc_1" name="user[misc]" type="radio" value="1" /> Foo</label></div><div class="radio"><label for="user_misc_2"><input id="user_misc_2" name="user[misc]" type="radio" value="2" /> Bar</label></div></div>}
|
|
64
|
-
|
|
65
|
-
assert_equivalent_xml expected, @builder.collection_radio_buttons(:misc, collection, :id, :street, checked: 1)
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
test 'collection_radio_buttons renders label defined by Proc correctly' do
|
|
69
|
-
collection = [Address.new(id: 1, street: 'Foobar')]
|
|
70
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_misc">This is a radio button collection</label><div class="radio"><label for="user_misc_1"><input id="user_misc_1" name="user[misc]" type="radio" value="1" /> rabooF</label></div><span class="help-block">With a help!</span></div>}
|
|
71
|
-
|
|
72
|
-
assert_equivalent_xml expected, @builder.collection_radio_buttons(:misc, collection, :id, Proc.new { |a| a.street.reverse }, label: 'This is a radio button collection', help: 'With a help!')
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
test 'collection_radio_buttons renders value defined by Proc correctly' do
|
|
76
|
-
collection = [Address.new(id: 1, street: 'Foobar')]
|
|
77
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_misc">This is a radio button collection</label><div class="radio"><label for="user_misc_address_1"><input id="user_misc_address_1" name="user[misc]" type="radio" value="address_1" /> Foobar</label></div><span class="help-block">With a help!</span></div>}
|
|
78
|
-
|
|
79
|
-
assert_equivalent_xml expected, @builder.collection_radio_buttons(:misc, collection, Proc.new { |a| "address_#{a.id}" }, :street, label: 'This is a radio button collection', help: 'With a help!')
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
test 'collection_radio_buttons renders multiple radios with label defined by Proc correctly' do
|
|
83
|
-
collection = [Address.new(id: 1, street: 'Foo'), Address.new(id: 2, street: 'Bar')]
|
|
84
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_misc">Misc</label><div class="radio"><label for="user_misc_1"><input id="user_misc_1" name="user[misc]" type="radio" value="1" /> ooF</label></div><div class="radio"><label for="user_misc_2"><input id="user_misc_2" name="user[misc]" type="radio" value="2" /> raB</label></div></div>}
|
|
85
|
-
|
|
86
|
-
assert_equivalent_xml expected, @builder.collection_radio_buttons(:misc, collection, :id, Proc.new { |a| a.street.reverse })
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
test 'collection_radio_buttons renders multiple radios with value defined by Proc correctly' do
|
|
90
|
-
collection = [Address.new(id: 1, street: 'Foo'), Address.new(id: 2, street: 'Bar')]
|
|
91
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_misc">Misc</label><div class="radio"><label for="user_misc_address_1"><input id="user_misc_address_1" name="user[misc]" type="radio" value="address_1" /> Foo</label></div><div class="radio"><label for="user_misc_address_2"><input id="user_misc_address_2" name="user[misc]" type="radio" value="address_2" /> Bar</label></div></div>}
|
|
92
|
-
|
|
93
|
-
assert_equivalent_xml expected, @builder.collection_radio_buttons(:misc, collection, Proc.new { |a| "address_#{a.id}" }, :street)
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
test 'collection_radio_buttons renders label defined by lambda correctly' do
|
|
97
|
-
collection = [Address.new(id: 1, street: 'Foobar')]
|
|
98
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_misc">This is a radio button collection</label><div class="radio"><label for="user_misc_1"><input id="user_misc_1" name="user[misc]" type="radio" value="1" /> rabooF</label></div><span class="help-block">With a help!</span></div>}
|
|
99
|
-
|
|
100
|
-
assert_equivalent_xml expected, @builder.collection_radio_buttons(:misc, collection, :id, lambda { |a| a.street.reverse }, label: 'This is a radio button collection', help: 'With a help!')
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
test 'collection_radio_buttons renders value defined by lambda correctly' do
|
|
104
|
-
collection = [Address.new(id: 1, street: 'Foobar')]
|
|
105
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_misc">This is a radio button collection</label><div class="radio"><label for="user_misc_address_1"><input id="user_misc_address_1" name="user[misc]" type="radio" value="address_1" /> Foobar</label></div><span class="help-block">With a help!</span></div>}
|
|
106
|
-
|
|
107
|
-
assert_equivalent_xml expected, @builder.collection_radio_buttons(:misc, collection, lambda { |a| "address_#{a.id}" }, :street, label: 'This is a radio button collection', help: 'With a help!')
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
test 'collection_radio_buttons renders multiple radios with label defined by lambda correctly' do
|
|
111
|
-
collection = [Address.new(id: 1, street: 'Foo'), Address.new(id: 2, street: 'Bar')]
|
|
112
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_misc">Misc</label><div class="radio"><label for="user_misc_1"><input id="user_misc_1" name="user[misc]" type="radio" value="1" /> ooF</label></div><div class="radio"><label for="user_misc_2"><input id="user_misc_2" name="user[misc]" type="radio" value="2" /> raB</label></div></div>}
|
|
113
|
-
|
|
114
|
-
assert_equivalent_xml expected, @builder.collection_radio_buttons(:misc, collection, :id, lambda { |a| a.street.reverse })
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
test 'collection_radio_buttons renders multiple radios with value defined by lambda correctly' do
|
|
118
|
-
collection = [Address.new(id: 1, street: 'Foo'), Address.new(id: 2, street: 'Bar')]
|
|
119
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_misc">Misc</label><div class="radio"><label for="user_misc_address_1"><input id="user_misc_address_1" name="user[misc]" type="radio" value="address_1" /> Foo</label></div><div class="radio"><label for="user_misc_address_2"><input id="user_misc_address_2" name="user[misc]" type="radio" value="address_2" /> Bar</label></div></div>}
|
|
120
|
-
|
|
121
|
-
assert_equivalent_xml expected, @builder.collection_radio_buttons(:misc, collection, lambda { |a| "address_#{a.id}" }, :street)
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
end
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
require 'test_helper'
|
|
2
|
-
|
|
3
|
-
class BootstrapSelectsTest < ActionView::TestCase
|
|
4
|
-
include BootstrapForm::Helper
|
|
5
|
-
|
|
6
|
-
def setup
|
|
7
|
-
setup_test_fixture
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
test "time zone selects are wrapped correctly" do
|
|
11
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_misc">Misc</label><select class="form-control" id="user_misc" name="user[misc]">#{time_zone_options_for_select}</select></div>}
|
|
12
|
-
assert_equivalent_xml expected, @builder.time_zone_select(:misc)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
test "selects are wrapped correctly" do
|
|
16
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_status">Status</label><select class="form-control" id="user_status" name="user[status]"><option value="1">activated</option>\n<option value="2">blocked</option></select></div>}
|
|
17
|
-
assert_equivalent_xml expected, @builder.select(:status, [['activated', 1], ['blocked', 2]])
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
test "bootstrap_specific options are handled correctly" do
|
|
21
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_status">My Status Label</label><select class="form-control" id="user_status" name="user[status]"><option value="1">activated</option>\n<option value="2">blocked</option></select><span class="help-block">Help!</span></div>}
|
|
22
|
-
assert_equivalent_xml expected, @builder.select(:status, [['activated', 1], ['blocked', 2]], label: "My Status Label", help: "Help!" )
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
test "selects with options are wrapped correctly" do
|
|
26
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_status">Status</label><select class="form-control" id="user_status" name="user[status]"><option value="">Please Select</option>\n<option value="1">activated</option>\n<option value="2">blocked</option></select></div>}
|
|
27
|
-
assert_equivalent_xml expected, @builder.select(:status, [['activated', 1], ['blocked', 2]], prompt: "Please Select")
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
test "selects with both options and html_options are wrapped correctly" do
|
|
31
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_status">Status</label><select class="form-control my-select" id="user_status" name="user[status]"><option value="">Please Select</option>\n<option value="1">activated</option>\n<option value="2">blocked</option></select></div>}
|
|
32
|
-
assert_equivalent_xml expected, @builder.select(:status, [['activated', 1], ['blocked', 2]], { prompt: "Please Select" }, class: "my-select")
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
test 'selects with addons are wrapped correctly' do
|
|
36
|
-
expected = <<-HTML.strip_heredoc
|
|
37
|
-
<div class="form-group">
|
|
38
|
-
<label class="control-label" for="user_status">Status</label>
|
|
39
|
-
<div class="input-group">
|
|
40
|
-
<span class="input-group-addon">Before</span>
|
|
41
|
-
<select class="form-control" id="user_status" name="user[status]">
|
|
42
|
-
<option value="1">activated</option>
|
|
43
|
-
<option value="2">blocked</option>
|
|
44
|
-
</select>
|
|
45
|
-
<span class="input-group-addon">After</span>
|
|
46
|
-
</div>
|
|
47
|
-
</div>
|
|
48
|
-
HTML
|
|
49
|
-
assert_equivalent_xml expected, @builder.select(:status, [['activated', 1], ['blocked', 2]], prepend: 'Before', append: 'After')
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
if Gem::Version.new(Rails::VERSION::STRING) >= Gem::Version.new("4.1.0")
|
|
53
|
-
test "selects with block use block as content" do
|
|
54
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_status">Status</label><select class="form-control" name="user[status]" id="user_status"><option>Option 1</option><option>Option 2</option></select></div>}
|
|
55
|
-
select = @builder.select(:status) do
|
|
56
|
-
content_tag(:option) { 'Option 1' } +
|
|
57
|
-
content_tag(:option) { 'Option 2' }
|
|
58
|
-
end
|
|
59
|
-
assert_equivalent_xml expected, select
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
test "selects render labels properly" do
|
|
64
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_status">User Status</label><select class="form-control" id="user_status" name="user[status]"><option value="1">activated</option>\n<option value="2">blocked</option></select></div>}
|
|
65
|
-
assert_equivalent_xml expected, @builder.select(:status, [['activated', 1], ['blocked', 2]], label: "User Status")
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
test "collection_selects are wrapped correctly" do
|
|
69
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_status">Status</label><select class="form-control" id="user_status" name="user[status]"></select></div>}
|
|
70
|
-
assert_equivalent_xml expected, @builder.collection_select(:status, [], :id, :name)
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
test "collection_selects with options are wrapped correctly" do
|
|
74
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_status">Status</label><select class="form-control" id="user_status" name="user[status]"><option value="">Please Select</option>\n</select></div>}
|
|
75
|
-
assert_equivalent_xml expected, @builder.collection_select(:status, [], :id, :name, prompt: "Please Select")
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
test "collection_selects with options and html_options are wrapped correctly" do
|
|
79
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_status">Status</label><select class="form-control my-select" id="user_status" name="user[status]"><option value="">Please Select</option>\n</select></div>}
|
|
80
|
-
assert_equivalent_xml expected, @builder.collection_select(:status, [], :id, :name, { prompt: "Please Select" }, class: "my-select")
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
test "grouped_collection_selects are wrapped correctly" do
|
|
84
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_status">Status</label><select class="form-control" id="user_status" name="user[status]"></select></div>}
|
|
85
|
-
assert_equivalent_xml expected, @builder.grouped_collection_select(:status, [], :last, :first, :to_s, :to_s)
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
test "grouped_collection_selects with options are wrapped correctly" do
|
|
89
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_status">Status</label><select class="form-control" id="user_status" name="user[status]"><option value="">Please Select</option>\n</select></div>}
|
|
90
|
-
assert_equivalent_xml expected, @builder.grouped_collection_select(:status, [], :last, :first, :to_s, :to_s, prompt: "Please Select")
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
test "grouped_collection_selects with options and html_options are wrapped correctly" do
|
|
94
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_status">Status</label><select class="form-control my-select" id="user_status" name="user[status]"><option value="">Please Select</option>\n</select></div>}
|
|
95
|
-
assert_equivalent_xml expected, @builder.grouped_collection_select(:status, [], :last, :first, :to_s, :to_s, { prompt: "Please Select" }, class: "my-select")
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
test "date selects are wrapped correctly" do
|
|
99
|
-
Timecop.freeze(Time.utc(2012, 2, 3)) do
|
|
100
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_misc">Misc</label><div class="rails-bootstrap-forms-date-select"><select class="form-control" id="user_misc_1i" name="user[misc(1i)]">\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option selected="selected" value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n</select>\n<select class="form-control" id="user_misc_2i" name="user[misc(2i)]">\n<option value="1">January</option>\n<option selected="selected" value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n</select>\n<select class="form-control" id="user_misc_3i" name="user[misc(3i)]">\n<option value="1">1</option>\n<option value="2">2</option>\n<option selected="selected" value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n</select>\n</div></div>}
|
|
101
|
-
assert_equivalent_xml expected, @builder.date_select(:misc)
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
test "date selects with options are wrapped correctly" do
|
|
106
|
-
Timecop.freeze(Time.utc(2012, 2, 3)) do
|
|
107
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_misc">Misc</label><div class="rails-bootstrap-forms-date-select"><select class="form-control" id="user_misc_1i" name="user[misc(1i)]">\n<option value=""></option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n</select>\n<select class="form-control" id="user_misc_2i" name="user[misc(2i)]">\n<option value=""></option>\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n</select>\n<select class="form-control" id="user_misc_3i" name="user[misc(3i)]">\n<option value=""></option>\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n</select>\n</div></div>}
|
|
108
|
-
assert_equivalent_xml expected, @builder.date_select(:misc, include_blank: true)
|
|
109
|
-
end
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
test "date selects with options and html_options are wrapped correctly" do
|
|
113
|
-
Timecop.freeze(Time.utc(2012, 2, 3)) do
|
|
114
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_misc">Misc</label><div class="rails-bootstrap-forms-date-select"><select class="form-control my-date-select" id="user_misc_1i" name="user[misc(1i)]">\n<option value=""></option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n</select>\n<select class="form-control my-date-select" id="user_misc_2i" name="user[misc(2i)]">\n<option value=""></option>\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n</select>\n<select class="form-control my-date-select" id="user_misc_3i" name="user[misc(3i)]">\n<option value=""></option>\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n</select>\n</div></div>}
|
|
115
|
-
assert_equivalent_xml expected, @builder.date_select(:misc, { include_blank: true }, class: "my-date-select")
|
|
116
|
-
end
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
test "time selects are wrapped correctly" do
|
|
120
|
-
Timecop.freeze(Time.utc(2012, 2, 3, 12, 0, 0)) do
|
|
121
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_misc">Misc</label><div class="rails-bootstrap-forms-time-select"><input id="user_misc_1i" name="user[misc(1i)]" type="hidden" value="2012" />\n<input id="user_misc_2i" name="user[misc(2i)]" type="hidden" value="2" />\n<input id="user_misc_3i" name="user[misc(3i)]" type="hidden" value="3" />\n<select class="form-control" id="user_misc_4i" name="user[misc(4i)]">\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option selected="selected" value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n</select>\n : <select class="form-control" id="user_misc_5i" name="user[misc(5i)]">\n<option selected="selected" value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n</select>\n</div></div>}
|
|
122
|
-
assert_equivalent_xml expected, @builder.time_select(:misc)
|
|
123
|
-
end
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
test "time selects with options are wrapped correctly" do
|
|
127
|
-
Timecop.freeze(Time.utc(2012, 2, 3, 12, 0, 0)) do
|
|
128
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_misc">Misc</label><div class="rails-bootstrap-forms-time-select"><input id="user_misc_1i" name="user[misc(1i)]" type="hidden" value="1" />\n<input id="user_misc_2i" name="user[misc(2i)]" type="hidden" value="1" />\n<input id="user_misc_3i" name="user[misc(3i)]" type="hidden" value="1" />\n<select class="form-control" id="user_misc_4i" name="user[misc(4i)]">\n<option value=""></option>\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n</select>\n : <select class="form-control" id="user_misc_5i" name="user[misc(5i)]">\n<option value=""></option>\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n</select>\n</div></div>}
|
|
129
|
-
assert_equivalent_xml expected, @builder.time_select(:misc, include_blank: true)
|
|
130
|
-
end
|
|
131
|
-
end
|
|
132
|
-
|
|
133
|
-
test "time selects with options and html_options are wrapped correctly" do
|
|
134
|
-
Timecop.freeze(Time.utc(2012, 2, 3, 12, 0, 0)) do
|
|
135
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_misc">Misc</label><div class="rails-bootstrap-forms-time-select"><input id="user_misc_1i" name="user[misc(1i)]" type="hidden" value="1" />\n<input id="user_misc_2i" name="user[misc(2i)]" type="hidden" value="1" />\n<input id="user_misc_3i" name="user[misc(3i)]" type="hidden" value="1" />\n<select class="form-control my-time-select" id="user_misc_4i" name="user[misc(4i)]">\n<option value=""></option>\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n</select>\n : <select class="form-control my-time-select" id="user_misc_5i" name="user[misc(5i)]">\n<option value=""></option>\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n</select>\n</div></div>}
|
|
136
|
-
assert_equivalent_xml expected, @builder.time_select(:misc, { include_blank: true }, class: "my-time-select")
|
|
137
|
-
end
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
test "datetime selects are wrapped correctly" do
|
|
141
|
-
Timecop.freeze(Time.utc(2012, 2, 3, 12, 0, 0)) do
|
|
142
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_misc">Misc</label><div class="rails-bootstrap-forms-datetime-select"><select class="form-control" id="user_misc_1i" name="user[misc(1i)]">\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option selected="selected" value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n</select>\n<select class="form-control" id="user_misc_2i" name="user[misc(2i)]">\n<option value="1">January</option>\n<option selected="selected" value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n</select>\n<select class="form-control" id="user_misc_3i" name="user[misc(3i)]">\n<option value="1">1</option>\n<option value="2">2</option>\n<option selected="selected" value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n</select>\n — <select class="form-control" id="user_misc_4i" name="user[misc(4i)]">\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option selected="selected" value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n</select>\n : <select class="form-control" id="user_misc_5i" name="user[misc(5i)]">\n<option selected="selected" value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n</select>\n</div></div>}
|
|
143
|
-
assert_equivalent_xml expected, @builder.datetime_select(:misc)
|
|
144
|
-
end
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
test "datetime selects with options are wrapped correctly" do
|
|
148
|
-
Timecop.freeze(Time.utc(2012, 2, 3, 12, 0, 0)) do
|
|
149
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_misc">Misc</label><div class="rails-bootstrap-forms-datetime-select"><select class="form-control" id="user_misc_1i" name="user[misc(1i)]">\n<option value=""></option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n</select>\n<select class="form-control" id="user_misc_2i" name="user[misc(2i)]">\n<option value=""></option>\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n</select>\n<select class="form-control" id="user_misc_3i" name="user[misc(3i)]">\n<option value=""></option>\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n</select>\n — <select class="form-control" id="user_misc_4i" name="user[misc(4i)]">\n<option value=""></option>\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n</select>\n : <select class="form-control" id="user_misc_5i" name="user[misc(5i)]">\n<option value=""></option>\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n</select>\n</div></div>}
|
|
150
|
-
assert_equivalent_xml expected, @builder.datetime_select(:misc, include_blank: true)
|
|
151
|
-
end
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
test "datetime selects with options and html_options are wrapped correctly" do
|
|
155
|
-
Timecop.freeze(Time.utc(2012, 2, 3, 12, 0, 0)) do
|
|
156
|
-
expected = %{<div class="form-group"><label class="control-label" for="user_misc">Misc</label><div class="rails-bootstrap-forms-datetime-select"><select class="form-control my-datetime-select" id="user_misc_1i" name="user[misc(1i)]">\n<option value=""></option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n</select>\n<select class="form-control my-datetime-select" id="user_misc_2i" name="user[misc(2i)]">\n<option value=""></option>\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n</select>\n<select class="form-control my-datetime-select" id="user_misc_3i" name="user[misc(3i)]">\n<option value=""></option>\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n</select>\n — <select class="form-control my-datetime-select" id="user_misc_4i" name="user[misc(4i)]">\n<option value=""></option>\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n</select>\n : <select class="form-control my-datetime-select" id="user_misc_5i" name="user[misc(5i)]">\n<option value=""></option>\n<option value="00">00</option>\n<option value="01">01</option>\n<option value="02">02</option>\n<option value="03">03</option>\n<option value="04">04</option>\n<option value="05">05</option>\n<option value="06">06</option>\n<option value="07">07</option>\n<option value="08">08</option>\n<option value="09">09</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31">31</option>\n<option value="32">32</option>\n<option value="33">33</option>\n<option value="34">34</option>\n<option value="35">35</option>\n<option value="36">36</option>\n<option value="37">37</option>\n<option value="38">38</option>\n<option value="39">39</option>\n<option value="40">40</option>\n<option value="41">41</option>\n<option value="42">42</option>\n<option value="43">43</option>\n<option value="44">44</option>\n<option value="45">45</option>\n<option value="46">46</option>\n<option value="47">47</option>\n<option value="48">48</option>\n<option value="49">49</option>\n<option value="50">50</option>\n<option value="51">51</option>\n<option value="52">52</option>\n<option value="53">53</option>\n<option value="54">54</option>\n<option value="55">55</option>\n<option value="56">56</option>\n<option value="57">57</option>\n<option value="58">58</option>\n<option value="59">59</option>\n</select>\n</div></div>}
|
|
157
|
-
assert_equivalent_xml expected, @builder.datetime_select(:misc, { include_blank: true }, class: "my-datetime-select")
|
|
158
|
-
end
|
|
159
|
-
end
|
|
160
|
-
end
|