Skip to content

Commit 6266b6a

Browse files
committed
Merge pull request #1006 from bf4/inflector-testing
Fix adapter inflection bug for api -> API
2 parents 4c31142 + 4359026 commit 6266b6a

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

lib/active_model/serializer/adapter.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ def self.create(resource, options = {})
3333
end
3434

3535
def self.adapter_class(adapter)
36-
"ActiveModel::Serializer::Adapter::#{adapter.to_s.classify}".safe_constantize
36+
adapter_name = adapter.to_s.classify.sub("API", "Api")
37+
"ActiveModel::Serializer::Adapter::#{adapter_name}".safe_constantize
3738
end
3839

3940
def fragment_cache(*args)
@@ -42,7 +43,7 @@ def fragment_cache(*args)
4243

4344
private
4445

45-
def cache_check(serializer)
46+
def cache_check(serializer)
4647
@cached_serializer = serializer
4748
@klass = @cached_serializer.class
4849
if is_cached?

test/adapter_test.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,15 @@ def test_create_adapter_with_override
3838
adapter = ActiveModel::Serializer::Adapter.create(@serializer, { adapter: :json_api})
3939
assert_equal ActiveModel::Serializer::Adapter::JsonApi, adapter.class
4040
end
41+
42+
def test_inflected_adapter_class_for_known_adapter
43+
ActiveSupport::Inflector.inflections(:en){|inflect| inflect.acronym 'API' }
44+
klass = ActiveModel::Serializer::Adapter.adapter_class(:json_api)
45+
46+
ActiveSupport::Inflector.inflections.acronyms.clear
47+
48+
assert_equal ActiveModel::Serializer::Adapter::JsonApi, klass
49+
end
4150
end
4251
end
4352
end

0 commit comments

Comments
 (0)