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'
2
2
3
3
RSpec.describe "<%= type %> #destroy", type: :request do
4
4
context 'basic destroy' do
5
- let!(:<%= file_name %> ) { FactoryGirl. create(:<%= file_name %> ) }
5
+ let!(:<%= file_name %> ) { create(:<%= file_name %> ) }
6
6
7
7
it 'updates the resource' do
8
8
expect {
Original file line number Diff line number Diff line change @@ -13,6 +13,17 @@ def message
13
13
end
14
14
end
15
15
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
+
16
27
class StatNotFound < StandardError
17
28
def initialize ( attribute , calculation )
18
29
@attribute = attribute
Original file line number Diff line number Diff line change @@ -81,6 +81,11 @@ def sideload(results, includes)
81
81
82
82
includes . each_pair do |name , nested |
83
83
sideload = @resource . sideload ( name )
84
+
85
+ unless sideload
86
+ raise JsonapiCompliable ::Errors ::InvalidInclude . new ( name , @resource . type )
87
+ end
88
+
84
89
namespace = Util ::Sideload . namespace ( @namespace , sideload . name )
85
90
sideload . resolve ( results , @query , namespace )
86
91
end
Original file line number Diff line number Diff line change 33
33
allow ( resource ) . to receive ( :resolve ) . with ( objekt ) { results }
34
34
end
35
35
36
- context 'when the requested sideload is allowed ' do
36
+ context 'when the requested sideload exists on the resource ' do
37
37
before do
38
- allow ( resource ) . to receive ( :allowed_sideloads ) { { books : { } } }
39
38
allow ( resource ) . to receive ( :sideload ) . with ( :books ) { sideload }
40
39
end
41
40
58
57
end
59
58
end
60
59
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
61
72
end
62
73
63
74
context 'when 0 results requested' do
You can’t perform that action at this time.
0 commit comments