|
1 | 1 | require File.expand_path('../../../test_helper', __FILE__) |
2 | 2 |
|
| 3 | +class LambdaBlogPostsResource < JSONAPI::Resource |
| 4 | + model_name 'Post' |
| 5 | + |
| 6 | + has_one :author, allow_include: -> (context) { context[:admin] } |
| 7 | + has_many :comments, allow_include: -> (context) { context[:admin] } |
| 8 | +end |
| 9 | + |
| 10 | +class CallableBlogPostsResource < JSONAPI::Resource |
| 11 | + model_name 'Post' |
| 12 | + |
| 13 | + has_one :author, allow_include: :is_admin |
| 14 | + has_many :comments, allow_include: :is_admin |
| 15 | + |
| 16 | + def self.is_admin(context) |
| 17 | + context[:admin] |
| 18 | + end |
| 19 | +end |
| 20 | + |
3 | 21 | class HasOneRelationshipTest < ActiveSupport::TestCase |
4 | 22 |
|
5 | 23 | def test_polymorphic_type |
@@ -72,4 +90,21 @@ def test_allow_include_set_overrides_to_config_to_many |
72 | 90 | ensure |
73 | 91 | JSONAPI.configuration = original_config |
74 | 92 | end |
| 93 | + |
| 94 | + def test_allow_include_set_by_lambda |
| 95 | + assert LambdaBlogPostsResource._relationship(:author).allow_include?(admin: true) |
| 96 | + refute LambdaBlogPostsResource._relationship(:author).allow_include?(admin: false) |
| 97 | + |
| 98 | + assert LambdaBlogPostsResource._relationship(:comments).allow_include?(admin: true) |
| 99 | + refute LambdaBlogPostsResource._relationship(:comments).allow_include?(admin: false) |
| 100 | + end |
| 101 | + |
| 102 | + def test_allow_include_set_by_callable |
| 103 | + assert CallableBlogPostsResource._relationship(:author).allow_include?(admin: true) |
| 104 | + refute CallableBlogPostsResource._relationship(:author).allow_include?(admin: false) |
| 105 | + |
| 106 | + assert CallableBlogPostsResource._relationship(:comments).allow_include?(admin: true) |
| 107 | + refute CallableBlogPostsResource._relationship(:comments).allow_include?(admin: false) |
| 108 | + end |
| 109 | + |
75 | 110 | end |
0 commit comments