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
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'jsonapi/serializer/errors'
|
||||||
|
|
||||||
module FastJsonapi
|
module FastJsonapi
|
||||||
require 'fast_jsonapi/object_serializer'
|
require 'fast_jsonapi/object_serializer'
|
||||||
if defined?(::Rails)
|
if defined?(::Rails)
|
||||||
|
@ -342,7 +342,7 @@ module FastJsonapi
|
|||||||
|
|
||||||
parse_includes_list(includes).keys.each do |include_item|
|
parse_includes_list(includes).keys.each do |include_item|
|
||||||
relationship_to_include = relationships_to_serialize[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.
|
relationship_to_include.static_serializer # called for a side-effect to check for a known serializer class.
|
||||||
end
|
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
|
it do
|
||||||
expect { ActorSerializer.new(actor, include: ['bad_include']) }
|
expect { ActorSerializer.new(actor, include: ['bad_include']) }
|
||||||
.to raise_error(
|
.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
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user