Raise FastJsonapi scoped error in case of unsupported include
This commit is contained in:
parent
1bcf8d2cb5
commit
3ae3ef4c23
@ -1,5 +1,7 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'jsonapi/serializer/errors'
|
||||
|
||||
module FastJsonapi
|
||||
require 'fast_jsonapi/object_serializer'
|
||||
if defined?(::Rails)
|
||||
|
@ -342,7 +342,7 @@ module FastJsonapi
|
||||
|
||||
parse_includes_list(includes).keys.each do |include_item|
|
||||
relationship_to_include = relationships_to_serialize[include_item]
|
||||
raise ArgumentError, "#{include_item} is not specified as a relationship on #{name}" unless relationship_to_include
|
||||
raise(JSONAPI::Serializer::UnsupportedIncludeError.new(include_item, name)) unless relationship_to_include
|
||||
|
||||
relationship_to_include.static_serializer # called for a side-effect to check for a known serializer class.
|
||||
end
|
||||
|
19
lib/jsonapi/serializer/errors.rb
Normal file
19
lib/jsonapi/serializer/errors.rb
Normal file
@ -0,0 +1,19 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module JSONAPI
|
||||
module Serializer
|
||||
class Error < StandardError; end
|
||||
class UnsupportedIncludeError < Error
|
||||
attr_reader :include_item, :klass
|
||||
|
||||
def initialize(include_item, klass)
|
||||
@include_item = include_item
|
||||
@klass = klass
|
||||
end
|
||||
|
||||
def message
|
||||
"#{include_item} is not specified as a relationship on #{klass}"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
@ -18,7 +18,7 @@ RSpec.describe JSONAPI::Serializer do
|
||||
it do
|
||||
expect { ActorSerializer.new(actor, include: ['bad_include']) }
|
||||
.to raise_error(
|
||||
ArgumentError, /bad_include is not specified as a relationship/
|
||||
JSONAPI::Serializer::UnsupportedIncludeError, /bad_include is not specified as a relationship/
|
||||
)
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user