@@ -36,14 +36,20 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
3636 # _a + b
3737 { line , char } = { 3 , 5 }
3838
39+ source = % SourceFile { text: text , version: 0 }
40+ target_range = % { line: 2 , start_char: 4 , end_char: 5 }
41+
42+ Rename . prepare ( source , @ fake_uri , line , char )
43+ |> assert_prepare_range_and_placeholder_is ( target_range , "a" )
44+
3945 edits =
40- Rename . rename ( % SourceFile { text: text , version: 0 } , @ fake_uri , line , char , "test" )
46+ Rename . rename ( source , @ fake_uri , line , char , "test" )
4147 |> assert_return_structure_and_get_edits ( @ fake_uri , nil )
4248
4349 expected_edits =
4450 [
4551 % { line: 1 , start_char: 10 , end_char: 11 } ,
46- % { line: 2 , start_char: 4 , end_char: 5 }
52+ target_range
4753 ]
4854 |> get_expected_edits ( "test" )
4955
@@ -62,9 +68,15 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
6268 # "Hello " <> ne_ma
6369 { line , char } = { 3 , 19 }
6470
71+ source = % SourceFile { text: text , version: 0 }
72+ target_range = % { line: 2 , start_char: 16 , end_char: 20 }
73+
74+ Rename . prepare ( source , @ fake_uri , line , char )
75+ |> assert_prepare_range_and_placeholder_is ( target_range , "nema" )
76+
6577 edits =
6678 Rename . rename (
67- % SourceFile { text: text , version: 0 } ,
79+ source ,
6880 @ fake_uri ,
6981 line ,
7082 char ,
@@ -75,7 +87,7 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
7587 expected_edits =
7688 [
7789 % { line: 1 , start_char: 12 , end_char: 16 } ,
78- % { line: 2 , start_char: 16 , end_char: 20 }
90+ target_range
7991 ]
8092 |> get_expected_edits ( "name" )
8193
@@ -94,10 +106,15 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
94106
95107 # new = "#{original} + new stuff!"
96108 { line , char } = { 3 , 6 }
109+ source = % SourceFile { text: text , version: 0 }
110+ target_range = % { line: 2 , start_char: 4 , end_char: 12 }
111+
112+ Rename . prepare ( source , @ fake_uri , line , char )
113+ |> assert_prepare_range_and_placeholder_is ( target_range , "original" )
97114
98115 edits =
99116 Rename . rename (
100- % SourceFile { text: text , version: 0 } ,
117+ source ,
101118 @ fake_uri ,
102119 line ,
103120 char ,
@@ -107,7 +124,7 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
107124
108125 expected_edits =
109126 [
110- % { line: 2 , start_char: 4 , end_char: 12 } ,
127+ target_range ,
111128 % { line: 3 , start_char: 10 , end_char: 18 }
112129 ]
113130 |> get_expected_edits ( "new_original" )
@@ -120,14 +137,19 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
120137 test "subtract -> new_subtract" do
121138 file_path = FixtureHelpers . get_path ( "rename_example.ex" )
122139 text = File . read! ( file_path )
123- uri = SourceFile . path_to_uri ( file_path )
140+ uri = SourceFile.Path . to_uri ( file_path )
124141
125142 # d = subtract(a, b)
126143 { line , char } = { 6 , 10 }
144+ source = % SourceFile { text: text , version: 0 }
145+ target_range = % { line: 5 , start_char: 8 , end_char: 16 }
146+
147+ Rename . prepare ( source , @ fake_uri , line , char )
148+ |> assert_prepare_range_and_placeholder_is ( target_range , "subtract" )
127149
128150 edits =
129151 Rename . rename (
130- % SourceFile { text: text , version: 0 } ,
152+ source ,
131153 uri ,
132154 line ,
133155 char ,
@@ -137,7 +159,7 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
137159
138160 expected_edits =
139161 [
140- % { line: 5 , start_char: 8 , end_char: 16 } ,
162+ target_range ,
141163 % { line: 13 , start_char: 7 , end_char: 15 }
142164 ]
143165 |> get_expected_edits ( "new_subtract" )
@@ -148,14 +170,19 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
148170 test "rename function with multiple heads: add -> new_add" do
149171 file_path = FixtureHelpers . get_path ( "rename_example.ex" )
150172 text = File . read! ( file_path )
151- uri = SourceFile . path_to_uri ( file_path )
173+ uri = SourceFile.Path . to_uri ( file_path )
152174
153175 # c = add(a, b)
154176 { line , char } = { 5 , 9 }
177+ source = % SourceFile { text: text , version: 0 }
178+ target_range = % { line: 4 , start_char: 8 , end_char: 11 }
179+
180+ Rename . prepare ( source , @ fake_uri , line , char )
181+ |> assert_prepare_range_and_placeholder_is ( target_range , "add" )
155182
156183 edits =
157184 Rename . rename (
158- % SourceFile { text: text , version: 0 } ,
185+ source ,
159186 uri ,
160187 line ,
161188 char ,
@@ -165,7 +192,7 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
165192
166193 expected_edits =
167194 [
168- % { line: 4 , start_char: 8 , end_char: 11 } ,
195+ target_range ,
169196 % { line: 6 , start_char: 4 , end_char: 7 } ,
170197 % { line: 9 , start_char: 7 , end_char: 10 } ,
171198 % { line: 10 , start_char: 7 , end_char: 10 } ,
@@ -179,13 +206,17 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
179206 test "rename function defined in a different file ten -> new_ten" do
180207 file_path = FixtureHelpers . get_path ( "rename_example.ex" )
181208 text = File . read! ( file_path )
182- uri = SourceFile . path_to_uri ( file_path )
209+ uri = SourceFile.Path . to_uri ( file_path )
183210
184211 fn_definition_file_uri =
185- FixtureHelpers . get_path ( "rename_example_b.ex" ) |> SourceFile . path_to_uri ( )
212+ FixtureHelpers . get_path ( "rename_example_b.ex" ) |> SourceFile.Path . to_uri ( )
186213
187214 # b = ElixirLS.Test.RenameExampleB.ten()
188215 { line , char } = { 4 , 38 }
216+ source = % SourceFile { text: text , version: 0 }
217+
218+ Rename . prepare ( source , uri , line , char )
219+ |> assert_prepare_range_and_placeholder_is ( % { line: 3 , start_char: 8 , end_char: 40 } , "ten" )
189220
190221 assert { :ok ,
191222 % {
@@ -207,7 +238,7 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
207238 ]
208239 } } =
209240 Rename . rename (
210- % SourceFile { text: text , version: 0 } ,
241+ source ,
211242 uri ,
212243 line ,
213244 char ,
@@ -231,7 +262,7 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
231262 test "rename started with cursor at function definition" do
232263 file_path = FixtureHelpers . get_path ( "rename_example.ex" )
233264 text = File . read! ( file_path )
234- uri = SourceFile . path_to_uri ( file_path )
265+ uri = SourceFile.Path . to_uri ( file_path )
235266
236267 # defp _handle_error({:ok, message})
237268 { line , char } = { 4 , 8 }
@@ -301,4 +332,19 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
301332 defp sort_edit_by_start_line ( edits ) do
302333 Enum . sort ( edits , & ( & 1 [ "range" ] . start . line < & 2 [ "range" ] . start . line ) )
303334 end
335+
336+ defp assert_prepare_range_and_placeholder_is (
337+ prepare_result ,
338+ % { line: line , start_char: start_char , end_char: end_char } = _expected_range ,
339+ expected_placeholder
340+ ) do
341+ assert { :ok ,
342+ % {
343+ placeholder: expected_placeholder ,
344+ range: % {
345+ start: % { line: line , character: start_char } ,
346+ end: % { line: line , character: end_char }
347+ }
348+ } } == prepare_result
349+ end
304350end
0 commit comments