From 546f84a009e3308fd8911ddafb723479bb34e6f1 Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Mon, 9 Dec 2024 10:15:57 -0300 Subject: [PATCH 1/7] fix: timeout in GetLocals.. --- lib/backend/api_requests/api_calls.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/backend/api_requests/api_calls.dart b/lib/backend/api_requests/api_calls.dart index aea6aa68..ab81afc1 100644 --- a/lib/backend/api_requests/api_calls.dart +++ b/lib/backend/api_requests/api_calls.dart @@ -953,7 +953,7 @@ class GetLocalsCall { cache: false, isStreamingApi: false, alwaysAllowBody: false, - ); + ).timeout(const Duration(seconds: 30)); } List? locais(dynamic response) => getJsonField( From 7a34785655a89efb86e0343322276e5c50d0993e Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Mon, 9 Dec 2024 10:18:41 -0300 Subject: [PATCH 2/7] fix timeout --- lib/backend/api_requests/api_calls.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/backend/api_requests/api_calls.dart b/lib/backend/api_requests/api_calls.dart index ab81afc1..1b9a9a9f 100644 --- a/lib/backend/api_requests/api_calls.dart +++ b/lib/backend/api_requests/api_calls.dart @@ -953,7 +953,7 @@ class GetLocalsCall { cache: false, isStreamingApi: false, alwaysAllowBody: false, - ).timeout(const Duration(seconds: 30)); + ); } List? locais(dynamic response) => getJsonField( @@ -1380,7 +1380,7 @@ class GetDadosCall { cache: false, isStreamingApi: false, alwaysAllowBody: false, - ); + ).timeout(const Duration(seconds: 30)); } bool? errorBolean(dynamic response) => castToType(getJsonField( From ea18bee7c59187fb2c3329fcb4e26f020624909c Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Mon, 9 Dec 2024 10:24:01 -0300 Subject: [PATCH 3/7] =?UTF-8?q?debit:=20nome=20da=20propriedade=20nas=20te?= =?UTF-8?q?las=20de=20agendamento=20provis=C3=B3rio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../provisional_schedule_template_model.dart | 5 ++--- .../provisional_shcedule_template_widget.dart | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/components/templates_components/provisional_schedule_template/provisional_schedule_template_model.dart b/lib/components/templates_components/provisional_schedule_template/provisional_schedule_template_model.dart index 8ec62766..95937bac 100644 --- a/lib/components/templates_components/provisional_schedule_template/provisional_schedule_template_model.dart +++ b/lib/components/templates_components/provisional_schedule_template/provisional_schedule_template_model.dart @@ -11,7 +11,7 @@ class ScheduleProvisionalVisitPageModel extends FlutterFlowModel Date: Mon, 9 Dec 2024 16:25:32 -0300 Subject: [PATCH 4/7] fix: status da visitas em aberto --- lib/pages/visits_on_the_property/model.dart | 19 +++++++++++-------- .../visits_on_the_property_screen.dart | 4 ++-- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/lib/pages/visits_on_the_property/model.dart b/lib/pages/visits_on_the_property/model.dart index 9870b4bb..8a317179 100644 --- a/lib/pages/visits_on_the_property/model.dart +++ b/lib/pages/visits_on_the_property/model.dart @@ -75,13 +75,16 @@ class VisitsModel extends FlutterFlowModel { imagePath: 'https://freaccess.com.br/freaccess/getImage.php?devUUID=${devUUID}&cliID=${cliUUID}&atividade=getFoto&Documento=${item['VDO_DOCUMENTO']}&tipo=E', statusHashMap: [ - if (item['VTA_FIXA'] != null) - Map.from({ - item['VTA_FIXA'] - ? FFLocalizations.of(context).getVariableText(ptText: "Entrada Única", enText: "Single Entry") - : FFLocalizations.of(context).getVariableText( - ptText: "Entrada Recorrente", enText: "Recurrent Entry"): FlutterFlowTheme.of(context).warning - }), - ]); + Map.from({ + if (item['VTA_FIXA'] != null) + FFLocalizations.of(context).getVariableText( + ptText: item['VTA_FIXA'] ? "Entrada Única" : "Entrada Recorrente", + enText: item['VTA_FIXA'] ? "Single Entry" : "Recurrent Entry", + ): item['VTA_FIXA'] == true + ? FlutterFlowTheme.of(context).success + : FlutterFlowTheme.of(context).warning, + }) + ], + ); } } diff --git a/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart b/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart index b4a283eb..ddc81d31 100644 --- a/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart +++ b/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart @@ -232,14 +232,14 @@ class _VisitsOnThePropertyState extends State with TickerPr uItem['MOT_DESCRICAO'][0].toUpperCase() + uItem['MOT_DESCRICAO'].substring(1).toLowerCase(), }, statusHashMap: [ - if (uItem['VTA_FIXA'] == true) + if (uItem['VTA_FIXA'] == false) { FFLocalizations.of(context).getVariableText( ptText: 'Recorrente', enText: 'Recurrent', ): FlutterFlowTheme.of(context).warning, }, - if (uItem['VTA_FIXA'] == false) + if (uItem['VTA_FIXA'] == true) { FFLocalizations.of(context).getVariableText( ptText: 'Única', From 4e46edba867d1630e3eb3495787349702c6aeffe Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Mon, 9 Dec 2024 17:33:22 -0300 Subject: [PATCH 5/7] debit: nome do visitante no detalhe da visita em aberto --- lib/pages/visits_on_the_property/model.dart | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/pages/visits_on_the_property/model.dart b/lib/pages/visits_on_the_property/model.dart index 8a317179..357ab6dd 100644 --- a/lib/pages/visits_on_the_property/model.dart +++ b/lib/pages/visits_on_the_property/model.dart @@ -43,6 +43,11 @@ class VisitsModel extends FlutterFlowModel { return DetailsComponentWidget( buttons: [], labelsHashMap: Map.from({ + if (item['VTA_NOME'] != null && item['VTA_NOME'] != '') + '${FFLocalizations.of(context).getVariableText( + ptText: "Nome", + enText: "Name", + )}:': item['VTA_NOME'].toString().toUpperCase(), if (item['MOT_DESCRICAO'] != null && item['MOT_DESCRICAO'] != '') '${FFLocalizations.of(context).getVariableText( ptText: "Motivo", From 73527cf47839e559f5e7b0e092e90b4bc674ef75 Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Wed, 11 Dec 2024 10:39:25 -0300 Subject: [PATCH 6/7] wip: remove default image -> provisional history --- .../history/presentation/pages/provisional_history_page.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/features/history/presentation/pages/provisional_history_page.dart b/lib/features/history/presentation/pages/provisional_history_page.dart index 257ab6c8..7b4d5def 100644 --- a/lib/features/history/presentation/pages/provisional_history_page.dart +++ b/lib/features/history/presentation/pages/provisional_history_page.dart @@ -324,7 +324,7 @@ class ProvisionalHistoryState extends State { Widget _historyCardMoleculeWidget(BuildContext context, dynamic historyItem) { return CardItemTemplateComponentWidget( - imagePath: _imageUrlAtomWidget(historyItem['AGP_NOME'], 'P'), + imagePath: null, labelsHashMap: _buildLabelsHashMap(context, historyItem), statusHashMap: _buildStatusHashMap(context, historyItem), onTapCardItemAction: () async {}, From 3ee5aceb0165d761725cfa61e72b22f8ad44fb4f Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Wed, 11 Dec 2024 14:53:14 -0300 Subject: [PATCH 7/7] fix test --- {test => integration_test}/app_test.dart | 0 .../features/provisional_history_test.dart | 45 +++++++++ test/features/provisional_history_test.dart | 99 ------------------- 3 files changed, 45 insertions(+), 99 deletions(-) rename {test => integration_test}/app_test.dart (100%) create mode 100644 integration_test/features/provisional_history_test.dart delete mode 100644 test/features/provisional_history_test.dart diff --git a/test/app_test.dart b/integration_test/app_test.dart similarity index 100% rename from test/app_test.dart rename to integration_test/app_test.dart diff --git a/integration_test/features/provisional_history_test.dart b/integration_test/features/provisional_history_test.dart new file mode 100644 index 00000000..a95362d5 --- /dev/null +++ b/integration_test/features/provisional_history_test.dart @@ -0,0 +1,45 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:hub/components/templates_components/card_item_template_component/card_item_template_component_widget.dart'; +import 'package:hub/initialization.dart'; +import 'package:hub/main.dart' as app; +import 'package:hub/shared/helpers/storage/base_storage.dart'; +import 'package:hub/shared/helpers/storage/storage_helper.dart'; +import 'package:integration_test/integration_test.dart'; + +void main() { + IntegrationTestWidgetsFlutterBinding.ensureInitialized(); + + group('ProvisionalHistoryPage Integration Test', () { + setUpAll(() async => await initializeApp().then((_) async { + await StorageHelper().set(SecureStorageKey.isLogged.value, 'true'); + await StorageHelper().set(SecureStorageKey.haveLocal.value, 'true'); + await StorageHelper().set(KeychainStorageKey.devUUID.value, 'b5c3818753e76d85'); + await StorageHelper().set(KeychainStorageKey.userUUID.value, '649c45d7514a28.85876308'); + await StorageHelper().set(KeychainStorageKey.clientUUID.value, '7'); + })); + + testWidgets('Filter Provisional History', (WidgetTester tester) async { + app.main(); + await tester.pumpAndSettle(); + + final Finder menuButton = find.byIcon(Icons.person_search_outlined); + await tester.tap(menuButton); + await tester.pumpAndSettle(); + + final Finder filterButton = find.byIcon(Icons.filter_list); + await tester.tap(filterButton); + await tester.pumpAndSettle(); + + final Finder activeFilterOption = find.text('Active'); + await tester.tap(activeFilterOption); + await tester.pumpAndSettle(); + + final Finder applyFilterButton = find.text('Apply'); + await tester.tap(applyFilterButton); + await tester.pumpAndSettle(); + + expect(find.byType(CardItemTemplateComponentWidget), findsWidgets); + }); + }); +} diff --git a/test/features/provisional_history_test.dart b/test/features/provisional_history_test.dart deleted file mode 100644 index badecc75..00000000 --- a/test/features/provisional_history_test.dart +++ /dev/null @@ -1,99 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:hub/features/history/index.dart'; -import 'package:hub/initialization.dart'; -import 'package:hub/shared/helpers/storage/base_storage.dart'; -import 'package:hub/shared/helpers/storage/storage_helper.dart'; -import 'package:mockito/annotations.dart'; -import 'package:rxdart/rxdart.dart'; - -@GenerateMocks([ProvisionalHistoryPage]) -void main() { - group('ProvisionalHistoryPage Tests', () { - late BehaviorSubject> selectedTypeSubject; - setUpAll(() async => await initializeApp().then((_) async => await StorageHelper().set(SecureStorageKey.isLogged.value, 'true'))); - - setUp(() { - selectedTypeSubject = BehaviorSubject.seeded({'AGP_STATUS': '.*'}); - }); - - tearDown(() { - selectedTypeSubject.close(); - }); - - testWidgets('should display the app bar with title', (WidgetTester tester) async { - await tester.pumpWidget(MaterialApp(home: ProvisionalHistoryPage())); - - expect(find.text('Provisional History'), findsOneWidget); - }); - - testWidgets('should display the filter button', (WidgetTester tester) async { - await tester.pumpWidget(MaterialApp( - home: ProvisionalHistoryPage(), - )); - - expect(find.byIcon(Icons.filter_list), findsOneWidget); - }); - - testWidgets('should display the back button', (WidgetTester tester) async { - await tester.pumpWidget(MaterialApp( - home: ProvisionalHistoryPage(), - )); - - expect(find.byIcon(Icons.keyboard_arrow_left), findsOneWidget); - }); - - testWidgets('should display no history found message when no data', (WidgetTester tester) async { - await tester.pumpWidget(MaterialApp( - home: ProvisionalHistoryPage(), - )); - - expect(find.text('No history found!'), findsOneWidget); - }); - - testWidgets('should display loading indicator when fetching data', (WidgetTester tester) async { - await tester.pumpWidget(MaterialApp( - home: ProvisionalHistoryPage(), - )); - - expect(find.byType(CircularProgressIndicator), findsOneWidget); - }); - - testWidgets('should display history items when data is available', (WidgetTester tester) async { - await tester.pumpWidget(MaterialApp( - home: ProvisionalHistoryPage(), - )); - - final historyItem = { - 'AGP_NOME': 'John Doe', - 'AGP_DT_VISITA': '2023-10-01', - 'AGP_STATUS': 'AT', - }; - - final provisionalHistoryState = tester.state(find.byType(ProvisionalHistoryPage)) as ProvisionalHistoryState; - provisionalHistoryState.wrap.add(historyItem); - provisionalHistoryState.hasData = true; - - await tester.pump(); - - expect(find.text('John Doe'), findsOneWidget); - expect(find.text('2023-10-01'), findsOneWidget); - }); - - testWidgets('should update history when filter is applied', (WidgetTester tester) async { - await tester.pumpWidget(MaterialApp( - home: ProvisionalHistoryPage(), - )); - - await tester.tap(find.byIcon(Icons.filter_list)); - await tester.pumpAndSettle(); - - await tester.tap(find.text('Active')); - await tester.tap(find.text('Apply')); - await tester.pumpAndSettle(); - - final provisionalHistoryState = tester.state(find.byType(ProvisionalHistoryPage)) as ProvisionalHistoryState; - expect(provisionalHistoryState.status, 'AT'); - }); - }); -}