case_form 0.0.3
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/CHANGELOG.rdoc +1 -0
- data/MIT-LICENSE.rdoc +20 -0
- data/Manifest +86 -0
- data/README.rdoc +0 -0
- data/Rakefile +30 -0
- data/TODO.rdoc +7 -0
- data/case_form.gemspec +31 -0
- data/lib/case_form.rb +88 -0
- data/lib/case_form/associations.rb +50 -0
- data/lib/case_form/buttons.rb +175 -0
- data/lib/case_form/core_ext/form_helper.rb +54 -0
- data/lib/case_form/core_ext/layout_helper.rb +16 -0
- data/lib/case_form/core_ext/sentence_error.rb +38 -0
- data/lib/case_form/element.rb +40 -0
- data/lib/case_form/element/base.rb +95 -0
- data/lib/case_form/element/button.rb +64 -0
- data/lib/case_form/element/error.rb +54 -0
- data/lib/case_form/element/errors/complex_error.rb +107 -0
- data/lib/case_form/element/errors/simple_error.rb +76 -0
- data/lib/case_form/element/fieldset.rb +35 -0
- data/lib/case_form/element/hint.rb +54 -0
- data/lib/case_form/element/input.rb +106 -0
- data/lib/case_form/element/inputs/collection/checkbox_input.rb +36 -0
- data/lib/case_form/element/inputs/collection/radio_input.rb +27 -0
- data/lib/case_form/element/inputs/collection/select_input.rb +22 -0
- data/lib/case_form/element/inputs/collection_input.rb +89 -0
- data/lib/case_form/element/inputs/datetime/date_input.rb +45 -0
- data/lib/case_form/element/inputs/datetime/date_time_input.rb +50 -0
- data/lib/case_form/element/inputs/datetime/time_input.rb +34 -0
- data/lib/case_form/element/inputs/datetime/time_zone_input.rb +24 -0
- data/lib/case_form/element/inputs/file_input.rb +13 -0
- data/lib/case_form/element/inputs/hidden_input.rb +17 -0
- data/lib/case_form/element/inputs/number_input.rb +42 -0
- data/lib/case_form/element/inputs/search_input.rb +32 -0
- data/lib/case_form/element/inputs/string_input.rb +18 -0
- data/lib/case_form/element/inputs/text_input.rb +19 -0
- data/lib/case_form/element/label.rb +52 -0
- data/lib/case_form/element/nested_model.rb +105 -0
- data/lib/case_form/element/nested_models/handle.rb +18 -0
- data/lib/case_form/element/nested_models/handles/destructor_handle.rb +47 -0
- data/lib/case_form/element/nested_models/handles/generator_handle.rb +55 -0
- data/lib/case_form/element_ext/associationable.rb +54 -0
- data/lib/case_form/element_ext/columnable.rb +21 -0
- data/lib/case_form/element_ext/naming.rb +17 -0
- data/lib/case_form/element_ext/validationable.rb +13 -0
- data/lib/case_form/errors.rb +189 -0
- data/lib/case_form/form_builder.rb +11 -0
- data/lib/case_form/inputs.rb +1095 -0
- data/lib/case_form/labels.rb +102 -0
- data/lib/case_form/version.rb +6 -0
- data/lib/generators/case_form/install_generator.rb +33 -0
- data/lib/generators/case_form/templates/case_form.rb +63 -0
- data/lib/generators/case_form/templates/javascripts/jquery.case_form.js +10 -0
- data/lib/generators/case_form/templates/javascripts/prototype.case_form.js +0 -0
- data/lib/generators/case_form/templates/locales/en.yml +28 -0
- data/lib/generators/case_form/templates/locales/pl.yml +28 -0
- data/lib/generators/case_form/templates/stylesheets/stylesheet.css +93 -0
- data/lib/generators/case_form/templates/stylesheets/stylesheet_changes.css +1 -0
- data/lib/generators/case_form/uninstall_generator.rb +30 -0
- data/rails/init.rb +1 -0
- data/test/element/button_test.rb +85 -0
- data/test/element/errors/complex_error_test.rb +140 -0
- data/test/element/errors/simple_error_test.rb +92 -0
- data/test/element/fieldset_test.rb +28 -0
- data/test/element/hint_test.rb +81 -0
- data/test/element/input_test.rb +197 -0
- data/test/element/inputs/collection/checkbox_input_test.rb +176 -0
- data/test/element/inputs/collection/radio_input_test.rb +156 -0
- data/test/element/inputs/collection/select_input_test.rb +152 -0
- data/test/element/inputs/datetime/date_input_test.rb +160 -0
- data/test/element/inputs/datetime/datetime_input_test.rb +227 -0
- data/test/element/inputs/datetime/time_input_test.rb +72 -0
- data/test/element/inputs/datetime/time_zone_input_test.rb +42 -0
- data/test/element/inputs/file_input_test.rb +13 -0
- data/test/element/inputs/hidden_input_test.rb +13 -0
- data/test/element/inputs/number_input_test.rb +50 -0
- data/test/element/inputs/search_input_test.rb +13 -0
- data/test/element/inputs/string_input_test.rb +33 -0
- data/test/element/inputs/text_input_test.rb +13 -0
- data/test/element/label_test.rb +62 -0
- data/test/element/nested_model_test.rb +163 -0
- data/test/element/nested_models/handles/destructor_handle_test.rb +35 -0
- data/test/element/nested_models/handles/generator_handle_test.rb +27 -0
- data/test/form_builder_test.rb +25 -0
- data/test/form_helper_test.rb +15 -0
- data/test/lib/models.rb +268 -0
- data/test/test_helper.rb +74 -0
- metadata +235 -0
| @@ -0,0 +1,140 @@ | |
| 1 | 
            +
            require 'test_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class ComplexErrorTest < ActionView::TestCase
         | 
