Skip to content

Commit e24a9a3

Browse files
committed
add MethodDefinition#call_method?
1 parent c012720 commit e24a9a3

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed

lib/helpers/parse_ruby.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,11 @@ def initialize(parent:, name:)
331331
@name = name
332332
end
333333

334+
def call_method?(method_name)
335+
local_calls.include?(method_name) ||
336+
local_calls.any? { |local_call_method_name| parent.find_method_by_name(local_call_method_name)&.call_method?(method_name) }
337+
end
338+
334339
def to_h
335340
{ name: @name }
336341
end

spec/helpers/parse_ruby_spec.rb

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,4 +172,37 @@ def deactivate
172172
class_definition = definitions.find_class_by_full_name('User')
173173
expect(class_definition.find_method_by_name('deactivate').name).to eq('deactivate')
174174
end
175+
176+
it 'check if call method' do
177+
rewriter =
178+
Synvert::Rewriter.new 'test', 'ruby_parse_helper' do
179+
call_helper 'ruby/parse'
180+
end
181+
182+
FileUtils.mkdir_p('app/models')
183+
File.write('app/models/user.rb', <<~EOF)
184+
class User < ApplicationRecord
185+
def activate
186+
update(:active: true)
187+
send_notification
188+
end
189+
190+
def deactivate
191+
update(:active: false)
192+
send_notification
193+
end
194+
195+
def send_notificaiton
196+
end
197+
end
198+
EOF
199+
200+
rewriter.process
201+
202+
definitions = rewriter.load_data(:ruby_definitions)
203+
class_definition = definitions.find_class_by_full_name('User')
204+
method_definition = class_definition.find_method_by_name('deactivate')
205+
expect(method_definition.call_method?('send_notification')).to be_truthy
206+
expect(method_definition.call_method?('activate')).to be_falsey
207+
end
175208
end

0 commit comments

Comments
 (0)