@@ -47,6 +47,72 @@ def test_parse_blank_includes
47
47
assert_empty include_directives . model_includes
48
48
end
49
49
50
+ def test_check_include_allowed
51
+ assert JSONAPI ::RequestParser . new . check_include ( ExpenseEntryResource , "isoCurrency" . partition ( '.' ) )
52
+ end
53
+
54
+ def test_check_nested_include_allowed
55
+ assert JSONAPI ::RequestParser . new . check_include ( ExpenseEntryResource , "employee.expenseEntries" . partition ( '.' ) )
56
+ end
57
+
58
+ def test_check_include_relationship_does_not_exist
59
+ assert_raises JSONAPI ::Exceptions ::InvalidInclude do
60
+ assert JSONAPI ::RequestParser . new . check_include ( ExpenseEntryResource , "foo" . partition ( '.' ) )
61
+ end
62
+ end
63
+
64
+ def test_check_nested_include_relationship_does_not_exist_wrong_format
65
+ assert_raises JSONAPI ::Exceptions ::InvalidInclude do
66
+ assert JSONAPI ::RequestParser . new . check_include ( ExpenseEntryResource , "employee.expense-entries" . partition ( '.' ) )
67
+ end
68
+ end
69
+
70
+ def test_check_include_has_one_not_allowed_default
71
+ assert JSONAPI ::RequestParser . new . check_include ( ExpenseEntryResource , "isoCurrency" . partition ( '.' ) )
72
+ JSONAPI . configuration . default_allow_include_to_one = false
73
+
74
+ assert_raises JSONAPI ::Exceptions ::InvalidInclude do
75
+ JSONAPI ::RequestParser . new . check_include ( ExpenseEntryResource , "isoCurrency" . partition ( '.' ) )
76
+ end
77
+ ensure
78
+ JSONAPI . configuration . default_allow_include_to_one = true
79
+ end
80
+
81
+ def test_check_include_has_one_not_allowed_resource
82
+ assert JSONAPI ::RequestParser . new . check_include ( ExpenseEntryResource , "isoCurrency" . partition ( '.' ) )
83
+ ExpenseEntryResource . _relationship ( :iso_currency ) . allow_include = false
84
+
85
+ assert_raises JSONAPI ::Exceptions ::InvalidInclude do
86
+ JSONAPI ::RequestParser . new . check_include ( ExpenseEntryResource , "isoCurrency" . partition ( '.' ) )
87
+ end
88
+ ensure
89
+ ExpenseEntryResource . _relationship ( :iso_currency ) . allow_include = nil
90
+ end
91
+
92
+ def test_check_include_has_many_not_allowed_default
93
+ JSONAPI . configuration . default_allow_include_to_many = true
94
+
95
+ assert JSONAPI ::RequestParser . new . check_include ( EmployeeResource , "expenseEntries" . partition ( '.' ) )
96
+ JSONAPI . configuration . default_allow_include_to_many = false
97
+
98
+ assert_raises JSONAPI ::Exceptions ::InvalidInclude do
99
+ JSONAPI ::RequestParser . new . check_include ( EmployeeResource , "expenseEntries" . partition ( '.' ) )
100
+ end
101
+ ensure
102
+ JSONAPI . configuration . default_allow_include_to_many = true
103
+ end
104
+
105
+ def test_check_include_has_many_not_allowed_relationship
106
+ assert JSONAPI ::RequestParser . new . check_include ( EmployeeResource , "expenseEntries" . partition ( '.' ) )
107
+ EmployeeResource . _relationship ( :expense_entries ) . allow_include = false
108
+
109
+ assert_raises JSONAPI ::Exceptions ::InvalidInclude do
110
+ JSONAPI ::RequestParser . new . check_include ( EmployeeResource , "expenseEntries" . partition ( '.' ) )
111
+ end
112
+ ensure
113
+ EmployeeResource . _relationship ( :expense_entries ) . allow_include = nil
114
+ end
115
+
50
116
def test_parse_dasherized_with_dasherized_include
51
117
params = ActionController ::Parameters . new (
52
118
{
0 commit comments