File tree Expand file tree Collapse file tree 4 files changed +30
-3
lines changed
generators/jsonapi/templates Expand file tree Collapse file tree 4 files changed +30
-3
lines changed Original file line number Diff line number Diff line change @@ -2,7 +2,7 @@ require 'rails_helper'
22
33RSpec.describe "<%= type %> #destroy", type: :request do
44 context 'basic destroy' do
5- let!(:<%= file_name %> ) { FactoryGirl. create(:<%= file_name %> ) }
5+ let!(:<%= file_name %> ) { create(:<%= file_name %> ) }
66
77 it 'updates the resource' do
88 expect {
Original file line number Diff line number Diff line change @@ -13,6 +13,17 @@ def message
1313 end
1414 end
1515
16+ class InvalidInclude < StandardError
17+ def initialize ( relationship , parent_resource )
18+ @relationship = relationship
19+ @parent_resource = parent_resource
20+ end
21+
22+ def message
23+ "The requested included relationship \" #{ @relationship } \" is not supported on resource \" #{ @parent_resource } \" "
24+ end
25+ end
26+
1627 class StatNotFound < StandardError
1728 def initialize ( attribute , calculation )
1829 @attribute = attribute
Original file line number Diff line number Diff line change @@ -81,6 +81,11 @@ def sideload(results, includes)
8181
8282 includes . each_pair do |name , nested |
8383 sideload = @resource . sideload ( name )
84+
85+ unless sideload
86+ raise JsonapiCompliable ::Errors ::InvalidInclude . new ( name , @resource . type )
87+ end
88+
8489 namespace = Util ::Sideload . namespace ( @namespace , sideload . name )
8590 sideload . resolve ( results , @query , namespace )
8691 end
Original file line number Diff line number Diff line change 3333 allow ( resource ) . to receive ( :resolve ) . with ( objekt ) { results }
3434 end
3535
36- context 'when the requested sideload is allowed ' do
36+ context 'when the requested sideload exists on the resource ' do
3737 before do
38- allow ( resource ) . to receive ( :allowed_sideloads ) { { books : { } } }
3938 allow ( resource ) . to receive ( :sideload ) . with ( :books ) { sideload }
4039 end
4140
5857 end
5958 end
6059 end
60+
61+ context 'when the requested sideload does not exist' do
62+ before do
63+ allow ( resource ) . to receive ( :sideload ) . with ( :books ) { nil }
64+ end
65+
66+ it 'raises a helpful error' do
67+ expect do
68+ instance . resolve
69+ end . to raise_error ( JsonapiCompliable ::Errors ::InvalidInclude , 'The requested included relationship "books" is not supported on resource "authors"' )
70+ end
71+ end
6172 end
6273
6374 context 'when 0 results requested' do
You can’t perform that action at this time.
0 commit comments