rename context to serialization_context

This commit is contained in:
tchak 2015-10-21 12:29:54 +02:00
parent e6d1d6be0c
commit 31172b1be5
6 changed files with 36 additions and 7 deletions

View File

@ -1,4 +1,5 @@
require 'active_support/core_ext/class/attribute' require 'active_support/core_ext/class/attribute'
require 'active_model_serializers/serialization_context'
module ActionController module ActionController
module Serialization module Serialization
@ -46,7 +47,7 @@ module ActionController
[:_render_option_json, :_render_with_renderer_json].each do |renderer_method| [:_render_option_json, :_render_with_renderer_json].each do |renderer_method|
define_method renderer_method do |resource, options| define_method renderer_method do |resource, options|
options.fetch(:context) { options[:context] = request } options.fetch(:serialization_context) { options[:serialization_context] = ActiveModelSerializers::SerializationContext.new(request) }
serializable_resource = get_serializer(resource, options) serializable_resource = get_serializer(resource, options)
super(serializable_resource, options) super(serializable_resource, options)
end end

View File

@ -222,7 +222,7 @@ module ActiveModel
end end
def pagination_links_for(serializer, options) def pagination_links_for(serializer, options)
JsonApi::PaginationLinks.new(serializer.object, options[:context]).serializable_hash(options) JsonApi::PaginationLinks.new(serializer.object, options[:serialization_context]).serializable_hash(options)
end end
end end
end end

View File

@ -41,11 +41,11 @@ module ActiveModel
end end
def url(options) def url(options)
@url ||= options.fetch(:links, {}).fetch(:self, nil) || original_url @url ||= options.fetch(:links, {}).fetch(:self, nil) || request_url
end end
def original_url def request_url
@original_url ||= context.original_url[/\A[^?]+/] @request_url ||= context.request_url
end end
def query_parameters def query_parameters

View File

@ -0,0 +1,10 @@
module ActiveModelSerializers
class SerializationContext
attr_reader :request_url, :query_parameters
def initialize(request)
@request_url = request.original_url[/\A[^?]+/]
@query_parameters = request.query_parameters
end
end
end

View File

@ -0,0 +1,18 @@
require 'test_helper'
class ActiveModelSerializers::SerializationContextTest < Minitest::Test
def create_context
request = Minitest::Mock.new
request.expect(:original_url, 'original_url')
request.expect(:query_parameters, 'query_parameters')
ActiveModelSerializers::SerializationContext.new(request)
end
def test_create_context_with_request_url_and_query_parameters
context = create_context
assert_equal context.request_url, 'original_url'
assert_equal context.query_parameters, 'query_parameters'
end
end

View File

@ -22,10 +22,10 @@ module ActiveModel
def mock_request(query_parameters = {}, original_url = URI) def mock_request(query_parameters = {}, original_url = URI)
context = Minitest::Mock.new context = Minitest::Mock.new
context.expect(:original_url, original_url) context.expect(:request_url, original_url)
context.expect(:query_parameters, query_parameters) context.expect(:query_parameters, query_parameters)
@options = {} @options = {}
@options[:context] = context @options[:serialization_context] = context
end end
def load_adapter(paginated_collection, options = {}) def load_adapter(paginated_collection, options = {})