diff --git a/lib/fast_jsonapi/object_serializer.rb b/lib/fast_jsonapi/object_serializer.rb index 874b7be..f2a963c 100644 --- a/lib/fast_jsonapi/object_serializer.rb +++ b/lib/fast_jsonapi/object_serializer.rb @@ -341,7 +341,7 @@ module FastJsonapi return if includes.blank? parse_includes_list(includes).keys.each do |include_item| - relationship_to_include = relationships_to_serialize[include_item] + relationship_to_include = relationships_to_serialize && relationships_to_serialize[include_item] 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. diff --git a/spec/integration/errors_spec.rb b/spec/integration/errors_spec.rb index 67d4df5..b070507 100644 --- a/spec/integration/errors_spec.rb +++ b/spec/integration/errors_spec.rb @@ -15,11 +15,22 @@ RSpec.describe JSONAPI::Serializer do ) end - it do + it 'raises correct error on bad include for serializer with other relationships' do + expect(ActorSerializer.relationships_to_serialize).to be_present + expect { ActorSerializer.new(actor, include: ['bad_include']) } .to raise_error( JSONAPI::Serializer::UnsupportedIncludeError, /bad_include is not specified as a relationship/ ) end + + it 'raises correct error on bad include for serializer with no relationships at all' do + expect(UserSerializer.relationships_to_serialize).to be_nil + + expect { UserSerializer.new(actor, include: ['bad_include']) } + .to raise_error( + JSONAPI::Serializer::UnsupportedIncludeError, /bad_include is not specified as a relationship/ + ) + end end end