| 4 | 
            +
              setup do
         | 
| 5 | 
            +
                @error_tag = CaseForm.error_tag = :div
         | 
| 6 | 
            +
                @header_tag = CaseForm.complex_error_header_tag = :h2
         | 
| 7 | 
            +
                @message_tag = CaseForm.complex_error_message_tag = :p
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
              
         | 
| 10 | 
            +
              def errors_case_form_for(options={})
         | 
| 11 | 
            +
                concat(case_form_for(@invalid_user) { |f| concat(f.errors options) })
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
              
         | 
| 14 | 
            +
              test "should generate complex error" do
         | 
| 15 | 
            +
                errors_case_form_for
         | 
| 16 | 
            +
                assert_select "#{@error_tag}.errors", 1
         | 
| 17 | 
            +
                assert_select @header_tag.to_s, 1
         | 
| 18 | 
            +
                assert_select @message_tag.to_s, 1
         | 
| 19 | 
            +
                assert_select "ul", 1
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
              
         | 
| 22 | 
            +
              test "shouldn't generate complex error for valid object" do
         | 
| 23 | 
            +
                concat(case_form_for(@user) { |f| concat(f.errors) })
         | 
| 24 | 
            +
                assert_select "#{@error_tag}.errors", 0 # No error :div
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
              
         | 
| 27 | 
            +
              test "should generate complex error as sentance in config" do
         | 
| 28 | 
            +
                CaseForm.error_type = :sentence
         | 
| 29 | 
            +
                errors_case_form_for
         | 
| 30 | 
            +
                assert_select "#{@error_tag}.errors", 1
         | 
| 31 | 
            +
                assert_select "ul", 1
         | 
| 32 | 
            +
                assert_select "li", 3
         | 
| 33 | 
            +
              end
         | 
| 34 | 
            +
              
         | 
| 35 | 
            +
              test "should generate complex error as sentance in options" do
         | 
| 36 | 
            +
                errors_case_form_for(:as => :sentence)
         | 
| 37 | 
            +
                assert_select "#{@error_tag}.errors", 1
         | 
| 38 | 
            +
                assert_select "ul", 1
         | 
| 39 | 
            +
                assert_select "li", 3
         | 
| 40 | 
            +
              end
         | 
| 41 | 
            +
              
         | 
| 42 | 
            +
              test "should generate complex error as list in config" do
         | 
| 43 | 
            +
                CaseForm.error_type = :list
         | 
| 44 | 
            +
                errors_case_form_for
         | 
| 45 | 
            +
                assert_select "#{@error_tag}.errors", 1
         | 
| 46 | 
            +
                assert_select "ul", 1
         | 
| 47 | 
            +
                assert_select "li", 5
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
                
         | 
| 50 | 
            +
              test "should generate complex error as list in options" do
         | 
| 51 | 
            +
                errors_case_form_for(:as => :list)
         | 
| 52 | 
            +
                assert_select "#{@error_tag}.errors", 1
         | 
| 53 | 
            +
                assert_select "ul", 1
         | 
| 54 | 
            +
                assert_select "li", 5
         | 
| 55 | 
            +
              end
         | 
| 56 | 
            +
              
         | 
| 57 | 
            +
              test "should generate complex error with default connectors" do
         | 
| 58 | 
            +
                errors_case_form_for(:as => :sentance)
         | 
| 59 | 
            +
                assert_select "li", /,/
         | 
| 60 | 
            +
                assert_select "li", /and/
         | 
| 61 | 
            +
              end
         | 
| 62 | 
            +
              
         | 
| 63 | 
            +
              test "should generate complex error with special connectors" do
         | 
| 64 | 
            +
                errors_case_form_for(:as => :sentance, :connector => " + ", :last_connector => " AND ")
         | 
| 65 | 
            +
                assert_select "li", /\+/
         | 
| 66 | 
            +
                assert_select "li", /AND/
         | 
| 67 | 
            +
              end
         | 
| 68 | 
            +
                
         | 
| 69 | 
            +
              test "should generate complex error with default HTML class" do
         | 
| 70 | 
            +
                errors_case_form_for
         | 
| 71 | 
            +
                assert_select "#{@error_tag}.errors", 1
         | 
