simple_form 3.5.0 → 3.5.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of simple_form might be problematic. Click here for more details.

Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +17 -0
  3. data/README.md +38 -28
  4. data/lib/generators/simple_form/install_generator.rb +1 -0
  5. data/lib/generators/simple_form/templates/_form.html.erb +1 -0
  6. data/lib/generators/simple_form/templates/_form.html.haml +1 -0
  7. data/lib/generators/simple_form/templates/config/initializers/simple_form.rb +1 -0
  8. data/lib/generators/simple_form/templates/config/initializers/simple_form_bootstrap.rb +1 -0
  9. data/lib/generators/simple_form/templates/config/initializers/simple_form_foundation.rb +2 -1
  10. data/lib/simple_form.rb +8 -6
  11. data/lib/simple_form/action_view_extensions/builder.rb +1 -0
  12. data/lib/simple_form/action_view_extensions/form_helper.rb +1 -0
  13. data/lib/simple_form/components.rb +1 -0
  14. data/lib/simple_form/components/errors.rb +2 -1
  15. data/lib/simple_form/components/hints.rb +1 -0
  16. data/lib/simple_form/components/html5.rb +1 -0
  17. data/lib/simple_form/components/label_input.rb +2 -1
  18. data/lib/simple_form/components/labels.rb +2 -1
  19. data/lib/simple_form/components/maxlength.rb +1 -0
  20. data/lib/simple_form/components/min_max.rb +1 -0
  21. data/lib/simple_form/components/minlength.rb +2 -1
  22. data/lib/simple_form/components/pattern.rb +1 -0
  23. data/lib/simple_form/components/placeholders.rb +1 -0
  24. data/lib/simple_form/components/readonly.rb +1 -0
  25. data/lib/simple_form/error_notification.rb +1 -0
  26. data/lib/simple_form/form_builder.rb +9 -3
  27. data/lib/simple_form/helpers.rb +1 -0
  28. data/lib/simple_form/helpers/autofocus.rb +1 -0
  29. data/lib/simple_form/helpers/disabled.rb +1 -0
  30. data/lib/simple_form/helpers/readonly.rb +1 -0
  31. data/lib/simple_form/helpers/required.rb +1 -0
  32. data/lib/simple_form/helpers/validators.rb +2 -1
  33. data/lib/simple_form/i18n_cache.rb +1 -0
  34. data/lib/simple_form/inputs.rb +1 -0
  35. data/lib/simple_form/inputs/base.rb +2 -1
  36. data/lib/simple_form/inputs/block_input.rb +1 -0
  37. data/lib/simple_form/inputs/boolean_input.rb +3 -2
  38. data/lib/simple_form/inputs/collection_check_boxes_input.rb +2 -1
  39. data/lib/simple_form/inputs/collection_input.rb +3 -2
  40. data/lib/simple_form/inputs/collection_radio_buttons_input.rb +2 -1
  41. data/lib/simple_form/inputs/collection_select_input.rb +1 -0
  42. data/lib/simple_form/inputs/date_time_input.rb +1 -0
  43. data/lib/simple_form/inputs/file_input.rb +1 -0
  44. data/lib/simple_form/inputs/grouped_collection_select_input.rb +1 -0
  45. data/lib/simple_form/inputs/hidden_input.rb +1 -0
  46. data/lib/simple_form/inputs/numeric_input.rb +1 -0
  47. data/lib/simple_form/inputs/password_input.rb +1 -0
  48. data/lib/simple_form/inputs/priority_input.rb +1 -0
  49. data/lib/simple_form/inputs/range_input.rb +1 -0
  50. data/lib/simple_form/inputs/string_input.rb +1 -0
  51. data/lib/simple_form/inputs/text_input.rb +1 -0
  52. data/lib/simple_form/map_type.rb +1 -0
  53. data/lib/simple_form/railtie.rb +1 -0
  54. data/lib/simple_form/tags.rb +1 -0
  55. data/lib/simple_form/version.rb +2 -1
  56. data/lib/simple_form/wrappers.rb +1 -0
  57. data/lib/simple_form/wrappers/builder.rb +1 -0
  58. data/lib/simple_form/wrappers/leaf.rb +2 -1
  59. data/lib/simple_form/wrappers/many.rb +1 -0
  60. data/lib/simple_form/wrappers/root.rb +1 -0
  61. data/lib/simple_form/wrappers/single.rb +2 -1
  62. data/test/action_view_extensions/builder_test.rb +6 -5
  63. data/test/action_view_extensions/form_helper_test.rb +3 -2
  64. data/test/components/label_test.rb +5 -4
  65. data/test/form_builder/association_test.rb +27 -2
  66. data/test/form_builder/button_test.rb +1 -0
  67. data/test/form_builder/error_notification_test.rb +1 -0
  68. data/test/form_builder/error_test.rb +6 -0
  69. data/test/form_builder/general_test.rb +10 -3
  70. data/test/form_builder/hint_test.rb +6 -0
  71. data/test/form_builder/input_field_test.rb +2 -1
  72. data/test/form_builder/label_test.rb +9 -3
  73. data/test/form_builder/wrapper_test.rb +3 -2
  74. data/test/generators/simple_form_generator_test.rb +4 -3
  75. data/test/inputs/boolean_input_test.rb +9 -0
  76. data/test/inputs/collection_check_boxes_input_test.rb +30 -14
  77. data/test/inputs/collection_radio_buttons_input_test.rb +40 -24
  78. data/test/inputs/collection_select_input_test.rb +40 -39
  79. data/test/inputs/datetime_input_test.rb +5 -4
  80. data/test/inputs/disabled_test.rb +1 -0
  81. data/test/inputs/discovery_test.rb +1 -0
  82. data/test/inputs/file_input_test.rb +1 -0
  83. data/test/inputs/general_test.rb +3 -2
  84. data/test/inputs/grouped_collection_select_input_test.rb +11 -10
  85. data/test/inputs/hidden_input_test.rb +1 -0
  86. data/test/inputs/numeric_input_test.rb +2 -1
  87. data/test/inputs/priority_input_test.rb +1 -0
  88. data/test/inputs/readonly_test.rb +1 -0
  89. data/test/inputs/required_test.rb +1 -0
  90. data/test/inputs/string_input_test.rb +2 -1
  91. data/test/inputs/text_input_test.rb +1 -0
  92. data/test/simple_form_test.rb +1 -0
  93. data/test/support/discovery_inputs.rb +1 -0
  94. data/test/support/misc_helpers.rb +2 -1
  95. data/test/support/mock_controller.rb +4 -0
  96. data/test/support/models.rb +36 -12
  97. data/test/test_helper.rb +2 -0
  98. metadata +3 -3
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'test_helper'
2
3
 
