formtastic 3.1.5 → 4.0.0.rc1

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.
Files changed (114) hide show
  1. checksums.yaml +5 -5
  2. data/.gitattributes +1 -0
  3. data/.gitignore +3 -2
  4. data/.travis.yml +28 -40
  5. data/CHANGELOG.md +49 -0
  6. data/DEPRECATIONS +1 -1
  7. data/Gemfile.lock +104 -0
  8. data/README.md +628 -629
  9. data/Rakefile +20 -1
  10. data/app/assets/stylesheets/formtastic.css +1 -1
  11. data/bin/appraisal +8 -0
  12. data/formtastic.gemspec +8 -14
  13. data/gemfiles/rails_5.2/Gemfile +5 -0
  14. data/gemfiles/rails_6.0/Gemfile +5 -0
  15. data/gemfiles/rails_edge/Gemfile +13 -0
  16. data/lib/formtastic.rb +5 -11
  17. data/lib/formtastic/actions.rb +6 -3
  18. data/lib/formtastic/deprecation.rb +1 -38
  19. data/lib/formtastic/engine.rb +3 -1
  20. data/lib/formtastic/form_builder.rb +8 -24
  21. data/lib/formtastic/helpers/action_helper.rb +1 -48
  22. data/lib/formtastic/helpers/errors_helper.rb +2 -2
  23. data/lib/formtastic/helpers/fieldset_wrapper.rb +7 -3
  24. data/lib/formtastic/helpers/input_helper.rb +18 -76
  25. data/lib/formtastic/helpers/inputs_helper.rb +12 -3
  26. data/lib/formtastic/i18n.rb +1 -1
  27. data/lib/formtastic/inputs.rb +32 -29
  28. data/lib/formtastic/inputs/base/collections.rb +1 -5
  29. data/lib/formtastic/inputs/base/errors.rb +4 -4
  30. data/lib/formtastic/inputs/base/hints.rb +1 -1
  31. data/lib/formtastic/inputs/base/timeish.rb +5 -1
  32. data/lib/formtastic/inputs/base/validations.rb +19 -9
  33. data/lib/formtastic/inputs/check_boxes_input.rb +3 -3
  34. data/lib/formtastic/inputs/color_input.rb +0 -1
  35. data/lib/formtastic/inputs/select_input.rb +1 -1
  36. data/lib/formtastic/localizer.rb +5 -7
  37. data/lib/formtastic/version.rb +1 -1
  38. data/lib/generators/templates/formtastic.rb +4 -6
  39. data/script/integration-template.rb +71 -0
  40. data/script/integration.sh +19 -0
  41. data/spec/action_class_finder_spec.rb +1 -1
  42. data/spec/actions/button_action_spec.rb +8 -8
  43. data/spec/actions/generic_action_spec.rb +60 -60
  44. data/spec/actions/input_action_spec.rb +7 -7
  45. data/spec/actions/link_action_spec.rb +10 -10
  46. data/spec/builder/custom_builder_spec.rb +36 -20
  47. data/spec/builder/error_proc_spec.rb +4 -4
  48. data/spec/builder/semantic_fields_for_spec.rb +27 -27
  49. data/spec/generators/formtastic/form/form_generator_spec.rb +25 -25
  50. data/spec/generators/formtastic/input/input_generator_spec.rb +31 -31
  51. data/spec/generators/formtastic/install/install_generator_spec.rb +9 -9
  52. data/spec/helpers/action_helper_spec.rb +328 -10
  53. data/spec/helpers/actions_helper_spec.rb +17 -17
  54. data/spec/helpers/form_helper_spec.rb +33 -33
  55. data/spec/helpers/input_helper_spec.rb +975 -2
  56. data/spec/helpers/inputs_helper_spec.rb +120 -105
  57. data/spec/helpers/reflection_helper_spec.rb +3 -3
  58. data/spec/helpers/semantic_errors_helper_spec.rb +22 -22
  59. data/spec/i18n_spec.rb +26 -26
  60. data/spec/input_class_finder_spec.rb +1 -1
  61. data/spec/inputs/base/collections_spec.rb +6 -6
  62. data/spec/inputs/base/validations_spec.rb +157 -19
  63. data/spec/inputs/boolean_input_spec.rb +55 -55
  64. data/spec/inputs/check_boxes_input_spec.rb +96 -95
  65. data/spec/inputs/color_input_spec.rb +51 -63
  66. data/spec/inputs/country_input_spec.rb +20 -20
  67. data/spec/inputs/custom_input_spec.rb +2 -6
  68. data/spec/inputs/datalist_input_spec.rb +1 -1
  69. data/spec/inputs/date_picker_input_spec.rb +42 -42
  70. data/spec/inputs/date_select_input_spec.rb +51 -37
  71. data/spec/inputs/datetime_picker_input_spec.rb +46 -46
  72. data/spec/inputs/datetime_select_input_spec.rb +53 -37
  73. data/spec/inputs/email_input_spec.rb +5 -5
  74. data/spec/inputs/file_input_spec.rb +6 -6
  75. data/spec/inputs/hidden_input_spec.rb +18 -18
  76. data/spec/inputs/include_blank_spec.rb +8 -8
  77. data/spec/inputs/label_spec.rb +20 -20
  78. data/spec/inputs/number_input_spec.rb +112 -112
  79. data/spec/inputs/password_input_spec.rb +5 -5
  80. data/spec/inputs/phone_input_spec.rb +5 -5
  81. data/spec/inputs/placeholder_spec.rb +5 -5
  82. data/spec/inputs/radio_input_spec.rb +63 -65
  83. data/spec/inputs/range_input_spec.rb +66 -66
  84. data/spec/inputs/readonly_spec.rb +4 -4
  85. data/spec/inputs/search_input_spec.rb +5 -5
  86. data/spec/inputs/select_input_spec.rb +92 -96
  87. data/spec/inputs/string_input_spec.rb +23 -23
  88. data/spec/inputs/text_input_spec.rb +16 -16
  89. data/spec/inputs/time_picker_input_spec.rb +43 -43
  90. data/spec/inputs/time_select_input_spec.rb +67 -54
  91. data/spec/inputs/time_zone_input_spec.rb +19 -19
  92. data/spec/inputs/url_input_spec.rb +5 -5
  93. data/spec/inputs/with_options_spec.rb +7 -7
  94. data/spec/localizer_spec.rb +17 -17
  95. data/spec/namespaced_class_finder_spec.rb +2 -2
  96. data/spec/schema.rb +21 -0
  97. data/spec/spec_helper.rb +163 -223
  98. data/spec/support/custom_macros.rb +72 -75
  99. data/spec/support/shared_examples.rb +0 -1301
  100. data/spec/support/test_environment.rb +23 -9
  101. metadata +33 -123
  102. data/Appraisals +0 -43
  103. data/CHANGELOG +0 -54
  104. data/gemfiles/rails_3.2.gemfile +0 -9
  105. data/gemfiles/rails_4.0.4.gemfile +0 -8
  106. data/gemfiles/rails_4.1.gemfile +0 -8
  107. data/gemfiles/rails_4.2.gemfile +0 -8
  108. data/gemfiles/rails_4.gemfile +0 -8
  109. data/gemfiles/rails_5.0.gemfile +0 -8
  110. data/gemfiles/rails_edge.gemfile +0 -15
  111. data/lib/formtastic/util.rb +0 -57
  112. data/spec/helpers/namespaced_action_helper_spec.rb +0 -43
  113. data/spec/helpers/namespaced_input_helper_spec.rb +0 -36
  114. data/spec/util_spec.rb +0 -66
@@ -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
@@ -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