active_model_serializers/test/integration/action_controller/namespaced_serialization_test.rb

106 lines
2.9 KiB
Ruby

require 'test_helper'
module ActionController
module Serialization
class NamespacedSerializationTest < ActionController::TestCase
class TestNamespace::MyController < ActionController::Base
def render_profile_with_namespace
render json: Profile.new({ name: 'Name 1', description: 'Description 1'})
end
def render_profiles_with_namespace
render json: [Profile.new({ name: 'Name 1', description: 'Description 1'})]
end
def render_comment
render json: Comment.new(content: 'Comment 1')
end
def render_comments
render json: [Comment.new(content: 'Comment 1')]
end
def render_hash
render json: {message: 'not found'}, status: 404
end
end
tests TestNamespace::MyController
def test_render_profile_with_namespace
get :render_profile_with_namespace
assert_serializer TestNamespace::ProfileSerializer
end
def test_render_profiles_with_namespace
get :render_profiles_with_namespace
assert_serializer TestNamespace::ProfileSerializer
end
def test_fallback_to_a_version_without_namespace
get :render_comment
assert_serializer CommentSerializer
end
def test_array_fallback_to_a_version_without_namespace
get :render_comments
assert_serializer CommentSerializer
end
def test_render_hash_regression
get :render_hash
assert_equal JSON.parse(response.body), {'message' => 'not found'}
end
end
class OptionNamespacedSerializationTest < ActionController::TestCase
class MyController < ActionController::Base
def default_serializer_options
{
namespace: TestNamespace
}
end
def render_profile_with_namespace_option
render json: Profile.new({ name: 'Name 1', description: 'Description 1'})
end
def render_profiles_with_namespace_option
render json: [Profile.new({ name: 'Name 1', description: 'Description 1'})]
end
def render_comment
render json: Comment.new(content: 'Comment 1')
end
def render_comments
render json: [Comment.new(content: 'Comment 1')]
end
end
tests MyController
def test_render_profile_with_namespace_option
get :render_profile_with_namespace_option
assert_serializer TestNamespace::ProfileSerializer
end
def test_render_profiles_with_namespace_option
get :render_profiles_with_namespace_option
assert_serializer TestNamespace::ProfileSerializer
end
def test_fallback_to_a_version_without_namespace
get :render_comment
assert_serializer CommentSerializer
end
def test_array_fallback_to_a_version_without_namespace
get :render_comments
assert_serializer CommentSerializer
end
end
end
end