mirror of
https://github.com/foss42/apidash.git
synced 2025-05-17 22:36:16 +08:00
refactoring
This commit is contained in:
@ -84,7 +84,7 @@ class ApidashTestRequestHelper {
|
||||
|
||||
var headerCells = find.descendant(
|
||||
of: find.byType(EditRequestHeaders),
|
||||
matching: find.byType(HeaderField));
|
||||
matching: find.byType(EnvHeaderField));
|
||||
var valueCells = find.descendant(
|
||||
of: find.byType(EditRequestHeaders),
|
||||
matching: find.byType(EnvCellField));
|
||||
@ -95,7 +95,7 @@ class ApidashTestRequestHelper {
|
||||
tester.testTextInput.enterText(keyValuePairs[i].$2);
|
||||
headerCells = find.descendant(
|
||||
of: find.byType(EditRequestHeaders),
|
||||
matching: find.byType(HeaderField));
|
||||
matching: find.byType(EnvHeaderField));
|
||||
valueCells = find.descendant(
|
||||
of: find.byType(EditRequestHeaders),
|
||||
matching: find.byType(EnvCellField));
|
||||
|
@ -1,16 +1,18 @@
|
||||
export 'api_type_dropdown.dart';
|
||||
export 'button_navbar.dart';
|
||||
export 'code_pane.dart';
|
||||
export 'editor_title.dart';
|
||||
export 'editor_title_actions.dart';
|
||||
export 'envfield_url.dart';
|
||||
export 'editor_title.dart';
|
||||
export 'env_regexp_span_builder.dart';
|
||||
export 'env_trigger_field.dart';
|
||||
export 'env_trigger_options.dart';
|
||||
export 'envfield_cell.dart';
|
||||
export 'envfield_header.dart';
|
||||
export 'envfield_url.dart';
|
||||
export 'environment_dropdown.dart';
|
||||
export 'envvar_indicator.dart';
|
||||
export 'envvar_span.dart';
|
||||
export 'envvar_popover.dart';
|
||||
export 'env_trigger_options.dart';
|
||||
export 'field_header.dart';
|
||||
export 'envvar_span.dart';
|
||||
export 'sidebar_filter.dart';
|
||||
export 'sidebar_header.dart';
|
||||
export 'sidebar_save_button.dart';
|
||||
|
@ -4,8 +4,8 @@ import 'package:multi_trigger_autocomplete_plus/multi_trigger_autocomplete_plus.
|
||||
import 'package:apidash/utils/utils.dart';
|
||||
import 'envfield_cell.dart';
|
||||
|
||||
class HeaderField extends StatefulWidget {
|
||||
const HeaderField({
|
||||
class EnvHeaderField extends StatefulWidget {
|
||||
const EnvHeaderField({
|
||||
super.key,
|
||||
required this.keyId,
|
||||
this.hintText,
|
||||
@ -20,10 +20,10 @@ class HeaderField extends StatefulWidget {
|
||||
final ColorScheme? colorScheme;
|
||||
|
||||
@override
|
||||
State<HeaderField> createState() => _HeaderFieldState();
|
||||
State<EnvHeaderField> createState() => _EnvHeaderFieldState();
|
||||
}
|
||||
|
||||
class _HeaderFieldState extends State<HeaderField> {
|
||||
class _EnvHeaderFieldState extends State<EnvHeaderField> {
|
||||
final FocusNode focusNode = FocusNode();
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
@ -103,7 +103,7 @@ class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
|
||||
),
|
||||
),
|
||||
DataCell(
|
||||
HeaderField(
|
||||
EnvHeaderField(
|
||||
keyId: "$selectedId-$index-headers-k-$seed",
|
||||
initialValue: headerRows[index].name,
|
||||
hintText: kHintAddName,
|
||||
|
@ -19,7 +19,7 @@ Future<(HttpResponse?, Duration?, String?)> sendHttpRequest(
|
||||
SupportedUriSchemes defaultUriScheme = kDefaultUriScheme,
|
||||
bool noSSL = false,
|
||||
}) async {
|
||||
if(httpClientManager.wasRequestCancelled(requestId)){
|
||||
if (httpClientManager.wasRequestCancelled(requestId)) {
|
||||
httpClientManager.removeCancelledRequest(requestId);
|
||||
}
|
||||
final client = httpClientManager.createClient(requestId, noSSL: noSSL);
|
||||
@ -82,30 +82,19 @@ Future<(HttpResponse?, Duration?, String?)> sendHttpRequest(
|
||||
return (convertedMultiPartResponse, stopwatch.elapsed, null);
|
||||
}
|
||||
}
|
||||
switch (requestModel.method) {
|
||||
case HTTPVerb.get:
|
||||
response = await client.get(requestUrl, headers: headers);
|
||||
break;
|
||||
case HTTPVerb.head:
|
||||
response = await client.head(requestUrl, headers: headers);
|
||||
break;
|
||||
case HTTPVerb.post:
|
||||
response =
|
||||
await client.post(requestUrl, headers: headers, body: body);
|
||||
break;
|
||||
case HTTPVerb.put:
|
||||
response =
|
||||
await client.put(requestUrl, headers: headers, body: body);
|
||||
break;
|
||||
case HTTPVerb.patch:
|
||||
response =
|
||||
await client.patch(requestUrl, headers: headers, body: body);
|
||||
break;
|
||||
case HTTPVerb.delete:
|
||||
response =
|
||||
await client.delete(requestUrl, headers: headers, body: body);
|
||||
break;
|
||||
}
|
||||
response = switch (requestModel.method) {
|
||||
HTTPVerb.get => await client.get(requestUrl, headers: headers),
|
||||
HTTPVerb.head => response =
|
||||
await client.head(requestUrl, headers: headers),
|
||||
HTTPVerb.post => response =
|
||||
await client.post(requestUrl, headers: headers, body: body),
|
||||
HTTPVerb.put => response =
|
||||
await client.put(requestUrl, headers: headers, body: body),
|
||||
HTTPVerb.patch => response =
|
||||
await client.patch(requestUrl, headers: headers, body: body),
|
||||
HTTPVerb.delete => response =
|
||||
await client.delete(requestUrl, headers: headers, body: body),
|
||||
};
|
||||
}
|
||||
if (apiType == APIType.graphql) {
|
||||
var requestBody = getGraphQLBody(requestModel);
|
||||
|
50
test/screens/common_widgets/envfield_header_test.dart
Normal file
50
test/screens/common_widgets/envfield_header_test.dart
Normal file
@ -0,0 +1,50 @@
|
||||
import 'package:apidash/screens/common_widgets/envfield_header.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:flutter_portal/flutter_portal.dart';
|
||||
import 'package:extended_text_field/extended_text_field.dart';
|
||||
import 'package:spot/spot.dart';
|
||||
|
||||
void main() {
|
||||
group('HeaderField Widget Tests', () {
|
||||
testWidgets('HeaderField renders and displays ExtendedTextField',
|
||||
(tester) async {
|
||||
await tester.pumpWidget(
|
||||
const Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: EnvHeaderField(
|
||||
keyId: "testKey",
|
||||
hintText: "Enter header",
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
spot<EnvHeaderField>().spot<ExtendedTextField>().existsOnce();
|
||||
});
|
||||
|
||||
testWidgets('HeaderField calls onChanged when text changes',
|
||||
(tester) async {
|
||||
String? changedText;
|
||||
await tester.pumpWidget(
|
||||
Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: EnvHeaderField(
|
||||
keyId: "testKey",
|
||||
hintText: "Enter header",
|
||||
onChanged: (text) => changedText = text,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
await act.tap(spot<EnvHeaderField>().spot<ExtendedTextField>());
|
||||
tester.testTextInput.enterText("new header");
|
||||
expect(changedText, "new header");
|
||||
});
|
||||
});
|
||||
}
|
@ -1,54 +1,8 @@
|
||||
import 'package:apidash/screens/common_widgets/field_header.dart';
|
||||
import 'package:apidash/widgets/menu_header_suggestions.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:flutter_portal/flutter_portal.dart';
|
||||
import 'package:extended_text_field/extended_text_field.dart';
|
||||
import 'package:spot/spot.dart';
|
||||
|
||||
void main() {
|
||||
group('HeaderField Widget Tests', () {
|
||||
testWidgets('HeaderField renders and displays ExtendedTextField',
|
||||
(tester) async {
|
||||
await tester.pumpWidget(
|
||||
const Portal(
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: HeaderField(
|
||||
keyId: "testKey",
|
||||
hintText: "Enter header",
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
spot<HeaderField>().spot<ExtendedTextField>().existsOnce();
|
||||
});
|
||||
|
||||
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 {
|
Reference in New Issue
Block a user