Skip to content

Commit 499317a

Browse files
authored
Add support for "specify" and "example" declarations (#12)
This patch adds support for "specify" and "example" declarations, which are aliases for "it" in RSpec. This is useful for people (like me) who prefer to use "specify" or "example" over "it" in their RSpec tests. RSpec method aliases are defined here: https://github.com/rspec/rspec-core/blob/80bdf067758678ee32191c04f4d479031e20606d/lib/rspec/core/example_group.rb#L53-L67 Close #11
1 parent 5543dd4 commit 499317a

File tree

2 files changed

+16
-10
lines changed

2 files changed

+16
-10
lines changed

lib/ruby_lsp/ruby_lsp_rspec/code_lens.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@ def initialize(uri, dispatcher, message_queue)
4343

4444
sig { params(node: Prism::CallNode).void }
4545
def on_call_node_enter(node)
46-
message_value = node.message
47-
if message_value == "it"
46+
case node.message
47+
when "example", "it", "specify"
4848
name = generate_name(node)
4949
add_test_code_lens(node, name: name, kind: :example)
50-
elsif message_value == "describe" || message_value == "context"
50+
when "context", "describe"
5151
return if node.receiver && node.receiver.name.to_s != "RSpec"
5252

5353
name = generate_name(node)

spec/ruby_lsp_rspec_spec.rb

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,15 @@
7575
end
7676
end
7777

78-
it "recognizes different it declaration" do
78+
it "recognizes different example, it, and specify declarations" do
7979
store.set(uri: uri, source: <<~RUBY, version: 1)
8080
RSpec.describe Foo do
8181
it { do_something }
82-
it var do
82+
it var1 do
83+
do_something
84+
end
85+
specify { do_something }
86+
example var2 do
8387
do_something
8488
end
8589
end
@@ -98,27 +102,29 @@
98102
expect(response.error).to(be_nil)
99103

100104
response = response.response
101-
expect(response.count).to eq(9)
105+
expect(response.count).to eq(15)
102106

103107
expect(response[3].command.arguments[1]).to eq("<unnamed>")
104-
expect(response[6].command.arguments[1]).to eq("<var>")
108+
expect(response[6].command.arguments[1]).to eq("<var1>")
109+
expect(response[9].command.arguments[1]).to eq("<unnamed>")
110+
expect(response[12].command.arguments[1]).to eq("<var2>")
105111
end
106112

107-
it "recognizes different describe declaration" do
113+
it "recognizes different context and describe declarations" do
108114
store.set(uri: uri, source: <<~RUBY, version: 1)
109115
RSpec.describe(Foo::Bar) do
110116
end
111117
112118
RSpec.describe Foo::Bar do
113119
end
114120
115-
describe(Foo) do
121+
context(Foo) do
116122
end
117123
118124
describe Foo do
119125
end
120126
121-
describe "Foo" do
127+
context "Foo" do
122128
end
123129
124130
describe var do

0 commit comments

Comments
 (0)