3
4
  class SimpleFormTest < ActiveSupport::TestCase
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  class StringInput < SimpleForm::Inputs::StringInput
2
3
  def input(wrapper_options = nil)
3
4
  "<section>#{super}</section>".html_safe
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module MiscHelpers
2
3
  def store_translations(locale, translations, &block)
3
4
  I18n.backend.store_translations locale, translations
@@ -181,7 +182,7 @@ module MiscHelpers
181
182
  end
182
183
 
183
184
  def custom_wrapper_with_label_text
184
- SimpleForm.build :label_text => proc { |label, required| "**#{label}**" } do |b|
185
+ SimpleForm.build label_text: proc { |label, required| "**#{label}**" } do |b|
185
186
  b.use :label_input
186
187
  end
187
188
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  class MockController
2
3
  attr_writer :action_name
3
4
 
@@ -20,7 +21,10 @@ class MockController
20
21
  def polymorphic_mappings(*); {}; end
21
22
 
22
23
  def hash_for_user_path(*); end
24
+
23
25
  def hash_for_validating_user_path(*); end
26
+
24
27
  def hash_for_other_validating_user_path(*); end
28
+
25
29
  def hash_for_users_path(*); end
26
30
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  Association = Struct.new(:klass, :name, :macro, :scope, :options)
2
3
 
3
4
  Column = Struct.new(:name, :type, :limit) do
@@ -7,7 +8,7 @@ Relation = Struct.new(:records) do
7
8
  delegate :each, to: :records
8
9
 
9
10
  def where(conditions = nil)
10
- self.class.new conditions ? records.first : records
11
+ self.class.new conditions ? [records.first] : records
11
12
  end
12
13
 
13
14
  def order(conditions = nil)
@@ -18,6 +19,12 @@ Relation = Struct.new(:records) do
18
19
  alias_method :to_ary, :records
19
20
  end
20
21
 
22
+ Decorator = Struct.new(:object) do
23
+ def to_model
24
+ object
25
+ end
26
+ end
27
+
21
28
  Picture = Struct.new(:id, :name) do
22
29
  extend ActiveModel::Naming
23
30
  include ActiveModel::Conversion
@@ -56,6 +63,19 @@ Company = Struct.new(:id, :name) do
56
63
  end
57
64
  end
58
65
 
66
+ Friend = Struct.new(:id, :name) do
67
+ extend ActiveModel::Naming
68
+ include ActiveModel::Conversion
69
+
70
+ def self.all
71
+ (1..3).map { |i| new(i, "#{name} #{i}") }
72
+ end
73
+
74
+ def persisted?
75
+ true
76
+ end
77
+ end
78
+
59
79
  class Tag < Company; end
60
80
 
61
81
  TagGroup = Struct.new(:id, :name, :tags)
@@ -70,7 +90,7 @@ class User
70
90
  :avatar, :home_picture, :email, :status, :residence_country, :phone_number,
