mirror of
https://github.com/foss42/apidash.git
synced 2025-05-22 08:46:33 +08:00
test: dialog tests
This commit is contained in:
@ -10,44 +10,81 @@ showRenameDialog(
|
|||||||
showDialog(
|
showDialog(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
final controller = TextEditingController(text: name ?? "");
|
return RenameDialogContent(
|
||||||
controller.selection =
|
dialogTitle: dialogTitle,
|
||||||
TextSelection(baseOffset: 0, extentOffset: controller.text.length);
|
onRename: onRename,
|
||||||
return AlertDialog(
|
name: name,
|
||||||
icon: const Icon(Icons.edit_rounded),
|
|
||||||
iconColor: Theme.of(context).colorScheme.primary,
|
|
||||||
title: Text(dialogTitle),
|
|
||||||
titleTextStyle: Theme.of(context).textTheme.titleLarge,
|
|
||||||
content: Container(
|
|
||||||
padding: kPt20,
|
|
||||||
width: 300,
|
|
||||||
child: TextField(
|
|
||||||
autofocus: true,
|
|
||||||
controller: controller,
|
|
||||||
decoration: const InputDecoration(
|
|
||||||
hintText: "Enter new name",
|
|
||||||
border: OutlineInputBorder(
|
|
||||||
borderRadius: kBorderRadius12,
|
|
||||||
)),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
actions: <Widget>[
|
|
||||||
TextButton(
|
|
||||||
onPressed: () {
|
|
||||||
Navigator.pop(context);
|
|
||||||
},
|
|
||||||
child: const Text('Cancel')),
|
|
||||||
TextButton(
|
|
||||||
onPressed: () {
|
|
||||||
final val = controller.text.trim();
|
|
||||||
onRename(val);
|
|
||||||
Navigator.pop(context);
|
|
||||||
Future.delayed(const Duration(milliseconds: 100), () {
|
|
||||||
controller.dispose();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
child: const Text('Ok')),
|
|
||||||
],
|
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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(widget.dialogTitle),
|
||||||
|
titleTextStyle: Theme.of(context).textTheme.titleLarge,
|
||||||
|
content: Container(
|
||||||
|
padding: kPt20,
|
||||||
|
width: 300,
|
||||||
|
child: TextField(
|
||||||
|
autofocus: true,
|
||||||
|
controller: controller,
|
||||||
|
decoration: const InputDecoration(
|
||||||
|
hintText: "Enter new name",
|
||||||
|
border: OutlineInputBorder(
|
||||||
|
borderRadius: kBorderRadius12,
|
||||||
|
)),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
actions: <Widget>[
|
||||||
|
TextButton(
|
||||||
|
onPressed: () {
|
||||||
|
Navigator.pop(context);
|
||||||
|
},
|
||||||
|
child: const Text('Cancel')),
|
||||||
|
TextButton(
|
||||||
|
onPressed: () {
|
||||||
|
final val = controller.text.trim();
|
||||||
|
widget.onRename(val);
|
||||||
|
Navigator.pop(context);
|
||||||
|
},
|
||||||
|
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