From 063b9258c2b95aa60487c8dc4b13d023c7b8caef Mon Sep 17 00:00:00 2001
From: DenserMeerkat <mragulmanoharan@gmail.com>
Date: Wed, 21 Aug 2024 22:09:30 +0530
Subject: [PATCH] test: his_request_test mobile

---
 .../desktop/his_request_test.dart             | 18 ++---
 integration_test/mobile/env_manager_test.dart |  2 +-
 integration_test/mobile/his_request_test.dart | 78 +++++++++++++++++++
 integration_test/req_helper.dart              |  4 +-
 lib/providers/history_providers.dart          |  1 +
 lib/screens/history/history_details.dart      |  1 +
 6 files changed, 91 insertions(+), 13 deletions(-)
 create mode 100644 integration_test/mobile/his_request_test.dart

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<HistoryPane>().spot<SidebarHistoryCard>().finder;
     final initSidebarCardCount =
         tester.widgetList<SidebarHistoryCard>(sidebarCards).length;
-    var historyCards =
-        spot<HistoryRequests>().spot<HistoryRequestCard>().finder;
+    var historyCards = find.byType(HistoryRequestCard, skipOffstage: false);
     final initHistoryCardCount =
         tester.widgetList<HistoryRequestCard>(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<HistoryPane>().spot<SidebarHistoryCard>().finder;
     final newSidebarCardCount =
         tester.widgetList<SidebarHistoryCard>(sidebarCards).length;
-    historyCards = spot<HistoryRequests>().spot<HistoryRequestCard>().finder;
+    historyCards = find.byType(HistoryRequestCard, skipOffstage: false);
     final newHistoryCardCount =
         tester.widgetList<HistoryRequestCard>(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<HistoryPane>().spot<SidebarHistoryCard>().finder;
+    final initSidebarCardCount =
+        tester.widgetList<SidebarHistoryCard>(sidebarCards).length;
+    kHisScaffoldKey.currentState!.closeDrawer();
+
+    await act.tap(
+        spot<HistorySheetButton>().spotIcon(Icons.keyboard_arrow_up_rounded));
+    await tester.pumpAndSettle();
+    var historyCards = find.byType(HistoryRequestCard, skipOffstage: false);
+    final initHistoryCardCount =
+        tester.widgetList<HistoryRequestCard>(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<HistoryPane>().spot<SidebarHistoryCard>().finder;
+    final newSidebarCardCount =
+        tester.widgetList<SidebarHistoryCard>(sidebarCards).length;
+    kHisScaffoldKey.currentState!.closeDrawer();
+
+    await act.tap(
+        spot<HistorySheetButton>().spotIcon(Icons.keyboard_arrow_up_rounded));
+    await tester.pumpAndSettle();
+    historyCards = find.byType(HistoryRequestCard, skipOffstage: false);
+    final newHistoryCardCount =
+        tester.widgetList<HistoryRequestCard>(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<void> 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<HistoryDetails>
     with TickerProviderStateMixin {
   @override
   Widget build(BuildContext context) {
+    ref.watch(historySequenceProvider);
     final selectedHistoryRequest =
         ref.watch(selectedHistoryRequestModelProvider);
     final codePaneVisible = ref.watch(historyCodePaneVisibleStateProvider);