| 72 | 
            +
              end
         | 
| 73 | 
            +
              
         | 
| 74 | 
            +
              test "should generate complex error with specific HTML class" do
         | 
| 75 | 
            +
                specific_class = "some_class"
         | 
| 76 | 
            +
                errors_case_form_for(:class => specific_class)
         | 
| 77 | 
            +
                assert_select "#{@error_tag}.#{specific_class}", 1
         | 
| 78 | 
            +
              end
         | 
| 79 | 
            +
              
         | 
| 80 | 
            +
              test "should generate complex error with default HTML id" do
         | 
| 81 | 
            +
                errors_case_form_for
         | 
| 82 | 
            +
                assert_select "#{@error_tag}#invalid_user_errors", 1
         | 
| 83 | 
            +
              end
         | 
| 84 | 
            +
              
         | 
| 85 | 
            +
              test "should generate complex error with specific HTML id" do
         | 
| 86 | 
            +
                specific_id = "some_id"
         | 
| 87 | 
            +
                errors_case_form_for(:id => specific_id)
         | 
| 88 | 
            +
                assert_select "#{@error_tag}##{specific_id}", 1
         | 
| 89 | 
            +
              end
         | 
| 90 | 
            +
              
         | 
| 91 | 
            +
              test "should generate complex error with specific tag" do
         | 
| 92 | 
            +
                specific_tag = CaseForm.error_tag = "span"
         | 
| 93 | 
            +
                errors_case_form_for
         | 
| 94 | 
            +
                assert_select specific_tag
         | 
| 95 | 
            +
              end
         | 
| 96 | 
            +
              
         | 
| 97 | 
            +
              test "should generate complex error with specific tag in options" do
         | 
| 98 | 
            +
                specific_tag = "span"
         | 
| 99 | 
            +
                errors_case_form_for(:tag => specific_tag)
         | 
| 100 | 
            +
                assert_select specific_tag
         | 
| 101 | 
            +
              end
         | 
| 102 | 
            +
              
         | 
| 103 | 
            +
              test "should generate complex error with specific header tag" do
         | 
| 104 | 
            +
                specific_tag = CaseForm.complex_error_header_tag = "h4"
         | 
| 105 | 
            +
                errors_case_form_for
         | 
| 106 | 
            +
                assert_select specific_tag
         | 
| 107 | 
            +
              end
         | 
| 108 | 
            +
              
         | 
| 109 | 
            +
              test "should generate complex error with specific header tag in options" do
         | 
| 110 | 
            +
                specific_tag = "h4"
         | 
| 111 | 
            +
                errors_case_form_for(:header_tag => specific_tag)
         | 
| 112 | 
            +
                assert_select specific_tag
         | 
| 113 | 
            +
              end
         | 
| 114 | 
            +
              
         | 
| 115 | 
            +
              test "should generate complex error with specific message tag" do
         | 
| 116 | 
            +
                specific_tag = CaseForm.complex_error_message_tag = "pre"
         | 
| 117 | 
            +
                errors_case_form_for
         | 
| 118 | 
            +
                assert_select specific_tag
         | 
| 119 | 
            +
              end
         | 
| 120 | 
            +
              
         | 
| 121 | 
            +
              test "should generate complex error with specific message tag in options" do
         | 
| 122 | 
            +
                specific_tag = "h4"
         | 
| 123 | 
            +
                errors_case_form_for(:message_tag => specific_tag)
         | 
| 124 | 
            +
                assert_select specific_tag
         | 
| 125 | 
            +
              end
         | 
| 126 | 
            +
              
         | 
| 127 | 
            +
              test "should generate complex error without header message" do
         | 
| 128 | 
            +
                errors_case_form_for(:header_message => false)
         | 
| 129 | 
            +
                assert_select @header_tag.to_s, 0
         | 
| 130 | 
            +
              end
         | 
| 131 | 
            +
              
         | 
| 132 | 
            +
              test "should generate complex error without message" do
         | 
| 133 | 
            +
                errors_case_form_for(:message => false)
         | 
| 134 | 
            +
                assert_select @message_tag.to_s, 0
         | 
| 135 | 
            +
              end
         | 
| 136 | 
            +
              
         | 
| 137 | 
            +
              test "should generate hint with wrong options" do
         | 
| 138 | 
            +
                assert_raise(ArgumentError) { errors_case_form_for(:foo => :bar) }
         | 
| 139 | 
            +
              end
         | 
| 140 | 
            +
            end
         | 
| @@ -0,0 +1,92 @@ | |
| 1 | 
            +
            require 'test_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class SimpleErrorTest < ActionView::TestCase
         | 
| 4 | 
            +
              setup do
         | 
| 5 | 
            +
                @error_tag = CaseForm.error_tag = :div
         | 
| 6 | 
            +
              end
         | 
| 7 | 
            +
              
         | 
| 8 | 
            +
              def error_case_form_for(method, options={})
         | 
