mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-25 07:16:49 +00:00
Implement AC integration
This commit is contained in:
172
test/integration/action_controller/serialization_test.rb
Normal file
172
test/integration/action_controller/serialization_test.rb
Normal file
@@ -0,0 +1,172 @@
|
||||
require 'newbase/test_helper'
|
||||
require 'newbase/active_model_serializers'
|
||||
|
||||
module ActionController
|
||||
module Serialization
|
||||
class ImplicitSerializerTest < ActionController::TestCase
|
||||
class Model
|
||||
include ActiveModel::SerializerSupport
|
||||
|
||||
def initialize(hash={})
|
||||
@attributes = hash
|
||||
end
|
||||
|
||||
def read_attribute_for_serialization(name)
|
||||
@attributes[name]
|
||||
end
|
||||
end
|
||||
|
||||
class ModelSerializer < ActiveModel::Serializer
|
||||
attributes :attr1, :attr2
|
||||
end
|
||||
|
||||
class MyController < ActionController::Base
|
||||
def render_using_implicit_serializer
|
||||
render :json => Model.new(attr1: 'value1', attr2: 'value2', attr3: 'value3')
|
||||
end
|
||||
end
|
||||
|
||||
tests MyController
|
||||
|
||||
def test_render_using_implicit_serializer
|
||||
get :render_using_implicit_serializer
|
||||
assert_equal 'application/json', @response.content_type
|
||||
assert_equal '{"attr1":"value1","attr2":"value2"}', @response.body
|
||||
end
|
||||
end
|
||||
|
||||
class ImplicitSerializerScopeTest < ActionController::TestCase
|
||||
class Model
|
||||
include ActiveModel::SerializerSupport
|
||||
|
||||
def initialize(hash={})
|
||||
@attributes = hash
|
||||
end
|
||||
|
||||
def read_attribute_for_serialization(name)
|
||||
@attributes[name]
|
||||
end
|
||||
end
|
||||
|
||||
class ModelSerializer < ActiveModel::Serializer
|
||||
attributes :attr1, :attr2
|
||||
|
||||
def attr2
|
||||
object.read_attribute_for_serialization(:attr2) + '-' + scope
|
||||
end
|
||||
end
|
||||
|
||||
class MyController < ActionController::Base
|
||||
def render_using_implicit_serializer_and_scope
|
||||
render :json => Model.new(attr1: 'value1', attr2: 'value2', attr3: 'value3')
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def current_user
|
||||
'current_user'
|
||||
end
|
||||
end
|
||||
|
||||
tests MyController
|
||||
|
||||
def test_render_using_implicit_serializer_and_scope
|
||||
get :render_using_implicit_serializer_and_scope
|
||||
assert_equal 'application/json', @response.content_type
|
||||
assert_equal '{"attr1":"value1","attr2":"value2-current_user"}', @response.body
|
||||
end
|
||||
end
|
||||
|
||||
class ExplicitSerializerScopeTest < ActionController::TestCase
|
||||
class Model
|
||||
include ActiveModel::SerializerSupport
|
||||
|
||||
def initialize(hash={})
|
||||
@attributes = hash
|
||||
end
|
||||
|
||||
def read_attribute_for_serialization(name)
|
||||
@attributes[name]
|
||||
end
|
||||
end
|
||||
|
||||
class ModelSerializer < ActiveModel::Serializer
|
||||
attributes :attr1, :attr2
|
||||
|
||||
def attr2
|
||||
object.read_attribute_for_serialization(:attr2) + '-' + scope
|
||||
end
|
||||
end
|
||||
|
||||
class MyController < ActionController::Base
|
||||
def render_using_implicit_serializer_and_explicit_scope
|
||||
render json: Model.new(attr1: 'value1', attr2: 'value2', attr3: 'value3'), scope: current_admin
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def current_user
|
||||
'current_user'
|
||||
end
|
||||
|
||||
def current_admin
|
||||
'current_admin'
|
||||
end
|
||||
end
|
||||
|
||||
tests MyController
|
||||
|
||||
def test_render_using_implicit_serializer_and_explicit_scope
|
||||
get :render_using_implicit_serializer_and_explicit_scope
|
||||
assert_equal 'application/json', @response.content_type
|
||||
assert_equal '{"attr1":"value1","attr2":"value2-current_admin"}', @response.body
|
||||
end
|
||||
end
|
||||
|
||||
class OverridingSerializationScopeTest < ActionController::TestCase
|
||||
class Model
|
||||
include ActiveModel::SerializerSupport
|
||||
|
||||
def initialize(hash={})
|
||||
@attributes = hash
|
||||
end
|
||||
|
||||
def read_attribute_for_serialization(name)
|
||||
@attributes[name]
|
||||
end
|
||||
end
|
||||
|
||||
class ModelSerializer < ActiveModel::Serializer
|
||||
attributes :attr1, :attr2
|
||||
|
||||
def attr2
|
||||
object.read_attribute_for_serialization(:attr2) + '-' + scope
|
||||
end
|
||||
end
|
||||
|
||||
class MyController < ActionController::Base
|
||||
def render_overriding_serialization_scope
|
||||
render json: Model.new(attr1: 'value1', attr2: 'value2', attr3: 'value3')
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def current_user
|
||||
'current_user'
|
||||
end
|
||||
|
||||
def serialization_scope
|
||||
'current_admin'
|
||||
end
|
||||
end
|
||||
|
||||
tests MyController
|
||||
|
||||
def test_render_overriding_serialization_scope
|
||||
get :render_overriding_serialization_scope
|
||||
assert_equal 'application/json', @response.content_type
|
||||
assert_equal '{"attr1":"value1","attr2":"value2-current_admin"}', @response.body
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,5 +1,19 @@
|
||||
ENV['RAILS_ENV'] = 'test'
|
||||
|
||||
require 'bundler/setup'
|
||||
require 'rails'
|
||||
require 'rails/test_help'
|
||||
require 'newbase/active_model_serializers'
|
||||
require 'test/unit'
|
||||
|
||||
module TestHelper
|
||||
Routes = ActionDispatch::Routing::RouteSet.new
|
||||
Routes.draw do
|
||||
get ':controller(/:action(/:id))'
|
||||
get ':controller(/:action)'
|
||||
end
|
||||
|
||||
ActionController::Base.send :include, Routes.url_helpers
|
||||
end
|
||||
|
||||
ActionController::TestCase.class_eval do
|
||||
def setup
|
||||
@routes = TestHelper::Routes
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user