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

View File

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

View File

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

View File

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

View File

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

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