mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-25 15:23:06 +00:00
Merge pull request #1322 from bf4/maurogeorge-patch-10
Instrumenting rendering of resources
This commit is contained in:
@@ -420,6 +420,16 @@ module ActionController
|
||||
controller.get_serializer(Profile.new)
|
||||
end)
|
||||
end
|
||||
|
||||
def test_render_event_is_emmited
|
||||
ActiveSupport::Notifications.subscribe('render.active_model_serializers') do |name|
|
||||
@name = name
|
||||
end
|
||||
|
||||
get :render_using_implicit_serializer
|
||||
|
||||
assert_equal 'render.active_model_serializers', @name
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
77
test/active_model_serializers/logging_test.rb
Normal file
77
test/active_model_serializers/logging_test.rb
Normal file
@@ -0,0 +1,77 @@
|
||||
require 'test_helper'
|
||||
|
||||
module ActiveModel
|
||||
class Serializer
|
||||
class LoggingTest < Minitest::Test
|
||||
class TestLogger < ActiveSupport::Logger
|
||||
def initialize
|
||||
@file = StringIO.new
|
||||
super(@file)
|
||||
end
|
||||
|
||||
def messages
|
||||
@file.rewind
|
||||
@file.read
|
||||
end
|
||||
end
|
||||
|
||||
def setup
|
||||
@author = Author.new(name: 'Steve K.')
|
||||
@post = Post.new(title: 'New Post', body: 'Body')
|
||||
@comment = Comment.new(id: 1, body: 'ZOMG A COMMENT')
|
||||
@post.comments = [@comment]
|
||||
@comment.post = @post
|
||||
@post.author = @author
|
||||
@author.posts = [@post]
|
||||
@post_serializer = PostSerializer.new(@post, custom_options: true)
|
||||
|
||||
@old_logger = ActiveModelSerializers.logger
|
||||
@logger = ActiveSupport::TaggedLogging.new(TestLogger.new)
|
||||
logger @logger
|
||||
end
|
||||
|
||||
def teardown
|
||||
logger @old_logger
|
||||
end
|
||||
|
||||
def logger(logger)
|
||||
ActiveModelSerializers.logger = logger
|
||||
end
|
||||
|
||||
def test_uses_ams_as_tag
|
||||
ActiveModel::SerializableResource.new(@post).serializable_hash
|
||||
assert_match(/\[active_model_serializsers\]/, @logger.messages)
|
||||
end
|
||||
|
||||
def test_logs_when_call_serializable_hash
|
||||
ActiveModel::SerializableResource.new(@post).serializable_hash
|
||||
assert_match(/Rendered/, @logger.messages)
|
||||
end
|
||||
|
||||
def test_logs_when_call_as_json
|
||||
ActiveModel::SerializableResource.new(@post).as_json
|
||||
assert_match(/Rendered/, @logger.messages)
|
||||
end
|
||||
|
||||
def test_logs_when_call_to_json
|
||||
ActiveModel::SerializableResource.new(@post).to_json
|
||||
assert_match(/Rendered/, @logger.messages)
|
||||
end
|
||||
|
||||
def test_logs_correct_serializer
|
||||
ActiveModel::SerializableResource.new(@post).serializable_hash
|
||||
assert_match(/PostSerializer/, @logger.messages)
|
||||
end
|
||||
|
||||
def test_logs_correct_adapter
|
||||
ActiveModel::SerializableResource.new(@post).serializable_hash
|
||||
assert_match(/ActiveModel::Serializer::Adapter::Attributes/, @logger.messages)
|
||||
end
|
||||
|
||||
def test_logs_the_duration
|
||||
ActiveModel::SerializableResource.new(@post).serializable_hash
|
||||
assert_match(/\(\d+\.\d+ms\)/, @logger.messages)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -2,7 +2,7 @@ require 'test_helper'
|
||||
|
||||
class ActiveModelSerializers::LoggerTest < Minitest::Test
|
||||
def test_logger_is_set_to_action_controller_logger_when_initializer_runs
|
||||
assert_equal ActiveModelSerializers.logger, ActionController::Base.logger
|
||||
assert_equal $action_controller_logger, ActionController::Base.logger # rubocop:disable Style/GlobalVars
|
||||
end
|
||||
|
||||
def test_logger_can_be_set
|
||||
|
||||
@@ -54,6 +54,7 @@ else
|
||||
end
|
||||
|
||||
require 'active_model_serializers'
|
||||
require 'active_model/serializer/railtie'
|
||||
|
||||
require 'support/stream_capture'
|
||||
|
||||
@@ -66,3 +67,8 @@ require 'support/serialization_testing'
|
||||
require 'fixtures/active_record'
|
||||
|
||||
require 'fixtures/poro'
|
||||
|
||||
ActiveSupport.on_load(:active_model_serializers) do
|
||||
$action_controller_logger = ActiveModelSerializers.logger # rubocop:disable Style/GlobalVars
|
||||
ActiveModelSerializers.logger = Logger.new(IO::NULL)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user