File tree Expand file tree Collapse file tree 4 files changed +52
-7
lines changed Expand file tree Collapse file tree 4 files changed +52
-7
lines changed Original file line number Diff line number Diff line change 1
1
require "jsonapi_compliable/version"
2
+ require "jsonapi_compliable/configuration"
2
3
require "jsonapi_compliable/errors"
3
4
require "jsonapi_compliable/resource"
4
5
require "jsonapi_compliable/query"
@@ -64,4 +65,18 @@ def self.with_context(obj, namespace)
64
65
self . context = prior
65
66
end
66
67
end
68
+
69
+ def self . config
70
+ @config ||= Configuration . new
71
+ end
72
+
73
+ # @example
74
+ # JsonapiCompliable.configure do |c|
75
+ # c.raise_on_missing_sideload = false
76
+ # end
77
+ #
78
+ # @see Configuration
79
+ def self . configure
80
+ yield config
81
+ end
67
82
end
Original file line number Diff line number Diff line change
1
+ # https://robots.thoughtbot.com/mygem-configure-block
2
+ module JsonapiCompliable
3
+ class Configuration
4
+ # @return [Boolean] Should we raise when the client requests a relationship not defined on the server?
5
+ # Defaults to true.
6
+ attr_accessor :raise_on_missing_sideload
7
+
8
+ # Set defaults
9
+ # @api private
10
+ def initialize
11
+ @raise_on_missing_sideload = true
12
+ end
13
+ end
14
+ end
Original file line number Diff line number Diff line change @@ -82,12 +82,15 @@ def sideload(results, includes)
82
82
includes . each_pair do |name , nested |
83
83
sideload = @resource . sideload ( name )
84
84
85
- unless sideload
86
- raise JsonapiCompliable ::Errors ::InvalidInclude . new ( name , @resource . type )
85
+ if sideload . nil?
86
+ if JsonapiCompliable . config . raise_on_missing_sideload
87
+ raise JsonapiCompliable ::Errors ::InvalidInclude
88
+ . new ( name , @resource . type )
89
+ end
90
+ else
91
+ namespace = Util ::Sideload . namespace ( @namespace , sideload . name )
92
+ sideload . resolve ( results , @query , namespace )
87
93
end
88
-
89
- namespace = Util ::Sideload . namespace ( @namespace , sideload . name )
90
- sideload . resolve ( results , @query , namespace )
91
94
end
92
95
end
93
96
Original file line number Diff line number Diff line change 70
70
end
71
71
72
72
it 'raises a helpful error' do
73
- expect do
73
+ expect {
74
74
instance . resolve
75
- end . to raise_error ( JsonapiCompliable ::Errors ::InvalidInclude , 'The requested included relationship "books" is not supported on resource "authors"' )
75
+ } . to raise_error ( JsonapiCompliable ::Errors ::InvalidInclude , 'The requested included relationship "books" is not supported on resource "authors"' )
76
+ end
77
+
78
+ context 'but the config says not to raise errors' do
79
+ before do
80
+ allow ( JsonapiCompliable . config )
81
+ . to receive ( :raise_on_missing_sideload )
82
+ end
83
+
84
+ it 'does not raise an error' do
85
+ expect {
86
+ instance . resolve
87
+ } . to_not raise_error
88
+ end
76
89
end
77
90
end
78
91
end
You can’t perform that action at this time.
0 commit comments