formtastic 3.1.5 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (119) hide show
  1. checksums.yaml +5 -5
  2. data/.gitattributes +1 -0
  3. data/.github/workflows/test.yml +61 -0
  4. data/.gitignore +3 -2
  5. data/CHANGELOG.md +52 -0
  6. data/Gemfile.lock +105 -0
  7. data/MIT-LICENSE +1 -1
  8. data/README.md +627 -629
  9. data/RELEASE_PROCESS +3 -1
  10. data/Rakefile +20 -1
  11. data/app/assets/stylesheets/formtastic.css +1 -1
  12. data/bin/appraisal +8 -0
  13. data/formtastic.gemspec +9 -15
  14. data/gemfiles/rails_5.2/Gemfile +5 -0
  15. data/gemfiles/rails_6.0/Gemfile +5 -0
  16. data/gemfiles/rails_6.1/Gemfile +5 -0
  17. data/gemfiles/rails_edge/Gemfile +13 -0
  18. data/lib/formtastic.rb +5 -11
  19. data/lib/formtastic/actions.rb +6 -3
  20. data/lib/formtastic/deprecation.rb +1 -38
  21. data/lib/formtastic/engine.rb +3 -1
  22. data/lib/formtastic/form_builder.rb +8 -24
  23. data/lib/formtastic/helpers/action_helper.rb +1 -48
  24. data/lib/formtastic/helpers/errors_helper.rb +2 -2
  25. data/lib/formtastic/helpers/fieldset_wrapper.rb +7 -3
  26. data/lib/formtastic/helpers/input_helper.rb +18 -76
  27. data/lib/formtastic/helpers/inputs_helper.rb +12 -3
  28. data/lib/formtastic/i18n.rb +1 -1
  29. data/lib/formtastic/inputs.rb +32 -29
  30. data/lib/formtastic/inputs/base/collections.rb +1 -5
  31. data/lib/formtastic/inputs/base/errors.rb +4 -4
  32. data/lib/formtastic/inputs/base/hints.rb +1 -1
  33. data/lib/formtastic/inputs/base/timeish.rb +5 -1
  34. data/lib/formtastic/inputs/base/validations.rb +19 -9
  35. data/lib/formtastic/inputs/check_boxes_input.rb +3 -3
  36. data/lib/formtastic/inputs/color_input.rb +0 -1
  37. data/lib/formtastic/inputs/select_input.rb +1 -1
  38. data/lib/formtastic/localizer.rb +5 -7
  39. data/lib/formtastic/version.rb +1 -1
  40. data/lib/generators/templates/formtastic.rb +4 -6
  41. data/sample/basic_inputs.html +1 -1
  42. data/script/integration-template.rb +74 -0
  43. data/script/integration.sh +19 -0
  44. data/spec/action_class_finder_spec.rb +1 -1
  45. data/spec/actions/button_action_spec.rb +8 -8
  46. data/spec/actions/generic_action_spec.rb +60 -60
  47. data/spec/actions/input_action_spec.rb +7 -7
  48. data/spec/actions/link_action_spec.rb +10 -10
  49. data/spec/builder/custom_builder_spec.rb +37 -21
  50. data/spec/builder/error_proc_spec.rb +4 -4
  51. data/spec/builder/semantic_fields_for_spec.rb +27 -27
  52. data/spec/generators/formtastic/form/form_generator_spec.rb +25 -25
  53. data/spec/generators/formtastic/input/input_generator_spec.rb +31 -31
  54. data/spec/generators/formtastic/install/install_generator_spec.rb +9 -9
  55. data/spec/helpers/action_helper_spec.rb +328 -10
  56. data/spec/helpers/actions_helper_spec.rb +17 -17
  57. data/spec/helpers/form_helper_spec.rb +33 -33
  58. data/spec/helpers/input_helper_spec.rb +975 -2
  59. data/spec/helpers/inputs_helper_spec.rb +120 -105
  60. data/spec/helpers/reflection_helper_spec.rb +3 -3
  61. data/spec/helpers/semantic_errors_helper_spec.rb +22 -22
  62. data/spec/i18n_spec.rb +26 -26
  63. data/spec/input_class_finder_spec.rb +1 -1
  64. data/spec/inputs/base/collections_spec.rb +6 -6
  65. data/spec/inputs/base/validations_spec.rb +157 -19
  66. data/spec/inputs/boolean_input_spec.rb +55 -55
  67. data/spec/inputs/check_boxes_input_spec.rb +96 -95
  68. data/spec/inputs/color_input_spec.rb +51 -63
  69. data/spec/inputs/country_input_spec.rb +20 -20
  70. data/spec/inputs/custom_input_spec.rb +2 -6
  71. data/spec/inputs/datalist_input_spec.rb +1 -1
  72. data/spec/inputs/date_picker_input_spec.rb +42 -42
  73. data/spec/inputs/date_select_input_spec.rb +51 -37
  74. data/spec/inputs/datetime_picker_input_spec.rb +46 -46
  75. data/spec/inputs/datetime_select_input_spec.rb +53 -37
  76. data/spec/inputs/email_input_spec.rb +5 -5
  77. data/spec/inputs/file_input_spec.rb +6 -6
  78. data/spec/inputs/hidden_input_spec.rb +18 -18
  79. data/spec/inputs/include_blank_spec.rb +8 -8
  80. data/spec/inputs/label_spec.rb +20 -20
  81. data/spec/inputs/number_input_spec.rb +112 -112
  82. data/spec/inputs/password_input_spec.rb +5 -5
  83. data/spec/inputs/phone_input_spec.rb +5 -5
  84. data/spec/inputs/placeholder_spec.rb +5 -5
  85. data/spec/inputs/radio_input_spec.rb +63 -65
  86. data/spec/inputs/range_input_spec.rb +66 -66
  87. data/spec/inputs/readonly_spec.rb +4 -4
  88. data/spec/inputs/search_input_spec.rb +5 -5
  89. data/spec/inputs/select_input_spec.rb +92 -96
  90. data/spec/inputs/string_input_spec.rb +23 -23
  91. data/spec/inputs/text_input_spec.rb +16 -16
  92. data/spec/inputs/time_picker_input_spec.rb +43 -43
  93. data/spec/inputs/time_select_input_spec.rb +67 -54
  94. data/spec/inputs/time_zone_input_spec.rb +19 -19
  95. data/spec/inputs/url_input_spec.rb +5 -5
  96. data/spec/inputs/with_options_spec.rb +7 -7
  97. data/spec/localizer_spec.rb +17 -17
  98. data/spec/namespaced_class_finder_spec.rb +2 -2
  99. data/spec/schema.rb +21 -0
  100. data/spec/spec_helper.rb +163 -223
  101. data/spec/support/custom_macros.rb +72 -75
  102. data/spec/support/shared_examples.rb +0 -1301
  103. data/spec/support/test_environment.rb +23 -9
  104. metadata +36 -126
  105. data/.travis.yml +0 -46
  106. data/Appraisals +0 -43
  107. data/CHANGELOG +0 -54
  108. data/DEPRECATIONS +0 -52
  109. data/gemfiles/rails_3.2.gemfile +0 -9
  110. data/gemfiles/rails_4.0.4.gemfile +0 -8
  111. data/gemfiles/rails_4.1.gemfile +0 -8
  112. data/gemfiles/rails_4.2.gemfile +0 -8
  113. data/gemfiles/rails_4.gemfile +0 -8
  114. data/gemfiles/rails_5.0.gemfile +0 -8
  115. data/gemfiles/rails_edge.gemfile +0 -15
  116. data/lib/formtastic/util.rb +0 -57
  117. data/spec/helpers/namespaced_action_helper_spec.rb +0 -43
  118. data/spec/helpers/namespaced_input_helper_spec.rb +0 -36
  119. data/spec/util_spec.rb +0 -66