| 9 | 
            +
                concat(case_form_for(@invalid_user) { |f| concat(f.error method, options) })
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
              
         | 
| 12 | 
            +
              test "should generate standard error" do
         | 
| 13 | 
            +
                error_case_form_for(:firstname)
         | 
| 14 | 
            +
                assert_select "#{@error_tag}.error", 1
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
              
         | 
| 17 | 
            +
              test "shouldn't generate standard error for valid object" do
         | 
| 18 | 
            +
                concat(case_form_for(@user) { |f| concat(f.error :firstname) })
         | 
| 19 | 
            +
                assert_select "#{@error_tag}.error", 0 # No error :div
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
              
         | 
| 22 | 
            +
              test "should generate standard error as sentence in config" do
         | 
| 23 | 
            +
                CaseForm.error_type = :sentence
         | 
| 24 | 
            +
                error_case_form_for(:firstname)
         | 
| 25 | 
            +
                assert_select "#{@error_tag}.error", 1
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
              
         | 
| 28 | 
            +
              test "should generate standard error as sentence in options" do
         | 
| 29 | 
            +
                error_case_form_for(:firstname, :as => :sentence)
         | 
| 30 | 
            +
                assert_select "#{@error_tag}.error", 1
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
              
         | 
| 33 | 
            +
              test "should generate standard error as list in config" do
         | 
| 34 | 
            +
                CaseForm.error_type = :list
         | 
| 35 | 
            +
                error_case_form_for(:firstname)
         | 
| 36 | 
            +
                assert_select "#{@error_tag}.error ul li"
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
                
         | 
| 39 | 
            +
              test "should generate standard error as list in options" do
         | 
| 40 | 
            +
                error_case_form_for(:firstname, :as => :list)
         | 
| 41 | 
            +
                assert_select "#{@error_tag}.error ul li"
         | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
              
         | 
| 44 | 
            +
              test "should generate standard error with default connectors" do
         | 
| 45 | 
            +
                error_case_form_for(:firstname, :as => :sentence)
         | 
| 46 | 
            +
                assert_select "#{@error_tag}.error", /,/
         | 
| 47 | 
            +
              end
         | 
| 48 | 
            +
              
         | 
| 49 | 
            +
              test "should generate standard error with special connectors" do
         | 
| 50 | 
            +
                error_case_form_for(:firstname, :as => :sentence, :connector => " + ", :last_connector => " AND ")
         | 
| 51 | 
            +
                assert_select "#{@error_tag}.error", /\+/
         | 
| 52 | 
            +
                assert_select "#{@error_tag}.error", /AND/
         | 
| 53 | 
            +
              end
         | 
| 54 | 
            +
                
         | 
| 55 | 
            +
              test "should generate standard error with default HTML class" do
         | 
| 56 | 
            +
                error_case_form_for(:firstname)
         | 
| 57 | 
            +
                assert_select "#{@error_tag}.error", 1
         | 
| 58 | 
            +
              end
         | 
| 59 | 
            +
              
         | 
| 60 | 
            +
              test "should generate standard error with specific HTML class" do
         | 
| 61 | 
            +
                specific_class = "some_class"
         | 
| 62 | 
            +
                error_case_form_for(:firstname, :class => specific_class)
         | 
| 63 | 
            +
                assert_select "#{@error_tag}.#{specific_class}"
         | 
| 64 | 
            +
              end
         | 
| 65 | 
            +
              
         | 
| 66 | 
            +
              test "should generate standard error with default HTML id" do
         | 
| 67 | 
            +
                error_case_form_for(:firstname)
         | 
| 68 | 
            +
                assert_select "#{@error_tag}#invalid_user_firstname_error"
         | 
| 69 | 
            +
              end
         | 
| 70 | 
            +
              
         | 
| 71 | 
            +
              test "should generate standard error with specific HTML id" do
         | 
| 72 | 
            +
                specific_id = "some_id"
         | 
| 73 | 
            +
                error_case_form_for(:firstname, :id => specific_id)
         | 
| 74 | 
            +
                assert_select "#{@error_tag}##{specific_id}"
         | 
| 75 | 
            +
              end
         | 
| 76 | 
            +
              
         | 
| 77 | 
            +
              test "should generate standard error with specific tag" do
         | 
| 78 | 
            +
                specific_tag = CaseForm.error_tag = "span"
         | 
| 79 | 
            +
                error_case_form_for(:firstname)
         | 
| 80 | 
            +
                assert_select specific_tag
         | 
| 81 | 
            +
              end
         | 
| 82 | 
            +
              
         | 
| 83 | 
            +
              test "should generate standard error with specific tag in options" do
         | 
| 84 | 
            +
                specific_tag = "span"
         | 
| 85 | 
            +
                error_case_form_for(:firstname, :tag => specific_tag)
         | 
| 86 | 
            +
                assert_select specific_tag
         | 
| 87 | 
            +
              end
         | 
| 88 | 
            +
              
         | 
| 89 | 
            +
              test "should generate hint with wrong options" do
         | 
