refactoring

This commit is contained in:
Ankit Mahato
2025-03-30 03:21:21 +05:30
parent ae911a3765
commit e93c611a95
7 changed files with 78 additions and 83 deletions

View File

@ -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));

View File

@ -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';

View File

@ -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) {

View File

@ -103,7 +103,7 @@ class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
),
),
DataCell(
HeaderField(
EnvHeaderField(
keyId: "$selectedId-$index-headers-k-$seed",
initialValue: headerRows[index].name,
hintText: kHintAddName,

View File

@ -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);

View 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");
});
});
}

View File

@ -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 {