@@ -137,6 +137,46 @@ def my_union
137
137
end
138
138
end
139
139
140
+ it "doesn't allow adding non-object types" do
141
+ object_type = Class . new ( GraphQL ::Schema ::Object ) do
142
+ graphql_name "SomeObject"
143
+ end
144
+
145
+ err = assert_raises ArgumentError do
146
+ Class . new ( GraphQL ::Schema ::Union ) do
147
+ graphql_name "SomeUnion"
148
+ possible_types object_type , GraphQL ::Types ::Int
149
+ end
150
+ end
151
+ expected_message = "Union possible_types can only be object types (not SCALAR, "
152
+ assert_includes err . message , expected_message
153
+
154
+ input_type = Class . new ( GraphQL ::Schema ::InputObject ) do
155
+ graphql_name "SomeInput"
156
+ argument :arg , GraphQL ::Types ::Int
157
+ end
158
+
159
+ err = assert_raises ArgumentError do
160
+ Class . new ( GraphQL ::Schema ::Union ) do
161
+ graphql_name "SomeUnion"
162
+ possible_types object_type , input_type
163
+ end
164
+ end
165
+
166
+ expected_message = "Union possible_types can only be object types (not INPUT_OBJECT, "
167
+ assert_includes err . message , expected_message
168
+
169
+ err = assert_raises ArgumentError do
170
+ Class . new ( GraphQL ::Schema ::Union ) do
171
+ graphql_name "SomeUnion"
172
+ possible_types object_type , 1234
173
+ end
174
+ end
175
+
176
+ expected_message = "Union possible_types can only be class-based GraphQL types (not 1234 (Integer))."
177
+ assert_includes err . message , expected_message
178
+ end
179
+
140
180
it "doesn't allow adding interface" do
141
181
object_type = Class . new ( GraphQL ::Schema ::Object ) do
142
182
graphql_name "SomeObject"
0 commit comments