mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-22 22:06:50 +00:00
Add inflector coverage; now 100%
This commit is contained in:
parent
b4db0392e2
commit
5d3194b1dc
@ -35,7 +35,11 @@ module AMS
|
||||
end
|
||||
|
||||
def pluralize(word)
|
||||
word + "s".freeze
|
||||
if word.end_with?("s")
|
||||
"#{word}es"
|
||||
else
|
||||
"#{word}s"
|
||||
end
|
||||
end
|
||||
|
||||
def singularize(word)
|
||||
|
||||
64
test/unit/inflector_test.rb
Normal file
64
test/unit/inflector_test.rb
Normal file
@ -0,0 +1,64 @@
|
||||
# frozen_string_literal: true
|
||||
require "test_helper"
|
||||
|
||||
module AMS
|
||||
class Serializer
|
||||
class InflectorTest < Test
|
||||
def test_underscore_leaves_alone_word_without_caps_dash_nor_double_dot
|
||||
assert_equal "active_model/errors", Inflector.underscore("active_model/errors")
|
||||
end
|
||||
|
||||
def test_underscore_converts_dash_to_underscore
|
||||
assert_equal "active_model_errors", Inflector.underscore("active_model-errors")
|
||||
end
|
||||
|
||||
def test_underscore_coerces_non_string_to_string
|
||||
assert_equal "active_model/errors", Inflector.underscore(:"active_model::errors")
|
||||
end
|
||||
|
||||
def test_underscore_downcases_upcase_letters
|
||||
assert_equal "active_model", Inflector.underscore("ACTIVE_MODEL")
|
||||
end
|
||||
|
||||
def test_underscore_separates_upcase_letters_ending_in_a_number_from_following_upcase_letter_followed_by_downcase_letter_by_an_underscore
|
||||
assert_equal "api1_api", Inflector.underscore("API1API")
|
||||
end
|
||||
|
||||
def test_underscore_separates_camel_case_words_by_underscore
|
||||
assert_equal "active_model", Inflector.underscore("ActiveModel")
|
||||
end
|
||||
|
||||
def test_underscore_converts_double_dot_to_forward_slash
|
||||
assert_equal "active_model/errors", Inflector.underscore("ActiveModel::Errors")
|
||||
end
|
||||
|
||||
def test_underscore_does_not_mutate_the_original_string
|
||||
original_string = "ActiveModel"
|
||||
original_string_id = original_string.object_id
|
||||
assert_equal "active_model", Inflector.underscore(original_string)
|
||||
assert_equal "ActiveModel", original_string
|
||||
assert_equal original_string_id, original_string.object_id
|
||||
end
|
||||
|
||||
def test_pluralize_adds_s_to_word_not_ending_in_s
|
||||
assert_equal "dogs", Inflector.pluralize("dog")
|
||||
end
|
||||
|
||||
def test_pluralize_adds_es_to_word_ending_in_s
|
||||
assert_equal "dresses", Inflector.pluralize("dress")
|
||||
end
|
||||
|
||||
def test_singularize_removes_es_from_word_ending_in_es
|
||||
assert_equal "beach", Inflector.singularize("beaches")
|
||||
end
|
||||
|
||||
def test_singularize_removes_s_from_word_ending_in_s
|
||||
assert_equal "day", Inflector.singularize("days")
|
||||
end
|
||||
|
||||
def test_singularize_leaves_alone_word_not_ending_in_s
|
||||
assert_equal "fish", Inflector.singularize("fish")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Reference in New Issue
Block a user