@@ -163,7 +163,7 @@ class NestedTest < ActiveSupport::TestCase
163
163
assert_equal ( "back to the same level" , response [ 0 ] . children [ 2 ] . name )
164
164
end
165
165
166
- test "correctly handles model callbacks with multiple Prism::StringNode arguments" do
166
+ test "correctly handles model callbacks with multiple string arguments" do
167
167
response = generate_document_symbols_for_source ( <<~RUBY )
168
168
class FooModel < ApplicationRecord
169
169
before_save "foo_method", "bar_method", on: :update
@@ -192,7 +192,7 @@ class FooController < ApplicationController
192
192
assert_equal ( "before_action(<anonymous>)" , response [ 0 ] . children [ 0 ] . name )
193
193
end
194
194
195
- test "correctly handles job callback with Prism::SymbolNode argument" do
195
+ test "correctly handles job callback with symbol argument" do
196
196
response = generate_document_symbols_for_source ( <<~RUBY )
197
197
class FooJob < ApplicationJob
198
198
before_perform :foo_method
@@ -205,7 +205,7 @@ class FooJob < ApplicationJob
205
205
assert_equal ( "before_perform(foo_method)" , response [ 0 ] . children [ 0 ] . name )
206
206
end
207
207
208
- test "correctly handles model callback with Prism::LambdaNode argument" do
208
+ test "correctly handles model callback with lambda argument" do
209
209
response = generate_document_symbols_for_source ( <<~RUBY )
210
210
class FooModel < ApplicationRecord
211
211
before_save -> () {}
@@ -218,7 +218,7 @@ class FooModel < ApplicationRecord
218
218
assert_equal ( "before_save(<anonymous>)" , response [ 0 ] . children [ 0 ] . name )
219
219
end
220
220
221
- test "correctly handles job callbacks with Prism::CallNode argument" do
221
+ test "correctly handles job callbacks with method call argument" do
222
222
response = generate_document_symbols_for_source ( <<~RUBY )
223
223
class FooJob < ApplicationJob
224
224
before_perform FooClass.new(foo_arg)
@@ -231,7 +231,7 @@ class FooJob < ApplicationJob
231
231
assert_equal ( "before_perform(FooClass)" , response [ 0 ] . children [ 0 ] . name )
232
232
end
233
233
234
- test "correctly handles controller callbacks with Prism::ConstantReadNode argument" do
234
+ test "correctly handles controller callbacks with constant argument" do
235
235
response = generate_document_symbols_for_source ( <<~RUBY )
236
236
class FooController < ApplicationController
237
237
before_action FooClass
@@ -244,7 +244,7 @@ class FooController < ApplicationController
244
244
assert_equal ( "before_action(FooClass)" , response [ 0 ] . children [ 0 ] . name )
245
245
end
246
246
247
- test "correctly handles model callbacks with Prism::ConstantPathNode argument" do
247
+ test "correctly handles model callbacks with namespaced constant argument" do
248
248
response = generate_document_symbols_for_source ( <<~RUBY )
249
249
class FooModel < ApplicationRecord
250
250
before_save Foo::BarClass
@@ -287,6 +287,68 @@ class FooJob < ApplicationJob
287
287
assert_empty ( response [ 0 ] . children )
288
288
end
289
289
290
+ test "correctly handles validate method with all argument types" do
291
+ response = generate_document_symbols_for_source ( <<~RUBY )
292
+ class FooModel < ApplicationRecord
293
+ validate "foo_arg", :bar_arg, -> () {}, Foo::BazClass.new("blah"), FooClass, Foo::BarClass
294
+ end
295
+ RUBY
296
+
297
+ assert_equal ( 1 , response . size )
298
+ assert_equal ( "FooModel" , response [ 0 ] . name )
299
+ assert_equal ( 6 , response [ 0 ] . children . size )
300
+ assert_equal ( "validate(foo_arg)" , response [ 0 ] . children [ 0 ] . name )
301
+ assert_equal ( "validate(bar_arg)" , response [ 0 ] . children [ 1 ] . name )
302
+ assert_equal ( "validate(<anonymous>)" , response [ 0 ] . children [ 2 ] . name )
303
+ assert_equal ( "validate(Foo::BazClass)" , response [ 0 ] . children [ 3 ] . name )
304
+ assert_equal ( "validate(FooClass)" , response [ 0 ] . children [ 4 ] . name )
305
+ assert_equal ( "validate(Foo::BarClass)" , response [ 0 ] . children [ 5 ] . name )
306
+ end
307
+
308
+ test "correctly handles validates method with string and symbol argument types" do
309
+ response = generate_document_symbols_for_source ( <<~RUBY )
310
+ class FooModel < ApplicationRecord
311
+ validates "foo_arg", :bar_arg
312
+ end
313
+ RUBY
314
+
315
+ assert_equal ( 1 , response . size )
316
+ assert_equal ( "FooModel" , response [ 0 ] . name )
317
+ assert_equal ( 2 , response [ 0 ] . children . size )
318
+ assert_equal ( "validates(foo_arg)" , response [ 0 ] . children [ 0 ] . name )
319
+ assert_equal ( "validates(bar_arg)" , response [ 0 ] . children [ 1 ] . name )
320
+ end
321
+
322
+ test "correctly handles validates_each method with string and symbol argument types" do
323
+ response = generate_document_symbols_for_source ( <<~RUBY )
324
+ class FooModel < ApplicationRecord
325
+ validates_each "foo_arg", :bar_arg do
326
+ puts "Foo"
327
+ end
328
+ end
329
+ RUBY
330
+
331
+ assert_equal ( 1 , response . size )
332
+ assert_equal ( "FooModel" , response [ 0 ] . name )
333
+ assert_equal ( 2 , response [ 0 ] . children . size )
334
+ assert_equal ( "validates_each(foo_arg)" , response [ 0 ] . children [ 0 ] . name )
335
+ assert_equal ( "validates_each(bar_arg)" , response [ 0 ] . children [ 1 ] . name )
336
+ end
337
+
338
+ test "correctly handles validates_with method with constant and namespaced constant argument types" do
339
+ response = generate_document_symbols_for_source ( <<~RUBY )
340
+ class FooModel < ApplicationRecord
341
+ validates_with FooClass, Foo::BarClass
342
+ end
343
+ RUBY
344
+
345
+ assert_equal ( 1 , response . size )
346
+ assert_equal ( "FooModel" , response [ 0 ] . name )
347
+ assert_equal ( 2 , response [ 0 ] . children . size )
348
+ assert_equal ( "validates_with(FooClass)" , response [ 0 ] . children [ 0 ] . name )
349
+ assert_equal ( "validates_with(Foo::BarClass)" , response [ 0 ] . children [ 1 ] . name )
350
+ end
351
+
290
352
private
291
353
292
354
def generate_document_symbols_for_source ( source )
0 commit comments