mirror of
https://github.com/foss42/apidash.git
synced 2025-12-06 04:56:16 +08:00
fix: tests
This commit is contained in:
@@ -32,7 +32,7 @@ class _HeaderFieldState extends State<HeaderField> {
|
|||||||
return EnvCellField(
|
return EnvCellField(
|
||||||
keyId: widget.keyId,
|
keyId: widget.keyId,
|
||||||
hintText: widget.hintText,
|
hintText: widget.hintText,
|
||||||
initialValue: widget.initialValue,
|
initialValue: widget.initialValue ?? "",
|
||||||
focusNode: focusNode,
|
focusNode: focusNode,
|
||||||
onChanged: widget.onChanged,
|
onChanged: widget.onChanged,
|
||||||
colorScheme: colorScheme,
|
colorScheme: colorScheme,
|
||||||
|
|||||||
@@ -1,90 +1,36 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_portal/flutter_portal.dart';
|
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:extended_text_field/extended_text_field.dart';
|
|
||||||
import 'package:apidash/screens/common_widgets/env_trigger_field.dart';
|
import 'package:apidash/screens/common_widgets/env_trigger_field.dart';
|
||||||
|
import 'package:multi_trigger_autocomplete/multi_trigger_autocomplete.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
testWidgets('Testing EnvironmentTriggerField updates the controller text',
|
|
||||||
(WidgetTester tester) async {
|
|
||||||
final fieldKey = GlobalKey<EnvironmentTriggerFieldState>();
|
|
||||||
const initialValue = 'initial';
|
|
||||||
const updatedValue = 'updated';
|
|
||||||
|
|
||||||
await tester.pumpWidget(
|
|
||||||
Portal(
|
|
||||||
child: MaterialApp(
|
|
||||||
home: Scaffold(
|
|
||||||
body: EnvironmentTriggerField(
|
|
||||||
key: fieldKey,
|
|
||||||
keyId: 'testKey',
|
|
||||||
initialValue: initialValue,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
Finder field = find.byType(ExtendedTextField);
|
|
||||||
expect(field, findsOneWidget);
|
|
||||||
expect(fieldKey.currentState!.controller.text, initialValue);
|
|
||||||
|
|
||||||
await tester.pumpWidget(
|
|
||||||
Portal(
|
|
||||||
child: MaterialApp(
|
|
||||||
home: Scaffold(
|
|
||||||
body: EnvironmentTriggerField(
|
|
||||||
key: fieldKey,
|
|
||||||
keyId: 'testKey',
|
|
||||||
initialValue: updatedValue,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
expect(fieldKey.currentState!.controller.text, updatedValue);
|
|
||||||
});
|
|
||||||
|
|
||||||
testWidgets(
|
testWidgets(
|
||||||
'Testing EnvironmentTriggerField with empty initialValue clears the controller text',
|
'EnvironmentTriggerField renders and displays MultiTriggerAutocomplete with triggers',
|
||||||
(WidgetTester tester) async {
|
(tester) async {
|
||||||
final fieldKey = GlobalKey<EnvironmentTriggerFieldState>();
|
final controller = TextEditingController();
|
||||||
const initialValue = 'initial';
|
final focusNode = FocusNode();
|
||||||
const emptyValue = '';
|
|
||||||
|
|
||||||
await tester.pumpWidget(
|
await tester.pumpWidget(
|
||||||
Portal(
|
Portal(
|
||||||
child: MaterialApp(
|
child: MaterialApp(
|
||||||
home: Scaffold(
|
home: Scaffold(
|
||||||
body: EnvironmentTriggerField(
|
body: EnvironmentTriggerField(
|
||||||
key: fieldKey,
|
|
||||||
keyId: 'testKey',
|
keyId: 'testKey',
|
||||||
initialValue: initialValue,
|
controller: controller,
|
||||||
|
focusNode: focusNode,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
Finder field = find.byType(ExtendedTextField);
|
final multiTriggerAutocomplete = find.byType(MultiTriggerAutocomplete);
|
||||||
expect(field, findsOneWidget);
|
expect(multiTriggerAutocomplete, findsOneWidget);
|
||||||
expect(fieldKey.currentState!.controller.text, initialValue);
|
final triggers = tester
|
||||||
|
.widget<MultiTriggerAutocomplete>(multiTriggerAutocomplete)
|
||||||
await tester.pumpWidget(
|
.autocompleteTriggers;
|
||||||
Portal(
|
expect(triggers.length, 2);
|
||||||
child: MaterialApp(
|
expect(triggers.first.trigger, '{');
|
||||||
home: Scaffold(
|
expect(triggers.elementAt(1).trigger, '{{');
|
||||||
body: EnvironmentTriggerField(
|
|
||||||
key: fieldKey,
|
|
||||||
keyId: 'testKey',
|
|
||||||
initialValue: emptyValue,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
expect(fieldKey.currentState!.controller.text, emptyValue);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,24 +1,106 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
|
||||||
import 'package:apidash/widgets/field_header.dart';
|
import 'package:apidash/widgets/field_header.dart';
|
||||||
|
import 'package:extended_text_field/extended_text_field.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_portal/flutter_portal.dart';
|
||||||
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
import 'package:spot/spot.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
testWidgets('Testing Header Field', (tester) async {
|
group('HeaderField Widget Tests', () {
|
||||||
|
testWidgets('HeaderField renders and displays ExtendedTextField',
|
||||||
|
(tester) async {
|
||||||
await tester.pumpWidget(
|
await tester.pumpWidget(
|
||||||
const MaterialApp(
|
const Portal(
|
||||||
title: 'Header Field',
|
child: MaterialApp(
|
||||||
home: Scaffold(
|
home: Scaffold(
|
||||||
body: Column(children: [
|
body: HeaderField(
|
||||||
HeaderField(
|
keyId: "testKey",
|
||||||
keyId: "1",
|
hintText: "Enter header",
|
||||||
initialValue: "X",
|
),
|
||||||
)
|
),
|
||||||
]),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(find.byKey(const Key("1")), findsOneWidget);
|
spot<HeaderField>().spot<ExtendedTextField>().existsOnce();
|
||||||
expect(find.text('X'), findsOneWidget);
|
});
|
||||||
|
|
||||||
|
testWidgets('HeaderField calls onChanged when text changes',
|
||||||
|
(tester) async {
|
||||||
|
String? changedText;
|
||||||
|
await tester.pumpWidget(
|
||||||
|
Portal(
|
||||||
|
child: MaterialApp(
|
||||||
|
home: Scaffold(
|
||||||
|
body: HeaderField(
|
||||||
|
keyId: "testKey",
|
||||||
|
hintText: "Enter header",
|
||||||
|
onChanged: (text) => changedText = text,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
await act.tap(spot<HeaderField>().spot<ExtendedTextField>());
|
||||||
|
tester.testTextInput.enterText("new header");
|
||||||
|
expect(changedText, "new header");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
group('HeaderSuggestions Widget Tests', () {
|
||||||
|
testWidgets('HeaderSuggestions displays suggestions correctly',
|
||||||
|
(tester) async {
|
||||||
|
await tester.pumpWidget(
|
||||||
|
MaterialApp(
|
||||||
|
home: HeaderSuggestions(
|
||||||
|
query: "header",
|
||||||
|
suggestionsCallback: (query) async => ["header1", "header2"],
|
||||||
|
onSuggestionTap: (suggestion) {
|
||||||
|
expect(suggestion, "header1");
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
await tester.pumpAndSettle();
|
||||||
|
expect(find.byType(ListTile), findsNWidgets(2));
|
||||||
|
expect(find.text("header1"), findsOneWidget);
|
||||||
|
expect(find.text("header2"), findsOneWidget);
|
||||||
|
});
|
||||||
|
|
||||||
|
testWidgets('HeaderSuggestions calls onSuggestionTap when tapped',
|
||||||
|
(tester) async {
|
||||||
|
String? selectedSuggestion;
|
||||||
|
await tester.pumpWidget(
|
||||||
|
MaterialApp(
|
||||||
|
home: HeaderSuggestions(
|
||||||
|
query: "header",
|
||||||
|
suggestionsCallback: (query) async => ["header1"],
|
||||||
|
onSuggestionTap: (suggestion) => selectedSuggestion = suggestion,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
await tester.pumpAndSettle();
|
||||||
|
await tester.tap(find.text("header1"));
|
||||||
|
expect(selectedSuggestion, "header1");
|
||||||
|
});
|
||||||
|
|
||||||
|
testWidgets('HeaderSuggestions shows no suggestions when list is empty',
|
||||||
|
(tester) async {
|
||||||
|
await tester.pumpWidget(
|
||||||
|
MaterialApp(
|
||||||
|
home: HeaderSuggestions(
|
||||||
|
query: "test",
|
||||||
|
suggestionsCallback: (query) async => [],
|
||||||
|
onSuggestionTap: (suggestion) {},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
await tester.pumpAndSettle();
|
||||||
|
expect(find.byType(ListTile), findsNothing);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user