| 90 | 
            +
                assert_raise(ArgumentError) { error_case_form_for(:firstname, :foo => :bar) }
         | 
| 91 | 
            +
              end
         | 
| 92 | 
            +
            end
         | 
| @@ -0,0 +1,28 @@ | |
| 1 | 
            +
            require 'test_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class FieldsetTest < ActionView::TestCase
         | 
| 4 | 
            +
              def fieldset_case_form_for(object, method, options={})
         | 
| 5 | 
            +
                concat(case_form_for(object) { |f| f.send(method, options) })
         | 
| 6 | 
            +
              end
         | 
| 7 | 
            +
              
         | 
| 8 | 
            +
              def fieldset_case_fields_for(object, method, attribute, options={})
         | 
| 9 | 
            +
                concat(case_form_for(object) { |f| f.send(method, attribute, options) })
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
              
         | 
| 12 | 
            +
              test "should generate fieldset for attributes" do
         | 
| 13 | 
            +
                fieldset_case_form_for(@user, :attributes)
         | 
| 14 | 
            +
                assert_select "fieldset", :count => 1
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
              
         | 
| 17 | 
            +
              test "should generate fieldset for buttons" do
         | 
| 18 | 
            +
                fieldset_case_form_for(@user, :buttons)
         | 
| 19 | 
            +
                assert_select "fieldset", :count => 1
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
              
         | 
| 22 | 
            +
              test "should generate fieldset with legend" do
         | 
| 23 | 
            +
                legend = "Actions"
         | 
| 24 | 
            +
                fieldset_case_form_for(@user, :attributes, :text => legend)
         | 
| 25 | 
            +
                assert_select "fieldset", :count => 1
         | 
| 26 | 
            +
                assert_select "legend", :count => 1, :text => legend
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
            end
         | 
| @@ -0,0 +1,81 @@ | |
| 1 | 
            +
            require 'test_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class HintTest < ActionView::TestCase
         | 
| 4 | 
            +
              setup do
         | 
| 5 | 
            +
                @tag = CaseForm.hint_tag = :span
         | 
| 6 | 
            +
                @text = "Your firstname"
         | 
| 7 | 
            +
              end
         | 
| 8 | 
            +
              
         | 
| 9 | 
            +
              def hint_form_for(method, options={})
         | 
| 10 | 
            +
                concat(case_form_for(@user) { |f| f.hint(method, options) })
         | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
              
         | 
| 13 | 
            +
              test "should generate hint" do
         | 
| 14 | 
            +
                hint_form_for(:firstname, :text => @text)
         | 
| 15 | 
            +
                assert_select @tag.to_s, @text
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
              
         | 
| 18 | 
            +
              test "should generate hint with string" do
         | 
| 19 | 
            +
                hint_form_for(@text)
         | 
| 20 | 
            +
                assert_select @tag.to_s, @text
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
              
         | 
| 23 | 
            +
              test "should generate hint with symbol as attribute" do
         | 
| 24 | 
            +
                hint_form_for(:firstname)
         | 
| 25 | 
            +
                assert_select @tag.to_s, "translation missing: en, case_form, hints, user, firstname"
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
              
         | 
| 28 | 
            +
              test "should generate hint with default HTML class" do
         | 
| 29 | 
            +
                hint_form_for(:firstname, :text => @text)
         | 
| 30 | 
            +
                assert_select @tag.to_s, :class => "hint"
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
              
         | 
| 33 | 
            +
              test "should generate hint with specific HTML class" do
         | 
| 34 | 
            +
                specific_class = "some_class"
         | 
| 35 | 
            +
                hint_form_for(:firstname, :class => specific_class, :text => @text)
         | 
| 36 | 
            +
                assert_select @tag.to_s, :class => specific_class
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
              
         | 
| 39 | 
            +
              test "should generate hint with default HTML id" do
         | 
| 40 | 
            +
                hint_form_for(:firstname, :text => @text)
         | 
| 41 | 
            +
                assert_select @tag.to_s, :id =>"user_firstname_hint"
         | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
              
         | 
| 44 | 
            +
              test "should generate hint with specific HTML id" do
         | 
| 45 | 
            +
                specific_id = "some_id"
         | 
| 46 | 
            +
                hint_form_for(:firstname, :id => specific_id, :text => @text)
         | 
| 47 | 
            +
                assert_select @tag.to_s, :id => specific_id
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
              
         | 
| 50 | 
            +
              test "should generate hint with specific tag" do
         | 
| 51 | 
            +
                specific_tag = CaseForm.hint_tag = "div"
         | 
| 52 | 
            +
                hint_form_for(:firstname, :text => @text)
         | 
| 53 | 
            +
                assert_select specific_tag, :id => "user_firstname_hint"
         | 
| 54 | 
            +
              end
         | 
| 55 | 
            +
              
         | 
| 56 | 
            +
              test "should generate hint with specific tag in options" do
         | 
| 57 | 
            +
                specific_tag = "div"
         | 
| 58 | 
            +
                hint_form_for(:firstname, :tag => specific_tag, :text => @text)
         | 
