@@ -36,14 +36,20 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
36
36
# _a + b
37
37
{ line , char } = { 3 , 5 }
38
38
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
+
39
45
edits =
40
- Rename . rename ( % SourceFile { text: text , version: 0 } , @ fake_uri , line , char , "test" )
46
+ Rename . rename ( source , @ fake_uri , line , char , "test" )
41
47
|> assert_return_structure_and_get_edits ( @ fake_uri , nil )
42
48
43
49
expected_edits =
44
50
[
45
51
% { line: 1 , start_char: 10 , end_char: 11 } ,
46
- % { line: 2 , start_char: 4 , end_char: 5 }
52
+ target_range
47
53
]
48
54
|> get_expected_edits ( "test" )
49
55
@@ -62,9 +68,15 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
62
68
# "Hello " <> ne_ma
63
69
{ line , char } = { 3 , 19 }
64
70
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
+
65
77
edits =
66
78
Rename . rename (
67
- % SourceFile { text: text , version: 0 } ,
79
+ source ,
68
80
@ fake_uri ,
69
81
line ,
70
82
char ,
@@ -75,7 +87,7 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
75
87
expected_edits =
76
88
[
77
89
% { line: 1 , start_char: 12 , end_char: 16 } ,
78
- % { line: 2 , start_char: 16 , end_char: 20 }
90
+ target_range
79
91
]
80
92
|> get_expected_edits ( "name" )
81
93
@@ -94,10 +106,15 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
94
106
95
107
# new = "#{original} + new stuff!"
96
108
{ 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" )
97
114
98
115
edits =
99
116
Rename . rename (
100
- % SourceFile { text: text , version: 0 } ,
117
+ source ,
101
118
@ fake_uri ,
102
119
line ,
103
120
char ,
@@ -107,7 +124,7 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
107
124
108
125
expected_edits =
109
126
[
110
- % { line: 2 , start_char: 4 , end_char: 12 } ,
127
+ target_range ,
111
128
% { line: 3 , start_char: 10 , end_char: 18 }
112
129
]
113
130
|> get_expected_edits ( "new_original" )
@@ -120,14 +137,19 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
120
137
test "subtract -> new_subtract" do
121
138
file_path = FixtureHelpers . get_path ( "rename_example.ex" )
122
139
text = File . read! ( file_path )
123
- uri = SourceFile . path_to_uri ( file_path )
140
+ uri = SourceFile.Path . to_uri ( file_path )
124
141
125
142
# d = subtract(a, b)
126
143
{ 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" )
127
149
128
150
edits =
129
151
Rename . rename (
130
- % SourceFile { text: text , version: 0 } ,
152
+ source ,
131
153
uri ,
132
154
line ,
133
155
char ,
@@ -137,7 +159,7 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
137
159
138
160
expected_edits =
139
161
[
140
- % { line: 5 , start_char: 8 , end_char: 16 } ,
162
+ target_range ,
141
163
% { line: 13 , start_char: 7 , end_char: 15 }
142
164
]
143
165
|> get_expected_edits ( "new_subtract" )
@@ -148,14 +170,19 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
148
170
test "rename function with multiple heads: add -> new_add" do
149
171
file_path = FixtureHelpers . get_path ( "rename_example.ex" )
150
172
text = File . read! ( file_path )
151
- uri = SourceFile . path_to_uri ( file_path )
173
+ uri = SourceFile.Path . to_uri ( file_path )
152
174
153
175
# c = add(a, b)
154
176
{ 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" )
155
182
156
183
edits =
157
184
Rename . rename (
158
- % SourceFile { text: text , version: 0 } ,
185
+ source ,
159
186
uri ,
160
187
line ,
161
188
char ,
@@ -165,7 +192,7 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
165
192
166
193
expected_edits =
167
194
[
168
- % { line: 4 , start_char: 8 , end_char: 11 } ,
195
+ target_range ,
169
196
% { line: 6 , start_char: 4 , end_char: 7 } ,
170
197
% { line: 9 , start_char: 7 , end_char: 10 } ,
171
198
% { line: 10 , start_char: 7 , end_char: 10 } ,
@@ -179,13 +206,17 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
179
206
test "rename function defined in a different file ten -> new_ten" do
180
207
file_path = FixtureHelpers . get_path ( "rename_example.ex" )
181
208
text = File . read! ( file_path )
182
- uri = SourceFile . path_to_uri ( file_path )
209
+ uri = SourceFile.Path . to_uri ( file_path )
183
210
184
211
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 ( )
186
213
187
214
# b = ElixirLS.Test.RenameExampleB.ten()
188
215
{ 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" )
189
220
190
221
assert { :ok ,
191
222
% {
@@ -207,7 +238,7 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
207
238
]
208
239
} } =
209
240
Rename . rename (
210
- % SourceFile { text: text , version: 0 } ,
241
+ source ,
211
242
uri ,
212
243
line ,
213
244
char ,
@@ -231,7 +262,7 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
231
262
test "rename started with cursor at function definition" do
232
263
file_path = FixtureHelpers . get_path ( "rename_example.ex" )
233
264
text = File . read! ( file_path )
234
- uri = SourceFile . path_to_uri ( file_path )
265
+ uri = SourceFile.Path . to_uri ( file_path )
235
266
236
267
# defp _handle_error({:ok, message})
237
268
{ line , char } = { 4 , 8 }
@@ -301,4 +332,19 @@ defmodule ElixirLS.LanguageServer.Providers.RenameTest do
301
332
defp sort_edit_by_start_line ( edits ) do
302
333
Enum . sort ( edits , & ( & 1 [ "range" ] . start . line < & 2 [ "range" ] . start . line ) )
303
334
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
304
350
end
0 commit comments