mirror of
https://github.com/foss42/apidash.git
synced 2025-05-22 00:36:43 +08:00
test: dialog tests
This commit is contained in:
@ -10,13 +10,53 @@ showRenameDialog(
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (context) {
|
||||
final controller = TextEditingController(text: name ?? "");
|
||||
return RenameDialogContent(
|
||||
dialogTitle: dialogTitle,
|
||||
onRename: onRename,
|
||||
name: name,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
class RenameDialogContent extends StatefulWidget {
|
||||
const RenameDialogContent({
|
||||
super.key,
|
||||
required this.dialogTitle,
|
||||
required this.onRename,
|
||||
this.name,
|
||||
});
|
||||
|
||||
final String dialogTitle;
|
||||
final Function(String) onRename;
|
||||
final String? name;
|
||||
|
||||
@override
|
||||
State<RenameDialogContent> createState() => _RenameDialogContentState();
|
||||
}
|
||||
|
||||
class _RenameDialogContentState extends State<RenameDialogContent> {
|
||||
late TextEditingController controller;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
controller = TextEditingController(text: widget.name ?? "");
|
||||
controller.selection =
|
||||
TextSelection(baseOffset: 0, extentOffset: controller.text.length);
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
controller.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AlertDialog(
|
||||
icon: const Icon(Icons.edit_rounded),
|
||||
iconColor: Theme.of(context).colorScheme.primary,
|
||||
title: Text(dialogTitle),
|
||||
title: Text(widget.dialogTitle),
|
||||
titleTextStyle: Theme.of(context).textTheme.titleLarge,
|
||||
content: Container(
|
||||
padding: kPt20,
|
||||
@ -40,14 +80,11 @@ showRenameDialog(
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
final val = controller.text.trim();
|
||||
onRename(val);
|
||||
widget.onRename(val);
|
||||
Navigator.pop(context);
|
||||
Future.delayed(const Duration(milliseconds: 100), () {
|
||||
controller.dispose();
|
||||
});
|
||||
},
|
||||
child: const Text('Ok')),
|
||||
],
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,56 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:apidash/providers/providers.dart';
|
||||
import 'package:apidash/widgets/response_widgets.dart';
|
||||
import 'package:apidash/screens/history/history_widgets/his_response_pane.dart';
|
||||
|
||||
import '../../../models/history_models.dart';
|
||||
|
||||
void main() {
|
||||
group('HistoryResponsePane Widget Tests', () {
|
||||
testWidgets('displays "No Request Selected" when no request is selected',
|
||||
(tester) async {
|
||||
await tester.pumpWidget(
|
||||
ProviderScope(
|
||||
overrides: [
|
||||
selectedHistoryIdStateProvider.overrideWith((ref) => null),
|
||||
selectedHistoryRequestModelProvider.overrideWith((ref) => null),
|
||||
],
|
||||
child: const MaterialApp(
|
||||
home: Scaffold(
|
||||
body: HistoryResponsePane(),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.text("No Request Selected"), findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets(
|
||||
'displays ResponsePaneHeader and ResponseTabView when a request is selected',
|
||||
(tester) async {
|
||||
final historyRequestModel = historyRequestModel1;
|
||||
|
||||
await tester.pumpWidget(
|
||||
ProviderScope(
|
||||
overrides: [
|
||||
selectedHistoryIdStateProvider
|
||||
.overrideWith((ref) => historyRequestModel.historyId),
|
||||
selectedHistoryRequestModelProvider
|
||||
.overrideWith((ref) => historyRequestModel),
|
||||
],
|
||||
child: const MaterialApp(
|
||||
home: Scaffold(
|
||||
body: HistoryResponsePane(),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.byType(ResponsePaneHeader), findsOneWidget);
|
||||
expect(find.byType(ResponseTabView), findsOneWidget);
|
||||
});
|
||||
});
|
||||
}
|
51
test/screens/history/history_widgets/his_url_card_test.dart
Normal file
51
test/screens/history/history_widgets/his_url_card_test.dart
Normal file
@ -0,0 +1,51 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:apidash/screens/history/history_widgets/his_url_card.dart';
|
||||
|
||||
import '../../../models/history_models.dart';
|
||||
|
||||
void main() {
|
||||
group('Testing HistoryURLCard', () {
|
||||
final historyRequestModel = historyRequestModel1;
|
||||
|
||||
testWidgets('Testing with given HistoryRequestModel', (tester) async {
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: HistoryURLCard(historyRequestModel: historyRequestModel),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.byType(HistoryURLCard), findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets('Testing if displays correct request method', (tester) async {
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: HistoryURLCard(historyRequestModel: historyRequestModel),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(
|
||||
find.text(
|
||||
historyRequestModel.httpRequestModel.method.name.toUpperCase()),
|
||||
findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets('Testing if displays correct URL', (tester) async {
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: HistoryURLCard(historyRequestModel: historyRequestModel),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(
|
||||
find.text(historyRequestModel.httpRequestModel.url), findsOneWidget);
|
||||
});
|
||||
});
|
||||
}
|
150
test/widgets/dialog_history_retention_test.dart
Normal file
150
test/widgets/dialog_history_retention_test.dart
Normal file
@ -0,0 +1,150 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:apidash/widgets/dialog_history_retention.dart';
|
||||
|
||||
void main() {
|
||||
group('showHistoryRetentionDialog Tests', () {
|
||||
testWidgets('Testing History Retention dialog content', (tester) async {
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Builder(
|
||||
builder: (context) {
|
||||
return ElevatedButton(
|
||||
onPressed: () {
|
||||
showHistoryRetentionDialog(
|
||||
context,
|
||||
HistoryRetentionPeriod.forever,
|
||||
(period) {},
|
||||
);
|
||||
},
|
||||
child: const Text('Show Dialog'),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
await tester.tap(find.text('Show Dialog'));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
expect(find.text('Manage History'), findsOneWidget);
|
||||
expect(find.byIcon(Icons.manage_history_rounded), findsOneWidget);
|
||||
|
||||
expect(find.byType(RadioListTile<HistoryRetentionPeriod>),
|
||||
findsNWidgets(HistoryRetentionPeriod.values.length));
|
||||
});
|
||||
|
||||
testWidgets('updates selected retention period correctly', (tester) async {
|
||||
HistoryRetentionPeriod selectedPeriod = HistoryRetentionPeriod.forever;
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Builder(
|
||||
builder: (context) {
|
||||
return ElevatedButton(
|
||||
onPressed: () {
|
||||
showHistoryRetentionDialog(
|
||||
context,
|
||||
selectedPeriod,
|
||||
(period) {
|
||||
selectedPeriod = period;
|
||||
},
|
||||
);
|
||||
},
|
||||
child: const Text('Show Dialog'),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
await tester.tap(find.text('Show Dialog'));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
await tester.tap(find.text(HistoryRetentionPeriod.oneWeek.label));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
await tester.tap(find.text('Confirm'));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
expect(selectedPeriod, HistoryRetentionPeriod.oneWeek);
|
||||
});
|
||||
|
||||
testWidgets('Cancel button closes dialog without changing retention period',
|
||||
(tester) async {
|
||||
HistoryRetentionPeriod selectedPeriod = HistoryRetentionPeriod.oneWeek;
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Builder(
|
||||
builder: (context) {
|
||||
return ElevatedButton(
|
||||
onPressed: () {
|
||||
showHistoryRetentionDialog(
|
||||
context,
|
||||
selectedPeriod,
|
||||
(period) {
|
||||
selectedPeriod = period;
|
||||
},
|
||||
);
|
||||
},
|
||||
child: const Text('Show Dialog'),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
await tester.tap(find.text('Show Dialog'));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
await tester.tap(find.text('Cancel'));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
expect(find.byType(AlertDialog), findsNothing);
|
||||
expect(selectedPeriod, HistoryRetentionPeriod.oneWeek);
|
||||
});
|
||||
|
||||
testWidgets(
|
||||
'Confirm button closes dialog and calls onRetentionPeriodChange',
|
||||
(tester) async {
|
||||
HistoryRetentionPeriod selectedPeriod =
|
||||
HistoryRetentionPeriod.threeMonths;
|
||||
HistoryRetentionPeriod newPeriod = HistoryRetentionPeriod.oneWeek;
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Builder(
|
||||
builder: (context) {
|
||||
return ElevatedButton(
|
||||
onPressed: () {
|
||||
showHistoryRetentionDialog(
|
||||
context,
|
||||
selectedPeriod,
|
||||
(period) {
|
||||
selectedPeriod = period;
|
||||
},
|
||||
);
|
||||
},
|
||||
child: const Text('Show Dialog'),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
await tester.tap(find.text('Show Dialog'));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
await tester.tap(find.text(newPeriod.label));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
await tester.tap(find.text('Confirm'));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
expect(find.byType(AlertDialog), findsNothing);
|
||||
expect(selectedPeriod, newPeriod);
|
||||
});
|
||||
});
|
||||
}
|
146
test/widgets/dialog_rename_test.dart
Normal file
146
test/widgets/dialog_rename_test.dart
Normal file
@ -0,0 +1,146 @@
|
||||
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);
|
||||
});
|
||||
});
|
||||
}
|
49
test/widgets/dropdown_codegen_test.dart
Normal file
49
test/widgets/dropdown_codegen_test.dart
Normal file
@ -0,0 +1,49 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:apidash/widgets/widgets.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import '../test_consts.dart';
|
||||
|
||||
void main() {
|
||||
testWidgets('Testing Dropdown for Codegen', (tester) async {
|
||||
dynamic changedValue;
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
title: 'Dropdown Codegen Type testing',
|
||||
theme: kThemeDataLight,
|
||||
home: Scaffold(
|
||||
body: Center(
|
||||
child: Column(
|
||||
children: [
|
||||
DropdownButtonCodegenLanguage(
|
||||
codegenLanguage: CodegenLanguage.curl,
|
||||
onChanged: (value) {
|
||||
changedValue = value!;
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.byIcon(Icons.unfold_more_rounded), findsOneWidget);
|
||||
expect(find.byType(DropdownButton<CodegenLanguage>), findsOneWidget);
|
||||
expect(
|
||||
(tester.widget(find.byType(DropdownButton<CodegenLanguage>))
|
||||
as DropdownButton)
|
||||
.value,
|
||||
equals(CodegenLanguage.curl));
|
||||
|
||||
await tester.tap(find.text('cURL'));
|
||||
await tester.pump();
|
||||
await tester.pump(const Duration(seconds: 1));
|
||||
|
||||
await tester.tap(find.text('Dart (dio)').last);
|
||||
await tester.pump();
|
||||
await tester.pump(const Duration(seconds: 1));
|
||||
|
||||
expect(changedValue, CodegenLanguage.dartDio);
|
||||
});
|
||||
}
|
49
test/widgets/dropdown_content_type_test.dart
Normal file
49
test/widgets/dropdown_content_type_test.dart
Normal file
@ -0,0 +1,49 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:apidash/widgets/widgets.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import '../test_consts.dart';
|
||||
|
||||
void main() {
|
||||
testWidgets('Testing Dropdown for Content Type', (tester) async {
|
||||
dynamic changedValue;
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
title: 'Dropdown Content Type testing',
|
||||
theme: kThemeDataLight,
|
||||
home: Scaffold(
|
||||
body: Center(
|
||||
child: Column(
|
||||
children: [
|
||||
DropdownButtonContentType(
|
||||
contentType: ContentType.json,
|
||||
onChanged: (value) {
|
||||
changedValue = value!;
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.byIcon(Icons.unfold_more_rounded), findsOneWidget);
|
||||
expect(find.byType(DropdownButton<ContentType>), findsOneWidget);
|
||||
expect(
|
||||
(tester.widget(find.byType(DropdownButton<ContentType>))
|
||||
as DropdownButton)
|
||||
.value,
|
||||
equals(ContentType.json));
|
||||
|
||||
await tester.tap(find.text('json'));
|
||||
await tester.pump();
|
||||
await tester.pump(const Duration(seconds: 1));
|
||||
|
||||
await tester.tap(find.text('text').last);
|
||||
await tester.pump();
|
||||
await tester.pump(const Duration(seconds: 1));
|
||||
|
||||
expect(changedValue, ContentType.text);
|
||||
});
|
||||
}
|
49
test/widgets/dropdown_formdata_test.dart
Normal file
49
test/widgets/dropdown_formdata_test.dart
Normal file
@ -0,0 +1,49 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:apidash/widgets/widgets.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import '../test_consts.dart';
|
||||
|
||||
void main() {
|
||||
testWidgets('Testing Dropdown for FormData', (tester) async {
|
||||
dynamic changedValue;
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
title: 'Dropdown FormData Type testing',
|
||||
theme: kThemeDataLight,
|
||||
home: Scaffold(
|
||||
body: Center(
|
||||
child: Column(
|
||||
children: [
|
||||
DropdownButtonFormData(
|
||||
formDataType: FormDataType.file,
|
||||
onChanged: (value) {
|
||||
changedValue = value!;
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.byIcon(Icons.unfold_more_rounded), findsOneWidget);
|
||||
expect(find.byType(DropdownButton<FormDataType>), findsOneWidget);
|
||||
expect(
|
||||
(tester.widget(find.byType(DropdownButton<FormDataType>))
|
||||
as DropdownButton)
|
||||
.value,
|
||||
equals(FormDataType.file));
|
||||
|
||||
await tester.tap(find.text('file'));
|
||||
await tester.pump();
|
||||
await tester.pump(const Duration(seconds: 1));
|
||||
|
||||
await tester.tap(find.text('text').last);
|
||||
await tester.pump();
|
||||
await tester.pump(const Duration(seconds: 1));
|
||||
|
||||
expect(changedValue, FormDataType.text);
|
||||
});
|
||||
}
|
48
test/widgets/dropdowns_http_method_test.dart
Normal file
48
test/widgets/dropdowns_http_method_test.dart
Normal file
@ -0,0 +1,48 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:apidash/widgets/widgets.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import '../test_consts.dart';
|
||||
|
||||
void main() {
|
||||
testWidgets('Testing Dropdown for Http Method', (tester) async {
|
||||
dynamic changedValue;
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
title: 'Dropdown Http method testing',
|
||||
theme: kThemeDataLight,
|
||||
home: Scaffold(
|
||||
body: Center(
|
||||
child: Column(
|
||||
children: [
|
||||
DropdownButtonHttpMethod(
|
||||
method: HTTPVerb.post,
|
||||
onChanged: (value) {
|
||||
changedValue = value!;
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.byIcon(Icons.unfold_more_rounded), findsOneWidget);
|
||||
expect(find.byType(DropdownButton<HTTPVerb>), findsOneWidget);
|
||||
expect(
|
||||
(tester.widget(find.byType(DropdownButton<HTTPVerb>)) as DropdownButton)
|
||||
.value,
|
||||
equals(HTTPVerb.post));
|
||||
|
||||
await tester.tap(find.text('POST'));
|
||||
await tester.pump();
|
||||
await tester.pump(const Duration(seconds: 1));
|
||||
|
||||
await tester.tap(find.text('PUT').last);
|
||||
await tester.pump();
|
||||
await tester.pump(const Duration(seconds: 1));
|
||||
|
||||
expect(changedValue, HTTPVerb.put);
|
||||
});
|
||||
}
|
@ -1,174 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:apidash/widgets/widgets.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import '../test_consts.dart';
|
||||
|
||||
void main() {
|
||||
testWidgets('Testing Dropdowns', (tester) async {
|
||||
dynamic changedValue;
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
title: 'Dropdown testing',
|
||||
theme: kThemeDataLight,
|
||||
home: Scaffold(
|
||||
body: Center(
|
||||
child: Column(
|
||||
children: [
|
||||
DropdownButtonHttpMethod(
|
||||
method: HTTPVerb.post,
|
||||
onChanged: (value) {
|
||||
changedValue = value!;
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.byIcon(Icons.unfold_more_rounded), findsOneWidget);
|
||||
expect(find.byType(DropdownButton<HTTPVerb>), findsOneWidget);
|
||||
expect(
|
||||
(tester.widget(find.byType(DropdownButton<HTTPVerb>)) as DropdownButton)
|
||||
.value,
|
||||
equals(HTTPVerb.post));
|
||||
|
||||
await tester.tap(find.text('POST'));
|
||||
await tester.pump();
|
||||
await tester.pump(const Duration(seconds: 1));
|
||||
|
||||
await tester.tap(find.text('PUT').last);
|
||||
await tester.pump();
|
||||
await tester.pump(const Duration(seconds: 1));
|
||||
|
||||
expect(changedValue, HTTPVerb.put);
|
||||
});
|
||||
|
||||
testWidgets('Testing Dropdown for Content Type', (tester) async {
|
||||
dynamic changedValue;
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
title: 'Dropdown Content Type testing',
|
||||
theme: kThemeDataLight,
|
||||
home: Scaffold(
|
||||
body: Center(
|
||||
child: Column(
|
||||
children: [
|
||||
DropdownButtonContentType(
|
||||
contentType: ContentType.json,
|
||||
onChanged: (value) {
|
||||
changedValue = value!;
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.byIcon(Icons.unfold_more_rounded), findsOneWidget);
|
||||
expect(find.byType(DropdownButton<ContentType>), findsOneWidget);
|
||||
expect(
|
||||
(tester.widget(find.byType(DropdownButton<ContentType>))
|
||||
as DropdownButton)
|
||||
.value,
|
||||
equals(ContentType.json));
|
||||
|
||||
await tester.tap(find.text('json'));
|
||||
await tester.pump();
|
||||
await tester.pump(const Duration(seconds: 1));
|
||||
|
||||
await tester.tap(find.text('text').last);
|
||||
await tester.pump();
|
||||
await tester.pump(const Duration(seconds: 1));
|
||||
|
||||
expect(changedValue, ContentType.text);
|
||||
});
|
||||
|
||||
testWidgets('Testing Dropdown for FormData', (tester) async {
|
||||
dynamic changedValue;
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
title: 'Dropdown FormData Type testing',
|
||||
theme: kThemeDataLight,
|
||||
home: Scaffold(
|
||||
body: Center(
|
||||
child: Column(
|
||||
children: [
|
||||
DropdownButtonFormData(
|
||||
formDataType: FormDataType.file,
|
||||
onChanged: (value) {
|
||||
changedValue = value!;
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.byIcon(Icons.unfold_more_rounded), findsOneWidget);
|
||||
expect(find.byType(DropdownButton<FormDataType>), findsOneWidget);
|
||||
expect(
|
||||
(tester.widget(find.byType(DropdownButton<FormDataType>))
|
||||
as DropdownButton)
|
||||
.value,
|
||||
equals(FormDataType.file));
|
||||
|
||||
await tester.tap(find.text('file'));
|
||||
await tester.pump();
|
||||
await tester.pump(const Duration(seconds: 1));
|
||||
|
||||
await tester.tap(find.text('text').last);
|
||||
await tester.pump();
|
||||
await tester.pump(const Duration(seconds: 1));
|
||||
|
||||
expect(changedValue, FormDataType.text);
|
||||
});
|
||||
|
||||
testWidgets('Testing Dropdown for Codegen', (tester) async {
|
||||
dynamic changedValue;
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
title: 'Dropdown Codegen Type testing',
|
||||
theme: kThemeDataLight,
|
||||
home: Scaffold(
|
||||
body: Center(
|
||||
child: Column(
|
||||
children: [
|
||||
DropdownButtonCodegenLanguage(
|
||||
codegenLanguage: CodegenLanguage.curl,
|
||||
onChanged: (value) {
|
||||
changedValue = value!;
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
expect(find.byIcon(Icons.unfold_more_rounded), findsOneWidget);
|
||||
expect(find.byType(DropdownButton<CodegenLanguage>), findsOneWidget);
|
||||
expect(
|
||||
(tester.widget(find.byType(DropdownButton<CodegenLanguage>))
|
||||
as DropdownButton)
|
||||
.value,
|
||||
equals(CodegenLanguage.curl));
|
||||
|
||||
await tester.tap(find.text('cURL'));
|
||||
await tester.pump();
|
||||
await tester.pump(const Duration(seconds: 1));
|
||||
|
||||
await tester.tap(find.text('Dart (dio)').last);
|
||||
await tester.pump();
|
||||
await tester.pump(const Duration(seconds: 1));
|
||||
|
||||
expect(changedValue, CodegenLanguage.dartDio);
|
||||
});
|
||||
}
|
Reference in New Issue
Block a user