| 59 | 
            +
                assert_select specific_tag
         | 
| 60 | 
            +
              end
         | 
| 61 | 
            +
              
         | 
| 62 | 
            +
              test "should generate hint with multiple options" do
         | 
| 63 | 
            +
                specific_tag = "div"
         | 
| 64 | 
            +
                specific_id = "some_id"
         | 
| 65 | 
            +
                hint_form_for(:firstname, :tag => specific_tag, :id => specific_id)
         | 
| 66 | 
            +
                assert_select specific_tag, :id => specific_id
         | 
| 67 | 
            +
              end
         | 
| 68 | 
            +
              
         | 
| 69 | 
            +
              test "should generate hint with wrong options" do
         | 
| 70 | 
            +
                assert_raise(ArgumentError) { hint_form_for(:firstname, :foo => :bar) }
         | 
| 71 | 
            +
              end
         | 
| 72 | 
            +
              
         | 
| 73 | 
            +
              test "should generate hint with custom data (HTML attribute)" do
         | 
| 74 | 
            +
                hint_form_for(:firstname, :custom => { :foo => :bar })
         | 
| 75 | 
            +
                assert_select "#{@tag.to_s}[data-foo=bar]", 1
         | 
| 76 | 
            +
              end
         | 
| 77 | 
            +
              
         | 
| 78 | 
            +
              test "should generate hint with invalid custom data (HTML attribute)" do
         | 
| 79 | 
            +
                assert_raise(ArgumentError) { hint_form_for(:firstname, :custom => :foo) }
         | 
| 80 | 
            +
              end
         | 
| 81 | 
            +
            end
         | 
| @@ -0,0 +1,197 @@ | |
| 1 | 
            +
            # coding: utf-8
         | 
| 2 | 
            +
            require 'test_helper'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            class InputTest < ActionView::TestCase
         | 
| 5 | 
            +
              def input_case_form_for(object, input, attribute, options={})
         | 
| 6 | 
            +
                concat(case_form_for(object) { |f| f.send(input, attribute, options) })
         | 
| 7 | 
            +
              end
         | 
| 8 | 
            +
              
         | 
| 9 | 
            +
              test "should generate input" do
         | 
| 10 | 
            +
                input_case_form_for(@user, :string, :firstname)
         | 
| 11 | 
            +
                assert_select "input[type=text]", 1
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
              
         | 
| 14 | 
            +
              test "should generate input without label" do
         | 
| 15 | 
            +
                input_case_form_for(@user, :string, :firstname, :label => false)
         | 
| 16 | 
            +
                assert_select "input[type=text]", 1
         | 
| 17 | 
            +
                assert_select "label", 0
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
              
         | 
| 20 | 
            +
              test "should generate input with label" do
         | 
| 21 | 
            +
                text = "Some text"
         | 
| 22 | 
            +
                input_case_form_for(@user, :string, :firstname, :label => text)
         | 
| 23 | 
            +
                assert_select "input[type=text]", 1
         | 
| 24 | 
            +
                assert_select "label", text
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
              
         | 
| 27 | 
            +
              test "should generate input with label options" do
         | 
| 28 | 
            +
                html_class = "super_html"
         | 
| 29 | 
            +
                input_case_form_for(@user, :string, :firstname, :label => { :class => html_class })
         | 
| 30 | 
            +
                assert_select "input[type=text]", 1
         | 
| 31 | 
            +
                assert_select "label.#{html_class}", 1
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
              
         | 
| 34 | 
            +
              test "should generate input without error" do
         | 
| 35 | 
            +
                input_case_form_for(@user, :string, :firstname, :error => false)
         | 
| 36 | 
            +
                assert_select "input[type=text]", 1
         | 
| 37 | 
            +
                assert_select "#{cf_config(:error_tag)}#user_firstname_error", 0
         | 
| 38 | 
            +
              end
         | 
| 39 | 
            +
              
         | 
| 40 | 
            +
              test "should generate input with error" do
         | 
| 41 | 
            +
                input_case_form_for(@invalid_user, :string, :firstname)
         | 
| 42 | 
            +
                assert_select "input[type=text]", 1
         | 
| 43 | 
            +
                assert_select "#{cf_config(:error_tag)}#invalid_user_firstname_error", 1
         | 
| 44 | 
            +
              end
         | 
| 45 | 
            +
              
         | 
| 46 | 
            +
              test "should generate input with error options" do
         | 
| 47 | 
            +
                html_class = "super_html"
         | 
| 48 | 
            +
                input_case_form_for(@invalid_user, :string, :firstname, :error => { :class => html_class })
         | 
| 49 | 
            +
                assert_select "input[type=text]", 1
         | 
| 50 | 
            +
                assert_select "#{cf_config(:error_tag)}.#{html_class}", 1
         | 
| 51 | 
            +
              end
         | 
| 52 | 
            +
              
         | 
| 53 | 
            +
              test "should generate input without hint" do
         | 
