diff --git a/integration_test/req_helper.dart b/integration_test/req_helper.dart index 4a18745a..b16a89a8 100644 --- a/integration_test/req_helper.dart +++ b/integration_test/req_helper.dart @@ -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)); diff --git a/lib/screens/common_widgets/common_widgets.dart b/lib/screens/common_widgets/common_widgets.dart index 1d316fd7..fc4c66b8 100644 --- a/lib/screens/common_widgets/common_widgets.dart +++ b/lib/screens/common_widgets/common_widgets.dart @@ -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'; diff --git a/lib/screens/common_widgets/field_header.dart b/lib/screens/common_widgets/envfield_header.dart similarity index 89% rename from lib/screens/common_widgets/field_header.dart rename to lib/screens/common_widgets/envfield_header.dart index 4096e915..5975f1ad 100644 --- a/lib/screens/common_widgets/field_header.dart +++ b/lib/screens/common_widgets/envfield_header.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 createState() => _HeaderFieldState(); + State createState() => _EnvHeaderFieldState(); } -class _HeaderFieldState extends State { +class _EnvHeaderFieldState extends State { final FocusNode focusNode = FocusNode(); @override Widget build(BuildContext context) { diff --git a/lib/screens/home_page/editor_pane/details_card/request_pane/request_headers.dart b/lib/screens/home_page/editor_pane/details_card/request_pane/request_headers.dart index 0f762611..658789a0 100644 --- a/lib/screens/home_page/editor_pane/details_card/request_pane/request_headers.dart +++ b/lib/screens/home_page/editor_pane/details_card/request_pane/request_headers.dart @@ -103,7 +103,7 @@ class EditRequestHeadersState extends ConsumerState { ), ), DataCell( - HeaderField( + EnvHeaderField( keyId: "$selectedId-$index-headers-k-$seed", initialValue: headerRows[index].name, hintText: kHintAddName, diff --git a/packages/apidash_core/lib/services/http_service.dart b/packages/apidash_core/lib/services/http_service.dart index e31e236e..73f82d9a 100644 --- a/packages/apidash_core/lib/services/http_service.dart +++ b/packages/apidash_core/lib/services/http_service.dart @@ -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); diff --git a/test/screens/common_widgets/envfield_header_test.dart b/test/screens/common_widgets/envfield_header_test.dart new file mode 100644 index 00000000..776648dd --- /dev/null +++ b/test/screens/common_widgets/envfield_header_test.dart @@ -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().spot().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().spot()); + tester.testTextInput.enterText("new header"); + expect(changedText, "new header"); + }); + }); +} diff --git a/test/widgets/field_header_test.dart b/test/widgets/menu_header_suggestions_test.dart similarity index 57% rename from test/widgets/field_header_test.dart rename to test/widgets/menu_header_suggestions_test.dart index cea49206..1c8ed3bf 100644 --- a/test/widgets/field_header_test.dart +++ b/test/widgets/menu_header_suggestions_test.dart @@ -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().spot().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().spot()); - tester.testTextInput.enterText("new header"); - expect(changedText, "new header"); - }); - }); - group('HeaderSuggestions Widget Tests', () { testWidgets('HeaderSuggestions displays suggestions correctly', (tester) async {