blob: 9d8894519da49d9e7b1a79a640c2db7c19bd7716 [file] [log] [blame]
// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'dart:async';
import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import 'server_abstract.dart';
void main() {
defineReflectiveSuite(() {
defineReflectiveTests(WillRenameFilesTest);
});
}
@reflectiveTest
class WillRenameFilesTest extends AbstractLspAnalysisServerTest {
Future<void> test_rename_updatesImports() async {
final otherFilePath = join(projectFolderPath, 'lib', 'other.dart');
final otherFileUri = Uri.file(otherFilePath);
final otherFileNewPath = join(projectFolderPath, 'lib', 'other_new.dart');
final otherFileNewUri = Uri.file(otherFileNewPath);
final mainContent = '''
import 'other.dart';
final a = A();
''';
final otherContent = '''
class A {}
''';
final expectedMainContent = '''
import 'other_new.dart';
final a = A();
''';
await initialize();
await openFile(mainFileUri, mainContent);
await openFile(otherFileUri, otherContent);
final edit = await onWillRename([
FileRename(
oldUri: otherFileUri.toString(),
newUri: otherFileNewUri.toString(),
),
]);
// Ensure applying the edit will give us the expected content.
final contents = {
mainFilePath: withoutMarkers(mainContent),
};
applyChanges(contents, edit.changes!);
expect(contents[mainFilePath], equals(expectedMainContent));
}
}