| 54 | 
            +
                input_case_form_for(@user, :string, :firstname)
         | 
| 55 | 
            +
                assert_select "input[type=text]", 1
         | 
| 56 | 
            +
                assert_select "#{cf_config(:hint_tag)}#user_firstname_hint", 0
         | 
| 57 | 
            +
              end
         | 
| 58 | 
            +
              
         | 
| 59 | 
            +
              test "should generate input without hint in option" do
         | 
| 60 | 
            +
                input_case_form_for(@user, :string, :firstname, :hint => false)
         | 
| 61 | 
            +
                assert_select "input[type=text]", 1
         | 
| 62 | 
            +
                assert_select "#{cf_config(:hint_tag)}#user_firstname_hint", 0
         | 
| 63 | 
            +
              end
         | 
| 64 | 
            +
              
         | 
| 65 | 
            +
              test "should generate input with hint" do
         | 
| 66 | 
            +
                text = "Some hint"
         | 
| 67 | 
            +
                input_case_form_for(@user, :string, :firstname, :hint => text)
         | 
| 68 | 
            +
                assert_select "input[type=text]", 1
         | 
| 69 | 
            +
                assert_select "#{cf_config(:hint_tag)}#user_firstname_hint", text
         | 
| 70 | 
            +
              end
         | 
| 71 | 
            +
              
         | 
| 72 | 
            +
              test "should generate input with hint options" do
         | 
| 73 | 
            +
                html_class = "super_html"
         | 
| 74 | 
            +
                input_case_form_for(@user, :string, :firstname, :hint => { :class => html_class })
         | 
| 75 | 
            +
                assert_select "input[type=text]", 1
         | 
| 76 | 
            +
                assert_select "#{cf_config(:hint_tag)}#user_firstname_hint.#{html_class}", 1
         | 
| 77 | 
            +
              end
         | 
| 78 | 
            +
              
         | 
| 79 | 
            +
              test "should generate input with size options" do
         | 
| 80 | 
            +
                input_case_form_for(@user, :string, :firstname, :size => 55)
         | 
| 81 | 
            +
                assert_select "input[type=text][size=55]", 1
         | 
| 82 | 
            +
              end
         | 
| 83 | 
            +
              
         | 
| 84 | 
            +
              test "should generate input with defined type" do
         | 
| 85 | 
            +
                input_case_form_for(@user, :attribute, :firstname, :as => :string)
         | 
| 86 | 
            +
                assert_select "input[type=text]", 1
         | 
| 87 | 
            +
              end
         | 
| 88 | 
            +
              
         | 
| 89 | 
            +
              test "shouldn't generate input as bad input type" do
         | 
| 90 | 
            +
                assert_raise(ArgumentError) { input_case_form_for(@user, :attribute, :firstname, :as => :foo) }
         | 
| 91 | 
            +
              end
         | 
| 92 | 
            +
              
         | 
| 93 | 
            +
              test "should generate dynamic input as string" do
         | 
| 94 | 
            +
                input_case_form_for(@user, :attribute, :firstname)
         | 
| 95 | 
            +
                assert_select "input[type=text]", 1
         | 
| 96 | 
            +
              end
         | 
| 97 | 
            +
              
         | 
| 98 | 
            +
              test "should generate dynamic input as text" do
         | 
| 99 | 
            +
                input_case_form_for(@user, :attribute, :description)
         | 
| 100 | 
            +
                assert_select "textarea", 1
         | 
| 101 | 
            +
              end
         | 
| 102 | 
            +
              
         | 
| 103 | 
            +
              test "should generate dynamic input as number" do
         | 
| 104 | 
            +
                input_case_form_for(@user, :attribute, :age)
         | 
| 105 | 
            +
                assert_select "input[type=number]", 1
         | 
| 106 | 
            +
              end
         | 
| 107 | 
            +
              
         | 
| 108 | 
            +
              test "should generate dynamic input as datetime" do
         | 
| 109 | 
            +
                input_case_form_for(@user, :attribute, :created_at)
         | 
| 110 | 
            +
                assert_select "select", 5
         | 
| 111 | 
            +
              end
         | 
| 112 | 
            +
              
         | 
| 113 | 
            +
              test "should generate dynamic input as date" do
         | 
| 114 | 
            +
                input_case_form_for(@user, :attribute, :born_at)
         | 
| 115 | 
            +
                assert_select "select", 3
         | 
| 116 | 
            +
              end
         | 
| 117 | 
            +
              
         | 
| 118 | 
            +
              test "should generate dynamic input as time" do
         | 
| 119 | 
            +
                input_case_form_for(@user, :attribute, :login_at)
         | 
| 120 | 
            +
                assert_select "select", 2
         | 
| 121 | 
            +
              end
         | 
| 122 | 
            +
              
         | 
| 123 | 
            +
              test "should generate dynamic input as time zone" do
         | 
| 124 | 
            +
                input_case_form_for(@user, :attribute, :user_zone)
         | 
| 125 | 
            +
                assert_select "select", 1
         | 