71
91
  :post_count, :lock_version, :amount, :attempts, :action, :credit_card, :gender,
72
92
  :extra_special_company_id, :pictures, :picture_ids, :special_pictures,
73
- :special_picture_ids, :uuid
93
+ :special_picture_ids, :uuid, :friends, :friend_ids, :special_tags, :special_tag_ids
74
94
 
75
95
  def self.build(extra_attributes = {})
76
96
  attributes = {
@@ -191,16 +211,20 @@ class User
191
211
  Association.new(Company, association, :belongs_to, nil, {})
192
212
  when :tags
193
213
  Association.new(Tag, association, :has_many, nil, {})
214
+ when :special_tags
215
+ Association.new(Tag, association, :has_many, ->(user) { where(id: user.id) }, {})
194
216
  when :first_company
195
217
  Association.new(Company, association, :has_one, nil, {})
196
218
  when :special_company
197
- Association.new(Company, association, :belongs_to, nil, { conditions: { id: 1 } })
219
+ Association.new(Company, association, :belongs_to, nil, conditions: { id: 1 })
198
220
  when :extra_special_company
199
- Association.new(Company, association, :belongs_to, nil, { conditions: proc { { id: self.id } } })
221
+ Association.new(Company, association, :belongs_to, nil, conditions: proc { { id: self.id } })
200
222
  when :pictures
201
223
  Association.new(Picture, association, :has_many, nil, {})
202
224
  when :special_pictures
203
225
  Association.new(Picture, association, :has_many, proc { where(name: self.name) }, {})
226
+ when :friends
227
+ Association.new(Friend, association, :has_many, nil, {})
204
228
  end
205
229
  end
206
230
 
@@ -226,8 +250,8 @@ class ValidatingUser < User
226
250
  include ActiveModel::Validations
227
251
  validates :name, presence: true
228
252
  validates :company, presence: true
229
- validates :age, presence: true, if: Proc.new { |user| user.name }
230
- validates :amount, presence: true, unless: Proc.new { |user| user.age }
253
+ validates :age, presence: true, if: proc { |user| user.name }
254
+ validates :amount, presence: true, unless: proc { |user| user.age }
231
255
 
232
256
  validates :action, presence: true, on: :create
233
257
  validates :credit_limit, presence: true, on: :save
@@ -248,7 +272,7 @@ class ValidatingUser < User
248
272
  validates_length_of :name, maximum: 25, minimum: 5
249
273
  validates_length_of :description, in: 15..50
250
274
  if ActionPack::VERSION::STRING < '5'
251
- validates_length_of :action, maximum: 10, tokenizer: lambda { |str| str.scan(/\w+/) }
275
+ validates_length_of :action, maximum: 10, tokenizer: ->(str) { str.scan(/\w+/) }
252
276
  end
253
277
  validates_length_of :home_picture, is: 12
254
278
 
@@ -276,16 +300,16 @@ class OtherValidatingUser < User
276
300
  less_than: 100,
277
301
  only_integer: true
278
302
  validates_numericality_of :amount,
279
- greater_than: Proc.new { |user| user.age },
280
- less_than: Proc.new { |user| user.age + 100 },
303
+ greater_than: proc { |user| user.age },
304
+ less_than: proc { |user| user.age + 100 },
281
305
  only_integer: true
282
306
  validates_numericality_of :attempts,
283
- greater_than_or_equal_to: Proc.new { |user| user.age },
284
- less_than_or_equal_to: Proc.new { |user| user.age + 100 },
307
+ greater_than_or_equal_to: proc { |user| user.age },
308
+ less_than_or_equal_to: proc { |user| user.age + 100 },
285
309
  only_integer: true
286
310
 
287
311
  validates_format_of :country, with: /\w+/
288
- validates_format_of :name, with: Proc.new { /\w+/ }
312
+ validates_format_of :name, with: proc { /\w+/ }
289
313
  validates_format_of :description, without: /\d+/
290
314
  end
291
315
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'bundler/setup'
2
3
 
3
4
  require 'minitest/autorun'
@@ -53,6 +54,7 @@ class ActionView::TestCase
53
54
 
54
55
  def setup_users(extra_attributes = {})
55
56
  @user = User.build(extra_attributes)
57
+ @decorated_user = Decorator.new(@user)
56
58
 
57
59
  @validating_user = ValidatingUser.build({
58
60
  name: 'Tester McTesterson',
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_form
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.0
4
+ version: 3.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - José Valim
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-05-17 00:00:00.000000000 Z
13
+ date: 2018-02-15 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activemodel
@@ -179,7 +179,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
179
179
  version: '0'
180
180
  requirements: []
181
181
  rubyforge_project: simple_form
182
- rubygems_version: 2.6.10
182
+ rubygems_version: 2.6.11
183
183
  signing_key:
184
184
  specification_version: 4
185
185
  summary: Forms made easy!