data/CHANGELOG DELETED
@@ -1,54 +0,0 @@
1
- 3.1.5
2
- * Backport use Integer instead of Fixnum for Ruby 2.4 support (#1235, #1243)
3
-
4
- 3.1.4
5
- * Performance improvements (#1174)
6
- * Added priority time zones configuration (#1172)
7
- * Added input generators (#1150)
8
- * Added support for `enum` (#1098)
9
- * Added support for Reform gem by relying only on `defined_enums` Hash for enum collections (#1113)
10
- * Added support for customizeable skipped columns (#1133)
11
- * Added automatic input readonly attribute for attr_readonly attributes (#1158)
12
- * Added support for multiple validation contexts (#1179)
13
- * Rails 5 Beta support (#1183)
14
- * Fixed typos and improved documentation
15
-
16
- 3.1.3
17
-
18
- * Fixed (silenced) additional Rails 5 deprecation on column_for_attribute that we missed in 3.1.0
19
-
20
- 3.1.2
21
-
22
- * Fixed that we specified 4.0.4 instead of 4.1 in the Rails version deprecation message
23
-
24
- 3.1.1
25
-
26
- * Fixed class custom input & action class loading in test environments
27
- * Added documentation of custom input & action class finders
28
- * Added a link to documentation & wiki from custom class deprecation warnings
29
-
30
- 3.1.0
31
-
32
- * Performance and documentation improvements
33
-
34
- 3.1.0.rc2
35
-
36
- * Deprecated :member_value and :member_label options
37
-
38
- 3.1.0.rc1
39
-
40
- * Deprecated support for Rails version < 4.1.0
41
- * Fixed synchronization issues with custom_namespace configuration
42
- * Fixed bug where boolean (checkbox) inputs were not being correctly checked (also in 2.3.1)
43
- * Fixed (silenced) Rails 5 deprecation on column_for_attribute that we're handling fine
44
- * Added new DatalistInput (:as => :datalist) for HTML5 datalists
45
- * Added configurable namespaces for custom inputs
46
- * Various performance and documentation improvements
47
-
48
- ---
49
-
50
- See 3.0-stable branch for 3.0.x changes
51
- https://github.com/justinfrench/formtastic/blob/3.0-stable/CHANGELOG
52
-
53
- See 2.3-stable branch for 2.3.x and earlier releases
54
- https://github.com/justinfrench/formtastic/blob/2.3-stable/CHANGELOG
data/DEPRECATIONS DELETED
@@ -1,52 +0,0 @@
1
- This document is for tracking deprecations and removals of
2
- Formtastic features and compatibilities.
3
-
4
- v4.0 (planned)
5
-
6
- * Remove support for Rails < 4.1
7
- * Remove support for country_select 1.x syntax (they want to remove it in 3.0)
8
- * Remove support for input_class, custom_input_class_name, standard_input_class_name, action_class, custom_action_class_name, standard_action_class_name
9
-
10
- v3.1 (master)
11
-
12
- * Deprecate support for Rails < 4.1
13
- * Deprecate :member_value option
14
- * Deprecate :member_label option
15
- * Deprecate internal custom input class finder methods (input_class, custom_input_class_name, standard_input_class_name)
16
- * Deprecate internal custom action class finder methods (action_class, custom_action_class_name, standard_action_class_name)
17
-
18
- v3.0
19
-
20
- * Remove support for Ruby version < 1.9.3
21
- * Remove support for Rails version < 3.2.13
22
- * Remove deprecated option :value (#1025)
23
- * Remove deprecated option :hint_class (#1025)
24
- * Remove deprecated option :error_class (#1025)
25
- * Remove deprecated option :group_by (#1025)
26
- * Remove deprecated option :group_label (#1025)
27
- * Remove deprecated option :find_options (#1025)
28
- * Deprecate support for Rails < 4.0.4
29
-
30
- v2.3
31
-
32
- * Remove deprecated date, time and datetime inputs
33
- * Deprecate :error_class option
34
- * Deprecate support for Rails < 3.2.13
35
-
36
- v2.2
37
-
38
- * Remove deprecated buttons DSL, ButtonHelper and commit_button helper
39
- * Deprecate :value option
40
- * Deprecate :hint_class option
41
- * Deprecate :error_class option
42
- * Deprecate :group_by and :group_label options
43
- * Deprecate :find_options option
44
-
45
- v2.1
46
-
47
- * Remove the previously deprecated :label_method, :value_method & :group_label_method options
48
- * Remove the previously deprecated :as => :numeric
49
- * Remove the previously deprecated inline_errors_for and related methods
50
- * Remove the previously deprecated SemanticFormHelper and SemanticFormBuilder
51
- * Deprecate the Buttons DSL (f.buttons, f.commit_button) in favor of the new Actions DSL — see above
52
-
@@ -1,9 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "~> 3.2.0"
6
- gem "test-unit-minitest", :platform => [:ruby_22, :ruby_23]
7
- gem "nokogiri", "~>1.6.8", :platform => :mri_20
8
-
9
- gemspec :path => "../"
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "4.0.4"
6
- gem "nokogiri", "~>1.6.8", :platform => :mri_20
7
-
8
- gemspec :path => "../"
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "~>4.1.0"
6
- gem "nokogiri", "~>1.6.8", :platform => :mri_20
7
-
8
- gemspec :path => "../"
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "~>4.2.0"
6
- gem "nokogiri", "~>1.6.8", :platform => :mri_20
7
-
8
- gemspec :path => "../"
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "~> 4.0.0"
6
- gem "nokogiri", "~>1.6.8", :platform => :mri_20
7
-
8
- gemspec :path => "../"
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "~> 5.0.1"
6
- gem "rspec-rails", "~> 3.5"
7
-
8
- gemspec :path => "../"
@@ -1,15 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", :github => "rails/rails"
6
- gem "rack", :github => "rack/rack"
7
- gem "i18n", :github => "svenfuchs/i18n"
8
- gem "arel", :github => "rails/arel"
9
- gem "rspec-rails", :github => "rspec/rspec-rails"
10
- gem "rspec-mocks", :github => "rspec/rspec-mocks"
11
- gem "rspec-support", :github => "rspec/rspec-support"
12
- gem "rspec-core", :github => "rspec/rspec-core"
13
- gem "rspec-expectations", :github => "rspec/rspec-expectations"
14
-
15
- gemspec :path => "../"
@@ -1,57 +0,0 @@
1
- # encoding: utf-8
2
-
3
- # Adapted from the rails3 compatibility shim in Haml 2.2
4
- module Formtastic
5
- # @private
6
- module Util
7
- extend self
8
- ## Rails XSS Safety
9
-
10
- # Returns the given text, marked as being HTML-safe.
11
- # With older versions of the Rails XSS-safety mechanism,
12
- # this destructively modifies the HTML-safety of `text`.
13
- #
14
- # @param text [String]
15
- # @return [String] `text`, marked as HTML-safe
16
- def html_safe(text)
17
- if text.respond_to?(:html_safe)
18
- text.html_safe
19
- else
20
- text
21
- end
22
- end
23
-
24
- def rails3?
25
- match?(rails_version, "~> 3.0")
26
- end
27
-
28
- def rails4?
29
- match?(rails_version, "~> 4.0")
30
- end
31
-
32
- def rails4_0?
33
- match?(rails_version, "~> 4.0.0")
34
- end
35
-
36
- def rails4_1?
37
- match?(rails_version, "~> 4.1.0")
38
- end
39
-
40
- def deprecated_version_of_rails?
41
- match?(rails_version, "< #{minimum_version_of_rails}")
42
- end
43
-
44
- def minimum_version_of_rails
45
- "4.1.0"
46
- end
47
-
48
- def rails_version
49
- ::Rails::VERSION::STRING
50
- end
51
-
52
- def match?(version, dependency)
53
- Gem::Dependency.new("formtastic", dependency).match?("formtastic", version)
54
- end
55
-
56
- end
57
- end
@@ -1,43 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe 'with action class finder' do
4
- include_context 'form builder'
5
-
6
- before {
7
- allow(Formtastic::FormBuilder)
8
- .to receive(:action_class_finder).and_return(Formtastic::ActionClassFinder)
9
- }
10
-
11
- it_behaves_like 'Action Helper'
12
-
13
- describe 'instantiating an action class' do
14
- it "should delegate to ActionClassFinder" do
15
- concat(semantic_form_for(@new_post) do |builder|
16
- Formtastic::ActionClassFinder.any_instance.should_receive(:find).
17
- with(:button).and_call_original
18
-
19
- builder.action(:submit, :as => :button)
20
- end)
21
- end
22
-
23
- describe 'when instantiated multiple times with the same action type' do
24
- it "should be cached" do
25
- concat(semantic_form_for(@new_post) do |builder|
26
- Formtastic::ActionClassFinder.should_receive(:new).once.and_call_original
27
- builder.action(:submit, :as => :button)
28
- builder.action(:submit, :as => :button)
29
- end)
30
- end
31
- end
32
-
33
- context 'of unknown action' do
34
- it "should try to load class named as the action" do
35
- expect {
36
- semantic_form_for(@new_post) do |builder|
37
- builder.action(:destroy)
38
- end
39
- }.to raise_error(Formtastic::UnknownActionError, 'Unable to find action class DestroyAction')
40
- end
41
- end
42
- end
43
- end
@@ -1,36 +0,0 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
3
-
4
- describe 'with input class finder' do
5
- include_context 'form builder'
6
-
7
- before {
8
- allow(Formtastic::FormBuilder)
9
- .to receive(:input_class_finder).and_return(Formtastic::InputClassFinder)
10
- }
11
- it_behaves_like 'Input Helper' # from spec/support/shared_examples.rb
12
-
13
-
14
- describe 'instantiating an input class' do
15
- describe 'when instantiated multiple times with the same input type' do
16
-
17
- it "should be cached (not calling the internal methods)" do
18
- # TODO this is really tied to the underlying implementation
19
- concat(semantic_form_for(@new_post) do |builder|
20
- Formtastic::InputClassFinder.should_receive(:new).once.and_call_original
21
- builder.input(:title, :as => :string)
22
- builder.input(:title, :as => :string)
23
- end)
24
- end
25
- end
26
-
27
- it "should delegate to InputClassFinder" do
28
- concat(semantic_form_for(@new_post) do |builder|
29
- Formtastic::InputClassFinder.any_instance.should_receive(:find).
30
- with(:string).and_call_original
31
-
32
- builder.input(:title, :as => :string)
33
- end)
34
- end
35
- end
36
- end
data/spec/util_spec.rb DELETED
@@ -1,66 +0,0 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
3
-
4
- describe 'Formtastic::Util' do
5
-
6
- describe '.deprecated_version_of_rails?' do
7
-
8
- subject { Formtastic::Util.deprecated_version_of_rails? }
9
-
10
- context '4.0.0' do
11
- before { allow(Formtastic::Util).to receive(:rails_version) { "4.0.0" } }
12
- it 'should be true' do
13
- expect(subject).to be_truthy
14
- end
15
- end
16
-
17
- context '4.0.3' do
18
- before { allow(Formtastic::Util).to receive(:rails_version) { "4.0.3" } }
19
- it 'should be true' do
20
- expect(subject).to be_truthy
21
- end
22
- end
23
-
24
- context '4.0.4' do
25
- before { allow(Formtastic::Util).to receive(:rails_version) { "4.0.4" } }
26
- it 'should be false' do
27
- expect(subject).to be_truthy
28
- end
29
- end
30
-
31
- context '4.0.5' do
32
- before { allow(Formtastic::Util).to receive(:rails_version) { "4.0.5" } }
33
- it 'should be false' do
34
- expect(subject).to be_truthy
35
- end
36
- end
37
-
38
- context '4.1.0' do
39
- before { allow(Formtastic::Util).to receive(:rails_version) { "4.1.0" } }
40
- it 'should be false' do
41
- expect(subject).to be_falsey
42
- end
43
- end
44
-
45
- context '4.1.1' do
46
- before { allow(Formtastic::Util).to receive(:rails_version) { "4.1.1" } }
47
- it 'should be false' do
48
- expect(subject).to be_falsey
49
- end
50
- end
51
-
52
- context '4.2.0' do
53
- before { allow(Formtastic::Util).to receive(:rails_version) { "4.2.0" } }
54
- it 'should be false' do
55
- expect(subject).to be_falsey
56
- end
57
- end
58
-
59
- context '5.0.0' do
60
- before { allow(Formtastic::Util).to receive(:rails_version) { "5.0.0" } }
61
- it 'should be true' do
62
- expect(subject).to be_falsey
63
- end
64
- end
65
- end
66
- end