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,79 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestSelectMonthElement < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_element_to_html
|
6
|
+
elem = ActiveForm::Element::SelectMonth.new :month
|
7
|
+
assert_equal [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], elem.collect(&:value)
|
8
|
+
expected = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
|
9
|
+
assert_equal expected, elem.collect(&:label)
|
10
|
+
|
11
|
+
elem = ActiveForm::Element::SelectMonth.new :month, :use_month_numbers => true
|
12
|
+
assert_equal [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], elem.collect(&:value)
|
13
|
+
expected = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"]
|
14
|
+
assert_equal expected, elem.collect(&:label)
|
15
|
+
|
16
|
+
elem = ActiveForm::Element::SelectMonth.new :month, :use_short_month => true
|
17
|
+
assert_equal [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], elem.collect(&:value)
|
18
|
+
expected = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
|
19
|
+
assert_equal expected, elem.collect(&:label)
|
20
|
+
|
21
|
+
elem = ActiveForm::Element::SelectMonth.new :month, :use_short_month => true, :add_month_numbers => true
|
22
|
+
assert_equal [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], elem.collect(&:value)
|
23
|
+
expected = ["01 - Jan", "02 - Feb", "03 - Mar", "04 - Apr", "05 - May", "06 - Jun", "07 - Jul", "08 - Aug", "09 - Sep", "10 - Oct", "11 - Nov", "12 - Dec"]
|
24
|
+
assert_equal expected, elem.collect(&:label)
|
25
|
+
|
26
|
+
elem = ActiveForm::Element::SelectMonth.new :month, :increment => 3
|
27
|
+
assert_equal [1, 4, 7, 10], elem.collect(&:value)
|
28
|
+
assert_equal ["January", "April", "July", "October"], elem.collect(&:label)
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_subset
|
32
|
+
elem = ActiveForm::Element::SelectMonth.new :month, :subset => [1, 2, 3, 10, 11, 12]
|
33
|
+
assert_equal [1, 2, 3, 10, 11, 12], elem.collect(&:value)
|
34
|
+
assert_equal ["January", "February", "March", "October", "November", "December"], elem.collect(&:label)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_assign_value
|
38
|
+
elem = ActiveForm::Element::SelectMonth.new :month, :value => 9
|
39
|
+
assert_equal 9, elem.value
|
40
|
+
elem = ActiveForm::Element::SelectMonth.new :month, :value => Date.new(2004, 9, 22)
|
41
|
+
assert_equal 9, elem.value
|
42
|
+
elem = ActiveForm::Element::SelectMonth.new :month, :value => Time.local(2004, 9, 22, 13, 15, 5)
|
43
|
+
assert_equal 9, elem.value
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_push_value_towards_increment_value
|
47
|
+
elem = ActiveForm::Element::SelectMonth.new :month, :increment => 3, :value => 6
|
48
|
+
assert_equal [1, 4, 7, 10], elem.collect(&:value)
|
49
|
+
assert_equal 7, elem.value
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_out_of_range_value
|
53
|
+
elem = ActiveForm::Element::SelectMonth.new :month, :value => -5
|
54
|
+
assert_equal 1, elem.value
|
55
|
+
elem = ActiveForm::Element::SelectMonth.new :month, :value => 28
|
56
|
+
assert_equal 12, elem.value
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_assign_value_and_return_as_string
|
60
|
+
elem = ActiveForm::Element::SelectMonth.new :month, :value => 3
|
61
|
+
assert_equal "March", elem.to_monthname
|
62
|
+
elem = ActiveForm::Element::SelectMonth.new :month, :value => 9, :type_cast => :string
|
63
|
+
assert_equal "September", elem.to_monthname
|
64
|
+
assert_equal "September", elem.export_value
|
65
|
+
elem = ActiveForm::Element::SelectMonth.new :month, :value => Date.new(2006, 9, 11), :type_cast => :string, :use_short_month => true
|
66
|
+
assert_equal "Sep", elem.to_monthname
|
67
|
+
assert_equal "Sep", elem.export_value
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_select_multiple
|
71
|
+
elem = ActiveForm::Element::SelectMonth.new :month, :multiple => true
|
72
|
+
elem.values = [1, 3, 5]
|
73
|
+
assert_equal [1, 3, 5], elem.export_value
|
74
|
+
elem = ActiveForm::Element::SelectMonth.new :month, :multiple => true, :type_cast => :string
|
75
|
+
elem.values = [1, 3, 5]
|
76
|
+
assert_equal ["January", "March", "May"], elem.export_value
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestSelectNumericRangeElement < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_select_multiple
|
6
|
+
elem = ActiveForm::Element::SelectNumericRange.new :numbers, :range => (0..10), :increment => 2, :multiple => true
|
7
|
+
assert_equal [0, 2, 4, 6, 8, 10], elem.collect(&:value)
|
8
|
+
elem.values = [4, 6]
|
9
|
+
assert_equal [4, 6], elem.export_value
|
10
|
+
elem.values = [1, 7]
|
11
|
+
assert_equal [2, 8], elem.export_value
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestSelectSecondElement < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_element_to_html
|
6
|
+
elem = ActiveForm::Element::SelectSecond.new :seconds
|
7
|
+
assert_equal [*(0..59)], elem.collect(&:value)
|
8
|
+
assert_equal [*('00'..'59')], elem.collect(&:label)
|
9
|
+
|
10
|
+
elem = ActiveForm::Element::SelectSecond.new :seconds, :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::SelectSecond.new :seconds, :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::SelectSecond.new :seconds, :value => 22
|
21
|
+
assert_equal 22, elem.value
|
22
|
+
elem = ActiveForm::Element::SelectSecond.new :seconds, :value => Date.new(2004, 1, 1)
|
23
|
+
assert_equal 0, elem.value
|
24
|
+
elem = ActiveForm::Element::SelectSecond.new :seconds, :value => Time.local(2004, 1, 1, 13, 15, 5)
|
25
|
+
assert_equal 5, elem.value
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_out_of_range_value
|
29
|
+
elem = ActiveForm::Element::SelectSecond.new :seconds, :value => -5
|
30
|
+
assert_equal 0, elem.value
|
31
|
+
elem = ActiveForm::Element::SelectSecond.new :seconds, :value => 80
|
32
|
+
assert_equal 59, elem.value
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_push_value_towards_increment_value
|
36
|
+
elem = ActiveForm::Element::SelectSecond.new :seconds, :increment => 5, :value => 22
|
37
|
+
assert_equal 20, elem.value
|
38
|
+
elem = ActiveForm::Element::SelectSecond.new :seconds, :increment => 10, :value => 26
|
39
|
+
assert_equal 30, elem.value
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_select_multiple
|
43
|
+
elem = ActiveForm::Element::SelectSecond.new :seconds, :multiple => true, :increment => 30
|
44
|
+
elem.values = [12, 35, 46]
|
45
|
+
assert_equal [0, 30], elem.export_value
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
@@ -0,0 +1,148 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestSelectTimeElement < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_format
|
6
|
+
form = ActiveForm::compose :form do |f|
|
7
|
+
f.select_time_element :start, :format => [:hour, :minute, :second], :minute_increment => 5
|
8
|
+
end
|
9
|
+
assert_equal [:hour, :minute, :second], form[:start].collect(&:name)
|
10
|
+
form[:start].value = '13:52:05'
|
11
|
+
|
12
|
+
expected = { "hour" => 13, "minute" => 50, "second" => 5 }
|
13
|
+
assert_equal expected, form[:start].export_value
|
14
|
+
|
15
|
+
form[:start].value = '13:52'
|
16
|
+
expected = { "hour" => 13, "minute" => 50, "second" => 0 }
|
17
|
+
assert_equal expected, form[:start].export_value
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_assign_value_and_export_value
|
21
|
+
form = ActiveForm::compose :form do |f|
|
22
|
+
f.select_time_element :start, :minute_increment => 5
|
23
|
+
end
|
24
|
+
assert_equal [:hour, :minute], form[:start].collect(&:name)
|
25
|
+
expected = { "hour" => 13, "minute" => 50 }
|
26
|
+
|
27
|
+
form[:start].value = { :hour => 13, :minute => 52 }
|
28
|
+
assert_equal expected, form[:start].export_value
|
29
|
+
|
30
|
+
form[:start].value = Time.local(2004, 1, 1, 13, 52, 5)
|
31
|
+
assert_equal expected, form[:start].export_value
|
32
|
+
|
33
|
+
form[:start].value = '2004-01-01 13:52:05'
|
34
|
+
assert_equal expected, form[:start].export_value
|
35
|
+
|
36
|
+
form[:start].value = '13:52:05'
|
37
|
+
assert_equal expected, form[:start].export_value
|
38
|
+
|
39
|
+
form[:start].value = '13:52'
|
40
|
+
assert_equal expected, form[:start].export_value
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_default_value
|
44
|
+
elem = ActiveForm::Element::SelectTime.new :time, :format => [:hour, :minute, :second]
|
45
|
+
expected = {"hour"=>12, "minute"=>0, "second"=>0}
|
46
|
+
assert_equal expected, elem.export_value
|
47
|
+
|
48
|
+
elem = ActiveForm::Element::SelectTime.new :time, :format => [:hour, :minute, :second], :now => Time.local(2004, 1, 1, 13, 52, 5)
|
49
|
+
expected = {"hour"=>13, "minute"=>52, "second"=>5}
|
50
|
+
assert_equal expected, elem.value
|
51
|
+
assert_equal expected, elem.export_value
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_export_value_as_casted
|
55
|
+
elem = ActiveForm::Element::SelectTime.new :time, :now => Time.local(2007, 8, 14, 13, 52, 5), :range => (2000..2010), :type_cast => :hash
|
56
|
+
expected = {"month"=>8, "second"=>0, "minute"=>52, "hour"=>13, "day"=>14, "year"=>2007}
|
57
|
+
assert_equal expected, elem.export_value
|
58
|
+
|
59
|
+
elem = ActiveForm::Element::SelectTime.new :time, :now => Time.local(2007, 8, 14, 13, 52, 5), :range => (2000..2010), :type_cast => :array
|
60
|
+
assert_equal [2007, 8, 14, 13, 52, 0], elem.export_value
|
61
|
+
|
62
|
+
elem = ActiveForm::Element::SelectTime.new :time, :now => Time.local(2007, 8, 14, 13, 52, 5), :range => (2000..2010), :type_cast => :string
|
63
|
+
assert_equal "2007-08-14 13:52:00", elem.export_value
|
64
|
+
|
65
|
+
elem = ActiveForm::Element::SelectTime.new :time, :now => Time.local(2007, 8, 14, 13, 52, 5), :range => (2000..2010), :type_cast => :date
|
66
|
+
assert_equal Time.local(2007, 8, 14, 13, 52, 0).to_date, elem.export_value
|
67
|
+
|
68
|
+
elem = ActiveForm::Element::SelectTime.new :time, :now => Time.local(2007, 8, 14, 13, 52, 5), :range => (2000..2010), :type_cast => :time
|
69
|
+
assert_equal Time.local(2007, 8, 14, 13, 52, 0), elem.export_value
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_update_from_params
|
73
|
+
form = ActiveForm::compose :form do |f|
|
74
|
+
f.select_time_element :start, :minute_increment => 5
|
75
|
+
end
|
76
|
+
form.update_from_params({ 'form' => { 'start' => { 'hour' => '9', 'minute' => '22' } } })
|
77
|
+
expected = { 'hour' => 9, 'minute' => 20 }
|
78
|
+
assert_equal expected, form[:start].export_value
|
79
|
+
form.update_from_params({ 'form' => { 'start' => '2004-01-01 13:52:05' } })
|
80
|
+
expected = { 'hour' => 13, 'minute' => 50 }
|
81
|
+
assert_equal expected, form[:start].export_value
|
82
|
+
form.update_from_params({ 'form' => { 'start' => '13:52:05' } })
|
83
|
+
expected = { 'hour' => 13, 'minute' => 50 }
|
84
|
+
assert_equal expected, form[:start].export_value
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_assign_with_now
|
88
|
+
form = ActiveForm::compose :form do |f|
|
89
|
+
f.select_time_element :start, :format => [:hour, :minute], :minute_increment => 5, :now => Time.local(2004, 1, 1, 13, 52, 5)
|
90
|
+
end
|
91
|
+
form[:start].value = { :hour => 10, :minute => 22 }
|
92
|
+
expected = {"minute"=>20, "hour"=>10}
|
93
|
+
assert_equal expected, form[:start].export_value
|
94
|
+
|
95
|
+
form = ActiveForm::compose :form do |f|
|
96
|
+
f.select_time_element :start, :format => [:hour, :minute, :second], :second_increment => 10, :now => Time.local(2004, 1, 1, 13, 52, 5)
|
97
|
+
end
|
98
|
+
form[:start].value = { :hour => 10, :minute => 22, :second => 28 }
|
99
|
+
expected = {"second"=>30, "minute"=>22, "hour"=>10}
|
100
|
+
assert_equal expected, form[:start].export_value
|
101
|
+
form[:start].value = Time.local(2004, 1, 1, 13, 52, 5)
|
102
|
+
expected = {"second"=>10, "minute"=>52, "hour"=>13}
|
103
|
+
assert_equal expected, form[:start].export_value
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_include_empty
|
107
|
+
form = ActiveForm::compose :form do |f|
|
108
|
+
f.select_time_element :start, :format => [:hour, :minute, :second]
|
109
|
+
end
|
110
|
+
assert_equal [false], form[:start].collect(&:include_empty?).uniq
|
111
|
+
form[:start].include_empty = true
|
112
|
+
assert_equal [true], form[:start].collect(&:include_empty?).uniq
|
113
|
+
end
|
114
|
+
|
115
|
+
def test_element_to_html
|
116
|
+
form = ActiveForm::compose :form do |f|
|
117
|
+
f.select_time_element :start, :format => [:hour, :minute, :second], :hour_increment => 4, :minute_increment => 20, :second_increment => 20
|
118
|
+
end
|
119
|
+
expected = %|<div class="active_select_time" id="form_start">
|
120
|
+
<span class="elem_select_hour" id="elem_form_start_hour">
|
121
|
+
<select class="elem_select_hour" id="form_start_hour" name="form[start][hour]">
|
122
|
+
<option value="0">00</option>
|
123
|
+
<option value="4">04</option>
|
124
|
+
<option value="8">08</option>
|
125
|
+
<option selected="selected" value="12">12</option>
|
126
|
+
<option value="16">16</option>
|
127
|
+
<option value="20">20</option>
|
128
|
+
</select>
|
129
|
+
</span>
|
130
|
+
<span class="elem_select_minute" id="elem_form_start_minute">
|
131
|
+
<select class="elem_select_minute" id="form_start_minute" name="form[start][minute]">
|
132
|
+
<option selected="selected" value="0">00</option>
|
133
|
+
<option value="20">20</option>
|
134
|
+
<option value="40">40</option>
|
135
|
+
</select>
|
136
|
+
</span>
|
137
|
+
<span class="elem_select_second" id="elem_form_start_second">
|
138
|
+
<select class="elem_select_second" id="form_start_second" name="form[start][second]">
|
139
|
+
<option selected="selected" value="0">00</option>
|
140
|
+
<option value="20">20</option>
|
141
|
+
<option value="40">40</option>
|
142
|
+
</select>
|
143
|
+
</span>
|
144
|
+
</div>\n|
|
145
|
+
assert_equal expected, form[:start].to_html
|
146
|
+
end
|
147
|
+
|
148
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestSelectWeekdayElement < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_element_to_html
|
6
|
+
elem = ActiveForm::Element::SelectWeekday.new :day
|
7
|
+
assert_equal [*(0..6)], elem.collect(&:value)
|
8
|
+
assert_equal ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], elem.collect(&:label)
|
9
|
+
|
10
|
+
elem = ActiveForm::Element::SelectWeekday.new :day, :use_short_day => true
|
11
|
+
assert_equal [*(0..6)], elem.collect(&:value)
|
12
|
+
assert_equal ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], elem.collect(&:label)
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_only_weekdays
|
16
|
+
elem = ActiveForm::Element::SelectWeekday.new :day, :weekdays_only => true
|
17
|
+
assert_equal [*(1..5)], elem.collect(&:value)
|
18
|
+
assert_equal ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"], elem.collect(&:label)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_only_weekends
|
22
|
+
elem = ActiveForm::Element::SelectWeekday.new :day, :weekend_only => true
|
23
|
+
assert_equal [6, 0], elem.collect(&:value)
|
24
|
+
assert_equal ["Saturday", "Sunday"], elem.collect(&:label)
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_subset
|
28
|
+
elem = ActiveForm::Element::SelectWeekday.new :day, :subset => [1, 2, 3]
|
29
|
+
assert_equal [1, 2, 3], elem.collect(&:value)
|
30
|
+
assert_equal ["Monday", "Tuesday", "Wednesday"], elem.collect(&:label)
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_out_of_range_value
|
34
|
+
elem = ActiveForm::Element::SelectWeekday.new :day, :value => -5
|
35
|
+
assert_equal 0, elem.value
|
36
|
+
elem = ActiveForm::Element::SelectWeekday.new :day, :value => 9
|
37
|
+
assert_equal 6, elem.value
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_assign_value
|
41
|
+
elem = ActiveForm::Element::SelectWeekday.new :day, :value => 1
|
42
|
+
assert_equal 1, elem.value
|
43
|
+
elem = ActiveForm::Element::SelectWeekday.new :day, :value => Date.new(2006, 9, 11)
|
44
|
+
assert_equal 1, elem.value
|
45
|
+
elem = ActiveForm::Element::SelectWeekday.new :day, :value => Date.new(2006, 9, 12)
|
46
|
+
assert_equal 2, elem.value
|
47
|
+
elem = ActiveForm::Element::SelectWeekday.new :day, :value => Time.local(2006, 9, 11, 13, 15, 5)
|
48
|
+
assert_equal 1, elem.value
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_assign_value_and_return_as_string
|
52
|
+
elem = ActiveForm::Element::SelectWeekday.new :day, :value => 3
|
53
|
+
assert_equal "Wednesday", elem.to_dayname
|
54
|
+
elem = ActiveForm::Element::SelectWeekday.new :day, :value => 3, :type_cast => :string
|
55
|
+
assert_equal "Wednesday", elem.to_dayname
|
56
|
+
assert_equal "Wednesday", elem.export_value
|
57
|
+
elem = ActiveForm::Element::SelectWeekday.new :day, :value => Date.new(2006, 9, 11), :type_cast => :string
|
58
|
+
assert_equal "Monday", elem.to_dayname
|
59
|
+
assert_equal "Monday", elem.export_value
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_select_multiple
|
63
|
+
elem = ActiveForm::Element::SelectWeekday.new :day, :multiple => true
|
64
|
+
elem.values = [0, 3, 5]
|
65
|
+
assert_equal [0, 3, 5], elem.export_value
|
66
|
+
elem = ActiveForm::Element::SelectWeekday.new :day, :multiple => true, :type_cast => :string
|
67
|
+
elem.values = [0, 3, 5]
|
68
|
+
assert_equal ["Sunday", "Wednesday", "Friday"], elem.export_value
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestSelectYearElement < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_element_to_html
|
6
|
+
elem = ActiveForm::Element::SelectYear.new :year
|
7
|
+
default_range = Range.new(Time.now.year - 5, Time.now.year + 5)
|
8
|
+
assert_equal [*default_range], elem.collect(&:value)
|
9
|
+
assert_equal default_range.map(&:to_s), elem.collect(&:label)
|
10
|
+
|
11
|
+
elem = ActiveForm::Element::SelectYear.new :year, :range => (2000..2010)
|
12
|
+
default_range = Range.new(2000, 2010)
|
13
|
+
assert_equal [*default_range], elem.collect(&:value)
|
14
|
+
assert_equal default_range.map(&:to_s), elem.collect(&:label)
|
15
|
+
|
16
|
+
elem = ActiveForm::Element::SelectYear.new :year, :range => (2000..2010), :increment => 5
|
17
|
+
assert_equal [2000, 2005, 2010], elem.collect(&:value)
|
18
|
+
assert_equal ['2000', '2005', '2010'], elem.collect(&:label)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_define_start_and_end_year
|
22
|
+
elem = ActiveForm::Element::SelectYear.new :year, :start_year => 2000, :end_year => 2006
|
23
|
+
range = Range.new(2000, 2006)
|
24
|
+
assert_equal [*range], elem.collect(&:value)
|
25
|
+
assert_equal range.map(&:to_s), elem.collect(&:label)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_include_empty
|
29
|
+
elem = ActiveForm::Element::SelectYear.new :year, :range => (2000..2010)
|
30
|
+
assert_equal 2000, elem.options.first.value
|
31
|
+
elem = ActiveForm::Element::SelectYear.new :year, :range => (2000..2010), :include_empty => true
|
32
|
+
assert_equal :blank, elem.options.first.value
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_assign_value
|
36
|
+
elem = ActiveForm::Element::SelectYear.new :year, :value => 2006
|
37
|
+
assert_equal 2006, elem.value
|
38
|
+
elem = ActiveForm::Element::SelectYear.new :year, :value => Date.new(2004, 9, 22)
|
39
|
+
assert_equal 2004, elem.value
|
40
|
+
elem = ActiveForm::Element::SelectYear.new :year, :value => Time.local(2004, 9, 22, 13, 15, 5)
|
41
|
+
assert_equal 2004, elem.value
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_update_from_params
|
45
|
+
form = ActiveForm::compose :form do |f|
|
46
|
+
f.select_year_element :anno, :range => (2000..2010)
|
47
|
+
end
|
48
|
+
form.params = { 'form' => { 'anno' => '1996' } }
|
49
|
+
assert_equal 2000, form[:anno].value
|
50
|
+
form.params = { 'form' => { 'anno' => '2006' } }
|
51
|
+
assert_equal 2006, form[:anno].value
|
52
|
+
form.params = { 'form' => { 'anno' => '2012' } }
|
53
|
+
assert_equal 2010, form[:anno].value
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_out_of_range_value
|
57
|
+
elem = ActiveForm::Element::SelectYear.new :year, :value => 2
|
58
|
+
assert_equal Time.now.year - 5, elem.value
|
59
|
+
elem = ActiveForm::Element::SelectYear.new :year, :value => 3000
|
60
|
+
assert_equal Time.now.year + 5, elem.value
|
61
|
+
elem = ActiveForm::Element::SelectYear.new :year, :value => 1996, :range => (2000..2005)
|
62
|
+
assert_equal 2000, elem.value
|
63
|
+
elem = ActiveForm::Element::SelectYear.new :year, :value => 2006, :range => (2000..2005)
|
64
|
+
assert_equal 2005, elem.value
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_select_multiple
|
68
|
+
elem = ActiveForm::Element::SelectYear.new :year, :multiple => true, :range => (2000..2005)
|
69
|
+
elem.values = [1996, 2002, 2006]
|
70
|
+
assert_equal [2000, 2002, 2005], elem.export_value
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|