Skip to content

Commit cc32523

Browse files
committed
Add definition on mailbox callbacks
1 parent 8e68521 commit cc32523

File tree

2 files changed

+70
-1
lines changed

2 files changed

+70
-1
lines changed

lib/ruby_lsp/ruby_lsp_rails/support/callbacks.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,13 @@ module Callbacks
5555
"before_perform",
5656
].freeze
5757

58-
ALL = (MODELS + CONTROLLERS + JOBS).freeze #: Array[String]
58+
MAILBOX = [
59+
"after_processing",
60+
"before_processing",
61+
"around_processing",
62+
]
63+
64+
ALL = (MODELS + CONTROLLERS + JOBS + MAILBOX).freeze #: Array[String]
5965
end
6066
end
6167
end

test/ruby_lsp_rails/definition_test.rb

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,69 @@ def baz; end
221221
assert_empty(response)
222222
end
223223

224+
test "recognizes mailbox before_processing callback" do
225+
response = generate_definitions_for_source(<<~RUBY, { line: 1, character: 20 })
226+
class FooMailbox < ApplicationMailbox
227+
before_processing :bar
228+
229+
private
230+
def bar; end
231+
end
232+
RUBY
233+
234+
assert_equal(1, response.size)
235+
236+
response = response.first
237+
238+
assert_equal("file:///fake.rb", response.uri)
239+
assert_equal(4, response.range.start.line)
240+
assert_equal(4, response.range.start.character)
241+
assert_equal(4, response.range.end.line)
242+
assert_equal(16, response.range.end.character)
243+
end
244+
245+
test "recognizes mailbox around_processing callback" do
246+
response = generate_definitions_for_source(<<~RUBY, { line: 1, character: 20 })
247+
class FooMailbox < ApplicationMailbox
248+
around_processing :baz
249+
250+
private
251+
def baz; end
252+
end
253+
RUBY
254+
255+
assert_equal(1, response.size)
256+
257+
response = response.first
258+
259+
assert_equal("file:///fake.rb", response.uri)
260+
assert_equal(4, response.range.start.line)
261+
assert_equal(4, response.range.start.character)
262+
assert_equal(4, response.range.end.line)
263+
assert_equal(16, response.range.end.character)
264+
end
265+
266+
test "recognizes mailbox after_processing callback" do
267+
response = generate_definitions_for_source(<<~RUBY, { line: 1, character: 20 })
268+
class FooMailbox < ApplicationMailbox
269+
after_processing :qux
270+
271+
private
272+
def qux; end
273+
end
274+
RUBY
275+
276+
assert_equal(1, response.size)
277+
278+
response = response.first
279+
280+
assert_equal("file:///fake.rb", response.uri)
281+
assert_equal(4, response.range.start.line)
282+
assert_equal(4, response.range.start.character)
283+
assert_equal(4, response.range.end.line)
284+
assert_equal(16, response.range.end.character)
285+
end
286+
224287
private
225288

226289
def generate_definitions_for_source(source, position)

0 commit comments

Comments
 (0)