File tree Expand file tree Collapse file tree 6 files changed +36
-7
lines changed
active_model/serializer/adapter Expand file tree Collapse file tree 6 files changed +36
-7
lines changed Original file line number Diff line number Diff line change 1
1
require 'active_support/core_ext/class/attribute'
2
+ require 'active_model_serializers/serialization_context'
2
3
3
4
module ActionController
4
5
module Serialization
@@ -46,7 +47,7 @@ def use_adapter?
46
47
47
48
[ :_render_option_json , :_render_with_renderer_json ] . each do |renderer_method |
48
49
define_method renderer_method do |resource , options |
49
- options . fetch ( :context ) { options [ :context ] = request }
50
+ options . fetch ( :serialization_context ) { options [ :serialization_context ] = ActiveModelSerializers :: SerializationContext . new ( request ) }
50
51
serializable_resource = get_serializer ( resource , options )
51
52
super ( serializable_resource , options )
52
53
end
Original file line number Diff line number Diff line change @@ -222,7 +222,7 @@ def links_for(serializer)
222
222
end
223
223
224
224
def pagination_links_for ( serializer , options )
225
- JsonApi ::PaginationLinks . new ( serializer . object , options [ :context ] ) . serializable_hash ( options )
225
+ JsonApi ::PaginationLinks . new ( serializer . object , options [ :serialization_context ] ) . serializable_hash ( options )
226
226
end
227
227
end
228
228
end
Original file line number Diff line number Diff line change @@ -41,11 +41,11 @@ def pages_from
41
41
end
42
42
43
43
def url ( options )
44
- @url ||= options . fetch ( :links , { } ) . fetch ( :self , nil ) || original_url
44
+ @url ||= options . fetch ( :links , { } ) . fetch ( :self , nil ) || request_url
45
45
end
46
46
47
- def original_url
48
- @original_url ||= context . original_url [ / \A [^?]+/ ]
47
+ def request_url
48
+ @request_url ||= context . request_url
49
49
end
50
50
51
51
def query_parameters
Original file line number Diff line number Diff line change
1
+ module ActiveModelSerializers
2
+ class SerializationContext
3
+ attr_reader :request_url , :query_parameters
4
+
5
+ def initialize ( request )
6
+ @request_url = request . original_url [ /\A [^?]+/ ]
7
+ @query_parameters = request . query_parameters
8
+ end
9
+ end
10
+ end
Original file line number Diff line number Diff line change
1
+ require 'test_helper'
2
+
3
+ class ActiveModelSerializers ::SerializationContextTest < Minitest ::Test
4
+ def create_context
5
+ request = Minitest ::Mock . new
6
+ request . expect ( :original_url , 'original_url' )
7
+ request . expect ( :query_parameters , 'query_parameters' )
8
+
9
+ ActiveModelSerializers ::SerializationContext . new ( request )
10
+ end
11
+
12
+ def test_create_context_with_request_url_and_query_parameters
13
+ context = create_context
14
+
15
+ assert_equal context . request_url , 'original_url'
16
+ assert_equal context . query_parameters , 'query_parameters'
17
+ end
18
+ end
Original file line number Diff line number Diff line change @@ -22,10 +22,10 @@ def setup
22
22
23
23
def mock_request ( query_parameters = { } , original_url = URI )
24
24
context = Minitest ::Mock . new
25
- context . expect ( :original_url , original_url )
25
+ context . expect ( :request_url , original_url )
26
26
context . expect ( :query_parameters , query_parameters )
27
27
@options = { }
28
- @options [ :context ] = context
28
+ @options [ :serialization_context ] = context
29
29
end
30
30
31
31
def load_adapter ( paginated_collection , options = { } )
You can’t perform that action at this time.
0 commit comments