diff options
author | Sean Griffin <sean@seantheprogrammer.com> | 2017-08-03 11:33:18 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-03 11:33:18 -0400 |
commit | f105ab0445b07d11d551678f9fbc3298301da5a1 (patch) | |
tree | 21b60d25f9bc5ffc72830548bf7df3ab43e1bfd2 /activesupport | |
parent | 5fd50c387bdfc2761859ec7a57477bcd56e93210 (diff) | |
parent | 13fd153429e337ad8b9690fcf00c1019037c917f (diff) | |
download | rails-f105ab0445b07d11d551678f9fbc3298301da5a1.tar.gz rails-f105ab0445b07d11d551678f9fbc3298301da5a1.tar.bz2 rails-f105ab0445b07d11d551678f9fbc3298301da5a1.zip |
Merge pull request #30039 from ricardotk002/fix-string-camelize-invalid-option
Update String#camelize to provide feedback when a wrong option is sent
Diffstat (limited to 'activesupport')
-rw-r--r-- | activesupport/CHANGELOG.md | 17 | ||||
-rw-r--r-- | activesupport/lib/active_support/core_ext/string/inflections.rb | 2 | ||||
-rw-r--r-- | activesupport/test/core_ext/string_ext_test.rb | 7 |
3 files changed, 26 insertions, 0 deletions
diff --git a/activesupport/CHANGELOG.md b/activesupport/CHANGELOG.md index 938d4f9d31..8e7bbbfd45 100644 --- a/activesupport/CHANGELOG.md +++ b/activesupport/CHANGELOG.md @@ -1,3 +1,20 @@ +* Update String#camelize to provide feedback when wrong option is passed + + String#camelize was returning nil without any feedback when an + invalid option was passed as parameter. + + Previously: + + 'one_two'.camelize(true) + => nil + + Now: + + 'one_two'.camelize(true) + => ArgumentError: Invalid option, use either :upper or :lower. + + *Ricardo Díaz* + * Fix modulo operations involving durations Rails 5.1 introduce an `ActiveSupport::Duration::Scalar` class as a wrapper diff --git a/activesupport/lib/active_support/core_ext/string/inflections.rb b/activesupport/lib/active_support/core_ext/string/inflections.rb index 846600c623..b5bb385033 100644 --- a/activesupport/lib/active_support/core_ext/string/inflections.rb +++ b/activesupport/lib/active_support/core_ext/string/inflections.rb @@ -94,6 +94,8 @@ class String ActiveSupport::Inflector.camelize(self, true) when :lower ActiveSupport::Inflector.camelize(self, false) + else + raise ArgumentError, "Invalid option, use either :upper or :lower." end end alias_method :camelcase, :camelize diff --git a/activesupport/test/core_ext/string_ext_test.rb b/activesupport/test/core_ext/string_ext_test.rb index 0afff5aa50..9fd6d8ac0f 100644 --- a/activesupport/test/core_ext/string_ext_test.rb +++ b/activesupport/test/core_ext/string_ext_test.rb @@ -108,6 +108,13 @@ class StringInflectionsTest < ActiveSupport::TestCase assert_equal("capital", "Capital".camelize(:lower)) end + def test_camelize_invalid_option + e = assert_raise ArgumentError do + "Capital".camelize(nil) + end + assert_equal("Invalid option, use either :upper or :lower.", e.message) + end + def test_dasherize UnderscoresToDashes.each do |underscored, dasherized| assert_equal(dasherized, underscored.dasherize) |