active_form 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|