diff --git a/integration_test/desktop/his_request_test.dart b/integration_test/desktop/his_request_test.dart index ef62eef3..c371732c 100644 --- a/integration_test/desktop/his_request_test.dart +++ b/integration_test/desktop/his_request_test.dart @@ -1,20 +1,19 @@ import 'dart:ui'; -import 'package:apidash/screens/history/history_pane.dart'; -import 'package:apidash/screens/history/history_requests.dart'; -import 'package:apidash/widgets/widgets.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:spot/spot.dart'; import 'package:apidash/app.dart'; import 'package:apidash/consts.dart'; +import 'package:apidash/widgets/widgets.dart'; +import 'package:apidash/screens/history/history_pane.dart'; import '../../test/extensions/widget_tester_extensions.dart'; import '../test_helper.dart'; void main() async { await ApidashTestHelper.initialize( size: Size(kExpandedWindowWidth, kMinWindowSize.height)); - apidashWidgetTest("Testing Environment Manager in desktop end-to-end", + apidashWidgetTest("Testing History of Requests in desktop end-to-end", (WidgetTester tester, helper) async { await tester.pumpUntilFound(find.byType(DashApp)); await Future.delayed(const Duration(seconds: 1)); @@ -22,7 +21,7 @@ void main() async { /// Create New Request await helper.reqHelper.addRequest( "https://api.apidash.dev/humanize/social", - name: "Social", + name: "test-his-name", params: [("num", "870000")], ); await Future.delayed(const Duration(milliseconds: 200)); @@ -33,8 +32,7 @@ void main() async { var sidebarCards = spot().spot().finder; final initSidebarCardCount = tester.widgetList(sidebarCards).length; - var historyCards = - spot().spot().finder; + var historyCards = find.byType(HistoryRequestCard, skipOffstage: false); final initHistoryCardCount = tester.widgetList(historyCards).length; @@ -43,8 +41,8 @@ void main() async { await Future.delayed(const Duration(milliseconds: 200)); await helper.reqHelper.addRequest( "https://api.apidash.dev/convert/leet", - name: "Social", - params: [("text", "870000")], + name: "test-his-name", + params: [("text", "apidash")], ); await Future.delayed(const Duration(milliseconds: 200)); await helper.reqHelper.sendRequest(); @@ -54,7 +52,7 @@ void main() async { sidebarCards = spot().spot().finder; final newSidebarCardCount = tester.widgetList(sidebarCards).length; - historyCards = spot().spot().finder; + historyCards = find.byType(HistoryRequestCard, skipOffstage: false); final newHistoryCardCount = tester.widgetList(historyCards).length; expect(newSidebarCardCount, initSidebarCardCount); diff --git a/integration_test/mobile/env_manager_test.dart b/integration_test/mobile/env_manager_test.dart index 80ea165b..12d99d4b 100644 --- a/integration_test/mobile/env_manager_test.dart +++ b/integration_test/mobile/env_manager_test.dart @@ -22,7 +22,7 @@ void main() async { await ApidashTestHelper.initialize( size: Size(kCompactWindowWidth, kMinWindowSize.height)); - apidashWidgetTest("Testing Environment Manager in desktop end-to-end", + apidashWidgetTest("Testing Environment Manager in mobile end-to-end", (WidgetTester tester, helper) async { await tester.pumpUntilFound(find.byType(DashApp)); await Future.delayed(const Duration(seconds: 1)); diff --git a/integration_test/mobile/his_request_test.dart b/integration_test/mobile/his_request_test.dart new file mode 100644 index 00000000..9716f62f --- /dev/null +++ b/integration_test/mobile/his_request_test.dart @@ -0,0 +1,78 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:spot/spot.dart'; +import 'package:apidash/app.dart'; +import 'package:apidash/consts.dart'; +import 'package:apidash/widgets/widgets.dart'; +import 'package:apidash/screens/history/history_pane.dart'; +import 'package:apidash/screens/history/history_widgets/history_widgets.dart'; +import '../../test/extensions/widget_tester_extensions.dart'; +import '../test_helper.dart'; + +void main() async { + await ApidashTestHelper.initialize( + size: Size(kCompactWindowWidth, kMinWindowSize.height)); + apidashWidgetTest("Testing History of Requests in mobile end-to-end", + (WidgetTester tester, helper) async { + await tester.pumpUntilFound(find.byType(DashApp)); + await Future.delayed(const Duration(seconds: 1)); + + /// Create New Request + await helper.reqHelper.addRequest( + "https://api.apidash.dev/humanize/social", + name: "test-his-name", + params: [("num", "870000")], + isMobile: true, + ); + await Future.delayed(const Duration(milliseconds: 200)); + await helper.reqHelper.sendRequest(); + await helper.reqHelper.sendRequest(); + + /// Navigate to History + await helper.navigateToHistory(scaffoldKey: kHomeScaffoldKey); + kHisScaffoldKey.currentState!.openDrawer(); + var sidebarCards = spot().spot().finder; + final initSidebarCardCount = + tester.widgetList(sidebarCards).length; + kHisScaffoldKey.currentState!.closeDrawer(); + + await act.tap( + spot().spotIcon(Icons.keyboard_arrow_up_rounded)); + await tester.pumpAndSettle(); + var historyCards = find.byType(HistoryRequestCard, skipOffstage: false); + final initHistoryCardCount = + tester.widgetList(historyCards).length; + await tester.tapAt(const Offset(100, 100)); + await tester.pumpAndSettle(); + + /// Send another request with same name + await helper.navigateToRequestEditor(scaffoldKey: kHisScaffoldKey); + await Future.delayed(const Duration(milliseconds: 200)); + await helper.reqHelper.addRequest( + "https://api.apidash.dev/convert/leet", + name: "test-his-name", + params: [("text", "apidash")], + isMobile: true, + ); + await Future.delayed(const Duration(milliseconds: 200)); + await helper.reqHelper.sendRequest(); + + /// Check history Card counts + await helper.navigateToHistory(scaffoldKey: kHomeScaffoldKey); + sidebarCards = spot().spot().finder; + final newSidebarCardCount = + tester.widgetList(sidebarCards).length; + kHisScaffoldKey.currentState!.closeDrawer(); + + await act.tap( + spot().spotIcon(Icons.keyboard_arrow_up_rounded)); + await tester.pumpAndSettle(); + historyCards = find.byType(HistoryRequestCard, skipOffstage: false); + final newHistoryCardCount = + tester.widgetList(historyCards).length; + await tester.tapAt(const Offset(100, 100)); + await tester.pumpAndSettle(); + expect(newSidebarCardCount, initSidebarCardCount); + expect(newHistoryCardCount, initHistoryCardCount + 1); + }); +} diff --git a/integration_test/req_helper.dart b/integration_test/req_helper.dart index af0b7f3e..ecc9c403 100644 --- a/integration_test/req_helper.dart +++ b/integration_test/req_helper.dart @@ -120,8 +120,8 @@ class ApidashTestRequestHelper { await setRequestMethod(method); } await addRequestURL(url); - await addRequestParams(params); - await addRequestHeaders(headers); + if (params.isNotEmpty) await addRequestParams(params); + if (headers.isNotEmpty) await addRequestHeaders(headers); } Future sendRequest( diff --git a/lib/providers/history_providers.dart b/lib/providers/history_providers.dart index 6f5d23df..06d2ab13 100644 --- a/lib/providers/history_providers.dart +++ b/lib/providers/history_providers.dart @@ -87,5 +87,6 @@ class HistoryMetaStateNotifier hiveHandler.setHistoryIds(updatedHistoryKeys); hiveHandler.setHistoryMeta(id, model.metaData.toJson()); await hiveHandler.setHistoryRequest(id, model.toJson()); + await loadHistoryRequest(id); } } diff --git a/lib/screens/history/history_details.dart b/lib/screens/history/history_details.dart index 6e12b422..35d00819 100644 --- a/lib/screens/history/history_details.dart +++ b/lib/screens/history/history_details.dart @@ -18,6 +18,7 @@ class _HistoryDetailsState extends ConsumerState with TickerProviderStateMixin { @override Widget build(BuildContext context) { + ref.watch(historySequenceProvider); final selectedHistoryRequest = ref.watch(selectedHistoryRequestModelProvider); final codePaneVisible = ref.watch(historyCodePaneVisibleStateProvider);