mirror of
https://github.com/foss42/apidash.git
synced 2025-05-26 02:36:31 +08:00
147 lines
3.9 KiB
Dart
147 lines
3.9 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:apidash/widgets/dialog_rename.dart';
|
|
|
|
void main() {
|
|
group('showRenameDialog Tests', () {
|
|
testWidgets('displays dialog with correct content', (tester) async {
|
|
await tester.pumpWidget(
|
|
MaterialApp(
|
|
home: Builder(
|
|
builder: (context) {
|
|
return ElevatedButton(
|
|
onPressed: () {
|
|
showRenameDialog(
|
|
context,
|
|
'Rename Item',
|
|
'Old Name',
|
|
(newName) {},
|
|
);
|
|
},
|
|
child: const Text('Show Dialog'),
|
|
);
|
|
},
|
|
),
|
|
),
|
|
);
|
|
|
|
await tester.tap(find.text('Show Dialog'));
|
|
await tester.pumpAndSettle();
|
|
|
|
expect(find.text('Rename Item'), findsOneWidget);
|
|
expect(find.byIcon(Icons.edit_rounded), findsOneWidget);
|
|
|
|
expect(find.byType(TextField), findsOneWidget);
|
|
expect(find.text('Old Name'), findsOneWidget);
|
|
});
|
|
|
|
testWidgets('calls onRename with new name when Ok is pressed',
|
|
(tester) async {
|
|
String? renamedValue;
|
|
|
|
await tester.pumpWidget(
|
|
MaterialApp(
|
|
home: Builder(
|
|
builder: (context) {
|
|
return ElevatedButton(
|
|
onPressed: () {
|
|
showRenameDialog(
|
|
context,
|
|
'Rename Item',
|
|
'Old Name',
|
|
(newName) {
|
|
renamedValue = newName;
|
|
},
|
|
);
|
|
},
|
|
child: const Text('Show Dialog'),
|
|
);
|
|
},
|
|
),
|
|
),
|
|
);
|
|
|
|
await tester.tap(find.text('Show Dialog'));
|
|
await tester.pumpAndSettle();
|
|
|
|
await tester.enterText(find.byType(TextField), 'New Name');
|
|
await tester.tap(find.text('Ok'));
|
|
await tester.pumpAndSettle();
|
|
|
|
expect(renamedValue, 'New Name');
|
|
});
|
|
|
|
testWidgets('does not call onRename when Cancel is pressed',
|
|
(tester) async {
|
|
String? renamedValue;
|
|
|
|
await tester.pumpWidget(
|
|
MaterialApp(
|
|
home: Builder(
|
|
builder: (context) {
|
|
return ElevatedButton(
|
|
onPressed: () {
|
|
showRenameDialog(
|
|
context,
|
|
'Rename Item',
|
|
'Old Name',
|
|
(newName) {
|
|
renamedValue = newName;
|
|
},
|
|
);
|
|
},
|
|
child: const Text('Show Dialog'),
|
|
);
|
|
},
|
|
),
|
|
),
|
|
);
|
|
|
|
await tester.tap(find.text('Show Dialog'));
|
|
await tester.pumpAndSettle();
|
|
|
|
await tester.enterText(find.byType(TextField), 'New Name');
|
|
await tester.tap(find.text('Cancel'));
|
|
await tester.pumpAndSettle();
|
|
|
|
expect(renamedValue, isNull);
|
|
});
|
|
|
|
testWidgets('disposes TextEditingController after dialog is closed',
|
|
(tester) async {
|
|
await tester.pumpWidget(
|
|
MaterialApp(
|
|
home: Scaffold(
|
|
body: Builder(
|
|
builder: (context) {
|
|
return ElevatedButton(
|
|
onPressed: () {
|
|
showRenameDialog(
|
|
context,
|
|
'Rename Item',
|
|
'Old Name',
|
|
(newName) {},
|
|
);
|
|
},
|
|
child: const Text('Show Dialog'),
|
|
);
|
|
},
|
|
),
|
|
),
|
|
),
|
|
);
|
|
|
|
await tester.tap(find.text('Show Dialog'));
|
|
await tester.pumpAndSettle();
|
|
|
|
final textFieldFinder = find.byType(TextField);
|
|
expect(textFieldFinder, findsOneWidget);
|
|
|
|
await tester.tap(find.text('Ok'));
|
|
await tester.pumpAndSettle();
|
|
|
|
expect(textFieldFinder, findsNothing);
|
|
});
|
|
});
|
|
}
|