Add test for LSP rename that edits multiple files
Change-Id: I2132f63f75e7a910ebf9667d26e98598cea0e894
Reviewed-on: https://dart-review.googlesource.com/c/89540
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analysis_server/test/lsp/rename_test.dart b/pkg/analysis_server/test/lsp/rename_test.dart
index df2fc18..2406dbb 100644
--- a/pkg/analysis_server/test/lsp/rename_test.dart
+++ b/pkg/analysis_server/test/lsp/rename_test.dart
@@ -17,8 +17,6 @@
@reflectiveTest
class RenameTest extends AbstractLspAnalysisServerTest {
- // TODO(dantup): renames across multiple files
-
test_prepare_class() {
const content = '''
class MyClass {}
@@ -375,4 +373,59 @@
expect(contents[mainFilePath], equals(expectedContent));
}
}
+
+ test_rename_multipleFiles() async {
+ final referencedFilePath =
+ join(projectFolderPath, 'lib', 'referenced.dart');
+ final referencedFileUri = Uri.file(referencedFilePath);
+ const mainContent = '''
+ import 'referenced.dart';
+ final a = new My^Class();
+ ''';
+ const referencedContent = '''
+ class MyClass {}
+ ''';
+ const expectedMainContent = '''
+ import 'referenced.dart';
+ final a = new MyNewClass();
+ ''';
+ const expectedReferencedContent = '''
+ class MyNewClass {}
+ ''';
+ const mainVersion = 111;
+ const referencedVersion = 222;
+
+ await initialize(
+ workspaceCapabilities:
+ withDocumentChangesSupport(emptyWorkspaceClientCapabilities),
+ );
+ await openFile(mainFileUri, withoutMarkers(mainContent),
+ version: mainVersion);
+ await openFile(referencedFileUri, withoutMarkers(referencedContent),
+ version: referencedVersion);
+
+ final result = await rename(
+ mainFileUri,
+ mainVersion,
+ positionFromMarker(mainContent),
+ 'MyNewClass',
+ );
+
+ // Ensure applying the changes will give us the expected content.
+ final contents = {
+ mainFilePath: withoutMarkers(mainContent),
+ referencedFilePath: withoutMarkers(referencedContent),
+ };
+ final documentVersions = {
+ mainFilePath: mainVersion,
+ referencedFilePath: referencedVersion,
+ };
+ applyDocumentChanges(
+ contents,
+ result.documentChanges,
+ expectedVersions: documentVersions,
+ );
+ expect(contents[mainFilePath], equals(expectedMainContent));
+ expect(contents[referencedFilePath], equals(expectedReferencedContent));
+ }
}