active_form 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +2 -0
- data/History.txt +4 -0
- data/License.txt +20 -0
- data/MIT-LICENSE +19 -0
- data/Manifest.txt +181 -0
- data/README.txt +1 -0
- data/Rakefile +4 -0
- data/config/hoe.rb +71 -0
- data/config/requirements.rb +17 -0
- data/init.rb +5 -0
- data/lib/active_form.rb +86 -0
- data/lib/active_form/core_extensions.rb +179 -0
- data/lib/active_form/definition.rb +72 -0
- data/lib/active_form/element.rb +50 -0
- data/lib/active_form/elements/base.rb +67 -0
- data/lib/active_form/elements/builder.rb +103 -0
- data/lib/active_form/elements/button.rb +15 -0
- data/lib/active_form/elements/checkbox.rb +18 -0
- data/lib/active_form/elements/file.rb +15 -0
- data/lib/active_form/elements/hidden.rb +9 -0
- data/lib/active_form/elements/image.rb +7 -0
- data/lib/active_form/elements/input.rb +23 -0
- data/lib/active_form/elements/password.rb +12 -0
- data/lib/active_form/elements/radio.rb +18 -0
- data/lib/active_form/elements/reset.rb +15 -0
- data/lib/active_form/elements/section.rb +37 -0
- data/lib/active_form/elements/select.rb +42 -0
- data/lib/active_form/elements/submit.rb +19 -0
- data/lib/active_form/elements/text.rb +9 -0
- data/lib/active_form/elements/textarea.rb +18 -0
- data/lib/active_form/errors.rb +73 -0
- data/lib/active_form/facets/checkbox_group.rb +11 -0
- data/lib/active_form/facets/collection_input.rb +96 -0
- data/lib/active_form/facets/radio_group.rb +11 -0
- data/lib/active_form/facets/select_date.rb +10 -0
- data/lib/active_form/facets/select_datetime.rb +10 -0
- data/lib/active_form/facets/select_day.rb +17 -0
- data/lib/active_form/facets/select_from_model.rb +60 -0
- data/lib/active_form/facets/select_hour.rb +17 -0
- data/lib/active_form/facets/select_minute.rb +17 -0
- data/lib/active_form/facets/select_month.rb +46 -0
- data/lib/active_form/facets/select_numeric_range.rb +59 -0
- data/lib/active_form/facets/select_second.rb +17 -0
- data/lib/active_form/facets/select_time.rb +10 -0
- data/lib/active_form/facets/select_timebased.rb +145 -0
- data/lib/active_form/facets/select_weekday.rb +46 -0
- data/lib/active_form/facets/select_year.rb +24 -0
- data/lib/active_form/mixins/attribute_methods.rb +33 -0
- data/lib/active_form/mixins/casting.rb +152 -0
- data/lib/active_form/mixins/collection_element_methods.rb +204 -0
- data/lib/active_form/mixins/common_methods.rb +350 -0
- data/lib/active_form/mixins/container_methods.rb +417 -0
- data/lib/active_form/mixins/css_methods.rb +70 -0
- data/lib/active_form/mixins/element_methods.rb +314 -0
- data/lib/active_form/mixins/javascript_methods.rb +99 -0
- data/lib/active_form/mixins/loader_methods.rb +72 -0
- data/lib/active_form/mixins/option_element_methods.rb +61 -0
- data/lib/active_form/mixins/validation_methods.rb +253 -0
- data/lib/active_form/validator.rb +47 -0
- data/lib/active_form/validators/alpha.rb +9 -0
- data/lib/active_form/validators/alphanum.rb +9 -0
- data/lib/active_form/validators/base.rb +132 -0
- data/lib/active_form/validators/digits.rb +9 -0
- data/lib/active_form/validators/email.rb +29 -0
- data/lib/active_form/validators/format.rb +15 -0
- data/lib/active_form/validators/length_range.rb +24 -0
- data/lib/active_form/validators/number.rb +9 -0
- data/lib/active_form/validators/option_count.rb +24 -0
- data/lib/active_form/validators/proc.rb +22 -0
- data/lib/active_form/validators/required.rb +9 -0
- data/lib/active_form/validators/set.rb +21 -0
- data/lib/active_form/validators/time_range.rb +30 -0
- data/lib/active_form/validators/uri.rb +54 -0
- data/lib/active_form/version.rb +9 -0
- data/lib/active_form/views/fieldsets.rb +34 -0
- data/lib/active_form/views/plain.rb +32 -0
- data/lib/active_form/views/tables.rb +28 -0
- data/lib/active_form/widget.rb +43 -0
- data/lib/active_form/widgets/base.rb +28 -0
- data/lib/loob/uri_validator.rb +140 -0
- data/lib/rails/acts_as_dropdown/MIT-LICENSE +20 -0
- data/lib/rails/acts_as_dropdown/acts_as_dropdown.rb +119 -0
- data/lib/rails/acts_as_dropdown/dropdown.rb +27 -0
- data/lib/rails/controller_helper.rb +19 -0
- data/lib/rails/model/loader.rb +206 -0
- data/lib/rails/view_helper.rb +20 -0
- data/samples/html/css/style.css +175 -0
- data/samples/html/js/effects.js +958 -0
- data/samples/html/js/prototype.js +2006 -0
- data/samples/html/js/validation.js +228 -0
- data/samples/html/plain_view.html +77 -0
- data/samples/html/sample001.html +158 -0
- data/samples/html/sample002.html +76 -0
- data/samples/html/sample003.html +34 -0
- data/samples/layouts/default.rhtml +18 -0
- data/samples/layouts/plain.rhtml +21 -0
- data/samples/layouts/sample003.rhtml +25 -0
- data/samples/plain_view.rb +58 -0
- data/samples/sample001.rb +111 -0
- data/samples/sample002.rb +92 -0
- data/samples/sample003.rb +30 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/script/txt2html +74 -0
- data/setup.rb +1585 -0
- data/tasks/deployment.rake +34 -0
- data/tasks/environment.rake +7 -0
- data/tasks/website.rake +17 -0
- data/test/elements/test_base_element.rb +159 -0
- data/test/elements/test_builder_element.rb +81 -0
- data/test/elements/test_button_element.rb +12 -0
- data/test/elements/test_checkbox_element.rb +233 -0
- data/test/elements/test_file_element.rb +20 -0
- data/test/elements/test_hidden_element.rb +11 -0
- data/test/elements/test_image_element.rb +11 -0
- data/test/elements/test_input_element.rb +39 -0
- data/test/elements/test_password_element.rb +16 -0
- data/test/elements/test_radio_element.rb +197 -0
- data/test/elements/test_reset_element.rb +12 -0
- data/test/elements/test_section_element.rb +162 -0
- data/test/elements/test_select_element.rb +364 -0
- data/test/elements/test_submit_element.rb +12 -0
- data/test/elements/test_text_element.rb +91 -0
- data/test/elements/test_textarea_element.rb +23 -0
- data/test/facets/test_checkbox_group_element.rb +388 -0
- data/test/facets/test_radio_group_element.rb +312 -0
- data/test/facets/test_select_date_element.rb +211 -0
- data/test/facets/test_select_datetime_element.rb +56 -0
- data/test/facets/test_select_day_element.rb +37 -0
- data/test/facets/test_select_from_model_element.rb +86 -0
- data/test/facets/test_select_hour_element.rb +37 -0
- data/test/facets/test_select_minute_element.rb +52 -0
- data/test/facets/test_select_month_element.rb +79 -0
- data/test/facets/test_select_numeric_range_element.rb +14 -0
- data/test/facets/test_select_second_element.rb +48 -0
- data/test/facets/test_select_time_element.rb +148 -0
- data/test/facets/test_select_weekday_element.rb +71 -0
- data/test/facets/test_select_year_element.rb +73 -0
- data/test/fixtures/author.rb +11 -0
- data/test/fixtures/authors.yml +0 -0
- data/test/fixtures/book.rb +14 -0
- data/test/fixtures/books.yml +8 -0
- data/test/fixtures/categories.yml +0 -0
- data/test/fixtures/categorization.rb +2 -0
- data/test/fixtures/categorizations.yml +0 -0
- data/test/fixtures/category.rb +8 -0
- data/test/fixtures/publisher.rb +5 -0
- data/test/fixtures/publishers.yml +10 -0
- data/test/fixtures/schema.rb +43 -0
- data/test/rails/test_model_autodefinition.rb +121 -0
- data/test/rails/test_model_loader.rb +61 -0
- data/test/resources/elements/chunky.rb +11 -0
- data/test/resources/forms/demo.rb +5 -0
- data/test/resources/models/book.rb +8 -0
- data/test/resources/models/register_publisher.rb +5 -0
- data/test/resources/sections/demo.rb +6 -0
- data/test/resources/sections/foo.rb +6 -0
- data/test/resources/validators/foo.rb +9 -0
- data/test/resources/widgets/custom.rb +13 -0
- data/test/test_active_form.rb +1050 -0
- data/test/test_casting.rb +124 -0
- data/test/test_definition.rb +68 -0
- data/test/test_definition_class.rb +118 -0
- data/test/test_element_class.rb +201 -0
- data/test/test_helper.rb +74 -0
- data/test/test_javascript.rb +234 -0
- data/test/test_load_definition.rb +68 -0
- data/test/test_load_element.rb +35 -0
- data/test/test_load_section_element.rb +43 -0
- data/test/test_load_validator.rb +31 -0
- data/test/test_load_widget.rb +93 -0
- data/test/test_validation.rb +722 -0
- data/test/validators/test_validates_as_alpha.rb +26 -0
- data/test/validators/test_validates_as_alphanum.rb +26 -0
- data/test/validators/test_validates_as_digits.rb +26 -0
- data/test/validators/test_validates_as_email.rb +29 -0
- data/test/validators/test_validates_as_number.rb +26 -0
- data/test/validators/test_validates_as_uri.rb +128 -0
- data/test/validators/test_validates_with_format.rb +26 -0
- data/test/validators/test_validates_within_length_range.rb +46 -0
- data/test/validators/test_validates_within_set.rb +46 -0
- data/test/validators/test_validates_within_time_range.rb +53 -0
- metadata +307 -0
- metadata.gz.sig +4 -0
@@ -0,0 +1,211 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestSelectDateElement < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def teardown
|
6
|
+
ActiveForm::use_american_formatting
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_format
|
10
|
+
form = ActiveForm::compose :form do |f|
|
11
|
+
f.select_date_element :start, :format => [:day, :month, :year], :range => (2000..2005)
|
12
|
+
end
|
13
|
+
assert_equal [:day, :month, :year], form[:start].collect(&:name)
|
14
|
+
range = Range.new(2000, 2005)
|
15
|
+
assert_equal [*range], form[:start][:year].collect(&:value)
|
16
|
+
assert_equal range.map(&:to_s), form[:start][:year].collect(&:label)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_european_formatting
|
20
|
+
ActiveForm::use_european_formatting
|
21
|
+
elem = ActiveForm::Element::SelectDate.new :date
|
22
|
+
assert_equal [:day, :month, :year], elem.collect(&:name)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_american_formatting
|
26
|
+
ActiveForm::use_american_formatting
|
27
|
+
elem = ActiveForm::Element::SelectDate.new :date
|
28
|
+
assert_equal [:month, :day, :year], elem.collect(&:name)
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_invalid_dates
|
32
|
+
expected = {"month"=>1, "day"=>1, "year"=>2000}
|
33
|
+
elem = ActiveForm::Element::SelectDate.new :date, :start_year => 2000, :end_year => 2010
|
34
|
+
elem.value = '34-11-2006'
|
35
|
+
assert_equal expected, elem.export_value
|
36
|
+
elem.value = '2-34-2006'
|
37
|
+
assert_equal expected, elem.export_value
|
38
|
+
elem.value = nil
|
39
|
+
assert_equal expected, elem.export_value
|
40
|
+
elem.value = ''
|
41
|
+
assert_equal expected, elem.export_value
|
42
|
+
elem.value = { :month => 24, :day => 2, :year => 2005 }
|
43
|
+
expected = {"month"=>12, "day"=>2, "year"=>2005}
|
44
|
+
assert_equal expected, elem.export_value
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_define_start_and_end_year
|
48
|
+
elem = ActiveForm::Element::SelectDate.new :date, :start_year => 2000, :end_year => 2006
|
49
|
+
range = Range.new(2000, 2006)
|
50
|
+
assert_equal [*range], elem[:year].collect(&:value)
|
51
|
+
assert_equal range.map(&:to_s), elem[:year].collect(&:label)
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_assign_value_and_export_value
|
55
|
+
form = ActiveForm::compose :form do |f|
|
56
|
+
f.select_date_element :start, :format => [:day, :month, :year], :range => (2005..2010)
|
57
|
+
end
|
58
|
+
expected = {"month"=>1, "day"=>1, "year"=>2005}
|
59
|
+
assert_equal expected, form[:start].export_value
|
60
|
+
|
61
|
+
form[:start].value = { :day => 11, :month => 9 }
|
62
|
+
expected = {"month"=>9, "day"=>11, "year"=>2005}
|
63
|
+
assert_equal expected, form[:start].export_value
|
64
|
+
|
65
|
+
form[:start].value = { :day => 11, :month => 9, :year => 2008 }
|
66
|
+
expected = {"month"=>9, "day"=>11, "year"=>2008}
|
67
|
+
assert_equal expected, form[:start].export_value
|
68
|
+
|
69
|
+
form[:start].value = Time.local(2007, 8, 14, 13, 52, 5)
|
70
|
+
expected = {"month"=>8, "day"=>14, "year"=>2007}
|
71
|
+
assert_equal expected, form[:start].export_value
|
72
|
+
|
73
|
+
form[:start].value = '2007-08-14 13:52:05'
|
74
|
+
expected = {"month"=>8, "day"=>14, "year"=>2007}
|
75
|
+
assert_equal expected, form[:start].export_value
|
76
|
+
|
77
|
+
form[:start].value = '2007-08-14'
|
78
|
+
expected = {"month"=>8, "day"=>14, "year"=>2007}
|
79
|
+
assert_equal expected, form[:start].export_value
|
80
|
+
|
81
|
+
form[:start].value = '14-08-2007'
|
82
|
+
expected = {"month"=>8, "day"=>14, "year"=>2007}
|
83
|
+
assert_equal expected, form[:start].export_value
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_export_value_as_casted
|
87
|
+
elem = ActiveForm::Element::SelectDate.new :date, :range => (2000..2010)
|
88
|
+
elem.value = '2007-08-14'
|
89
|
+
expected = {"month"=>8, "day"=>14, "year"=>2007}
|
90
|
+
assert_equal expected, elem.export_value
|
91
|
+
|
92
|
+
elem = ActiveForm::Element::SelectDate.new :date, :now => Time.local(2007, 8, 14, 13, 52, 5), :range => (2000..2010), :type_cast => :hash
|
93
|
+
expected = {"month"=>8, "second"=>5, "minute"=>52, "hour"=>13, "day"=>14, "year"=>2007}
|
94
|
+
assert_equal expected, elem.export_value
|
95
|
+
|
96
|
+
elem = ActiveForm::Element::SelectDate.new :date, :now => Time.local(2007, 8, 14, 13, 52, 5), :range => (2000..2010), :type_cast => :array
|
97
|
+
assert_equal [2007, 8, 14, 13, 52, 5], elem.export_value
|
98
|
+
|
99
|
+
elem = ActiveForm::Element::SelectDate.new :date, :now => Time.local(2007, 8, 14, 13, 52, 5), :range => (2000..2010), :type_cast => :string
|
100
|
+
assert_equal "2007-08-14 13:52:05", elem.export_value
|
101
|
+
|
102
|
+
elem = ActiveForm::Element::SelectDate.new :date, :now => Time.local(2007, 8, 14, 13, 52, 5), :range => (2000..2010), :type_cast => :date
|
103
|
+
assert_equal Time.local(2007, 8, 14, 13, 52, 5).to_date, elem.export_value
|
104
|
+
|
105
|
+
elem = ActiveForm::Element::SelectDate.new :date, :now => Time.local(2007, 8, 14, 13, 52, 5), :range => (2000..2010), :type_cast => :time
|
106
|
+
assert_equal Time.local(2007, 8, 14, 13, 52, 5), elem.export_value
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_default_value
|
110
|
+
elem = ActiveForm::Element::SelectDate.new :date, :range => (2000..2010)
|
111
|
+
expected = {"month"=>1, "day"=>1, "year"=>2000}
|
112
|
+
assert_equal expected, elem.export_value
|
113
|
+
|
114
|
+
elem = ActiveForm::Element::SelectDate.new :date, :now => Time.local(2007, 8, 14, 13, 52, 5), :range => (2000..2010)
|
115
|
+
expected = {"month"=>8, "day"=>14, "year"=>2007}
|
116
|
+
assert_equal expected, elem.value
|
117
|
+
assert_equal expected, elem.export_value
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_update_from_params
|
121
|
+
form = ActiveForm::compose :form do |f|
|
122
|
+
f.select_date_element :start, :range => (2000..2010)
|
123
|
+
end
|
124
|
+
expected = { 'month' => 9, 'day' => 22, 'year' => 2006 }
|
125
|
+
form.update_from_params({ 'form' => { 'start' => { 'month' => '9', 'day' => '22', 'year' => '2006' } } })
|
126
|
+
assert_equal expected, form[:start].export_value
|
127
|
+
form.update_from_params({ 'form' => { 'start' => '22-09-2006 13:52:05' } })
|
128
|
+
assert_equal expected, form[:start].export_value
|
129
|
+
form.update_from_params({ 'form' => { 'start' => '22-09-2006' } })
|
130
|
+
assert_equal expected, form[:start].export_value
|
131
|
+
form.update_from_params({ 'form' => { 'start' => '2006/09/22' } })
|
132
|
+
assert_equal expected, form[:start].export_value
|
133
|
+
end
|
134
|
+
|
135
|
+
def test_assign_with_now
|
136
|
+
form = ActiveForm::compose :form do |f|
|
137
|
+
f.select_date_element :start, :now => Time.local(2004, 12, 24, 13, 52, 5), :range => (2000..2010)
|
138
|
+
end
|
139
|
+
expected = {"month"=>12, "day"=>24, "year"=>2004}
|
140
|
+
assert_equal expected, form[:start].export_value
|
141
|
+
end
|
142
|
+
|
143
|
+
def test_element_to_html
|
144
|
+
form = ActiveForm::compose :form do |f|
|
145
|
+
f.select_date_element :start, :format => [:day, :month, :year], :range => (2005..2006) do |e|
|
146
|
+
e[:month].use_short_month = true
|
147
|
+
end
|
148
|
+
end
|
149
|
+
expected = %|<div class="active_select_date" id="form_start">
|
150
|
+
<span class="elem_select_day" id="elem_form_start_day">
|
151
|
+
<select class="elem_select_day" id="form_start_day" name="form[start][day]">
|
152
|
+
<option selected="selected" value="1">01</option>
|
153
|
+
<option value="2">02</option>
|
154
|
+
<option value="3">03</option>
|
155
|
+
<option value="4">04</option>
|
156
|
+
<option value="5">05</option>
|
157
|
+
<option value="6">06</option>
|
158
|
+
<option value="7">07</option>
|
159
|
+
<option value="8">08</option>
|
160
|
+
<option value="9">09</option>
|
161
|
+
<option value="10">10</option>
|
162
|
+
<option value="11">11</option>
|
163
|
+
<option value="12">12</option>
|
164
|
+
<option value="13">13</option>
|
165
|
+
<option value="14">14</option>
|
166
|
+
<option value="15">15</option>
|
167
|
+
<option value="16">16</option>
|
168
|
+
<option value="17">17</option>
|
169
|
+
<option value="18">18</option>
|
170
|
+
<option value="19">19</option>
|
171
|
+
<option value="20">20</option>
|
172
|
+
<option value="21">21</option>
|
173
|
+
<option value="22">22</option>
|
174
|
+
<option value="23">23</option>
|
175
|
+
<option value="24">24</option>
|
176
|
+
<option value="25">25</option>
|
177
|
+
<option value="26">26</option>
|
178
|
+
<option value="27">27</option>
|
179
|
+
<option value="28">28</option>
|
180
|
+
<option value="29">29</option>
|
181
|
+
<option value="30">30</option>
|
182
|
+
<option value="31">31</option>
|
183
|
+
</select>
|
184
|
+
</span>
|
185
|
+
<span class="elem_select_month" id="elem_form_start_month">
|
186
|
+
<select class="elem_select_month" id="form_start_month" name="form[start][month]">
|
187
|
+
<option selected="selected" value="1">Jan</option>
|
188
|
+
<option value="2">Feb</option>
|
189
|
+
<option value="3">Mar</option>
|
190
|
+
<option value="4">Apr</option>
|
191
|
+
<option value="5">May</option>
|
192
|
+
<option value="6">Jun</option>
|
193
|
+
<option value="7">Jul</option>
|
194
|
+
<option value="8">Aug</option>
|
195
|
+
<option value="9">Sep</option>
|
196
|
+
<option value="10">Oct</option>
|
197
|
+
<option value="11">Nov</option>
|
198
|
+
<option value="12">Dec</option>
|
199
|
+
</select>
|
200
|
+
</span>
|
201
|
+
<span class="elem_select_year" id="elem_form_start_year">
|
202
|
+
<select class="elem_select_year" id="form_start_year" name="form[start][year]">
|
203
|
+
<option selected="selected" value="2005">2005</option>
|
204
|
+
<option value="2006">2006</option>
|
205
|
+
</select>
|
206
|
+
</span>
|
207
|
+
</div>\n|
|
208
|
+
assert_equal expected, form[:start].to_html
|
209
|
+
end
|
210
|
+
|
211
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestSelectDatetimeElement < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def teardown
|
6
|
+
ActiveForm::use_american_formatting
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_format
|
10
|
+
form = ActiveForm::compose :form do |f|
|
11
|
+
f.select_datetime_element :start, :format => [:day, :month, :year, :hour, :minute, :second], :range => (2000..2005)
|
12
|
+
end
|
13
|
+
assert_equal [:day, :month, :year, :hour, :minute, :second], form[:start].collect(&:name)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_european_formatting
|
17
|
+
ActiveForm::use_european_formatting
|
18
|
+
elem = ActiveForm::Element::SelectDatetime.new :date
|
19
|
+
assert_equal [:day, :month, :year, :hour, :minute], elem.collect(&:name)
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_american_formatting
|
23
|
+
ActiveForm::use_american_formatting
|
24
|
+
elem = ActiveForm::Element::SelectDatetime.new :date
|
25
|
+
assert_equal [:month, :day, :year, :hour, :minute], elem.collect(&:name)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_append_any_unknown_parts_as_element
|
29
|
+
form = ActiveForm::compose :form do |f|
|
30
|
+
f.select_datetime_element :start, :format => ['date: ', :day, :month, :year, ' time: ', :hour, :minute, :second], :range => (2000..2005)
|
31
|
+
end
|
32
|
+
assert_equal [:builder, :day, :month, :year, :builder, :hour, :minute, :second], form[:start].collect(&:name)
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_export_value_as_casted
|
36
|
+
elem = ActiveForm::Element::SelectDatetime.new :time, :now => Time.local(2007, 8, 14, 13, 52, 5), :range => (2000..2010), :type_cast => :hash
|
37
|
+
expected = {"month"=>8, "second"=>0, "minute"=>52, "hour"=>13, "day"=>14, "year"=>2007}
|
38
|
+
assert_equal expected, elem.export_value
|
39
|
+
|
40
|
+
elem = ActiveForm::Element::SelectDatetime.new :time, :now => Time.local(2007, 8, 14, 13, 52, 5), :range => (2000..2010), :type_cast => :array
|
41
|
+
assert_equal [2007, 8, 14, 13, 52, 0], elem.export_value
|
42
|
+
|
43
|
+
elem = ActiveForm::Element::SelectDatetime.new :time, :now => Time.local(2007, 8, 14, 13, 52, 5), :range => (2000..2010), :type_cast => :string
|
44
|
+
assert_equal "2007-08-14 13:52:00", elem.export_value
|
45
|
+
|
46
|
+
elem = ActiveForm::Element::SelectDatetime.new :time, :now => Time.local(2007, 8, 14, 13, 52, 5), :range => (2000..2010), :type_cast => :date
|
47
|
+
assert_equal Time.local(2007, 8, 14, 13, 52, 0).to_date, elem.export_value
|
48
|
+
|
49
|
+
elem = ActiveForm::Element::SelectDatetime.new :time, :now => Time.local(2007, 8, 14, 13, 52, 5), :range => (2000..2010), :type_cast => :time
|
50
|
+
assert_equal Time.local(2007, 8, 14, 13, 52, 0), elem.export_value
|
51
|
+
|
52
|
+
elem = ActiveForm::Element::SelectDatetime.new :time, :now => Time.local(2007, 8, 14, 13, 52, 5), :range => (2000..2010), :type_cast => :yaml
|
53
|
+
assert_equal "--- 2007-08-14 13:52:00 +02:00\n", elem.export_value
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestSelectDayElement < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_element_to_html
|
6
|
+
elem = ActiveForm::Element::SelectDay.new :day
|
7
|
+
assert_equal [*(1..31)], elem.collect(&:value)
|
8
|
+
assert_equal [*('01'..'31')], elem.collect(&:label)
|
9
|
+
|
10
|
+
elem = ActiveForm::Element::SelectDay.new :day, :increment => 7
|
11
|
+
assert_equal [1, 8, 15, 22, 29], elem.collect(&:value)
|
12
|
+
assert_equal ["01", "08", "15", "22", "29"], elem.collect(&:label)
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_assign_value
|
16
|
+
elem = ActiveForm::Element::SelectDay.new :day, :value => 22
|
17
|
+
assert_equal 22, elem.value
|
18
|
+
elem = ActiveForm::Element::SelectDay.new :day, :value => Date.new(2004, 9, 22)
|
19
|
+
assert_equal 22, elem.value
|
20
|
+
elem = ActiveForm::Element::SelectDay.new :day, :value => Time.local(2004, 9, 22, 13, 15, 5)
|
21
|
+
assert_equal 22, elem.value
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_out_of_range_value
|
25
|
+
elem = ActiveForm::Element::SelectDay.new :day, :value => -5
|
26
|
+
assert_equal 1, elem.value
|
27
|
+
elem = ActiveForm::Element::SelectDay.new :day, :value => 34
|
28
|
+
assert_equal 31, elem.value
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_select_multiple
|
32
|
+
elem = ActiveForm::Element::SelectDay.new :day, :multiple => true
|
33
|
+
elem.values = [2, 3, 4]
|
34
|
+
assert_equal [2, 3, 4], elem.export_value
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
ActiveForm::Element::Select::create :select_publisher do
|
4
|
+
|
5
|
+
def options
|
6
|
+
Publisher.find(:all, :order => 'id', :limit => 2).map { |item| ActiveForm::Element::CollectionOption.new(item.name, item.id) }
|
7
|
+
end
|
8
|
+
|
9
|
+
end
|
10
|
+
|
11
|
+
class TestSelectFromModelElement < Test::Unit::TestCase
|
12
|
+
|
13
|
+
fixtures :publishers
|
14
|
+
|
15
|
+
def test_options_for_implicit_definition
|
16
|
+
elem = ActiveForm::Element::SelectFromModel.new :publisher_id
|
17
|
+
assert_equal 'Publisher', elem.model_class
|
18
|
+
elem_options = elem.options
|
19
|
+
assert_equal "O'Reilly", elem_options[0].label
|
20
|
+
assert_equal 2, elem_options[0].value
|
21
|
+
assert_equal "The Pragmatic Programmers", elem_options[1].label
|
22
|
+
assert_equal 1, elem_options[1].value
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_options_for_explicit_definition
|
26
|
+
elem = ActiveForm::Element::SelectFromModel.new :published_by, :model => :publisher
|
27
|
+
assert_equal 'Publisher', elem.model_class
|
28
|
+
elem_options = elem.options
|
29
|
+
assert_equal "O'Reilly", elem_options[0].label
|
30
|
+
assert_equal 2, elem_options[0].value
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_options_for_custom_find
|
34
|
+
elem = ActiveForm::Element::SelectFromModel.new :publisher_id, :find => { :order => 'id', :limit => 2 }
|
35
|
+
assert_equal 'Publisher', elem.model_class
|
36
|
+
elem_options = elem.options
|
37
|
+
assert_equal "The Pragmatic Programmers", elem_options[0].label
|
38
|
+
assert_equal 1, elem_options[0].value
|
39
|
+
assert_equal "O'Reilly", elem_options[1].label
|
40
|
+
assert_equal 2, elem_options[1].value
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_options_with_to_dropdown
|
44
|
+
elem = ActiveForm::Element::SelectFromModel.new :publisher_id, :to_dropdown => true
|
45
|
+
elem_options = elem.options
|
46
|
+
assert_equal "The Pragmatic Programmers", elem_options[0].label
|
47
|
+
assert_equal 1, elem_options[0].value
|
48
|
+
assert_equal "O'Reilly", elem_options[1].label
|
49
|
+
assert_equal 2, elem_options[1].value
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_options_with_group_attr
|
53
|
+
elem = ActiveForm::Element::SelectFromModel.new :publisher_id, :group_attr => 'id'
|
54
|
+
elem_options = elem.options
|
55
|
+
assert_kind_of ActiveForm::Element::CollectionOptionGroup, elem_options.first
|
56
|
+
assert_equal "1", elem_options[0].label
|
57
|
+
assert_equal "The Pragmatic Programmers", elem_options[0].options[0].label
|
58
|
+
assert_equal 1, elem_options[0].options[0].value
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_syntax_sugar
|
62
|
+
form = ActiveForm::compose :book do |f|
|
63
|
+
f.select_from_publishers :publisher_id
|
64
|
+
end
|
65
|
+
elem_options = form[:publisher_id].options
|
66
|
+
assert_equal "The Pragmatic Programmers", elem_options[0].label
|
67
|
+
assert_equal 1, elem_options[0].value
|
68
|
+
assert_equal "O'Reilly", elem_options[1].label
|
69
|
+
assert_equal 2, elem_options[1].value
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_to_html
|
73
|
+
form = ActiveForm::compose :book do |f|
|
74
|
+
f.select_publisher_element :publisher_id
|
75
|
+
end
|
76
|
+
assert_equal :select_publisher, form[:publisher_id].element_type
|
77
|
+
expected = %|<form action="#book" class="active_form" id="book" method="post">
|
78
|
+
<select class="elem_select_publisher" id="book_publisher_id" name="book[publisher_id]">
|
79
|
+
<option value="1">The Pragmatic Programmers</option>
|
80
|
+
<option value="2">O'Reilly</option>
|
81
|
+
</select>
|
82
|
+
</form>\n|
|
83
|
+
assert_equal expected, form.to_html
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestSelectHourElement < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_element_to_html
|
6
|
+
elem = ActiveForm::Element::SelectHour.new :hour
|
7
|
+
assert_equal [*(0..23)], elem.collect(&:value)
|
8
|
+
assert_equal [*('00'..'23')], elem.collect(&:label)
|
9
|
+
|
10
|
+
elem = ActiveForm::Element::SelectHour.new :hour, :increment => 12
|
11
|
+
assert_equal [0, 12], elem.collect(&:value)
|
12
|
+
assert_equal ["00", "12"], elem.collect(&:label)
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_assign_value
|
16
|
+
elem = ActiveForm::Element::SelectHour.new :hour, :value => 22
|
17
|
+
assert_equal 22, elem.value
|
18
|
+
elem = ActiveForm::Element::SelectHour.new :hour, :value => Date.new(2004, 1, 1)
|
19
|
+
assert_equal 0, elem.value
|
20
|
+
elem = ActiveForm::Element::SelectHour.new :hour, :value => Time.local(2004, 1, 1, 13, 15, 5)
|
21
|
+
assert_equal 13, elem.value
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_out_of_range_value
|
25
|
+
elem = ActiveForm::Element::SelectHour.new :hour, :value => -5
|
26
|
+
assert_equal 0, elem.value
|
27
|
+
elem = ActiveForm::Element::SelectHour.new :hour, :value => 28
|
28
|
+
assert_equal 23, elem.value
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_select_multiple
|
32
|
+
elem = ActiveForm::Element::SelectHour.new :hour, :multiple => true
|
33
|
+
elem.values = [20, 21, 22]
|
34
|
+
assert_equal [20, 21, 22], elem.export_value
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestSelectMinuteElement < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_element_to_html
|
6
|
+
elem = ActiveForm::Element::SelectMinute.new :minute
|
7
|
+
assert_equal [*(0..59)], elem.collect(&:value)
|
8
|
+
assert_equal [*('00'..'59')], elem.collect(&:label)
|
9
|
+
|
10
|
+
elem = ActiveForm::Element::SelectMinute.new :minute, :increment => 5
|
11
|
+
assert_equal [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55], elem.collect(&:value)
|
12
|
+
assert_equal ["00", "05", "10", "15", "20", "25", "30", "35", "40", "45", "50", "55"], elem.collect(&:label)
|
13
|
+
|
14
|
+
elem = ActiveForm::Element::SelectMinute.new :minute, :increment => 10
|
15
|
+
assert_equal [0, 10, 20, 30, 40, 50], elem.collect(&:value)
|
16
|
+
assert_equal ["00", "10", "20", "30", "40", "50"], elem.collect(&:label)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_assign_value
|
20
|
+
elem = ActiveForm::Element::SelectMinute.new :minute, :value => 22
|
21
|
+
assert_equal 22, elem.value
|
22
|
+
elem = ActiveForm::Element::SelectMinute.new :minute, :value => Date.new(2004, 1, 1)
|
23
|
+
assert_equal 0, elem.value
|
24
|
+
elem = ActiveForm::Element::SelectMinute.new :minute, :value => Time.local(2004, 1, 1, 13, 15, 5)
|
25
|
+
assert_equal 15, elem.value
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_out_of_range_value
|
29
|
+
elem = ActiveForm::Element::SelectMinute.new :minute, :value => -5
|
30
|
+
assert_equal 0, elem.value
|
31
|
+
elem = ActiveForm::Element::SelectMinute.new :minute, :value => 80
|
32
|
+
assert_equal 59, elem.value
|
33
|
+
elem = ActiveForm::Element::SelectMinute.new :minute, :value => 80, :increment => 5
|
34
|
+
assert_equal 55, elem.value
|
35
|
+
elem = ActiveForm::Element::SelectMinute.new :minute, :value => 80, :increment => 15
|
36
|
+
assert_equal 45, elem.value
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_push_value_towards_increment_value
|
40
|
+
elem = ActiveForm::Element::SelectMinute.new :minute, :increment => 5, :value => 22
|
41
|
+
assert_equal 20, elem.value
|
42
|
+
elem = ActiveForm::Element::SelectMinute.new :minute, :increment => 10, :value => 26
|
43
|
+
assert_equal 30, elem.value
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_select_multiple
|
47
|
+
elem = ActiveForm::Element::SelectMinute.new :minute, :multiple => true, :increment => 15
|
48
|
+
elem.values = [12, 35, 46]
|
49
|
+
assert_equal [15, 30, 45], elem.export_value
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|