@@ -159,4 +159,88 @@ def test_exclude_links_on_relationship
159159 JSONAPI ::Relationship ::ToOne . new "foo" , :self
160160 end
161161 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+
162246end
0 commit comments