@@ -159,4 +159,88 @@ def test_exclude_links_on_relationship
159
159
JSONAPI ::Relationship ::ToOne . new "foo" , :self
160
160
end
161
161
end
162
+
163
+ def test_global_exclude_links_configuration_on_relationship
164
+ JSONAPI . configuration . default_exclude_links = :none
165
+ relationship = JSONAPI ::Relationship ::ToOne . new "foo"
166
+ assert_equal [ ] , relationship . _exclude_links
167
+ refute relationship . exclude_link? ( :self )
168
+ refute relationship . exclude_link? ( "self" )
169
+
170
+ JSONAPI . configuration . default_exclude_links = :default
171
+ relationship = JSONAPI ::Relationship ::ToOne . new "foo"
172
+ assert_equal [ :self , :related ] , relationship . _exclude_links
173
+ assert relationship . exclude_link? ( :self )
174
+ assert relationship . exclude_link? ( "self" )
175
+ assert relationship . exclude_link? ( :related )
176
+ assert relationship . exclude_link? ( "related" )
177
+
178
+ JSONAPI . configuration . default_exclude_links = "none"
179
+ relationship = JSONAPI ::Relationship ::ToOne . new "foo"
180
+ assert_equal [ ] , relationship . _exclude_links
181
+ refute relationship . exclude_link? ( :self )
182
+ refute relationship . exclude_link? ( "self" )
183
+
184
+ JSONAPI . configuration . default_exclude_links = "default"
185
+ relationship = JSONAPI ::Relationship ::ToOne . new "foo"
186
+ assert_equal [ :self , :related ] , relationship . _exclude_links
187
+ assert relationship . exclude_link? ( :self )
188
+ assert relationship . exclude_link? ( "self" )
189
+
190
+ JSONAPI . configuration . default_exclude_links = :none
191
+ relationship = JSONAPI ::Relationship ::ToOne . new "foo"
192
+ assert_equal [ ] , relationship . _exclude_links
193
+ refute relationship . exclude_link? ( :self )
194
+ refute relationship . exclude_link? ( "self" )
195
+
196
+ JSONAPI . configuration . default_exclude_links = [ :self ]
197
+ relationship = JSONAPI ::Relationship ::ToOne . new "foo"
198
+ assert_equal [ :self ] , relationship . _exclude_links
199
+ assert relationship . exclude_link? ( :self )
200
+ assert relationship . exclude_link? ( "self" )
201
+
202
+ JSONAPI . configuration . default_exclude_links = :none
203
+ relationship = JSONAPI ::Relationship ::ToOne . new "foo"
204
+ assert_equal [ ] , relationship . _exclude_links
205
+ refute relationship . exclude_link? ( :self )
206
+ refute relationship . exclude_link? ( "self" )
207
+
208
+ JSONAPI . configuration . default_exclude_links = [ "self" , :related ]
209
+ relationship = JSONAPI ::Relationship ::ToOne . new "foo"
210
+ assert_equal [ :self , :related ] , relationship . _exclude_links
211
+ assert relationship . exclude_link? ( :self )
212
+ assert relationship . exclude_link? ( "self" )
213
+
214
+ JSONAPI . configuration . default_exclude_links = [ ]
215
+ relationship = JSONAPI ::Relationship ::ToOne . new "foo"
216
+ assert_equal [ ] , relationship . _exclude_links
217
+ refute relationship . exclude_link? ( :self )
218
+ refute relationship . exclude_link? ( "self" )
219
+
220
+ assert_raises do
221
+ JSONAPI . configuration . default_exclude_links = :self
222
+ JSONAPI ::Relationship ::ToOne . new "foo"
223
+ end
224
+
225
+ # Test if the relationships will override the the global configuration
226
+ JSONAPI . configuration . default_exclude_links = :default
227
+ relationship = JSONAPI ::Relationship ::ToOne . new "foo" , exclude_links : :none
228
+ assert_equal [ ] , relationship . _exclude_links
229
+ refute relationship . exclude_link? ( :self )
230
+ refute relationship . exclude_link? ( "self" )
231
+ refute relationship . exclude_link? ( :related )
232
+ refute relationship . exclude_link? ( "related" )
233
+
234
+ JSONAPI . configuration . default_exclude_links = :default
235
+ relationship = JSONAPI ::Relationship ::ToOne . new "foo" , exclude_links : [ :self ]
236
+ assert_equal [ :self ] , relationship . _exclude_links
237
+ refute relationship . exclude_link? ( :related )
238
+ refute relationship . exclude_link? ( "related" )
239
+ assert relationship . exclude_link? ( :self )
240
+ assert relationship . exclude_link? ( "self" )
241
+ ensure
242
+ JSONAPI . configuration . default_exclude_links = :none
243
+ end
244
+
245
+
162
246
end
0 commit comments