Merge pull request #1322 from bf4/maurogeorge-patch-10

Instrumenting rendering of resources
This commit is contained in:
Benjamin Fleischer
2015-11-19 13:01:38 -06:00
15 changed files with 340 additions and 9 deletions

View File

@@ -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

View 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

View File

@@ -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

View File

@@ -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