| 126 | 
            +
              end
         | 
| 127 | 
            +
              
         | 
| 128 | 
            +
              test "should generate dynamic input as checkbox" do
         | 
| 129 | 
            +
                input_case_form_for(@user, :attribute, :admin)
         | 
| 130 | 
            +
                assert_select "input[type=checkbox]", 1
         | 
| 131 | 
            +
              end
         | 
| 132 | 
            +
              
         | 
| 133 | 
            +
              test "should generate dynamic input from name as password" do
         | 
| 134 | 
            +
                input_case_form_for(@user, :attribute, :password_confirmation)
         | 
| 135 | 
            +
                assert_select "input[type=password]", 1
         | 
| 136 | 
            +
              end
         | 
| 137 | 
            +
              
         | 
| 138 | 
            +
              test "should generate dynamic input from name as file" do
         | 
| 139 | 
            +
                input_case_form_for(@user, :attribute, :file_path)
         | 
| 140 | 
            +
                assert_select "input[type=file]", 1
         | 
| 141 | 
            +
              end
         | 
| 142 | 
            +
              
         | 
| 143 | 
            +
              test "should generate dynamic input from name as url" do
         | 
| 144 | 
            +
                input_case_form_for(@user, :attribute, :twitter_url)
         | 
| 145 | 
            +
                assert_select "input[type=url]", 1
         | 
| 146 | 
            +
              end
         | 
| 147 | 
            +
              
         | 
| 148 | 
            +
              test "should generate dynamic input from name as phone" do
         | 
| 149 | 
            +
                input_case_form_for(@user, :attribute, :mobile_phone)
         | 
| 150 | 
            +
                assert_select "input[type=tel]", 1
         | 
| 151 | 
            +
              end
         | 
| 152 | 
            +
              
         | 
| 153 | 
            +
              test "should generate input with invalid options" do
         | 
| 154 | 
            +
                assert_raise(ArgumentError) { input_case_form_for(@user, :attribute, :firstname, :foo => :bar) }
         | 
| 155 | 
            +
              end
         | 
| 156 | 
            +
              
         | 
| 157 | 
            +
              test "should generate input with custom data (HTML attribute)" do
         | 
| 158 | 
            +
                input_case_form_for(@user, :attribute, :firstname, :custom => { :foo => :bar })
         | 
| 159 | 
            +
                assert_select "input[type=text][data-foo=bar]", 1
         | 
| 160 | 
            +
              end
         | 
| 161 | 
            +
              
         | 
| 162 | 
            +
              test "should generate input with invalid custom data (HTML attribute)" do
         | 
| 163 | 
            +
                assert_raise(ArgumentError) { input_case_form_for(@user, :attribute, :firstname, :custom => :foo) }
         | 
| 164 | 
            +
              end
         | 
| 165 | 
            +
              
         | 
| 166 | 
            +
              test "should generate input as required" do
         | 
| 167 | 
            +
                input_case_form_for(@user, :string, :firstname, :required => true)
         | 
| 168 | 
            +
                assert_select "input[type=text][required=required]", 1
         | 
| 169 | 
            +
                assert_select "label", "Firstname*"
         | 
| 170 | 
            +
              end
         | 
| 171 | 
            +
              
         | 
| 172 | 
            +
              test "should generate input as not required" do
         | 
| 173 | 
            +
                input_case_form_for(@user, :string, :firstname, :required => false)
         | 
| 174 | 
            +
                assert_select "input[type=text][required=required]", 0
         | 
| 175 | 
            +
                assert_select "label", "Firstname"
         | 
| 176 | 
            +
              end
         | 
| 177 | 
            +
              
         | 
| 178 | 
            +
              test "should generate input as required from validation" do
         | 
| 179 | 
            +
                input_case_form_for(@valid_user, :string, :firstname)
         | 
| 180 | 
            +
                assert_select "input[type=text][required=required]", 1
         | 
| 181 | 
            +
                assert_select "label", "Firstname*"
         | 
| 182 | 
            +
              end
         | 
| 183 | 
            +
              
         | 
| 184 | 
            +
              test "should generate input as required from column NULL" do
         | 
| 185 | 
            +
                input_case_form_for(@user, :string, :lastname)
         | 
| 186 | 
            +
                assert_select "input[type=text][required=required]", 1
         | 
| 187 | 
            +
                assert_select "label", "Lastname*"
         | 
| 188 | 
            +
              end
         | 
| 189 | 
            +
              
         | 
| 190 | 
            +
              test "should generate input as required from config" do
         | 
| 191 | 
            +
                CaseForm.all_fields_required = true
         | 
| 192 | 
            +
                input_case_form_for(@user, :string, :firstname)
         | 
| 193 | 
            +
                CaseForm.all_fields_required = false
         | 
| 194 | 
            +
                assert_select "input[type=text][required=required]", 1
         | 
| 195 | 
            +
                assert_select "label", "Firstname*"
         | 
| 196 | 
            +
              end
         | 
| 197 | 
            +
            end
         |