Skip to content

Commit 045a63a

Browse files
committed
Add specs
1 parent f96f643 commit 045a63a

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

spec/ruby_lsp/ruby_lsp_factory_bot/completion_spec.rb

+45
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,51 @@
3232
end
3333
end
3434

35+
context "for attributes already present" do
36+
let(:code) { "create :enterprise, description: 'foobar', descrip" }
37+
let(:node) { call_node }
38+
39+
it "doesn't suggest them again" do
40+
allow(server_client).to receive(:delegate_request).and_return(
41+
[{ name: "description" }, { name: "description_long" }],
42+
)
43+
44+
subject.on_call_node_enter(node)
45+
expect(response_builder.first.label).to eq "description_long"
46+
expect(response_builder.length).to eq 1
47+
end
48+
end
49+
50+
context "for attributes already present" do
51+
let(:code) { "create :user, :with_attached_avatar, :wit" }
52+
let(:node) { call_node }
53+
54+
it "doesn't suggest traits already present" do
55+
allow(server_client).to receive(:delegate_request).and_return(
56+
[{ name: "with_attached_avatar" }, { name: "with_bio" }],
57+
)
58+
59+
subject.on_call_node_enter(node)
60+
expect(response_builder.first.label).to eq "with_bio"
61+
expect(response_builder.length).to eq 1
62+
end
63+
end
64+
65+
context "for incomplete factory names" do
66+
let(:code) { "create :ente" }
67+
let(:node) { call_node }
68+
69+
it "provides suggestions" do
70+
allow(server_client).to receive(:delegate_request).and_return(
71+
[{ name: "enterprise" }, { name: "medium_enterprise" }, { name: "small_enterprise" }],
72+
)
73+
74+
subject.on_call_node_enter(node)
75+
expect(response_builder.first.label).to eq "enterprise"
76+
expect(response_builder.length).to eq 3
77+
end
78+
end
79+
3580
context "for irrelevant methods" do
3681
let(:code) { "puts a" }
3782
let(:node) { call_node.arguments.arguments[0] }

0 commit comments

Comments
 (0)