mirror of
https://github.com/foss42/apidash.git
synced 2025-08-06 13:51:20 +08:00
refactoring
This commit is contained in:
@ -84,7 +84,7 @@ class ApidashTestRequestHelper {
|
|||||||
|
|
||||||
var headerCells = find.descendant(
|
var headerCells = find.descendant(
|
||||||
of: find.byType(EditRequestHeaders),
|
of: find.byType(EditRequestHeaders),
|
||||||
matching: find.byType(HeaderField));
|
matching: find.byType(EnvHeaderField));
|
||||||
var valueCells = find.descendant(
|
var valueCells = find.descendant(
|
||||||
of: find.byType(EditRequestHeaders),
|
of: find.byType(EditRequestHeaders),
|
||||||
matching: find.byType(EnvCellField));
|
matching: find.byType(EnvCellField));
|
||||||
@ -95,7 +95,7 @@ class ApidashTestRequestHelper {
|
|||||||
tester.testTextInput.enterText(keyValuePairs[i].$2);
|
tester.testTextInput.enterText(keyValuePairs[i].$2);
|
||||||
headerCells = find.descendant(
|
headerCells = find.descendant(
|
||||||
of: find.byType(EditRequestHeaders),
|
of: find.byType(EditRequestHeaders),
|
||||||
matching: find.byType(HeaderField));
|
matching: find.byType(EnvHeaderField));
|
||||||
valueCells = find.descendant(
|
valueCells = find.descendant(
|
||||||
of: find.byType(EditRequestHeaders),
|
of: find.byType(EditRequestHeaders),
|
||||||
matching: find.byType(EnvCellField));
|
matching: find.byType(EnvCellField));
|
||||||
|
@ -1,16 +1,18 @@
|
|||||||
export 'api_type_dropdown.dart';
|
export 'api_type_dropdown.dart';
|
||||||
export 'button_navbar.dart';
|
export 'button_navbar.dart';
|
||||||
export 'code_pane.dart';
|
export 'code_pane.dart';
|
||||||
export 'editor_title.dart';
|
|
||||||
export 'editor_title_actions.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_cell.dart';
|
||||||
|
export 'envfield_header.dart';
|
||||||
|
export 'envfield_url.dart';
|
||||||
export 'environment_dropdown.dart';
|
export 'environment_dropdown.dart';
|
||||||
export 'envvar_indicator.dart';
|
export 'envvar_indicator.dart';
|
||||||
export 'envvar_span.dart';
|
|
||||||
export 'envvar_popover.dart';
|
export 'envvar_popover.dart';
|
||||||
export 'env_trigger_options.dart';
|
export 'envvar_span.dart';
|
||||||
export 'field_header.dart';
|
|
||||||
export 'sidebar_filter.dart';
|
export 'sidebar_filter.dart';
|
||||||
export 'sidebar_header.dart';
|
export 'sidebar_header.dart';
|
||||||
export 'sidebar_save_button.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 'package:apidash/utils/utils.dart';
|
||||||
import 'envfield_cell.dart';
|
import 'envfield_cell.dart';
|
||||||
|
|
||||||
class HeaderField extends StatefulWidget {
|
class EnvHeaderField extends StatefulWidget {
|
||||||
const HeaderField({
|
const EnvHeaderField({
|
||||||
super.key,
|
super.key,
|
||||||
required this.keyId,
|
required this.keyId,
|
||||||
this.hintText,
|
this.hintText,
|
||||||
@ -20,10 +20,10 @@ class HeaderField extends StatefulWidget {
|
|||||||
final ColorScheme? colorScheme;
|
final ColorScheme? colorScheme;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<HeaderField> createState() => _HeaderFieldState();
|
State<EnvHeaderField> createState() => _EnvHeaderFieldState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _HeaderFieldState extends State<HeaderField> {
|
class _EnvHeaderFieldState extends State<EnvHeaderField> {
|
||||||
final FocusNode focusNode = FocusNode();
|
final FocusNode focusNode = FocusNode();
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
@ -103,7 +103,7 @@ class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
DataCell(
|
DataCell(
|
||||||
HeaderField(
|
EnvHeaderField(
|
||||||
keyId: "$selectedId-$index-headers-k-$seed",
|
keyId: "$selectedId-$index-headers-k-$seed",
|
||||||
initialValue: headerRows[index].name,
|
initialValue: headerRows[index].name,
|
||||||
hintText: kHintAddName,
|
hintText: kHintAddName,
|
||||||
|
@ -19,7 +19,7 @@ Future<(HttpResponse?, Duration?, String?)> sendHttpRequest(
|
|||||||
SupportedUriSchemes defaultUriScheme = kDefaultUriScheme,
|
SupportedUriSchemes defaultUriScheme = kDefaultUriScheme,
|
||||||
bool noSSL = false,
|
bool noSSL = false,
|
||||||
}) async {
|
}) async {
|
||||||
if(httpClientManager.wasRequestCancelled(requestId)){
|
if (httpClientManager.wasRequestCancelled(requestId)) {
|
||||||
httpClientManager.removeCancelledRequest(requestId);
|
httpClientManager.removeCancelledRequest(requestId);
|
||||||
}
|
}
|
||||||
final client = httpClientManager.createClient(requestId, noSSL: noSSL);
|
final client = httpClientManager.createClient(requestId, noSSL: noSSL);
|
||||||
@ -82,30 +82,19 @@ Future<(HttpResponse?, Duration?, String?)> sendHttpRequest(
|
|||||||
return (convertedMultiPartResponse, stopwatch.elapsed, null);
|
return (convertedMultiPartResponse, stopwatch.elapsed, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
switch (requestModel.method) {
|
response = switch (requestModel.method) {
|
||||||
case HTTPVerb.get:
|
HTTPVerb.get => await client.get(requestUrl, headers: headers),
|
||||||
response = await client.get(requestUrl, headers: headers);
|
HTTPVerb.head => response =
|
||||||
break;
|
await client.head(requestUrl, headers: headers),
|
||||||
case HTTPVerb.head:
|
HTTPVerb.post => response =
|
||||||
response = await client.head(requestUrl, headers: headers);
|
await client.post(requestUrl, headers: headers, body: body),
|
||||||
break;
|
HTTPVerb.put => response =
|
||||||
case HTTPVerb.post:
|
await client.put(requestUrl, headers: headers, body: body),
|
||||||
response =
|
HTTPVerb.patch => response =
|
||||||
await client.post(requestUrl, headers: headers, body: body);
|
await client.patch(requestUrl, headers: headers, body: body),
|
||||||
break;
|
HTTPVerb.delete => response =
|
||||||
case HTTPVerb.put:
|
await client.delete(requestUrl, headers: headers, body: body),
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (apiType == APIType.graphql) {
|
if (apiType == APIType.graphql) {
|
||||||
var requestBody = getGraphQLBody(requestModel);
|
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:apidash/widgets/menu_header_suggestions.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_test/flutter_test.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() {
|
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', () {
|
group('HeaderSuggestions Widget Tests', () {
|
||||||
testWidgets('HeaderSuggestions displays suggestions correctly',
|
testWidgets('HeaderSuggestions displays suggestions correctly',
|
||||||
(tester) async {
|
(tester) async {
|
Reference in New Issue
Block a user