From 236b5cc81aa9b9e366819da20243d0dce83eca82 Mon Sep 17 00:00:00 2001 From: Andres Garcia Date: Sun, 29 May 2022 20:39:39 -0500 Subject: [PATCH 01/21] fixed bug test --- lib/ui/components/spinner_dialog.dart | 30 ++++++++-------- .../survey_result/survey_result_page.dart | 2 +- test/ui/pages/survey_result_page_test.dart | 36 +++++++++++++------ 3 files changed, 42 insertions(+), 26 deletions(-) diff --git a/lib/ui/components/spinner_dialog.dart b/lib/ui/components/spinner_dialog.dart index 5d6ae58b..d408790a 100644 --- a/lib/ui/components/spinner_dialog.dart +++ b/lib/ui/components/spinner_dialog.dart @@ -3,22 +3,24 @@ import '../helpers/helpers.dart'; import 'package:flutter/material.dart'; Future showLoading(BuildContext context) async { - await Future.delayed(Duration.zero); + // await Future.delayed(Duration.zero); await showDialog( context: context, barrierDismissible: false, - builder: (context) => SimpleDialog( - children: [ - Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - CircularProgressIndicator(), - SizedBox(height: 10), - Text(R.string.wait, textAlign: TextAlign.center), - ], - ), - ], - ), + builder: (context) { + return SimpleDialog( + children: [ + Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + CircularProgressIndicator(), + SizedBox(height: 10), + Text(R.string.wait, textAlign: TextAlign.center), + ], + ), + ], + ); + }, ); } @@ -26,4 +28,4 @@ void hideLoading(BuildContext context) { if (Navigator.canPop(context)) { Navigator.of(context).pop(); } -} \ No newline at end of file +} diff --git a/lib/ui/pages/survey_result/survey_result_page.dart b/lib/ui/pages/survey_result/survey_result_page.dart index a39e633c..506aacab 100644 --- a/lib/ui/pages/survey_result/survey_result_page.dart +++ b/lib/ui/pages/survey_result/survey_result_page.dart @@ -30,7 +30,7 @@ class SurveyResultPage extends StatelessWidget with LoadingManager, SessionManag if (snapshot.hasData) { return SurveyResult(viewModel: snapshot.data!, onSave: presenter.save); } - return SizedBox(height: 0); + return SizedBox.shrink(); } ); } diff --git a/test/ui/pages/survey_result_page_test.dart b/test/ui/pages/survey_result_page_test.dart index 5840228a..05ace03b 100644 --- a/test/ui/pages/survey_result_page_test.dart +++ b/test/ui/pages/survey_result_page_test.dart @@ -16,7 +16,12 @@ void main() { Future loadPage(WidgetTester tester) async { presenter = SurveyResultPresenterSpy(); await mockNetworkImagesFor(() async { - await tester.pumpWidget(makePage(path: '/survey_result/any_survey_id', page: () => SurveyResultPage(presenter))); + await tester.pumpWidget( + makePage( + path: '/survey_result/any_survey_id', + page: () => SurveyResultPage(presenter), + ), + ); }); } @@ -24,7 +29,8 @@ void main() { presenter.dispose(); }); - testWidgets('Should call LoadSurveyResult on page load', (WidgetTester tester) async { + testWidgets('Should call LoadSurveyResult on page load', + (WidgetTester tester) async { await loadPage(tester); verify(() => presenter.loadData()).called(1); @@ -46,18 +52,21 @@ void main() { expect(find.byType(CircularProgressIndicator), findsOneWidget); }); - testWidgets('Should present error if surveyResultStream fails', (WidgetTester tester) async { + testWidgets('Should present error if surveyResultStream fails', + (WidgetTester tester) async { await loadPage(tester); presenter.emitSurveyResultError(UIError.unexpected.description); await tester.pump(); - expect(find.text('Algo errado aconteceu. Tente novamente em breve.'), findsOneWidget); + expect(find.text('Algo errado aconteceu. Tente novamente em breve.'), + findsOneWidget); expect(find.text('Recarregar'), findsOneWidget); expect(find.text('Question'), findsNothing); }); - testWidgets('Should call LoadSurveyResult on reload button click', (WidgetTester tester) async { + testWidgets('Should call LoadSurveyResult on reload button click', + (WidgetTester tester) async { await loadPage(tester); presenter.emitSurveyResultError(UIError.unexpected.description); @@ -67,7 +76,8 @@ void main() { verify(() => presenter.loadData()).called(2); }); - testWidgets('Should present valid data if surveyResultStream succeeds', (WidgetTester tester) async { + testWidgets('Should present valid data if surveyResultStream succeeds', + (WidgetTester tester) async { await loadPage(tester); presenter.emitSurveyResult(ViewModelFactory.makeSurveyResult()); @@ -75,7 +85,8 @@ void main() { await tester.pump(); }); - expect(find.text('Algo errado aconteceu. Tente novamente em breve.'), findsNothing); + expect(find.text('Algo errado aconteceu. Tente novamente em breve.'), + findsNothing); expect(find.text('Recarregar'), findsNothing); expect(find.text('Question'), findsOneWidget); expect(find.text('Answer 0'), findsOneWidget); @@ -84,7 +95,8 @@ void main() { expect(find.text('40%'), findsOneWidget); expect(find.byType(ActiveIcon), findsOneWidget); expect(find.byType(DisabledIcon), findsOneWidget); - final image = tester.widget(find.byType(Image)).image as NetworkImage; + final image = + tester.widget(find.byType(Image)).image as NetworkImage; expect(image.url, 'Image 0'); }); @@ -106,7 +118,8 @@ void main() { expect(currentRoute, '/survey_result/any_survey_id'); }); - testWidgets('Should call save on list item click', (WidgetTester tester) async { + testWidgets('Should call save on list item click', + (WidgetTester tester) async { await loadPage(tester); presenter.emitSurveyResult(ViewModelFactory.makeSurveyResult()); @@ -118,7 +131,8 @@ void main() { verify(() => presenter.save(answer: 'Answer 1')).called(1); }); - testWidgets('Should not call save on current answer click', (WidgetTester tester) async { + testWidgets('Should not call save on current answer click', + (WidgetTester tester) async { await loadPage(tester); presenter.emitSurveyResult(ViewModelFactory.makeSurveyResult()); @@ -129,4 +143,4 @@ void main() { verifyNever(() => presenter.save(answer: 'Answer 0')); }); -} \ No newline at end of file +} From 56b4c9363d25d09ec1c59cd4b88b25d97253a32b Mon Sep 17 00:00:00 2001 From: Andres Garcia Date: Sun, 29 May 2022 23:13:02 -0500 Subject: [PATCH 02/21] =?UTF-8?q?chore:=20updated=20m=C3=ADnimum=20version?= =?UTF-8?q?=20Flutter=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index ae0f1f98..938e8b91 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.0.1 environment: - sdk: ">=2.12.0 <3.0.0" + sdk: ">=2.17.0 <3.0.0" dependencies: flutter: From 68e32c54a39314d77ced5e7628490c1b4b9ce163 Mon Sep 17 00:00:00 2001 From: Andres Garcia Date: Sun, 29 May 2022 23:13:20 -0500 Subject: [PATCH 03/21] chore: updated package for flutter 3 --- pubspec.yaml | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/pubspec.yaml b/pubspec.yaml index 938e8b91..6dd21efb 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -9,25 +9,26 @@ environment: dependencies: flutter: sdk: flutter - cupertino_icons: 1.0.3 - http: 0.13.3 - provider: 6.0.1 + cupertino_icons: 1.0.4 + http: 0.13.4 + provider: 6.0.3 equatable: 2.0.3 - get: 4.3.8 - flutter_secure_storage: 4.2.1 + get: 4.6.5 + flutter_secure_storage: 5.0.2 localstorage: 4.0.0+1 - carousel_slider: 4.0.0 + carousel_slider: 4.1.1 intl: 0.17.0 dev_dependencies: flutter_test: sdk: flutter flutter_launcher_icons: 0.9.2 - test: 1.17.10 - mocktail: 0.1.4 + test: 1.21.1 + mocktail: 0.3.0 faker: 2.0.0 - network_image_mock: 2.0.1 - + network_image_mock: 2.1.0 + flutter_lints: 2.0.1 + flutter: uses-material-design: true assets: From 391350eb429b1d80807282590eeb1dfd3b6e741f Mon Sep 17 00:00:00 2001 From: Andres Garcia Date: Sun, 29 May 2022 23:13:46 -0500 Subject: [PATCH 04/21] updated pubpsec.lock for flutter 3 --- pubspec.lock | 211 +++++++++++++++++++++++++++++++++------------------ 1 file changed, 136 insertions(+), 75 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index bfb20e54..c9fd0b76 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -7,35 +7,35 @@ packages: name: _fe_analyzer_shared url: "https://pub.dartlang.org" source: hosted - version: "26.0.0" + version: "40.0.0" analyzer: dependency: transitive description: name: analyzer url: "https://pub.dartlang.org" source: hosted - version: "2.3.0" + version: "4.1.0" archive: dependency: transitive description: name: archive url: "https://pub.dartlang.org" source: hosted - version: "3.1.2" + version: "3.3.0" args: dependency: transitive description: name: args url: "https://pub.dartlang.org" source: hosted - version: "2.3.0" + version: "2.3.1" async: dependency: transitive description: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.8.1" + version: "2.8.2" boolean_selector: dependency: transitive description: @@ -49,7 +49,7 @@ packages: name: build url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.3.0" built_collection: dependency: transitive description: @@ -63,21 +63,21 @@ packages: name: built_value url: "https://pub.dartlang.org" source: hosted - version: "8.1.2" + version: "8.3.2" carousel_slider: dependency: "direct main" description: name: carousel_slider url: "https://pub.dartlang.org" source: hosted - version: "4.0.0" + version: "4.1.1" characters: dependency: transitive description: name: characters url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.2.0" charcode: dependency: transitive description: @@ -85,13 +85,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.1" - cli_util: - dependency: transitive - description: - name: cli_util - url: "https://pub.dartlang.org" - source: hosted - version: "0.3.3" clock: dependency: transitive description: @@ -112,7 +105,7 @@ packages: name: collection url: "https://pub.dartlang.org" source: hosted - version: "1.15.0" + version: "1.16.0" convert: dependency: transitive description: @@ -126,28 +119,28 @@ packages: name: coverage url: "https://pub.dartlang.org" source: hosted - version: "1.0.3" + version: "1.3.2" crypto: dependency: transitive description: name: crypto url: "https://pub.dartlang.org" source: hosted - version: "3.0.1" + version: "3.0.2" cupertino_icons: dependency: "direct main" description: name: cupertino_icons url: "https://pub.dartlang.org" source: hosted - version: "1.0.3" + version: "1.0.4" dart_style: dependency: transitive description: name: dart_style url: "https://pub.dartlang.org" source: hosted - version: "2.2.0" + version: "2.2.3" equatable: dependency: "direct main" description: @@ -161,7 +154,7 @@ packages: name: fake_async url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.3.0" faker: dependency: "direct dev" description: @@ -175,7 +168,7 @@ packages: name: ffi url: "https://pub.dartlang.org" source: hosted - version: "1.1.2" + version: "2.0.0" file: dependency: transitive description: @@ -189,7 +182,7 @@ packages: name: fixnum url: "https://pub.dartlang.org" source: hosted - version: "1.0.0" + version: "1.0.1" flutter: dependency: "direct main" description: flutter @@ -202,67 +195,114 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.9.2" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" flutter_secure_storage: dependency: "direct main" description: name: flutter_secure_storage url: "https://pub.dartlang.org" source: hosted - version: "4.2.1" + version: "5.0.2" + flutter_secure_storage_linux: + dependency: transitive + description: + name: flutter_secure_storage_linux + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + flutter_secure_storage_macos: + dependency: transitive + description: + name: flutter_secure_storage_macos + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + flutter_secure_storage_platform_interface: + dependency: transitive + description: + name: flutter_secure_storage_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + flutter_secure_storage_web: + dependency: transitive + description: + name: flutter_secure_storage_web + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + flutter_secure_storage_windows: + dependency: transitive + description: + name: flutter_secure_storage_windows + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.2" flutter_test: dependency: "direct dev" description: flutter source: sdk version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" frontend_server_client: dependency: transitive description: name: frontend_server_client url: "https://pub.dartlang.org" source: hosted - version: "2.1.2" + version: "2.1.3" get: dependency: "direct main" description: name: get url: "https://pub.dartlang.org" source: hosted - version: "4.3.8" + version: "4.6.5" glob: dependency: transitive description: name: glob url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.2" http: dependency: "direct main" description: name: http url: "https://pub.dartlang.org" source: hosted - version: "0.13.3" + version: "0.13.4" http_multi_server: dependency: transitive description: name: http_multi_server url: "https://pub.dartlang.org" source: hosted - version: "3.0.1" + version: "3.2.0" http_parser: dependency: transitive description: name: http_parser url: "https://pub.dartlang.org" source: hosted - version: "4.0.0" + version: "4.0.1" image: dependency: transitive description: name: image url: "https://pub.dartlang.org" source: hosted - version: "3.0.5" + version: "3.2.0" intl: dependency: "direct main" description: @@ -283,7 +323,14 @@ packages: name: js url: "https://pub.dartlang.org" source: hosted - version: "0.6.3" + version: "0.6.4" + lints: + dependency: transitive + description: + name: lints + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" localstorage: dependency: "direct main" description: @@ -304,7 +351,14 @@ packages: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.10" + version: "0.12.11" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.4" meta: dependency: transitive description: @@ -318,21 +372,21 @@ packages: name: mime url: "https://pub.dartlang.org" source: hosted - version: "1.0.0" + version: "1.0.2" mockito: dependency: transitive description: name: mockito url: "https://pub.dartlang.org" source: hosted - version: "5.0.16" + version: "5.2.0" mocktail: dependency: "direct dev" description: name: mocktail url: "https://pub.dartlang.org" source: hosted - version: "0.1.4" + version: "0.3.0" nested: dependency: transitive description: @@ -346,7 +400,7 @@ packages: name: network_image_mock url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.1.0" node_preamble: dependency: transitive description: @@ -367,70 +421,77 @@ packages: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.8.0" + version: "1.8.1" path_provider: dependency: transitive description: name: path_provider url: "https://pub.dartlang.org" source: hosted - version: "2.0.5" + version: "2.0.10" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.14" + path_provider_ios: + dependency: transitive + description: + name: path_provider_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.9" path_provider_linux: dependency: transitive description: name: path_provider_linux url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.1.7" path_provider_macos: dependency: transitive description: name: path_provider_macos url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.0.6" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.4" path_provider_windows: dependency: transitive description: name: path_provider_windows url: "https://pub.dartlang.org" source: hosted - version: "2.0.3" - pedantic: - dependency: transitive - description: - name: pedantic - url: "https://pub.dartlang.org" - source: hosted - version: "1.11.1" + version: "2.1.0" petitparser: dependency: transitive description: name: petitparser url: "https://pub.dartlang.org" source: hosted - version: "4.3.0" + version: "5.0.0" platform: dependency: transitive description: name: platform url: "https://pub.dartlang.org" source: hosted - version: "3.0.2" + version: "3.1.0" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.1.2" pool: dependency: transitive description: @@ -444,28 +505,28 @@ packages: name: process url: "https://pub.dartlang.org" source: hosted - version: "4.2.3" + version: "4.2.4" provider: dependency: "direct main" description: name: provider url: "https://pub.dartlang.org" source: hosted - version: "6.0.1" + version: "6.0.3" pub_semver: dependency: transitive description: name: pub_semver url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.1.1" shelf: dependency: transitive description: name: shelf url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.3.0" shelf_packages_handler: dependency: transitive description: @@ -498,7 +559,7 @@ packages: name: source_gen url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.2.2" source_map_stack_trace: dependency: transitive description: @@ -519,7 +580,7 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.8.1" + version: "1.8.2" stack_trace: dependency: transitive description: @@ -554,91 +615,91 @@ packages: name: test url: "https://pub.dartlang.org" source: hosted - version: "1.17.10" + version: "1.21.1" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.2" + version: "0.4.9" test_core: dependency: transitive description: name: test_core url: "https://pub.dartlang.org" source: hosted - version: "0.4.0" + version: "0.4.13" typed_data: dependency: transitive description: name: typed_data url: "https://pub.dartlang.org" source: hosted - version: "1.3.0" + version: "1.3.1" vector_math: dependency: transitive description: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.1.2" vm_service: dependency: transitive description: name: vm_service url: "https://pub.dartlang.org" source: hosted - version: "7.3.0" + version: "8.3.0" watcher: dependency: transitive description: name: watcher url: "https://pub.dartlang.org" source: hosted - version: "1.0.0" + version: "1.0.1" web_socket_channel: dependency: transitive description: name: web_socket_channel url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.2.0" webkit_inspection_protocol: dependency: transitive description: name: webkit_inspection_protocol url: "https://pub.dartlang.org" source: hosted - version: "1.0.0" + version: "1.1.0" win32: dependency: transitive description: name: win32 url: "https://pub.dartlang.org" source: hosted - version: "2.2.9" + version: "2.7.0" xdg_directories: dependency: transitive description: name: xdg_directories url: "https://pub.dartlang.org" source: hosted - version: "0.2.0" + version: "0.2.0+1" xml: dependency: transitive description: name: xml url: "https://pub.dartlang.org" source: hosted - version: "5.3.0" + version: "6.1.0" yaml: dependency: transitive description: name: yaml url: "https://pub.dartlang.org" source: hosted - version: "3.1.0" + version: "3.1.1" sdks: - dart: ">=2.14.0 <3.0.0" - flutter: ">=2.5.0" + dart: ">=2.17.0 <3.0.0" + flutter: ">=3.0.0" From 90cca8f81fae9a46e069fbad8702a66a716e4b70 Mon Sep 17 00:00:00 2001 From: Andres Garcia Date: Sun, 29 May 2022 23:14:08 -0500 Subject: [PATCH 05/21] chore: updated gradle v7 --- android/build.gradle | 2 +- android/gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 3100ad2d..8d6a7611 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -6,7 +6,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.5.0' + classpath 'com.android.tools.build:gradle:7.1.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 296b146b..cc5527d7 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip From 3385087d7f64744c946c5f600571cf66395f5263 Mon Sep 17 00:00:00 2001 From: Andres Garcia Date: Sun, 29 May 2022 23:14:32 -0500 Subject: [PATCH 06/21] supported minuim version SDK android 31 --- android/app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 3db7a877..e008472f 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -26,7 +26,7 @@ apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion 28 + compileSdkVersion 31 sourceSets { main.java.srcDirs += 'src/main/kotlin' From 230794651024f265c1043e3be5a96225aaa5fb55 Mon Sep 17 00:00:00 2001 From: Andres Garcia Date: Sun, 29 May 2022 23:14:48 -0500 Subject: [PATCH 07/21] updated kotlin v1.6.21 --- android/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/build.gradle b/android/build.gradle index 8d6a7611..ca8c5c09 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.3.50' + ext.kotlin_version = '1.6.21' repositories { google() jcenter() From 5ac8039b82e343a3bd79a2dfde319290b6bfac6a Mon Sep 17 00:00:00 2001 From: Andres Garcia Date: Sun, 29 May 2022 23:15:14 -0500 Subject: [PATCH 08/21] changed repo jcenter to mavenCentral --- android/build.gradle | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index ca8c5c09..6dfcd6a8 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -2,7 +2,7 @@ buildscript { ext.kotlin_version = '1.6.21' repositories { google() - jcenter() + mavenCentral() } dependencies { @@ -14,15 +14,13 @@ buildscript { allprojects { repositories { google() - jcenter() + mavenCentral() } } rootProject.buildDir = '../build' subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" -} -subprojects { project.evaluationDependsOn(':app') } From 30dbd033cbf3659dea5af2fbf09a3450ce0ec528 Mon Sep 17 00:00:00 2001 From: Andres Garcia Date: Sun, 29 May 2022 23:15:42 -0500 Subject: [PATCH 09/21] updated AndroidManifest.xml for flutter 3 --- android/app/src/main/AndroidManifest.xml | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index a3f2b8d7..d9d87f3c 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -6,11 +6,12 @@ additional functionality it is fine to subclass or reimplement FlutterApplication and put your custom class here. --> - - From 0098e8c374a92f6085aca0c8a01149305b2c3a71 Mon Sep 17 00:00:00 2001 From: Andres Garcia Date: Sun, 29 May 2022 23:15:58 -0500 Subject: [PATCH 10/21] updated fvm for flutter 3 --- .fvm/fvm_config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.fvm/fvm_config.json b/.fvm/fvm_config.json index 35101378..fcad119e 100644 --- a/.fvm/fvm_config.json +++ b/.fvm/fvm_config.json @@ -1,4 +1,4 @@ { - "flutterSdkVersion": "2.5.1", + "flutterSdkVersion": "3.0.1", "flavors": {} } \ No newline at end of file From 1da114a173ba513eaa74f86d57c0cefb72788125 Mon Sep 17 00:00:00 2001 From: Andres Garcia Date: Sun, 29 May 2022 23:20:01 -0500 Subject: [PATCH 11/21] sytle: smell code format dart --- lib/data/cache/cache.dart | 2 +- lib/data/cache/cache_storage.dart | 4 +- .../cache/delete_secure_cache_storage.dart | 2 +- .../cache/fetch_secure_cache_storage.dart | 2 +- lib/data/cache/save_secure_cache_storage.dart | 7 +- lib/data/http/http.dart | 2 +- lib/data/http/http_client.dart | 2 +- lib/data/http/http_error.dart | 2 +- .../models/local_survey_answer_model.dart | 46 +++---- lib/data/models/local_survey_model.dart | 36 ++--- .../models/local_survey_result_model.dart | 42 +++--- lib/data/models/models.dart | 2 +- lib/data/models/remote_account_model.dart | 4 +- .../models/remote_survey_answer_model.dart | 16 ++- lib/data/models/remote_survey_model.dart | 16 ++- .../models/remote_survey_result_model.dart | 17 ++- .../usecases/add_account/add_account.dart | 2 +- .../add_account/remote_add_account.dart | 50 ++++--- .../authentication/authentication.dart | 2 +- .../authentication/remote_authentication.dart | 25 ++-- .../load_current_account.dart | 2 +- .../local_load_current_account.dart | 6 +- .../load_survey_result.dart | 2 +- .../local_load_survey_result.dart | 15 ++- .../remote_load_survey_result.dart | 15 +-- .../usecases/load_surveys/load_surveys.dart | 2 +- .../load_surveys/local_load_surveys.dart | 20 +-- .../load_surveys/remote_load_surveys.dart | 18 +-- .../local_save_current_account.dart | 6 +- .../save_current_account.dart | 2 +- .../remote_save_survey_result.dart | 18 ++- .../save_survey_result.dart | 2 +- lib/data/usecases/usecases.dart | 2 +- lib/domain/entities/account_entity.dart | 4 +- lib/domain/entities/entities.dart | 2 +- lib/domain/entities/survey_answer_entity.dart | 2 +- lib/domain/entities/survey_entity.dart | 2 +- lib/domain/entities/survey_result_entity.dart | 2 +- lib/domain/helpers/domain_error.dart | 7 +- lib/domain/helpers/helpers.dart | 2 +- lib/domain/usecases/add_account.dart | 13 +- lib/domain/usecases/authentication.dart | 4 +- lib/domain/usecases/load_current_account.dart | 2 +- lib/domain/usecases/load_survey_result.dart | 4 +- lib/domain/usecases/load_surveys.dart | 2 +- lib/domain/usecases/save_current_account.dart | 2 +- lib/domain/usecases/save_survey_result.dart | 4 +- lib/domain/usecases/usecases.dart | 2 +- lib/infra/cache/cache.dart | 2 +- lib/infra/cache/local_storage_adapter.dart | 6 +- lib/infra/cache/secure_storage_adapter.dart | 12 +- lib/infra/http/http.dart | 2 +- lib/infra/http/http_adapter.dart | 44 +++--- lib/main/builders/builders.dart | 2 +- lib/main/builders/validation_builder.dart | 5 +- lib/main/composites/composites.dart | 2 +- ...oad_survey_result_with_local_fallback.dart | 6 +- ...mote_load_surveys_with_local_fallback.dart | 10 +- lib/main/composites/validation_composite.dart | 4 +- .../authorize_http_client_decorator.dart | 10 +- lib/main/decorators/decorators.dart | 2 +- lib/main/factories/cache/cache.dart | 2 +- .../cache/local_storage_adapter_factory.dart | 2 +- .../cache/secure_storage_adapter_factory.dart | 2 +- lib/main/factories/factories.dart | 2 +- lib/main/factories/http/api_url_factory.dart | 2 +- ...thorize_http_client_decorator_factory.dart | 8 +- lib/main/factories/http/http.dart | 2 +- .../factories/http/http_client_factory.dart | 2 +- lib/main/factories/pages/login/login.dart | 2 +- .../pages/login/login_page_factory.dart | 2 +- .../pages/login/login_presenter_factory.dart | 7 +- .../pages/login/login_validation_factory.dart | 6 +- lib/main/factories/pages/pages.dart | 2 +- lib/main/factories/pages/signup/signup.dart | 2 +- .../pages/signup/signup_page_factory.dart | 2 +- .../signup/signup_presenter_factory.dart | 7 +- .../signup/signup_validation_factory.dart | 16 ++- lib/main/factories/pages/splash/splash.dart | 2 +- .../pages/splash/splash_page_factory.dart | 2 +- .../splash/splash_presenter_factory.dart | 2 +- .../pages/survey_result/survey_result.dart | 2 +- .../survey_result_page_factory.dart | 4 +- .../survey_result_presenter_factory.dart | 10 +- lib/main/factories/pages/surveys/surveys.dart | 2 +- .../pages/surveys/surveys_page_factory.dart | 2 +- .../surveys/surveys_presenter_factory.dart | 4 +- .../usecases/add_account_factory.dart | 6 +- .../usecases/authentication_factory.dart | 4 +- .../load_current_account_factory.dart | 3 +- .../usecases/load_survey_result_factory.dart | 21 ++- .../usecases/load_surveys_factory.dart | 16 +-- .../save_current_account_factory.dart | 5 +- .../usecases/save_survey_result_factory.dart | 8 +- lib/main/factories/usecases/usecases.dart | 2 +- lib/main/main.dart | 10 +- lib/presentation/helpers/helpers.dart | 2 +- .../survey_result_entity_extensions.dart | 18 ++- lib/presentation/mixins/form_manager.dart | 2 +- lib/presentation/mixins/loading_manager.dart | 2 +- lib/presentation/mixins/mixins.dart | 2 +- .../mixins/navigation_manager.dart | 2 +- lib/presentation/mixins/session_manager.dart | 2 +- lib/presentation/mixins/ui_error_manager.dart | 2 +- .../presenters/getx_login_presenter.dart | 47 ++++--- .../presenters/getx_signup_presenter.dart | 64 +++++---- .../presenters/getx_splash_presenter.dart | 10 +- .../getx_survey_result_presenter.dart | 10 +- .../presenters/getx_surveys_presenter.dart | 23 ++-- lib/presentation/presenters/presenters.dart | 2 +- lib/presentation/protocols/protocols.dart | 2 +- lib/presentation/protocols/validation.dart | 10 +- lib/ui/components/app_theme.dart | 65 ++++----- lib/ui/components/components.dart | 2 +- lib/ui/components/error_message.dart | 12 +- lib/ui/components/headline1.dart | 12 +- lib/ui/components/login_header.dart | 35 +++-- lib/ui/components/reload_screen.dart | 7 +- lib/ui/helpers/errors/errors.dart | 2 +- lib/ui/helpers/errors/ui_error.dart | 19 ++- lib/ui/helpers/helpers.dart | 2 +- lib/ui/helpers/i18n/i18n.dart | 2 +- lib/ui/helpers/i18n/resources.dart | 6 +- lib/ui/helpers/i18n/strings/pt_br.dart | 5 +- lib/ui/helpers/i18n/strings/strings.dart | 2 +- lib/ui/helpers/i18n/strings/translation.dart | 2 +- lib/ui/mixins/keyboard_manager.dart | 2 +- lib/ui/mixins/loading_manager.dart | 2 +- lib/ui/mixins/mixins.dart | 2 +- lib/ui/mixins/navigation_manager.dart | 2 +- lib/ui/mixins/session_manager.dart | 2 +- lib/ui/mixins/ui_error_manager.dart | 2 +- lib/ui/pages/login/components/components.dart | 2 +- .../pages/login/components/email_input.dart | 2 +- .../pages/login/components/login_button.dart | 17 ++- .../login/components/password_input.dart | 28 ++-- lib/ui/pages/login/login.dart | 2 +- lib/ui/pages/login/login_page.dart | 10 +- lib/ui/pages/login/login_presenter.dart | 2 +- lib/ui/pages/pages.dart | 2 +- .../pages/signup/components/components.dart | 2 +- .../pages/signup/components/email_input.dart | 2 +- .../pages/signup/components/name_input.dart | 5 +- .../password_confirmation_input.dart | 2 +- .../signup/components/password_input.dart | 2 +- .../signup/components/signup_button.dart | 17 ++- lib/ui/pages/signup/signup.dart | 2 +- lib/ui/pages/signup/signup_page.dart | 10 +- lib/ui/pages/signup/signup_presenter.dart | 2 +- lib/ui/pages/splash/splash.dart | 2 +- lib/ui/pages/splash/splash_page.dart | 4 +- lib/ui/pages/splash/splash_presenter.dart | 2 +- .../survey_result/components/active_icon.dart | 2 +- .../survey_result/components/components.dart | 2 +- .../components/disabled_icon.dart | 2 +- .../components/survey_answer.dart | 35 +++-- .../components/survey_header.dart | 12 +- .../components/survey_result.dart | 12 +- .../survey_answer_viewmodel.dart | 2 +- lib/ui/pages/survey_result/survey_result.dart | 2 +- .../survey_result/survey_result_page.dart | 37 +++--- .../survey_result_presenter.dart | 6 +- .../survey_result_viewmodel.dart | 2 +- .../pages/surveys/components/components.dart | 2 +- .../pages/surveys/components/survey_item.dart | 29 ++-- .../surveys/components/survey_items.dart | 7 +- lib/ui/pages/surveys/survey_viewmodel.dart | 13 +- lib/ui/pages/surveys/surveys.dart | 2 +- lib/ui/pages/surveys/surveys_page.dart | 36 ++--- lib/ui/pages/surveys/surveys_presenter.dart | 2 +- .../protocols/field_validation.dart | 2 +- lib/validation/protocols/protocols.dart | 2 +- .../validators/compare_fields_validation.dart | 11 +- .../validators/email_validation.dart | 8 +- .../validators/min_length_validation.dart | 11 +- .../validators/required_field_validation.dart | 4 +- lib/validation/validators/validators.dart | 2 +- test/data/mocks/cache_storage_spy.dart | 10 +- test/data/mocks/http_client_spy.dart | 17 +-- test/data/mocks/load_survey_result_spy.dart | 8 +- test/data/mocks/load_surveys_spy.dart | 5 +- .../mocks/local_load_survey_result_spy.dart | 8 +- test/data/mocks/local_load_surveys_spy.dart | 5 +- test/data/mocks/mocks.dart | 2 +- .../mocks/remote_load_survey_result_spy.dart | 8 +- test/data/mocks/remote_load_surveys_spy.dart | 5 +- test/data/mocks/secure_cache_storage_spy.dart | 16 ++- .../add_account/remote_add_account_test.dart | 25 ++-- .../remote_authentication_test.dart | 16 ++- .../local_load_current_account_test.dart | 8 +- .../local_load_survey_result_test.dart | 66 ++++----- .../remote_load_survey_result_test.dart | 43 +++--- .../load_surveys/local_load_surveys_test.dart | 39 ++++-- .../remote_load_surveys_test.dart | 6 +- .../local_save_current_account_test.dart | 5 +- .../remote_save_survey_result_test.dart | 46 ++++--- test/domain/mocks/add_account_spy.dart | 8 +- test/domain/mocks/authentication_spy.dart | 8 +- test/domain/mocks/entity_factory.dart | 59 ++++----- .../mocks/load_current_account_spy.dart | 5 +- test/domain/mocks/mocks.dart | 2 +- test/domain/mocks/params_factory.dart | 15 +-- .../mocks/save_current_account_spy.dart | 2 +- test/domain/mocks/save_survey_result_spy.dart | 5 +- .../cache/local_storage_adapter_test.dart | 4 +- .../cache/secure_storage_adapter_test.dart | 2 +- test/infra/http/http_adapter_test.dart | 123 ++++++++--------- test/infra/mocks/api_factory.dart | 77 ++++++----- test/infra/mocks/cache_factory.dart | 104 ++++++++------- test/infra/mocks/client_spy.dart | 23 ++-- .../mocks/flutter_secure_storage_spy.dart | 17 ++- test/infra/mocks/local_storage_spy.dart | 14 +- test/infra/mocks/mocks.dart | 2 +- ...urvey_result_with_local_fallback_test.dart | 13 +- ...load_surveys_with_local_fallback_test.dart | 7 +- .../composites/validation_composite_test.dart | 8 +- .../authorize_http_client_decorator_test.dart | 36 +++-- .../login/login_validation_factory_test.dart | 2 +- .../login/signup_validation_factory_test.dart | 5 +- test/presentation/mocks/mocks.dart | 2 +- test/presentation/mocks/validation_spy.dart | 12 +- .../presenters/getx_login_presenter_test.dart | 60 ++++++--- .../getx_signup_presenter_test.dart | 125 ++++++++++++------ .../getx_splash_presenter_test.dart | 5 +- .../getx_survey_result_presenter_test.dart | 62 +++++---- .../getx_surveys_presenter_test.dart | 26 ++-- test/ui/helpers/helpers.dart | 10 +- test/ui/mocks/login_presenter_spy.dart | 20 ++- test/ui/mocks/mocks.dart | 2 +- test/ui/mocks/signup_presenter_spy.dart | 32 +++-- test/ui/mocks/splash_presenter_spy.dart | 9 +- .../ui/mocks/survey_result_presenter_spy.dart | 23 ++-- test/ui/mocks/surveys_presenter_spy.dart | 14 +- test/ui/mocks/viewmodel_factory.dart | 37 +++--- test/ui/pages/login_page_test.dart | 56 +++++--- test/ui/pages/signup_page_test.dart | 54 +++++--- test/ui/pages/splash_page_test.dart | 11 +- test/ui/pages/surveys_page_test.dart | 26 ++-- .../mocks/field_validation_spy.dart | 8 +- test/validation/mocks/mocks.dart | 2 +- .../compare_fields_validation_test.dart | 5 +- .../validators/email_validation_test.dart | 5 +- .../min_length_validation_test.dart | 12 +- .../required_field_validation_test.dart | 2 +- 244 files changed, 1600 insertions(+), 1371 deletions(-) diff --git a/lib/data/cache/cache.dart b/lib/data/cache/cache.dart index 30617400..c1e96380 100644 --- a/lib/data/cache/cache.dart +++ b/lib/data/cache/cache.dart @@ -1,4 +1,4 @@ export './save_secure_cache_storage.dart'; export './fetch_secure_cache_storage.dart'; export './delete_secure_cache_storage.dart'; -export './cache_storage.dart'; \ No newline at end of file +export './cache_storage.dart'; diff --git a/lib/data/cache/cache_storage.dart b/lib/data/cache/cache_storage.dart index d9aace1d..0e015f75 100644 --- a/lib/data/cache/cache_storage.dart +++ b/lib/data/cache/cache_storage.dart @@ -1,5 +1,5 @@ abstract class CacheStorage { Future fetch(String key); Future delete(String key); - Future save({ required String key, required dynamic value }); -} \ No newline at end of file + Future save({required String key, required dynamic value}); +} diff --git a/lib/data/cache/delete_secure_cache_storage.dart b/lib/data/cache/delete_secure_cache_storage.dart index 07c026a1..d99126bb 100644 --- a/lib/data/cache/delete_secure_cache_storage.dart +++ b/lib/data/cache/delete_secure_cache_storage.dart @@ -1,3 +1,3 @@ abstract class DeleteSecureCacheStorage { Future delete(String key); -} \ No newline at end of file +} diff --git a/lib/data/cache/fetch_secure_cache_storage.dart b/lib/data/cache/fetch_secure_cache_storage.dart index abe30e07..0470cec4 100644 --- a/lib/data/cache/fetch_secure_cache_storage.dart +++ b/lib/data/cache/fetch_secure_cache_storage.dart @@ -1,3 +1,3 @@ abstract class FetchSecureCacheStorage { Future fetch(String key); -} \ No newline at end of file +} diff --git a/lib/data/cache/save_secure_cache_storage.dart b/lib/data/cache/save_secure_cache_storage.dart index ab114df9..215f9d8a 100644 --- a/lib/data/cache/save_secure_cache_storage.dart +++ b/lib/data/cache/save_secure_cache_storage.dart @@ -1,6 +1,3 @@ abstract class SaveSecureCacheStorage { - Future save({ - required String key, - required String value - }); -} \ No newline at end of file + Future save({required String key, required String value}); +} diff --git a/lib/data/http/http.dart b/lib/data/http/http.dart index b114ec29..0b84f404 100644 --- a/lib/data/http/http.dart +++ b/lib/data/http/http.dart @@ -1,2 +1,2 @@ export './http_client.dart'; -export './http_error.dart'; \ No newline at end of file +export './http_error.dart'; diff --git a/lib/data/http/http_client.dart b/lib/data/http/http_client.dart index a2ff5ced..8ccf6c61 100644 --- a/lib/data/http/http_client.dart +++ b/lib/data/http/http_client.dart @@ -5,4 +5,4 @@ abstract class HttpClient { Map? body, Map? headers, }); -} \ No newline at end of file +} diff --git a/lib/data/http/http_error.dart b/lib/data/http/http_error.dart index dbf018f5..ce1be5cc 100644 --- a/lib/data/http/http_error.dart +++ b/lib/data/http/http_error.dart @@ -5,4 +5,4 @@ enum HttpError { unauthorized, forbidden, invalidData -} \ No newline at end of file +} diff --git a/lib/data/models/local_survey_answer_model.dart b/lib/data/models/local_survey_answer_model.dart index 5ed5fcd4..b9f12639 100644 --- a/lib/data/models/local_survey_answer_model.dart +++ b/lib/data/models/local_survey_answer_model.dart @@ -14,35 +14,35 @@ class LocalSurveyAnswerModel { }); factory LocalSurveyAnswerModel.fromJson(Map json) { - if (!json.keys.toSet().containsAll(['answer', 'isCurrentAnswer', 'percent'])) { + if (!json.keys + .toSet() + .containsAll(['answer', 'isCurrentAnswer', 'percent'])) { throw Exception(); } return LocalSurveyAnswerModel( - image: json['image'], - answer: json['answer'], - isCurrentAnswer: json['isCurrentAnswer'].toLowerCase() == 'true', - percent: int.parse(json['percent']) - ); + image: json['image'], + answer: json['answer'], + isCurrentAnswer: json['isCurrentAnswer'].toLowerCase() == 'true', + percent: int.parse(json['percent'])); } - factory LocalSurveyAnswerModel.fromEntity(SurveyAnswerEntity entity) => LocalSurveyAnswerModel( - image: entity.image, - answer: entity.answer, - percent: entity.percent, - isCurrentAnswer: entity.isCurrentAnswer - ); + factory LocalSurveyAnswerModel.fromEntity(SurveyAnswerEntity entity) => + LocalSurveyAnswerModel( + image: entity.image, + answer: entity.answer, + percent: entity.percent, + isCurrentAnswer: entity.isCurrentAnswer); SurveyAnswerEntity toEntity() => SurveyAnswerEntity( - image: image, - answer: answer, - isCurrentAnswer: isCurrentAnswer, - percent: percent - ); + image: image, + answer: answer, + isCurrentAnswer: isCurrentAnswer, + percent: percent); Map toJson() => { - 'image': image, - 'answer': answer, - 'isCurrentAnswer': isCurrentAnswer.toString(), - 'percent': percent.toString() - }; -} \ No newline at end of file + 'image': image, + 'answer': answer, + 'isCurrentAnswer': isCurrentAnswer.toString(), + 'percent': percent.toString() + }; +} diff --git a/lib/data/models/local_survey_model.dart b/lib/data/models/local_survey_model.dart index b07f2e18..77baa09a 100644 --- a/lib/data/models/local_survey_model.dart +++ b/lib/data/models/local_survey_model.dart @@ -14,7 +14,9 @@ class LocalSurveyModel { }); factory LocalSurveyModel.fromJson(Map json) { - if (!json.keys.toSet().containsAll(['id', 'question', 'date', 'didAnswer'])) { + if (!json.keys + .toSet() + .containsAll(['id', 'question', 'date', 'didAnswer'])) { throw Exception(); } return LocalSurveyModel( @@ -26,23 +28,23 @@ class LocalSurveyModel { } factory LocalSurveyModel.fromEntity(SurveyEntity entity) => LocalSurveyModel( - id: entity.id, - question: entity.question, - date: entity.dateTime, - didAnswer: entity.didAnswer, - ); + id: entity.id, + question: entity.question, + date: entity.dateTime, + didAnswer: entity.didAnswer, + ); SurveyEntity toEntity() => SurveyEntity( - id: id, - question: question, - dateTime: date, - didAnswer: didAnswer, - ); + id: id, + question: question, + dateTime: date, + didAnswer: didAnswer, + ); Map toJson() => { - 'id': id, - 'question': question, - 'date': date.toIso8601String(), - 'didAnswer': didAnswer.toString(), - }; -} \ No newline at end of file + 'id': id, + 'question': question, + 'date': date.toIso8601String(), + 'didAnswer': didAnswer.toString(), + }; +} diff --git a/lib/data/models/local_survey_result_model.dart b/lib/data/models/local_survey_result_model.dart index 4bbb39e5..c70be354 100644 --- a/lib/data/models/local_survey_result_model.dart +++ b/lib/data/models/local_survey_result_model.dart @@ -17,27 +17,33 @@ class LocalSurveyResultModel { throw Exception(); } return LocalSurveyResultModel( - surveyId: json['surveyId'], - question: json['question'], - answers: json['answers'].map((answerJson) => LocalSurveyAnswerModel.fromJson(answerJson)).toList() - ); + surveyId: json['surveyId'], + question: json['question'], + answers: json['answers'] + .map( + (answerJson) => LocalSurveyAnswerModel.fromJson(answerJson)) + .toList()); } - factory LocalSurveyResultModel.fromEntity(SurveyResultEntity entity) => LocalSurveyResultModel( - surveyId: entity.surveyId, - question: entity.question, - answers: entity.answers.map((answer) => LocalSurveyAnswerModel.fromEntity(answer)).toList() - ); + factory LocalSurveyResultModel.fromEntity(SurveyResultEntity entity) => + LocalSurveyResultModel( + surveyId: entity.surveyId, + question: entity.question, + answers: entity.answers + .map( + (answer) => LocalSurveyAnswerModel.fromEntity(answer)) + .toList()); SurveyResultEntity toEntity() => SurveyResultEntity( - surveyId: surveyId, - question: question, - answers: answers.map((answer) => answer.toEntity()).toList() - ); + surveyId: surveyId, + question: question, + answers: answers + .map((answer) => answer.toEntity()) + .toList()); Map toJson() => { - 'surveyId': surveyId, - 'question': question, - 'answers': answers.map((answer) => answer.toJson()).toList() - }; -} \ No newline at end of file + 'surveyId': surveyId, + 'question': question, + 'answers': answers.map((answer) => answer.toJson()).toList() + }; +} diff --git a/lib/data/models/models.dart b/lib/data/models/models.dart index 20f95718..17f0bd88 100644 --- a/lib/data/models/models.dart +++ b/lib/data/models/models.dart @@ -4,4 +4,4 @@ export './local_survey_model.dart'; export './remote_survey_answer_model.dart'; export './remote_survey_result_model.dart'; export './local_survey_answer_model.dart'; -export './local_survey_result_model.dart'; \ No newline at end of file +export './local_survey_result_model.dart'; diff --git a/lib/data/models/remote_account_model.dart b/lib/data/models/remote_account_model.dart index 0bbceba9..a2fd0a6b 100644 --- a/lib/data/models/remote_account_model.dart +++ b/lib/data/models/remote_account_model.dart @@ -4,7 +4,7 @@ import '../http/http.dart'; class RemoteAccountModel { final String accessToken; - RemoteAccountModel({ required this.accessToken }); + RemoteAccountModel({required this.accessToken}); factory RemoteAccountModel.fromJson(Map json) { if (!json.containsKey('accessToken')) { @@ -14,4 +14,4 @@ class RemoteAccountModel { } AccountEntity toEntity() => AccountEntity(token: accessToken); -} \ No newline at end of file +} diff --git a/lib/data/models/remote_survey_answer_model.dart b/lib/data/models/remote_survey_answer_model.dart index c044da16..9f6262f6 100644 --- a/lib/data/models/remote_survey_answer_model.dart +++ b/lib/data/models/remote_survey_answer_model.dart @@ -15,7 +15,9 @@ class RemoteSurveyAnswerModel { }); factory RemoteSurveyAnswerModel.fromJson(Map json) { - if (!json.keys.toSet().containsAll(['answer', 'isCurrentAccountAnswer', 'percent'])) { + if (!json.keys + .toSet() + .containsAll(['answer', 'isCurrentAccountAnswer', 'percent'])) { throw HttpError.invalidData; } return RemoteSurveyAnswerModel( @@ -27,9 +29,9 @@ class RemoteSurveyAnswerModel { } SurveyAnswerEntity toEntity() => SurveyAnswerEntity( - image: image, - answer: answer, - isCurrentAnswer: isCurrentAccountAnswer, - percent: percent, - ); -} \ No newline at end of file + image: image, + answer: answer, + isCurrentAnswer: isCurrentAccountAnswer, + percent: percent, + ); +} diff --git a/lib/data/models/remote_survey_model.dart b/lib/data/models/remote_survey_model.dart index 30fb7dba..492d86f8 100644 --- a/lib/data/models/remote_survey_model.dart +++ b/lib/data/models/remote_survey_model.dart @@ -15,7 +15,9 @@ class RemoteSurveyModel { }); factory RemoteSurveyModel.fromJson(Map json) { - if (!json.keys.toSet().containsAll(['id', 'question', 'date', 'didAnswer'])) { + if (!json.keys + .toSet() + .containsAll(['id', 'question', 'date', 'didAnswer'])) { throw HttpError.invalidData; } return RemoteSurveyModel( @@ -27,9 +29,9 @@ class RemoteSurveyModel { } SurveyEntity toEntity() => SurveyEntity( - id: id, - question: question, - dateTime: DateTime.parse(date), - didAnswer: didAnswer, - ); -} \ No newline at end of file + id: id, + question: question, + dateTime: DateTime.parse(date), + didAnswer: didAnswer, + ); +} diff --git a/lib/data/models/remote_survey_result_model.dart b/lib/data/models/remote_survey_result_model.dart index bcf0b9d5..78326ece 100644 --- a/lib/data/models/remote_survey_result_model.dart +++ b/lib/data/models/remote_survey_result_model.dart @@ -20,13 +20,18 @@ class RemoteSurveyResultModel { return RemoteSurveyResultModel( surveyId: json['surveyId'], question: json['question'], - answers: json['answers'].map((answerJson) => RemoteSurveyAnswerModel.fromJson(answerJson)).toList(), + answers: json['answers'] + .map( + (answerJson) => RemoteSurveyAnswerModel.fromJson(answerJson)) + .toList(), ); } SurveyResultEntity toEntity() => SurveyResultEntity( - surveyId: surveyId, - question: question, - answers: answers.map((answer) => answer.toEntity()).toList(), - ); -} \ No newline at end of file + surveyId: surveyId, + question: question, + answers: answers + .map((answer) => answer.toEntity()) + .toList(), + ); +} diff --git a/lib/data/usecases/add_account/add_account.dart b/lib/data/usecases/add_account/add_account.dart index 5e014116..2c840207 100644 --- a/lib/data/usecases/add_account/add_account.dart +++ b/lib/data/usecases/add_account/add_account.dart @@ -1 +1 @@ -export './remote_add_account.dart'; \ No newline at end of file +export './remote_add_account.dart'; diff --git a/lib/data/usecases/add_account/remote_add_account.dart b/lib/data/usecases/add_account/remote_add_account.dart index 4d613774..85315d5c 100644 --- a/lib/data/usecases/add_account/remote_add_account.dart +++ b/lib/data/usecases/add_account/remote_add_account.dart @@ -8,20 +8,18 @@ class RemoteAddAccount implements AddAccount { final HttpClient httpClient; final String url; - RemoteAddAccount({ - required this.httpClient, - required this.url - }); + RemoteAddAccount({required this.httpClient, required this.url}); Future add(AddAccountParams params) async { final body = RemoteAddAccountParams.fromDomain(params).toJson(); try { - final httpResponse = await httpClient.request(url: url, method: 'post', body: body); + final httpResponse = + await httpClient.request(url: url, method: 'post', body: body); return RemoteAccountModel.fromJson(httpResponse).toEntity(); - } on HttpError catch(error) { + } on HttpError catch (error) { throw error == HttpError.forbidden - ? DomainError.emailInUse - : DomainError.unexpected; + ? DomainError.emailInUse + : DomainError.unexpected; } } } @@ -32,24 +30,24 @@ class RemoteAddAccountParams { final String password; final String passwordConfirmation; - RemoteAddAccountParams({ - required this.name, - required this.email, - required this.password, - required this.passwordConfirmation - }); + RemoteAddAccountParams( + {required this.name, + required this.email, + required this.password, + required this.passwordConfirmation}); - factory RemoteAddAccountParams.fromDomain(AddAccountParams params) => RemoteAddAccountParams( - name: params.name, - email: params.email, - password: params.password, - passwordConfirmation: params.passwordConfirmation, - ); + factory RemoteAddAccountParams.fromDomain(AddAccountParams params) => + RemoteAddAccountParams( + name: params.name, + email: params.email, + password: params.password, + passwordConfirmation: params.passwordConfirmation, + ); Map toJson() => { - 'name': name, - 'email': email, - 'password': password, - 'passwordConfirmation': passwordConfirmation, - }; -} \ No newline at end of file + 'name': name, + 'email': email, + 'password': password, + 'passwordConfirmation': passwordConfirmation, + }; +} diff --git a/lib/data/usecases/authentication/authentication.dart b/lib/data/usecases/authentication/authentication.dart index c7f5c5bf..da5e00b5 100644 --- a/lib/data/usecases/authentication/authentication.dart +++ b/lib/data/usecases/authentication/authentication.dart @@ -1 +1 @@ -export './remote_authentication.dart'; \ No newline at end of file +export './remote_authentication.dart'; diff --git a/lib/data/usecases/authentication/remote_authentication.dart b/lib/data/usecases/authentication/remote_authentication.dart index fe1edba7..cf5dbdf8 100644 --- a/lib/data/usecases/authentication/remote_authentication.dart +++ b/lib/data/usecases/authentication/remote_authentication.dart @@ -8,20 +8,18 @@ class RemoteAuthentication implements Authentication { final HttpClient httpClient; final String url; - RemoteAuthentication({ - required this.httpClient, - required this.url - }); + RemoteAuthentication({required this.httpClient, required this.url}); Future auth(AuthenticationParams params) async { final body = RemoteAuthenticationParams.fromDomain(params).toJson(); try { - final httpResponse = await httpClient.request(url: url, method: 'post', body: body); + final httpResponse = + await httpClient.request(url: url, method: 'post', body: body); return RemoteAccountModel.fromJson(httpResponse).toEntity(); - } on HttpError catch(error) { + } on HttpError catch (error) { throw error == HttpError.unauthorized - ? DomainError.invalidCredentials - : DomainError.unexpected; + ? DomainError.invalidCredentials + : DomainError.unexpected; } } } @@ -30,13 +28,10 @@ class RemoteAuthenticationParams { final String email; final String password; - RemoteAuthenticationParams({ - required this.email, - required this.password - }); + RemoteAuthenticationParams({required this.email, required this.password}); - factory RemoteAuthenticationParams.fromDomain(AuthenticationParams params) => - RemoteAuthenticationParams(email: params.email, password: params.secret); + factory RemoteAuthenticationParams.fromDomain(AuthenticationParams params) => + RemoteAuthenticationParams(email: params.email, password: params.secret); Map toJson() => {'email': email, 'password': password}; -} \ No newline at end of file +} diff --git a/lib/data/usecases/load_current_account/load_current_account.dart b/lib/data/usecases/load_current_account/load_current_account.dart index 07d48f1b..584622ae 100644 --- a/lib/data/usecases/load_current_account/load_current_account.dart +++ b/lib/data/usecases/load_current_account/load_current_account.dart @@ -1 +1 @@ -export './local_load_current_account.dart'; \ No newline at end of file +export './local_load_current_account.dart'; diff --git a/lib/data/usecases/load_current_account/local_load_current_account.dart b/lib/data/usecases/load_current_account/local_load_current_account.dart index 87b02494..daba7ba5 100644 --- a/lib/data/usecases/load_current_account/local_load_current_account.dart +++ b/lib/data/usecases/load_current_account/local_load_current_account.dart @@ -6,15 +6,15 @@ import '../../cache/cache.dart'; class LocalLoadCurrentAccount implements LoadCurrentAccount { final FetchSecureCacheStorage fetchSecureCacheStorage; - LocalLoadCurrentAccount({ required this.fetchSecureCacheStorage }); + LocalLoadCurrentAccount({required this.fetchSecureCacheStorage}); Future load() async { try { final token = await fetchSecureCacheStorage.fetch('token'); if (token == null) throw Error(); return AccountEntity(token: token); - } catch(error) { + } catch (error) { throw DomainError.unexpected; } } -} \ No newline at end of file +} diff --git a/lib/data/usecases/load_survey_result/load_survey_result.dart b/lib/data/usecases/load_survey_result/load_survey_result.dart index eebdbae9..94eb4252 100644 --- a/lib/data/usecases/load_survey_result/load_survey_result.dart +++ b/lib/data/usecases/load_survey_result/load_survey_result.dart @@ -1,2 +1,2 @@ export './remote_load_survey_result.dart'; -export './local_load_survey_result.dart'; \ No newline at end of file +export './local_load_survey_result.dart'; diff --git a/lib/data/usecases/load_survey_result/local_load_survey_result.dart b/lib/data/usecases/load_survey_result/local_load_survey_result.dart index 18de8e37..ca458c6f 100644 --- a/lib/data/usecases/load_survey_result/local_load_survey_result.dart +++ b/lib/data/usecases/load_survey_result/local_load_survey_result.dart @@ -7,16 +7,16 @@ import '../../models/models.dart'; class LocalLoadSurveyResult implements LoadSurveyResult { final CacheStorage cacheStorage; - LocalLoadSurveyResult({ required this.cacheStorage }); + LocalLoadSurveyResult({required this.cacheStorage}); - Future loadBySurvey({ required String surveyId }) async { + Future loadBySurvey({required String surveyId}) async { try { final data = await cacheStorage.fetch('survey_result/$surveyId'); if (data?.isEmpty != false) { throw Exception(); } return LocalSurveyResultModel.fromJson(data).toEntity(); - } catch(error) { + } catch (error) { throw DomainError.unexpected; } } @@ -25,7 +25,7 @@ class LocalLoadSurveyResult implements LoadSurveyResult { try { final data = await cacheStorage.fetch('survey_result/$surveyId'); LocalSurveyResultModel.fromJson(data).toEntity(); - } catch(error) { + } catch (error) { await cacheStorage.delete('survey_result/$surveyId'); } } @@ -33,9 +33,10 @@ class LocalLoadSurveyResult implements LoadSurveyResult { Future save(SurveyResultEntity surveyResult) async { try { final json = LocalSurveyResultModel.fromEntity(surveyResult).toJson(); - await cacheStorage.save(key: 'survey_result/${surveyResult.surveyId}', value: json); - } catch(error) { + await cacheStorage.save( + key: 'survey_result/${surveyResult.surveyId}', value: json); + } catch (error) { throw DomainError.unexpected; } } -} \ No newline at end of file +} diff --git a/lib/data/usecases/load_survey_result/remote_load_survey_result.dart b/lib/data/usecases/load_survey_result/remote_load_survey_result.dart index a7313c0a..4ad90db1 100644 --- a/lib/data/usecases/load_survey_result/remote_load_survey_result.dart +++ b/lib/data/usecases/load_survey_result/remote_load_survey_result.dart @@ -8,19 +8,16 @@ class RemoteLoadSurveyResult implements LoadSurveyResult { final String url; final HttpClient httpClient; - RemoteLoadSurveyResult({ - required this.url, - required this.httpClient - }); + RemoteLoadSurveyResult({required this.url, required this.httpClient}); - Future loadBySurvey({ required String surveyId }) async { + Future loadBySurvey({required String surveyId}) async { try { final json = await httpClient.request(url: url, method: 'get'); return RemoteSurveyResultModel.fromJson(json).toEntity(); - } on HttpError catch(error) { + } on HttpError catch (error) { throw error == HttpError.forbidden - ? DomainError.accessDenied - : DomainError.unexpected; + ? DomainError.accessDenied + : DomainError.unexpected; } } -} \ No newline at end of file +} diff --git a/lib/data/usecases/load_surveys/load_surveys.dart b/lib/data/usecases/load_surveys/load_surveys.dart index 54806ea3..9e405733 100644 --- a/lib/data/usecases/load_surveys/load_surveys.dart +++ b/lib/data/usecases/load_surveys/load_surveys.dart @@ -1,2 +1,2 @@ export './remote_load_surveys.dart'; -export './local_load_surveys.dart'; \ No newline at end of file +export './local_load_surveys.dart'; diff --git a/lib/data/usecases/load_surveys/local_load_surveys.dart b/lib/data/usecases/load_surveys/local_load_surveys.dart index 34961500..aa75f8f9 100644 --- a/lib/data/usecases/load_surveys/local_load_surveys.dart +++ b/lib/data/usecases/load_surveys/local_load_surveys.dart @@ -7,7 +7,7 @@ import '../../models/models.dart'; class LocalLoadSurveys implements LoadSurveys { final CacheStorage cacheStorage; - LocalLoadSurveys({ required this.cacheStorage }); + LocalLoadSurveys({required this.cacheStorage}); Future> load() async { try { @@ -16,7 +16,7 @@ class LocalLoadSurveys implements LoadSurveys { throw Exception(); } return _mapToEntity(data); - } catch(error) { + } catch (error) { throw DomainError.unexpected; } } @@ -25,7 +25,7 @@ class LocalLoadSurveys implements LoadSurveys { try { final data = await cacheStorage.fetch('surveys'); _mapToEntity(data); - } catch(error) { + } catch (error) { await cacheStorage.delete('surveys'); } } @@ -34,14 +34,16 @@ class LocalLoadSurveys implements LoadSurveys { try { final json = _mapToJson(surveys); await cacheStorage.save(key: 'surveys', value: json); - } catch(error) { + } catch (error) { throw DomainError.unexpected; } } - List _mapToEntity(dynamic list) => - list.map((json) => LocalSurveyModel.fromJson(json).toEntity()).toList(); + List _mapToEntity(dynamic list) => list + .map((json) => LocalSurveyModel.fromJson(json).toEntity()) + .toList(); - List _mapToJson(List list) => - list.map((entity) => LocalSurveyModel.fromEntity(entity).toJson()).toList(); -} \ No newline at end of file + List _mapToJson(List list) => list + .map((entity) => LocalSurveyModel.fromEntity(entity).toJson()) + .toList(); +} diff --git a/lib/data/usecases/load_surveys/remote_load_surveys.dart b/lib/data/usecases/load_surveys/remote_load_surveys.dart index 8b7f105c..df775000 100644 --- a/lib/data/usecases/load_surveys/remote_load_surveys.dart +++ b/lib/data/usecases/load_surveys/remote_load_surveys.dart @@ -8,19 +8,19 @@ class RemoteLoadSurveys implements LoadSurveys { final String url; final HttpClient httpClient; - RemoteLoadSurveys({ - required this.url, - required this.httpClient - }); + RemoteLoadSurveys({required this.url, required this.httpClient}); Future> load() async { try { final httpResponse = await httpClient.request(url: url, method: 'get'); - return httpResponse.map((json) => RemoteSurveyModel.fromJson(json).toEntity()).toList(); - } on HttpError catch(error) { + return httpResponse + .map( + (json) => RemoteSurveyModel.fromJson(json).toEntity()) + .toList(); + } on HttpError catch (error) { throw error == HttpError.forbidden - ? DomainError.accessDenied - : DomainError.unexpected; + ? DomainError.accessDenied + : DomainError.unexpected; } } -} \ No newline at end of file +} diff --git a/lib/data/usecases/save_current_account/local_save_current_account.dart b/lib/data/usecases/save_current_account/local_save_current_account.dart index 2ad1e888..40340c72 100644 --- a/lib/data/usecases/save_current_account/local_save_current_account.dart +++ b/lib/data/usecases/save_current_account/local_save_current_account.dart @@ -6,13 +6,13 @@ import '../../cache/cache.dart'; class LocalSaveCurrentAccount implements SaveCurrentAccount { final SaveSecureCacheStorage saveSecureCacheStorage; - LocalSaveCurrentAccount({ required this.saveSecureCacheStorage }); + LocalSaveCurrentAccount({required this.saveSecureCacheStorage}); Future save(AccountEntity account) async { try { await saveSecureCacheStorage.save(key: 'token', value: account.token); - } catch(error) { + } catch (error) { throw DomainError.unexpected; } } -} \ No newline at end of file +} diff --git a/lib/data/usecases/save_current_account/save_current_account.dart b/lib/data/usecases/save_current_account/save_current_account.dart index 859e75c3..6f2fb482 100644 --- a/lib/data/usecases/save_current_account/save_current_account.dart +++ b/lib/data/usecases/save_current_account/save_current_account.dart @@ -1 +1 @@ -export './local_save_current_account.dart'; \ No newline at end of file +export './local_save_current_account.dart'; diff --git a/lib/data/usecases/save_survey_result/remote_save_survey_result.dart b/lib/data/usecases/save_survey_result/remote_save_survey_result.dart index 5511940a..c52898fb 100644 --- a/lib/data/usecases/save_survey_result/remote_save_survey_result.dart +++ b/lib/data/usecases/save_survey_result/remote_save_survey_result.dart @@ -8,19 +8,17 @@ class RemoteSaveSurveyResult implements SaveSurveyResult { final String url; final HttpClient httpClient; - RemoteSaveSurveyResult({ - required this.url, - required this.httpClient - }); + RemoteSaveSurveyResult({required this.url, required this.httpClient}); - Future save({ required String answer }) async { + Future save({required String answer}) async { try { - final json = await httpClient.request(url: url, method: 'put', body: {'answer': answer}); + final json = await httpClient + .request(url: url, method: 'put', body: {'answer': answer}); return RemoteSurveyResultModel.fromJson(json).toEntity(); - } on HttpError catch(error) { + } on HttpError catch (error) { throw error == HttpError.forbidden - ? DomainError.accessDenied - : DomainError.unexpected; + ? DomainError.accessDenied + : DomainError.unexpected; } } -} \ No newline at end of file +} diff --git a/lib/data/usecases/save_survey_result/save_survey_result.dart b/lib/data/usecases/save_survey_result/save_survey_result.dart index 198d22ed..ef652747 100644 --- a/lib/data/usecases/save_survey_result/save_survey_result.dart +++ b/lib/data/usecases/save_survey_result/save_survey_result.dart @@ -1 +1 @@ -export './remote_save_survey_result.dart'; \ No newline at end of file +export './remote_save_survey_result.dart'; diff --git a/lib/data/usecases/usecases.dart b/lib/data/usecases/usecases.dart index 42f1325f..f205cf5b 100644 --- a/lib/data/usecases/usecases.dart +++ b/lib/data/usecases/usecases.dart @@ -4,4 +4,4 @@ export './load_surveys/load_surveys.dart'; export './load_survey_result/load_survey_result.dart'; export './save_survey_result/save_survey_result.dart'; export './save_current_account/save_current_account.dart'; -export './load_current_account/load_current_account.dart'; \ No newline at end of file +export './load_current_account/load_current_account.dart'; diff --git a/lib/domain/entities/account_entity.dart b/lib/domain/entities/account_entity.dart index a08144a9..794c53f5 100644 --- a/lib/domain/entities/account_entity.dart +++ b/lib/domain/entities/account_entity.dart @@ -5,5 +5,5 @@ class AccountEntity extends Equatable { List get props => [token]; - AccountEntity({ required this.token }); -} \ No newline at end of file + AccountEntity({required this.token}); +} diff --git a/lib/domain/entities/entities.dart b/lib/domain/entities/entities.dart index 1301b706..e50ad1ba 100644 --- a/lib/domain/entities/entities.dart +++ b/lib/domain/entities/entities.dart @@ -1,4 +1,4 @@ export './account_entity.dart'; export './survey_entity.dart'; export './survey_result_entity.dart'; -export './survey_answer_entity.dart'; \ No newline at end of file +export './survey_answer_entity.dart'; diff --git a/lib/domain/entities/survey_answer_entity.dart b/lib/domain/entities/survey_answer_entity.dart index ebe32699..94824315 100644 --- a/lib/domain/entities/survey_answer_entity.dart +++ b/lib/domain/entities/survey_answer_entity.dart @@ -14,4 +14,4 @@ class SurveyAnswerEntity extends Equatable { required this.isCurrentAnswer, required this.percent, }); -} \ No newline at end of file +} diff --git a/lib/domain/entities/survey_entity.dart b/lib/domain/entities/survey_entity.dart index 8533cb9b..eb1db834 100644 --- a/lib/domain/entities/survey_entity.dart +++ b/lib/domain/entities/survey_entity.dart @@ -14,4 +14,4 @@ class SurveyEntity extends Equatable { required this.dateTime, required this.didAnswer, }); -} \ No newline at end of file +} diff --git a/lib/domain/entities/survey_result_entity.dart b/lib/domain/entities/survey_result_entity.dart index 7d038d6b..c5ae2b6e 100644 --- a/lib/domain/entities/survey_result_entity.dart +++ b/lib/domain/entities/survey_result_entity.dart @@ -14,4 +14,4 @@ class SurveyResultEntity extends Equatable { required this.question, required this.answers, }); -} \ No newline at end of file +} diff --git a/lib/domain/helpers/domain_error.dart b/lib/domain/helpers/domain_error.dart index 18596702..1e2bd90f 100644 --- a/lib/domain/helpers/domain_error.dart +++ b/lib/domain/helpers/domain_error.dart @@ -1,6 +1 @@ -enum DomainError { - unexpected, - invalidCredentials, - emailInUse, - accessDenied -} \ No newline at end of file +enum DomainError { unexpected, invalidCredentials, emailInUse, accessDenied } diff --git a/lib/domain/helpers/helpers.dart b/lib/domain/helpers/helpers.dart index effaf60a..0d552307 100644 --- a/lib/domain/helpers/helpers.dart +++ b/lib/domain/helpers/helpers.dart @@ -1 +1 @@ -export './domain_error.dart'; \ No newline at end of file +export './domain_error.dart'; diff --git a/lib/domain/usecases/add_account.dart b/lib/domain/usecases/add_account.dart index 231241a2..31f4787d 100644 --- a/lib/domain/usecases/add_account.dart +++ b/lib/domain/usecases/add_account.dart @@ -14,10 +14,9 @@ class AddAccountParams extends Equatable { List get props => [name, email, password, passwordConfirmation]; - AddAccountParams({ - required this.name, - required this.email, - required this.password, - required this.passwordConfirmation - }); -} \ No newline at end of file + AddAccountParams( + {required this.name, + required this.email, + required this.password, + required this.passwordConfirmation}); +} diff --git a/lib/domain/usecases/authentication.dart b/lib/domain/usecases/authentication.dart index a53c506c..143cf432 100644 --- a/lib/domain/usecases/authentication.dart +++ b/lib/domain/usecases/authentication.dart @@ -12,5 +12,5 @@ class AuthenticationParams extends Equatable { List get props => [email, secret]; - AuthenticationParams({ required this.email, required this.secret }); -} \ No newline at end of file + AuthenticationParams({required this.email, required this.secret}); +} diff --git a/lib/domain/usecases/load_current_account.dart b/lib/domain/usecases/load_current_account.dart index ca8c782e..2aba2100 100644 --- a/lib/domain/usecases/load_current_account.dart +++ b/lib/domain/usecases/load_current_account.dart @@ -2,4 +2,4 @@ import '../entities/entities.dart'; abstract class LoadCurrentAccount { Future load(); -} \ No newline at end of file +} diff --git a/lib/domain/usecases/load_survey_result.dart b/lib/domain/usecases/load_survey_result.dart index 4b555db7..89c9fe27 100644 --- a/lib/domain/usecases/load_survey_result.dart +++ b/lib/domain/usecases/load_survey_result.dart @@ -1,5 +1,5 @@ import '../entities/entities.dart'; abstract class LoadSurveyResult { - Future loadBySurvey({ required String surveyId }); -} \ No newline at end of file + Future loadBySurvey({required String surveyId}); +} diff --git a/lib/domain/usecases/load_surveys.dart b/lib/domain/usecases/load_surveys.dart index d2c90dc5..c3ba22b5 100644 --- a/lib/domain/usecases/load_surveys.dart +++ b/lib/domain/usecases/load_surveys.dart @@ -2,4 +2,4 @@ import '../entities/entities.dart'; abstract class LoadSurveys { Future> load(); -} \ No newline at end of file +} diff --git a/lib/domain/usecases/save_current_account.dart b/lib/domain/usecases/save_current_account.dart index cfec1c71..c631f162 100644 --- a/lib/domain/usecases/save_current_account.dart +++ b/lib/domain/usecases/save_current_account.dart @@ -2,4 +2,4 @@ import '../entities/entities.dart'; abstract class SaveCurrentAccount { Future save(AccountEntity account); -} \ No newline at end of file +} diff --git a/lib/domain/usecases/save_survey_result.dart b/lib/domain/usecases/save_survey_result.dart index d4b7286e..adf747bb 100644 --- a/lib/domain/usecases/save_survey_result.dart +++ b/lib/domain/usecases/save_survey_result.dart @@ -1,5 +1,5 @@ import '../entities/entities.dart'; abstract class SaveSurveyResult { - Future save({ required String answer }); -} \ No newline at end of file + Future save({required String answer}); +} diff --git a/lib/domain/usecases/usecases.dart b/lib/domain/usecases/usecases.dart index be283538..f8044284 100644 --- a/lib/domain/usecases/usecases.dart +++ b/lib/domain/usecases/usecases.dart @@ -4,4 +4,4 @@ export './load_surveys.dart'; export './save_current_account.dart'; export './load_current_account.dart'; export './load_survey_result.dart'; -export './save_survey_result.dart'; \ No newline at end of file +export './save_survey_result.dart'; diff --git a/lib/infra/cache/cache.dart b/lib/infra/cache/cache.dart index b23b2c8b..2e59c0b5 100644 --- a/lib/infra/cache/cache.dart +++ b/lib/infra/cache/cache.dart @@ -1,2 +1,2 @@ export './secure_storage_adapter.dart'; -export './local_storage_adapter.dart'; \ No newline at end of file +export './local_storage_adapter.dart'; diff --git a/lib/infra/cache/local_storage_adapter.dart b/lib/infra/cache/local_storage_adapter.dart index a22cca31..2c1fb256 100644 --- a/lib/infra/cache/local_storage_adapter.dart +++ b/lib/infra/cache/local_storage_adapter.dart @@ -5,9 +5,9 @@ import 'package:localstorage/localstorage.dart'; class LocalStorageAdapter implements CacheStorage { final LocalStorage localStorage; - LocalStorageAdapter({ required this.localStorage }); + LocalStorageAdapter({required this.localStorage}); - Future save({ required String key, required dynamic value }) async { + Future save({required String key, required dynamic value}) async { await localStorage.deleteItem(key); await localStorage.setItem(key, value); } @@ -19,4 +19,4 @@ class LocalStorageAdapter implements CacheStorage { Future fetch(String key) async { return await localStorage.getItem(key); } -} \ No newline at end of file +} diff --git a/lib/infra/cache/secure_storage_adapter.dart b/lib/infra/cache/secure_storage_adapter.dart index c42e16d6..1a10808c 100644 --- a/lib/infra/cache/secure_storage_adapter.dart +++ b/lib/infra/cache/secure_storage_adapter.dart @@ -2,12 +2,16 @@ import '../../data/cache/cache.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; -class SecureStorageAdapter implements SaveSecureCacheStorage, FetchSecureCacheStorage, DeleteSecureCacheStorage { +class SecureStorageAdapter + implements + SaveSecureCacheStorage, + FetchSecureCacheStorage, + DeleteSecureCacheStorage { final FlutterSecureStorage secureStorage; - SecureStorageAdapter({ required this.secureStorage }); + SecureStorageAdapter({required this.secureStorage}); - Future save({ required String key, required String value }) async { + Future save({required String key, required String value}) async { await secureStorage.write(key: key, value: value); } @@ -18,4 +22,4 @@ class SecureStorageAdapter implements SaveSecureCacheStorage, FetchSecureCacheSt Future delete(String key) async { await secureStorage.delete(key: key); } -} \ No newline at end of file +} diff --git a/lib/infra/http/http.dart b/lib/infra/http/http.dart index 66499859..fb1105b9 100644 --- a/lib/infra/http/http.dart +++ b/lib/infra/http/http.dart @@ -1 +1 @@ -export './http_adapter.dart'; \ No newline at end of file +export './http_adapter.dart'; diff --git a/lib/infra/http/http_adapter.dart b/lib/infra/http/http_adapter.dart index f417cb74..0ae2e610 100644 --- a/lib/infra/http/http_adapter.dart +++ b/lib/infra/http/http_adapter.dart @@ -8,26 +8,31 @@ class HttpAdapter implements HttpClient { HttpAdapter(this.client); - Future request({ required String url, required String method, Map? body, Map? headers }) async { - final defaultHeaders = headers?.cast() ?? {}..addAll({ - 'content-type': 'application/json', - 'accept': 'application/json' - }); + Future request( + {required String url, + required String method, + Map? body, + Map? headers}) async { + final defaultHeaders = headers?.cast() ?? {} + ..addAll( + {'content-type': 'application/json', 'accept': 'application/json'}); final jsonBody = body != null ? jsonEncode(body) : null; var response = Response('', 500); Future? futureResponse; try { if (method == 'post') { - futureResponse = client.post(Uri.parse(url), headers: defaultHeaders, body: jsonBody); + futureResponse = client.post(Uri.parse(url), + headers: defaultHeaders, body: jsonBody); } else if (method == 'get') { futureResponse = client.get(Uri.parse(url), headers: defaultHeaders); } else if (method == 'put') { - futureResponse = client.put(Uri.parse(url), headers: defaultHeaders, body: jsonBody); + futureResponse = + client.put(Uri.parse(url), headers: defaultHeaders, body: jsonBody); } if (futureResponse != null) { response = await futureResponse.timeout(Duration(seconds: 10)); } - } catch(error) { + } catch (error) { throw HttpError.serverError; } return _handleResponse(response); @@ -35,13 +40,20 @@ class HttpAdapter implements HttpClient { dynamic _handleResponse(Response response) { switch (response.statusCode) { - case 200: return response.body.isEmpty ? null : jsonDecode(response.body); - case 204: return null; - case 400: throw HttpError.badRequest; - case 401: throw HttpError.unauthorized; - case 403: throw HttpError.forbidden; - case 404: throw HttpError.notFound; - default: throw HttpError.serverError; + case 200: + return response.body.isEmpty ? null : jsonDecode(response.body); + case 204: + return null; + case 400: + throw HttpError.badRequest; + case 401: + throw HttpError.unauthorized; + case 403: + throw HttpError.forbidden; + case 404: + throw HttpError.notFound; + default: + throw HttpError.serverError; } } -} \ No newline at end of file +} diff --git a/lib/main/builders/builders.dart b/lib/main/builders/builders.dart index b57e0dfd..8ca90a52 100644 --- a/lib/main/builders/builders.dart +++ b/lib/main/builders/builders.dart @@ -1 +1 @@ -export './validation_builder.dart'; \ No newline at end of file +export './validation_builder.dart'; diff --git a/lib/main/builders/validation_builder.dart b/lib/main/builders/validation_builder.dart index 39d9c07d..22b32e9b 100644 --- a/lib/main/builders/validation_builder.dart +++ b/lib/main/builders/validation_builder.dart @@ -29,9 +29,10 @@ class ValidationBuilder { } ValidationBuilder sameAs(String fieldToCompare) { - validations.add(CompareFieldsValidation(field: fieldName, fieldToCompare: fieldToCompare)); + validations.add(CompareFieldsValidation( + field: fieldName, fieldToCompare: fieldToCompare)); return this; } List build() => validations; -} \ No newline at end of file +} diff --git a/lib/main/composites/composites.dart b/lib/main/composites/composites.dart index 489f9d4d..e211d7a5 100644 --- a/lib/main/composites/composites.dart +++ b/lib/main/composites/composites.dart @@ -1,3 +1,3 @@ export './validation_composite.dart'; export './remote_load_surveys_with_local_fallback.dart'; -export './remote_load_survey_result_with_local_fallback.dart'; \ No newline at end of file +export './remote_load_survey_result_with_local_fallback.dart'; diff --git a/lib/main/composites/remote_load_survey_result_with_local_fallback.dart b/lib/main/composites/remote_load_survey_result_with_local_fallback.dart index 09cc4728..c416d100 100644 --- a/lib/main/composites/remote_load_survey_result_with_local_fallback.dart +++ b/lib/main/composites/remote_load_survey_result_with_local_fallback.dart @@ -12,12 +12,12 @@ class RemoteLoadSurveyResultWithLocalFallback implements LoadSurveyResult { required this.local, }); - Future loadBySurvey({ required String surveyId }) async { + Future loadBySurvey({required String surveyId}) async { try { final surveyResult = await remote.loadBySurvey(surveyId: surveyId); await local.save(surveyResult); return surveyResult; - } catch(error) { + } catch (error) { if (error == DomainError.accessDenied) { rethrow; } @@ -25,4 +25,4 @@ class RemoteLoadSurveyResultWithLocalFallback implements LoadSurveyResult { return await local.loadBySurvey(surveyId: surveyId); } } -} \ No newline at end of file +} diff --git a/lib/main/composites/remote_load_surveys_with_local_fallback.dart b/lib/main/composites/remote_load_surveys_with_local_fallback.dart index dd24ccf5..c69fa89d 100644 --- a/lib/main/composites/remote_load_surveys_with_local_fallback.dart +++ b/lib/main/composites/remote_load_surveys_with_local_fallback.dart @@ -7,17 +7,15 @@ class RemoteLoadSurveysWithLocalFallback implements LoadSurveys { final RemoteLoadSurveys remote; final LocalLoadSurveys local; - RemoteLoadSurveysWithLocalFallback({ - required this.remote, - required this.local - }); + RemoteLoadSurveysWithLocalFallback( + {required this.remote, required this.local}); Future> load() async { try { final surveys = await remote.load(); await local.save(surveys); return surveys; - } catch(error) { + } catch (error) { if (error == DomainError.accessDenied) { rethrow; } @@ -25,4 +23,4 @@ class RemoteLoadSurveysWithLocalFallback implements LoadSurveys { return await local.load(); } } -} \ No newline at end of file +} diff --git a/lib/main/composites/validation_composite.dart b/lib/main/composites/validation_composite.dart index 31ee86d3..de3eba89 100644 --- a/lib/main/composites/validation_composite.dart +++ b/lib/main/composites/validation_composite.dart @@ -6,7 +6,7 @@ class ValidationComposite implements Validation { ValidationComposite(this.validations); - ValidationError? validate({ required String field, required Map input}) { + ValidationError? validate({required String field, required Map input}) { ValidationError? error; for (final validation in validations.where((v) => v.field == field)) { error = validation.validate(input); @@ -16,4 +16,4 @@ class ValidationComposite implements Validation { } return error; } -} \ No newline at end of file +} diff --git a/lib/main/decorators/authorize_http_client_decorator.dart b/lib/main/decorators/authorize_http_client_decorator.dart index 7624f279..e8f85072 100644 --- a/lib/main/decorators/authorize_http_client_decorator.dart +++ b/lib/main/decorators/authorize_http_client_decorator.dart @@ -20,9 +20,11 @@ class AuthorizeHttpClientDecorator implements HttpClient { }) async { try { final token = await fetchSecureCacheStorage.fetch('token'); - final authorizedHeaders = headers ?? {}..addAll({'x-access-token': token}); - return await decoratee.request(url: url, method: method, body: body, headers: authorizedHeaders); - } catch(error) { + final authorizedHeaders = headers ?? {} + ..addAll({'x-access-token': token}); + return await decoratee.request( + url: url, method: method, body: body, headers: authorizedHeaders); + } catch (error) { if (error is HttpError && error != HttpError.forbidden) { rethrow; } else { @@ -31,4 +33,4 @@ class AuthorizeHttpClientDecorator implements HttpClient { } } } -} \ No newline at end of file +} diff --git a/lib/main/decorators/decorators.dart b/lib/main/decorators/decorators.dart index 903fa4ba..bbfbb69c 100644 --- a/lib/main/decorators/decorators.dart +++ b/lib/main/decorators/decorators.dart @@ -1 +1 @@ -export './authorize_http_client_decorator.dart'; \ No newline at end of file +export './authorize_http_client_decorator.dart'; diff --git a/lib/main/factories/cache/cache.dart b/lib/main/factories/cache/cache.dart index 5b08fce2..4a3c30cc 100644 --- a/lib/main/factories/cache/cache.dart +++ b/lib/main/factories/cache/cache.dart @@ -1,2 +1,2 @@ export './secure_storage_adapter_factory.dart'; -export './local_storage_adapter_factory.dart'; \ No newline at end of file +export './local_storage_adapter_factory.dart'; diff --git a/lib/main/factories/cache/local_storage_adapter_factory.dart b/lib/main/factories/cache/local_storage_adapter_factory.dart index 77b652a1..dfceb300 100644 --- a/lib/main/factories/cache/local_storage_adapter_factory.dart +++ b/lib/main/factories/cache/local_storage_adapter_factory.dart @@ -3,4 +3,4 @@ import '../../../infra/cache/cache.dart'; import 'package:localstorage/localstorage.dart'; LocalStorageAdapter makeLocalStorageAdapter() => - LocalStorageAdapter(localStorage: LocalStorage('fordev')); \ No newline at end of file + LocalStorageAdapter(localStorage: LocalStorage('fordev')); diff --git a/lib/main/factories/cache/secure_storage_adapter_factory.dart b/lib/main/factories/cache/secure_storage_adapter_factory.dart index 9621abd0..3a206eb2 100644 --- a/lib/main/factories/cache/secure_storage_adapter_factory.dart +++ b/lib/main/factories/cache/secure_storage_adapter_factory.dart @@ -3,4 +3,4 @@ import '../../../infra/cache/cache.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; SecureStorageAdapter makeSecureStorageAdapter() => - SecureStorageAdapter(secureStorage: FlutterSecureStorage()); \ No newline at end of file + SecureStorageAdapter(secureStorage: FlutterSecureStorage()); diff --git a/lib/main/factories/factories.dart b/lib/main/factories/factories.dart index 3a63e6c9..94dc1f78 100644 --- a/lib/main/factories/factories.dart +++ b/lib/main/factories/factories.dart @@ -1,4 +1,4 @@ export './cache/cache.dart'; export './http/http.dart'; export './pages/pages.dart'; -export './usecases/usecases.dart'; \ No newline at end of file +export './usecases/usecases.dart'; diff --git a/lib/main/factories/http/api_url_factory.dart b/lib/main/factories/http/api_url_factory.dart index 362b2374..1f1c4942 100644 --- a/lib/main/factories/http/api_url_factory.dart +++ b/lib/main/factories/http/api_url_factory.dart @@ -1 +1 @@ -String makeApiUrl(String path) => 'http://fordevs.herokuapp.com/api/$path'; \ No newline at end of file +String makeApiUrl(String path) => 'http://fordevs.herokuapp.com/api/$path'; diff --git a/lib/main/factories/http/authorize_http_client_decorator_factory.dart b/lib/main/factories/http/authorize_http_client_decorator_factory.dart index 0ce9e404..e0befe37 100644 --- a/lib/main/factories/http/authorize_http_client_decorator_factory.dart +++ b/lib/main/factories/http/authorize_http_client_decorator_factory.dart @@ -3,7 +3,7 @@ import '../../decorators/decorators.dart'; import '../../factories/factories.dart'; HttpClient makeAuthorizeHttpClientDecorator() => AuthorizeHttpClientDecorator( - decoratee: makeHttpAdapter(), - fetchSecureCacheStorage: makeSecureStorageAdapter(), - deleteSecureCacheStorage: makeSecureStorageAdapter(), -); \ No newline at end of file + decoratee: makeHttpAdapter(), + fetchSecureCacheStorage: makeSecureStorageAdapter(), + deleteSecureCacheStorage: makeSecureStorageAdapter(), + ); diff --git a/lib/main/factories/http/http.dart b/lib/main/factories/http/http.dart index b8639d26..3b84c3fd 100644 --- a/lib/main/factories/http/http.dart +++ b/lib/main/factories/http/http.dart @@ -1,3 +1,3 @@ export './http_client_factory.dart'; export './api_url_factory.dart'; -export './authorize_http_client_decorator_factory.dart'; \ No newline at end of file +export './authorize_http_client_decorator_factory.dart'; diff --git a/lib/main/factories/http/http_client_factory.dart b/lib/main/factories/http/http_client_factory.dart index 7f839b07..f449ebfc 100644 --- a/lib/main/factories/http/http_client_factory.dart +++ b/lib/main/factories/http/http_client_factory.dart @@ -3,4 +3,4 @@ import '../../../infra/http/http.dart'; import 'package:http/http.dart'; -HttpClient makeHttpAdapter() => HttpAdapter(Client()); \ No newline at end of file +HttpClient makeHttpAdapter() => HttpAdapter(Client()); diff --git a/lib/main/factories/pages/login/login.dart b/lib/main/factories/pages/login/login.dart index e2412043..fec661e0 100644 --- a/lib/main/factories/pages/login/login.dart +++ b/lib/main/factories/pages/login/login.dart @@ -1,3 +1,3 @@ export './login_page_factory.dart'; export './login_presenter_factory.dart'; -export './login_validation_factory.dart'; \ No newline at end of file +export './login_validation_factory.dart'; diff --git a/lib/main/factories/pages/login/login_page_factory.dart b/lib/main/factories/pages/login/login_page_factory.dart index 13fc27cb..ad39aded 100644 --- a/lib/main/factories/pages/login/login_page_factory.dart +++ b/lib/main/factories/pages/login/login_page_factory.dart @@ -3,4 +3,4 @@ import '../../factories.dart'; import 'package:flutter/material.dart'; -Widget makeLoginPage() => LoginPage(makeGetxLoginPresenter()); \ No newline at end of file +Widget makeLoginPage() => LoginPage(makeGetxLoginPresenter()); diff --git a/lib/main/factories/pages/login/login_presenter_factory.dart b/lib/main/factories/pages/login/login_presenter_factory.dart index d07fc58f..e2b0ec4f 100644 --- a/lib/main/factories/pages/login/login_presenter_factory.dart +++ b/lib/main/factories/pages/login/login_presenter_factory.dart @@ -3,7 +3,6 @@ import '../../../../ui/pages/pages.dart'; import '../../factories.dart'; LoginPresenter makeGetxLoginPresenter() => GetxLoginPresenter( - authentication: makeRemoteAuthentication(), - validation: makeLoginValidation(), - saveCurrentAccount: makeLocalSaveCurrentAccount() -); \ No newline at end of file + authentication: makeRemoteAuthentication(), + validation: makeLoginValidation(), + saveCurrentAccount: makeLocalSaveCurrentAccount()); diff --git a/lib/main/factories/pages/login/login_validation_factory.dart b/lib/main/factories/pages/login/login_validation_factory.dart index 409f8474..5c29855a 100644 --- a/lib/main/factories/pages/login/login_validation_factory.dart +++ b/lib/main/factories/pages/login/login_validation_factory.dart @@ -6,6 +6,6 @@ import '../../../composites/composites.dart'; Validation makeLoginValidation() => ValidationComposite(makeLoginValidations()); List makeLoginValidations() => [ - ...ValidationBuilder.field('email').required().email().build(), - ...ValidationBuilder.field('password').required().min(3).build() -]; \ No newline at end of file + ...ValidationBuilder.field('email').required().email().build(), + ...ValidationBuilder.field('password').required().min(3).build() + ]; diff --git a/lib/main/factories/pages/pages.dart b/lib/main/factories/pages/pages.dart index ca4fcbc5..7ba64a02 100644 --- a/lib/main/factories/pages/pages.dart +++ b/lib/main/factories/pages/pages.dart @@ -2,4 +2,4 @@ export './login/login.dart'; export './signup/signup.dart'; export './splash/splash.dart'; export './surveys/surveys.dart'; -export './survey_result/survey_result.dart'; \ No newline at end of file +export './survey_result/survey_result.dart'; diff --git a/lib/main/factories/pages/signup/signup.dart b/lib/main/factories/pages/signup/signup.dart index 5b5f8be0..64781491 100644 --- a/lib/main/factories/pages/signup/signup.dart +++ b/lib/main/factories/pages/signup/signup.dart @@ -1,3 +1,3 @@ export './signup_page_factory.dart'; export './signup_presenter_factory.dart'; -export './signup_validation_factory.dart'; \ No newline at end of file +export './signup_validation_factory.dart'; diff --git a/lib/main/factories/pages/signup/signup_page_factory.dart b/lib/main/factories/pages/signup/signup_page_factory.dart index 45fe38b6..2b2269a3 100644 --- a/lib/main/factories/pages/signup/signup_page_factory.dart +++ b/lib/main/factories/pages/signup/signup_page_factory.dart @@ -3,4 +3,4 @@ import '../../factories.dart'; import 'package:flutter/material.dart'; -Widget makeSignUpPage() => SignUpPage(makeGetxSignUpPresenter()); \ No newline at end of file +Widget makeSignUpPage() => SignUpPage(makeGetxSignUpPresenter()); diff --git a/lib/main/factories/pages/signup/signup_presenter_factory.dart b/lib/main/factories/pages/signup/signup_presenter_factory.dart index 5dc5dfe4..f6d2048f 100644 --- a/lib/main/factories/pages/signup/signup_presenter_factory.dart +++ b/lib/main/factories/pages/signup/signup_presenter_factory.dart @@ -3,7 +3,6 @@ import '../../../../ui/pages/pages.dart'; import '../../factories.dart'; SignUpPresenter makeGetxSignUpPresenter() => GetxSignUpPresenter( - addAccount: makeRemoteAddAccount(), - validation: makeSignUpValidation(), - saveCurrentAccount: makeLocalSaveCurrentAccount() -); \ No newline at end of file + addAccount: makeRemoteAddAccount(), + validation: makeSignUpValidation(), + saveCurrentAccount: makeLocalSaveCurrentAccount()); diff --git a/lib/main/factories/pages/signup/signup_validation_factory.dart b/lib/main/factories/pages/signup/signup_validation_factory.dart index 46a81451..fac178ba 100644 --- a/lib/main/factories/pages/signup/signup_validation_factory.dart +++ b/lib/main/factories/pages/signup/signup_validation_factory.dart @@ -3,11 +3,15 @@ import '../../../../validation/protocols/protocols.dart'; import '../../../builders/builders.dart'; import '../../../composites/composites.dart'; -Validation makeSignUpValidation() => ValidationComposite(makeSignUpValidations()); +Validation makeSignUpValidation() => + ValidationComposite(makeSignUpValidations()); List makeSignUpValidations() => [ - ...ValidationBuilder.field('name').required().min(3).build(), - ...ValidationBuilder.field('email').required().email().build(), - ...ValidationBuilder.field('password').required().min(3).build(), - ...ValidationBuilder.field('passwordConfirmation').required().sameAs('password').build() -]; \ No newline at end of file + ...ValidationBuilder.field('name').required().min(3).build(), + ...ValidationBuilder.field('email').required().email().build(), + ...ValidationBuilder.field('password').required().min(3).build(), + ...ValidationBuilder.field('passwordConfirmation') + .required() + .sameAs('password') + .build() + ]; diff --git a/lib/main/factories/pages/splash/splash.dart b/lib/main/factories/pages/splash/splash.dart index 57b019ca..d2c3c431 100644 --- a/lib/main/factories/pages/splash/splash.dart +++ b/lib/main/factories/pages/splash/splash.dart @@ -1,2 +1,2 @@ export './splash_page_factory.dart'; -export './splash_presenter_factory.dart'; \ No newline at end of file +export './splash_presenter_factory.dart'; diff --git a/lib/main/factories/pages/splash/splash_page_factory.dart b/lib/main/factories/pages/splash/splash_page_factory.dart index 6b8c99df..03b8c6a7 100644 --- a/lib/main/factories/pages/splash/splash_page_factory.dart +++ b/lib/main/factories/pages/splash/splash_page_factory.dart @@ -3,4 +3,4 @@ import '../../factories.dart'; import 'package:flutter/material.dart'; -Widget makeSplashPage() => SplashPage(presenter: makeGetxSplashPresenter()); \ No newline at end of file +Widget makeSplashPage() => SplashPage(presenter: makeGetxSplashPresenter()); diff --git a/lib/main/factories/pages/splash/splash_presenter_factory.dart b/lib/main/factories/pages/splash/splash_presenter_factory.dart index 16653035..e4fdad95 100644 --- a/lib/main/factories/pages/splash/splash_presenter_factory.dart +++ b/lib/main/factories/pages/splash/splash_presenter_factory.dart @@ -3,4 +3,4 @@ import '../../../../ui/pages/pages.dart'; import '../../factories.dart'; SplashPresenter makeGetxSplashPresenter() => - GetxSplashPresenter(loadCurrentAccount: makeLocalLoadCurrentAccount()); \ No newline at end of file + GetxSplashPresenter(loadCurrentAccount: makeLocalLoadCurrentAccount()); diff --git a/lib/main/factories/pages/survey_result/survey_result.dart b/lib/main/factories/pages/survey_result/survey_result.dart index 5642f687..b49f5d51 100644 --- a/lib/main/factories/pages/survey_result/survey_result.dart +++ b/lib/main/factories/pages/survey_result/survey_result.dart @@ -1,2 +1,2 @@ export './survey_result_page_factory.dart'; -export './survey_result_presenter_factory.dart'; \ No newline at end of file +export './survey_result_presenter_factory.dart'; diff --git a/lib/main/factories/pages/survey_result/survey_result_page_factory.dart b/lib/main/factories/pages/survey_result/survey_result_page_factory.dart index c808b4c4..a7cba0d9 100644 --- a/lib/main/factories/pages/survey_result/survey_result_page_factory.dart +++ b/lib/main/factories/pages/survey_result/survey_result_page_factory.dart @@ -4,5 +4,5 @@ import '../../factories.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -Widget makeSurveyResultPage() => - SurveyResultPage(makeGetxSurveyResultPresenter(Get.parameters['survey_id'] ?? '')); \ No newline at end of file +Widget makeSurveyResultPage() => SurveyResultPage( + makeGetxSurveyResultPresenter(Get.parameters['survey_id'] ?? '')); diff --git a/lib/main/factories/pages/survey_result/survey_result_presenter_factory.dart b/lib/main/factories/pages/survey_result/survey_result_presenter_factory.dart index c0de61bf..a56b92a0 100644 --- a/lib/main/factories/pages/survey_result/survey_result_presenter_factory.dart +++ b/lib/main/factories/pages/survey_result/survey_result_presenter_factory.dart @@ -2,8 +2,8 @@ import '../../../../presentation/presenters/presenters.dart'; import '../../../../ui/pages/pages.dart'; import '../../factories.dart'; -SurveyResultPresenter makeGetxSurveyResultPresenter(String surveyId) => GetxSurveyResultPresenter( - loadSurveyResult: makeRemoteLoadSurveyResultWithLocalFallback(surveyId), - saveSurveyResult: makeRemoteSaveSurveyResult(surveyId), - surveyId: surveyId -); \ No newline at end of file +SurveyResultPresenter makeGetxSurveyResultPresenter(String surveyId) => + GetxSurveyResultPresenter( + loadSurveyResult: makeRemoteLoadSurveyResultWithLocalFallback(surveyId), + saveSurveyResult: makeRemoteSaveSurveyResult(surveyId), + surveyId: surveyId); diff --git a/lib/main/factories/pages/surveys/surveys.dart b/lib/main/factories/pages/surveys/surveys.dart index 3f417acd..5955bf70 100644 --- a/lib/main/factories/pages/surveys/surveys.dart +++ b/lib/main/factories/pages/surveys/surveys.dart @@ -1,2 +1,2 @@ export './surveys_page_factory.dart'; -export './surveys_presenter_factory.dart'; \ No newline at end of file +export './surveys_presenter_factory.dart'; diff --git a/lib/main/factories/pages/surveys/surveys_page_factory.dart b/lib/main/factories/pages/surveys/surveys_page_factory.dart index 0ef6ded7..18f78fbe 100644 --- a/lib/main/factories/pages/surveys/surveys_page_factory.dart +++ b/lib/main/factories/pages/surveys/surveys_page_factory.dart @@ -3,4 +3,4 @@ import '../../factories.dart'; import 'package:flutter/material.dart'; -Widget makeSurveysPage() => SurveysPage(makeGetxSurveysPresenter()); \ No newline at end of file +Widget makeSurveysPage() => SurveysPage(makeGetxSurveysPresenter()); diff --git a/lib/main/factories/pages/surveys/surveys_presenter_factory.dart b/lib/main/factories/pages/surveys/surveys_presenter_factory.dart index 25c41305..b9ddd7e3 100644 --- a/lib/main/factories/pages/surveys/surveys_presenter_factory.dart +++ b/lib/main/factories/pages/surveys/surveys_presenter_factory.dart @@ -3,5 +3,5 @@ import '../../../../ui/pages/pages.dart'; import '../../factories.dart'; SurveysPresenter makeGetxSurveysPresenter() => GetxSurveysPresenter( - loadSurveys: makeRemoteLoadSurveysWithLocalFallback(), -); \ No newline at end of file + loadSurveys: makeRemoteLoadSurveysWithLocalFallback(), + ); diff --git a/lib/main/factories/usecases/add_account_factory.dart b/lib/main/factories/usecases/add_account_factory.dart index 4d2b3b3b..e15538b0 100644 --- a/lib/main/factories/usecases/add_account_factory.dart +++ b/lib/main/factories/usecases/add_account_factory.dart @@ -2,7 +2,5 @@ import '../../../data/usecases/usecases.dart'; import '../../../domain/usecases/usecases.dart'; import '../factories.dart'; -AddAccount makeRemoteAddAccount() => RemoteAddAccount( - httpClient: makeHttpAdapter(), - url: makeApiUrl('signup') -); \ No newline at end of file +AddAccount makeRemoteAddAccount() => + RemoteAddAccount(httpClient: makeHttpAdapter(), url: makeApiUrl('signup')); diff --git a/lib/main/factories/usecases/authentication_factory.dart b/lib/main/factories/usecases/authentication_factory.dart index 129e2ebf..b8d5a9c0 100644 --- a/lib/main/factories/usecases/authentication_factory.dart +++ b/lib/main/factories/usecases/authentication_factory.dart @@ -3,6 +3,4 @@ import '../../../domain/usecases/usecases.dart'; import '../factories.dart'; Authentication makeRemoteAuthentication() => RemoteAuthentication( - httpClient: makeHttpAdapter(), - url: makeApiUrl('login') -); \ No newline at end of file + httpClient: makeHttpAdapter(), url: makeApiUrl('login')); diff --git a/lib/main/factories/usecases/load_current_account_factory.dart b/lib/main/factories/usecases/load_current_account_factory.dart index 5fc0f420..c45fe690 100644 --- a/lib/main/factories/usecases/load_current_account_factory.dart +++ b/lib/main/factories/usecases/load_current_account_factory.dart @@ -3,5 +3,4 @@ import '../../../domain/usecases/usecases.dart'; import '../factories.dart'; LoadCurrentAccount makeLocalLoadCurrentAccount() => LocalLoadCurrentAccount( - fetchSecureCacheStorage: makeSecureStorageAdapter() -); \ No newline at end of file + fetchSecureCacheStorage: makeSecureStorageAdapter()); diff --git a/lib/main/factories/usecases/load_survey_result_factory.dart b/lib/main/factories/usecases/load_survey_result_factory.dart index b31c579a..97ff1025 100644 --- a/lib/main/factories/usecases/load_survey_result_factory.dart +++ b/lib/main/factories/usecases/load_survey_result_factory.dart @@ -3,16 +3,15 @@ import '../../../domain/usecases/usecases.dart'; import '../../composites/composites.dart'; import '../factories.dart'; -RemoteLoadSurveyResult makeRemoteLoadSurveyResult(String surveyId) => RemoteLoadSurveyResult( - httpClient: makeAuthorizeHttpClientDecorator(), - url: makeApiUrl('surveys/$surveyId/results') -); +RemoteLoadSurveyResult makeRemoteLoadSurveyResult(String surveyId) => + RemoteLoadSurveyResult( + httpClient: makeAuthorizeHttpClientDecorator(), + url: makeApiUrl('surveys/$surveyId/results')); -LocalLoadSurveyResult makeLocalLoadSurveyResult(String surveyId) => LocalLoadSurveyResult( - cacheStorage: makeLocalStorageAdapter() -); +LocalLoadSurveyResult makeLocalLoadSurveyResult(String surveyId) => + LocalLoadSurveyResult(cacheStorage: makeLocalStorageAdapter()); -LoadSurveyResult makeRemoteLoadSurveyResultWithLocalFallback(String surveyId) => RemoteLoadSurveyResultWithLocalFallback( - remote: makeRemoteLoadSurveyResult(surveyId), - local: makeLocalLoadSurveyResult(surveyId) -); \ No newline at end of file +LoadSurveyResult makeRemoteLoadSurveyResultWithLocalFallback(String surveyId) => + RemoteLoadSurveyResultWithLocalFallback( + remote: makeRemoteLoadSurveyResult(surveyId), + local: makeLocalLoadSurveyResult(surveyId)); diff --git a/lib/main/factories/usecases/load_surveys_factory.dart b/lib/main/factories/usecases/load_surveys_factory.dart index 195823ad..544e304f 100644 --- a/lib/main/factories/usecases/load_surveys_factory.dart +++ b/lib/main/factories/usecases/load_surveys_factory.dart @@ -4,15 +4,11 @@ import '../../composites/composites.dart'; import '../factories.dart'; RemoteLoadSurveys makeRemoteLoadSurveys() => RemoteLoadSurveys( - httpClient: makeAuthorizeHttpClientDecorator(), - url: makeApiUrl('surveys') -); + httpClient: makeAuthorizeHttpClientDecorator(), url: makeApiUrl('surveys')); -LocalLoadSurveys makeLocalLoadSurveys() => LocalLoadSurveys( - cacheStorage: makeLocalStorageAdapter() -); +LocalLoadSurveys makeLocalLoadSurveys() => + LocalLoadSurveys(cacheStorage: makeLocalStorageAdapter()); -LoadSurveys makeRemoteLoadSurveysWithLocalFallback() => RemoteLoadSurveysWithLocalFallback( - remote: makeRemoteLoadSurveys(), - local: makeLocalLoadSurveys() -); \ No newline at end of file +LoadSurveys makeRemoteLoadSurveysWithLocalFallback() => + RemoteLoadSurveysWithLocalFallback( + remote: makeRemoteLoadSurveys(), local: makeLocalLoadSurveys()); diff --git a/lib/main/factories/usecases/save_current_account_factory.dart b/lib/main/factories/usecases/save_current_account_factory.dart index bdff11a5..97cc41df 100644 --- a/lib/main/factories/usecases/save_current_account_factory.dart +++ b/lib/main/factories/usecases/save_current_account_factory.dart @@ -2,6 +2,5 @@ import '../../../data/usecases/usecases.dart'; import '../../../domain/usecases/usecases.dart'; import '../factories.dart'; -SaveCurrentAccount makeLocalSaveCurrentAccount() => LocalSaveCurrentAccount( - saveSecureCacheStorage: makeSecureStorageAdapter() -); \ No newline at end of file +SaveCurrentAccount makeLocalSaveCurrentAccount() => + LocalSaveCurrentAccount(saveSecureCacheStorage: makeSecureStorageAdapter()); diff --git a/lib/main/factories/usecases/save_survey_result_factory.dart b/lib/main/factories/usecases/save_survey_result_factory.dart index 3cf6c3da..d34cf594 100644 --- a/lib/main/factories/usecases/save_survey_result_factory.dart +++ b/lib/main/factories/usecases/save_survey_result_factory.dart @@ -2,7 +2,7 @@ import '../../../data/usecases/usecases.dart'; import '../../../domain/usecases/usecases.dart'; import '../factories.dart'; -SaveSurveyResult makeRemoteSaveSurveyResult(String surveyId) => RemoteSaveSurveyResult( - httpClient: makeAuthorizeHttpClientDecorator(), - url: makeApiUrl('surveys/$surveyId/results') -); \ No newline at end of file +SaveSurveyResult makeRemoteSaveSurveyResult(String surveyId) => + RemoteSaveSurveyResult( + httpClient: makeAuthorizeHttpClientDecorator(), + url: makeApiUrl('surveys/$surveyId/results')); diff --git a/lib/main/factories/usecases/usecases.dart b/lib/main/factories/usecases/usecases.dart index 36b00865..58c842c9 100644 --- a/lib/main/factories/usecases/usecases.dart +++ b/lib/main/factories/usecases/usecases.dart @@ -4,4 +4,4 @@ export './load_surveys_factory.dart'; export './load_survey_result_factory.dart'; export './save_survey_result_factory.dart'; export './save_current_account_factory.dart'; -export './load_current_account_factory.dart'; \ No newline at end of file +export './load_current_account_factory.dart'; diff --git a/lib/main/main.dart b/lib/main/main.dart index 31dac82a..e800eeb5 100644 --- a/lib/main/main.dart +++ b/lib/main/main.dart @@ -23,11 +23,15 @@ class App extends StatelessWidget { initialRoute: '/', getPages: [ GetPage(name: '/', page: makeSplashPage, transition: Transition.fade), - GetPage(name: '/login', page: makeLoginPage, transition: Transition.fadeIn), + GetPage( + name: '/login', page: makeLoginPage, transition: Transition.fadeIn), GetPage(name: '/signup', page: makeSignUpPage), - GetPage(name: '/surveys', page: makeSurveysPage, transition: Transition.fadeIn), + GetPage( + name: '/surveys', + page: makeSurveysPage, + transition: Transition.fadeIn), GetPage(name: '/survey_result/:survey_id', page: makeSurveyResultPage), ], ); } -} \ No newline at end of file +} diff --git a/lib/presentation/helpers/helpers.dart b/lib/presentation/helpers/helpers.dart index d9d7c754..c6adf4be 100644 --- a/lib/presentation/helpers/helpers.dart +++ b/lib/presentation/helpers/helpers.dart @@ -1 +1 @@ -export './survey_result_entity_extensions.dart'; \ No newline at end of file +export './survey_result_entity_extensions.dart'; diff --git a/lib/presentation/helpers/survey_result_entity_extensions.dart b/lib/presentation/helpers/survey_result_entity_extensions.dart index cd4e6b73..ab06cae3 100644 --- a/lib/presentation/helpers/survey_result_entity_extensions.dart +++ b/lib/presentation/helpers/survey_result_entity_extensions.dart @@ -3,17 +3,15 @@ import '../../ui/pages/pages.dart'; extension SurveyResultEntityExtensions on SurveyResultEntity { SurveyResultViewModel toViewModel() => SurveyResultViewModel( - surveyId: surveyId, - question: question, - answers: answers.map((answer) => answer.toViewModel()).toList() - ); + surveyId: surveyId, + question: question, + answers: answers.map((answer) => answer.toViewModel()).toList()); } extension SurveyAnswerEntityExtensions on SurveyAnswerEntity { SurveyAnswerViewModel toViewModel() => SurveyAnswerViewModel( - image: image, - answer: answer, - percent: '$percent%', - isCurrentAnswer: isCurrentAnswer - ); -} \ No newline at end of file + image: image, + answer: answer, + percent: '$percent%', + isCurrentAnswer: isCurrentAnswer); +} diff --git a/lib/presentation/mixins/form_manager.dart b/lib/presentation/mixins/form_manager.dart index 3f03ab42..550915aa 100644 --- a/lib/presentation/mixins/form_manager.dart +++ b/lib/presentation/mixins/form_manager.dart @@ -4,4 +4,4 @@ mixin FormManager on GetxController { final _isFormValid = false.obs; Stream get isFormValidStream => _isFormValid.stream; set isFormValid(bool value) => _isFormValid.value = value; -} \ No newline at end of file +} diff --git a/lib/presentation/mixins/loading_manager.dart b/lib/presentation/mixins/loading_manager.dart index ee1d0ebe..c853b743 100644 --- a/lib/presentation/mixins/loading_manager.dart +++ b/lib/presentation/mixins/loading_manager.dart @@ -4,4 +4,4 @@ mixin LoadingManager on GetxController { final _isLoading = false.obs; Stream get isLoadingStream => _isLoading.stream; set isLoading(bool value) => _isLoading.value = value; -} \ No newline at end of file +} diff --git a/lib/presentation/mixins/mixins.dart b/lib/presentation/mixins/mixins.dart index 305e160d..de3dae67 100644 --- a/lib/presentation/mixins/mixins.dart +++ b/lib/presentation/mixins/mixins.dart @@ -2,4 +2,4 @@ export './loading_manager.dart'; export './session_manager.dart'; export './navigation_manager.dart'; export './form_manager.dart'; -export './ui_error_manager.dart'; \ No newline at end of file +export './ui_error_manager.dart'; diff --git a/lib/presentation/mixins/navigation_manager.dart b/lib/presentation/mixins/navigation_manager.dart index 0a601707..7883338e 100644 --- a/lib/presentation/mixins/navigation_manager.dart +++ b/lib/presentation/mixins/navigation_manager.dart @@ -4,4 +4,4 @@ mixin NavigationManager on GetxController { final _navigateTo = Rx(null); Stream get navigateToStream => _navigateTo.stream; set navigateTo(String value) => _navigateTo.subject.add(value); -} \ No newline at end of file +} diff --git a/lib/presentation/mixins/session_manager.dart b/lib/presentation/mixins/session_manager.dart index 3c9b6f68..22960c50 100644 --- a/lib/presentation/mixins/session_manager.dart +++ b/lib/presentation/mixins/session_manager.dart @@ -4,4 +4,4 @@ mixin SessionManager on GetxController { final _isSessionExpired = false.obs; Stream get isSessionExpiredStream => _isSessionExpired.stream; set isSessionExpired(bool value) => _isSessionExpired.value = value; -} \ No newline at end of file +} diff --git a/lib/presentation/mixins/ui_error_manager.dart b/lib/presentation/mixins/ui_error_manager.dart index 09798a22..134ae83f 100644 --- a/lib/presentation/mixins/ui_error_manager.dart +++ b/lib/presentation/mixins/ui_error_manager.dart @@ -6,4 +6,4 @@ mixin UIErrorManager on GetxController { final _mainError = Rx(null); Stream get mainErrorStream => _mainError.stream; set mainError(UIError? value) => _mainError.value = value; -} \ No newline at end of file +} diff --git a/lib/presentation/presenters/getx_login_presenter.dart b/lib/presentation/presenters/getx_login_presenter.dart index 3858c4b7..0f18adc8 100644 --- a/lib/presentation/presenters/getx_login_presenter.dart +++ b/lib/presentation/presenters/getx_login_presenter.dart @@ -7,25 +7,26 @@ import '../mixins/mixins.dart'; import 'package:get/get.dart'; -class GetxLoginPresenter extends GetxController with LoadingManager, NavigationManager, FormManager, UIErrorManager implements LoginPresenter { +class GetxLoginPresenter extends GetxController + with LoadingManager, NavigationManager, FormManager, UIErrorManager + implements LoginPresenter { final Validation validation; final Authentication authentication; final SaveCurrentAccount saveCurrentAccount; - + final _emailError = Rx(null); final _passwordError = Rx(null); - + String? _email; String? _password; Stream get emailErrorStream => _emailError.stream; Stream get passwordErrorStream => _passwordError.stream; - GetxLoginPresenter({ - required this.validation, - required this.authentication, - required this.saveCurrentAccount - }); + GetxLoginPresenter( + {required this.validation, + required this.authentication, + required this.saveCurrentAccount}); void validateEmail(String email) { _email = email; @@ -46,30 +47,38 @@ class GetxLoginPresenter extends GetxController with LoadingManager, NavigationM }; final error = validation.validate(field: field, input: formData); switch (error) { - case ValidationError.invalidField: return UIError.invalidField; - case ValidationError.requiredField: return UIError.requiredField; - default: return null; + case ValidationError.invalidField: + return UIError.invalidField; + case ValidationError.requiredField: + return UIError.requiredField; + default: + return null; } } void _validateForm() { - isFormValid = _emailError.value == null - && _passwordError.value == null - && _email != null - && _password != null; + isFormValid = _emailError.value == null && + _passwordError.value == null && + _email != null && + _password != null; } Future auth() async { try { mainError = null; isLoading = true; - final account = await authentication.auth(AuthenticationParams(email: _email!, secret: _password!)); + final account = await authentication + .auth(AuthenticationParams(email: _email!, secret: _password!)); await saveCurrentAccount.save(account); navigateTo = '/surveys'; } on DomainError catch (error) { switch (error) { - case DomainError.invalidCredentials: mainError = UIError.invalidCredentials; break; - default: mainError = UIError.unexpected; break; + case DomainError.invalidCredentials: + mainError = UIError.invalidCredentials; + break; + default: + mainError = UIError.unexpected; + break; } isLoading = false; } @@ -78,4 +87,4 @@ class GetxLoginPresenter extends GetxController with LoadingManager, NavigationM void goToSignUp() { navigateTo = '/signup'; } -} \ No newline at end of file +} diff --git a/lib/presentation/presenters/getx_signup_presenter.dart b/lib/presentation/presenters/getx_signup_presenter.dart index 55bb8b82..504462be 100644 --- a/lib/presentation/presenters/getx_signup_presenter.dart +++ b/lib/presentation/presenters/getx_signup_presenter.dart @@ -7,16 +7,18 @@ import '../mixins/mixins.dart'; import 'package:get/get.dart'; -class GetxSignUpPresenter extends GetxController with LoadingManager, NavigationManager, FormManager, UIErrorManager implements SignUpPresenter { +class GetxSignUpPresenter extends GetxController + with LoadingManager, NavigationManager, FormManager, UIErrorManager + implements SignUpPresenter { final Validation validation; final AddAccount addAccount; final SaveCurrentAccount saveCurrentAccount; - + final _emailError = Rx(null); final _nameError = Rx(null); final _passwordError = Rx(null); final _passwordConfirmationError = Rx(null); - + String? _name; String? _email; String? _password; @@ -25,13 +27,13 @@ class GetxSignUpPresenter extends GetxController with LoadingManager, Navigation Stream get emailErrorStream => _emailError.stream; Stream get nameErrorStream => _nameError.stream; Stream get passwordErrorStream => _passwordError.stream; - Stream get passwordConfirmationErrorStream => _passwordConfirmationError.stream; + Stream get passwordConfirmationErrorStream => + _passwordConfirmationError.stream; - GetxSignUpPresenter({ - required this.validation, - required this.addAccount, - required this.saveCurrentAccount - }); + GetxSignUpPresenter( + {required this.validation, + required this.addAccount, + required this.saveCurrentAccount}); void validateEmail(String email) { _email = email; @@ -66,21 +68,24 @@ class GetxSignUpPresenter extends GetxController with LoadingManager, Navigation }; final error = validation.validate(field: field, input: formData); switch (error) { - case ValidationError.invalidField: return UIError.invalidField; - case ValidationError.requiredField: return UIError.requiredField; - default: return null; + case ValidationError.invalidField: + return UIError.invalidField; + case ValidationError.requiredField: + return UIError.requiredField; + default: + return null; } } void _validateForm() { - isFormValid = _emailError.value == null - && _nameError.value == null - && _passwordError.value == null - && _passwordConfirmationError.value == null - && _name != null - && _email != null - && _password != null - && _passwordConfirmation != null; + isFormValid = _emailError.value == null && + _nameError.value == null && + _passwordError.value == null && + _passwordConfirmationError.value == null && + _name != null && + _email != null && + _password != null && + _passwordConfirmation != null; } Future signUp() async { @@ -88,17 +93,20 @@ class GetxSignUpPresenter extends GetxController with LoadingManager, Navigation mainError = null; isLoading = true; final account = await addAccount.add(AddAccountParams( - name: _name!, - email: _email!, - password: _password!, - passwordConfirmation: _passwordConfirmation! - )); + name: _name!, + email: _email!, + password: _password!, + passwordConfirmation: _passwordConfirmation!)); await saveCurrentAccount.save(account); navigateTo = '/surveys'; } on DomainError catch (error) { switch (error) { - case DomainError.emailInUse: mainError = UIError.emailInUse; break; - default: mainError = UIError.unexpected; break; + case DomainError.emailInUse: + mainError = UIError.emailInUse; + break; + default: + mainError = UIError.unexpected; + break; } isLoading = false; } @@ -107,4 +115,4 @@ class GetxSignUpPresenter extends GetxController with LoadingManager, Navigation void goToLogin() { navigateTo = '/login'; } -} \ No newline at end of file +} diff --git a/lib/presentation/presenters/getx_splash_presenter.dart b/lib/presentation/presenters/getx_splash_presenter.dart index 16fe4b0d..7828d53b 100644 --- a/lib/presentation/presenters/getx_splash_presenter.dart +++ b/lib/presentation/presenters/getx_splash_presenter.dart @@ -4,18 +4,20 @@ import '../mixins/mixins.dart'; import 'package:get/get.dart'; -class GetxSplashPresenter extends GetxController with NavigationManager implements SplashPresenter { +class GetxSplashPresenter extends GetxController + with NavigationManager + implements SplashPresenter { final LoadCurrentAccount loadCurrentAccount; - GetxSplashPresenter({ required this.loadCurrentAccount }); + GetxSplashPresenter({required this.loadCurrentAccount}); Future checkAccount({int durationInSeconds = 2}) async { await Future.delayed(Duration(seconds: durationInSeconds)); try { await loadCurrentAccount.load(); navigateTo = '/surveys'; - } catch(error) { + } catch (error) { navigateTo = '/login'; } } -} \ No newline at end of file +} diff --git a/lib/presentation/presenters/getx_survey_result_presenter.dart b/lib/presentation/presenters/getx_survey_result_presenter.dart index 4a3870fc..dcef996e 100644 --- a/lib/presentation/presenters/getx_survey_result_presenter.dart +++ b/lib/presentation/presenters/getx_survey_result_presenter.dart @@ -8,7 +8,9 @@ import '../mixins/mixins.dart'; import 'package:get/get.dart'; -class GetxSurveyResultPresenter extends GetxController with LoadingManager, SessionManager implements SurveyResultPresenter { +class GetxSurveyResultPresenter extends GetxController + with LoadingManager, SessionManager + implements SurveyResultPresenter { final LoadSurveyResult loadSurveyResult; final SaveSurveyResult saveSurveyResult; final String surveyId; @@ -26,7 +28,7 @@ class GetxSurveyResultPresenter extends GetxController with LoadingManager, Sess showResultOnAction(() => loadSurveyResult.loadBySurvey(surveyId: surveyId)); } - Future save({ required String answer }) async { + Future save({required String answer}) async { showResultOnAction(() => saveSurveyResult.save(answer: answer)); } @@ -35,7 +37,7 @@ class GetxSurveyResultPresenter extends GetxController with LoadingManager, Sess isLoading = true; final surveyResult = await action(); _surveyResult.subject.add(surveyResult.toViewModel()); - } on DomainError catch(error) { + } on DomainError catch (error) { if (error == DomainError.accessDenied) { isSessionExpired = true; } else { @@ -45,4 +47,4 @@ class GetxSurveyResultPresenter extends GetxController with LoadingManager, Sess isLoading = false; } } -} \ No newline at end of file +} diff --git a/lib/presentation/presenters/getx_surveys_presenter.dart b/lib/presentation/presenters/getx_surveys_presenter.dart index fcd28cc8..831075ea 100644 --- a/lib/presentation/presenters/getx_surveys_presenter.dart +++ b/lib/presentation/presenters/getx_surveys_presenter.dart @@ -7,27 +7,28 @@ import '../mixins/mixins.dart'; import 'package:get/get.dart'; import 'package:intl/intl.dart'; -class GetxSurveysPresenter extends GetxController with SessionManager, LoadingManager, NavigationManager implements SurveysPresenter { +class GetxSurveysPresenter extends GetxController + with SessionManager, LoadingManager, NavigationManager + implements SurveysPresenter { final LoadSurveys loadSurveys; final _surveys = Rx>([]); Stream> get surveysStream => _surveys.stream; - GetxSurveysPresenter({ required this.loadSurveys }); + GetxSurveysPresenter({required this.loadSurveys}); Future loadData() async { try { isLoading = true; final surveys = await loadSurveys.load(); _surveys.value = surveys - .map((survey) => SurveyViewModel( - id: survey.id, - question: survey.question, - date: DateFormat('dd MMM yyyy').format(survey.dateTime), - didAnswer: survey.didAnswer - )) - .toList(); - } on DomainError catch(error) { + .map((survey) => SurveyViewModel( + id: survey.id, + question: survey.question, + date: DateFormat('dd MMM yyyy').format(survey.dateTime), + didAnswer: survey.didAnswer)) + .toList(); + } on DomainError catch (error) { if (error == DomainError.accessDenied) { isSessionExpired = true; } else { @@ -41,4 +42,4 @@ class GetxSurveysPresenter extends GetxController with SessionManager, LoadingMa void goToSurveyResult(String surveyId) { navigateTo = '/survey_result/$surveyId'; } -} \ No newline at end of file +} diff --git a/lib/presentation/presenters/presenters.dart b/lib/presentation/presenters/presenters.dart index 94d44945..3b294e43 100644 --- a/lib/presentation/presenters/presenters.dart +++ b/lib/presentation/presenters/presenters.dart @@ -2,4 +2,4 @@ export './getx_login_presenter.dart'; export './getx_signup_presenter.dart'; export './getx_splash_presenter.dart'; export './getx_surveys_presenter.dart'; -export './getx_survey_result_presenter.dart'; \ No newline at end of file +export './getx_survey_result_presenter.dart'; diff --git a/lib/presentation/protocols/protocols.dart b/lib/presentation/protocols/protocols.dart index 5e553283..e653c60e 100644 --- a/lib/presentation/protocols/protocols.dart +++ b/lib/presentation/protocols/protocols.dart @@ -1 +1 @@ -export './validation.dart'; \ No newline at end of file +export './validation.dart'; diff --git a/lib/presentation/protocols/validation.dart b/lib/presentation/protocols/validation.dart index 69cd10ad..c306ece2 100644 --- a/lib/presentation/protocols/validation.dart +++ b/lib/presentation/protocols/validation.dart @@ -1,11 +1,5 @@ abstract class Validation { - ValidationError? validate({ - required String field, - required Map input - }); + ValidationError? validate({required String field, required Map input}); } -enum ValidationError { - requiredField, - invalidField -} \ No newline at end of file +enum ValidationError { requiredField, invalidField } diff --git a/lib/ui/components/app_theme.dart b/lib/ui/components/app_theme.dart index f30407ef..bd71a7b6 100644 --- a/lib/ui/components/app_theme.dart +++ b/lib/ui/components/app_theme.dart @@ -9,44 +9,33 @@ ThemeData makeAppTheme() { final disabledColor = Colors.grey[400]; final dividerColor = Colors.grey; final textTheme = TextTheme( - headline1: TextStyle( - fontSize: 30, - fontWeight: FontWeight.bold, - color: primaryColorDark - ) - ); + headline1: TextStyle( + fontSize: 30, fontWeight: FontWeight.bold, color: primaryColorDark)); final inputDecorationTheme = InputDecorationTheme( - enabledBorder: UnderlineInputBorder( - borderSide: BorderSide(color: primaryColorLight) - ), - focusedBorder: UnderlineInputBorder( - borderSide: BorderSide(color: primaryColor) - ), - alignLabelWithHint: true - ); + enabledBorder: UnderlineInputBorder( + borderSide: BorderSide(color: primaryColorLight)), + focusedBorder: + UnderlineInputBorder(borderSide: BorderSide(color: primaryColor)), + alignLabelWithHint: true); final buttonTheme = ButtonThemeData( - colorScheme: ColorScheme.light(primary: primaryColor), - buttonColor: primaryColor, - splashColor: primaryColorLight, - padding: EdgeInsets.symmetric(vertical: 10, horizontal: 20), - textTheme: ButtonTextTheme.primary, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20) - ) - ); - + colorScheme: ColorScheme.light(primary: primaryColor), + buttonColor: primaryColor, + splashColor: primaryColorLight, + padding: EdgeInsets.symmetric(vertical: 10, horizontal: 20), + textTheme: ButtonTextTheme.primary, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20))); + return ThemeData( - primaryColor: primaryColor, - primaryColorDark: primaryColorDark, - primaryColorLight: primaryColorLight, - highlightColor: secondaryColor, - secondaryHeaderColor: secondaryColorDark, - disabledColor: disabledColor, - dividerColor: dividerColor, - colorScheme: ColorScheme.light(primary: primaryColor), - backgroundColor: Colors.white, - textTheme: textTheme, - inputDecorationTheme: inputDecorationTheme, - buttonTheme: buttonTheme - ); -} \ No newline at end of file + primaryColor: primaryColor, + primaryColorDark: primaryColorDark, + primaryColorLight: primaryColorLight, + highlightColor: secondaryColor, + secondaryHeaderColor: secondaryColorDark, + disabledColor: disabledColor, + dividerColor: dividerColor, + colorScheme: ColorScheme.light(primary: primaryColor), + backgroundColor: Colors.white, + textTheme: textTheme, + inputDecorationTheme: inputDecorationTheme, + buttonTheme: buttonTheme); +} diff --git a/lib/ui/components/components.dart b/lib/ui/components/components.dart index df5d9bd3..28e2f522 100644 --- a/lib/ui/components/components.dart +++ b/lib/ui/components/components.dart @@ -3,4 +3,4 @@ export './login_header.dart'; export './headline1.dart'; export './spinner_dialog.dart'; export './error_message.dart'; -export './reload_screen.dart'; \ No newline at end of file +export './reload_screen.dart'; diff --git a/lib/ui/components/error_message.dart b/lib/ui/components/error_message.dart index b9b1b0af..00144d10 100644 --- a/lib/ui/components/error_message.dart +++ b/lib/ui/components/error_message.dart @@ -1,10 +1,8 @@ import 'package:flutter/material.dart'; void showErrorMessage(BuildContext context, String error) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - backgroundColor: Colors.red[900], - content: Text(error, textAlign: TextAlign.center), - ) - ); -} \ No newline at end of file + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + backgroundColor: Colors.red[900], + content: Text(error, textAlign: TextAlign.center), + )); +} diff --git a/lib/ui/components/headline1.dart b/lib/ui/components/headline1.dart index 2c2e9908..bdc57d03 100644 --- a/lib/ui/components/headline1.dart +++ b/lib/ui/components/headline1.dart @@ -3,14 +3,12 @@ import 'package:flutter/material.dart'; class Headline1 extends StatelessWidget { final String text; - Headline1({ required this.text }); + Headline1({required this.text}); @override Widget build(BuildContext context) { - return Text( - text.toUpperCase(), - textAlign: TextAlign.center, - style: Theme.of(context).textTheme.headline1 - ); + return Text(text.toUpperCase(), + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.headline1); } -} \ No newline at end of file +} diff --git a/lib/ui/components/login_header.dart b/lib/ui/components/login_header.dart index 8944cfb4..c262fbb2 100644 --- a/lib/ui/components/login_header.dart +++ b/lib/ui/components/login_header.dart @@ -7,25 +7,22 @@ class LoginHeader extends StatelessWidget { height: 240, margin: EdgeInsets.only(bottom: 32), decoration: BoxDecoration( - gradient: LinearGradient( - begin: Alignment.topRight, - end: Alignment.bottomLeft, - colors: [ - Theme.of(context).primaryColorLight, - Theme.of(context).primaryColorDark - ] - ), - boxShadow: [ - BoxShadow( - offset: Offset(0, 0), - spreadRadius: 0, - blurRadius: 4, - color: Colors.black - ) - ], - borderRadius: BorderRadius.only(bottomLeft: Radius.circular(80)) - ), + gradient: LinearGradient( + begin: Alignment.topRight, + end: Alignment.bottomLeft, + colors: [ + Theme.of(context).primaryColorLight, + Theme.of(context).primaryColorDark + ]), + boxShadow: [ + BoxShadow( + offset: Offset(0, 0), + spreadRadius: 0, + blurRadius: 4, + color: Colors.black) + ], + borderRadius: BorderRadius.only(bottomLeft: Radius.circular(80))), child: Image(image: AssetImage('lib/ui/assets/logo.png')), ); } -} \ No newline at end of file +} diff --git a/lib/ui/components/reload_screen.dart b/lib/ui/components/reload_screen.dart index 7d8fa7f6..0d225d95 100644 --- a/lib/ui/components/reload_screen.dart +++ b/lib/ui/components/reload_screen.dart @@ -6,7 +6,7 @@ class ReloadScreen extends StatelessWidget { final String error; final Future Function() reload; - const ReloadScreen({ required this.error, required this.reload }); + const ReloadScreen({required this.error, required this.reload}); @override Widget build(BuildContext context) { @@ -15,7 +15,8 @@ class ReloadScreen extends StatelessWidget { child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - Text(error, style: TextStyle(fontSize: 16), textAlign: TextAlign.center), + Text(error, + style: TextStyle(fontSize: 16), textAlign: TextAlign.center), SizedBox(height: 10), ElevatedButton( onPressed: reload, @@ -25,4 +26,4 @@ class ReloadScreen extends StatelessWidget { ), ); } -} \ No newline at end of file +} diff --git a/lib/ui/helpers/errors/errors.dart b/lib/ui/helpers/errors/errors.dart index 708c196b..7278b910 100644 --- a/lib/ui/helpers/errors/errors.dart +++ b/lib/ui/helpers/errors/errors.dart @@ -1 +1 @@ -export './ui_error.dart'; \ No newline at end of file +export './ui_error.dart'; diff --git a/lib/ui/helpers/errors/ui_error.dart b/lib/ui/helpers/errors/ui_error.dart index 787fc975..b2657a6a 100644 --- a/lib/ui/helpers/errors/ui_error.dart +++ b/lib/ui/helpers/errors/ui_error.dart @@ -10,12 +10,17 @@ enum UIError { extension UIErrorExtension on UIError { String get description { - switch(this) { - case UIError.requiredField: return R.string.msgRequiredField; - case UIError.invalidField: return R.string.msgInvalidField; - case UIError.invalidCredentials: return R.string.msgInvalidCredentials; - case UIError.emailInUse: return R.string.msgEmailInUse; - default: return R.string.msgUnexpectedError; + switch (this) { + case UIError.requiredField: + return R.string.msgRequiredField; + case UIError.invalidField: + return R.string.msgInvalidField; + case UIError.invalidCredentials: + return R.string.msgInvalidCredentials; + case UIError.emailInUse: + return R.string.msgEmailInUse; + default: + return R.string.msgUnexpectedError; } } -} \ No newline at end of file +} diff --git a/lib/ui/helpers/helpers.dart b/lib/ui/helpers/helpers.dart index 64ecb99a..781022d5 100644 --- a/lib/ui/helpers/helpers.dart +++ b/lib/ui/helpers/helpers.dart @@ -1,2 +1,2 @@ export './errors/errors.dart'; -export './i18n/i18n.dart'; \ No newline at end of file +export './i18n/i18n.dart'; diff --git a/lib/ui/helpers/i18n/i18n.dart b/lib/ui/helpers/i18n/i18n.dart index 6ac20b27..bd781475 100644 --- a/lib/ui/helpers/i18n/i18n.dart +++ b/lib/ui/helpers/i18n/i18n.dart @@ -1 +1 @@ -export './resources.dart'; \ No newline at end of file +export './resources.dart'; diff --git a/lib/ui/helpers/i18n/resources.dart b/lib/ui/helpers/i18n/resources.dart index cb669256..6bbb5e36 100644 --- a/lib/ui/helpers/i18n/resources.dart +++ b/lib/ui/helpers/i18n/resources.dart @@ -7,7 +7,9 @@ class R { static void load(Locale locale) { switch (locale.toString()) { - default: string = PtBr(); break; + default: + string = PtBr(); + break; } } -} \ No newline at end of file +} diff --git a/lib/ui/helpers/i18n/strings/pt_br.dart b/lib/ui/helpers/i18n/strings/pt_br.dart index c303409d..28b37e2f 100644 --- a/lib/ui/helpers/i18n/strings/pt_br.dart +++ b/lib/ui/helpers/i18n/strings/pt_br.dart @@ -5,7 +5,8 @@ class PtBr implements Translation { String get msgInvalidCredentials => 'Credenciais inválidas.'; String get msgInvalidField => 'Campo inválido'; String get msgRequiredField => 'Campo obrigatório'; - String get msgUnexpectedError => 'Algo errado aconteceu. Tente novamente em breve.'; + String get msgUnexpectedError => + 'Algo errado aconteceu. Tente novamente em breve.'; String get addAccount => 'Criar conta'; String get confirmPassword => 'Confirmar senha'; @@ -18,4 +19,4 @@ class PtBr implements Translation { String get surveys => 'Enquetes'; String get surveyResult => 'Resultado da enquete'; String get wait => 'Aguarde...'; -} \ No newline at end of file +} diff --git a/lib/ui/helpers/i18n/strings/strings.dart b/lib/ui/helpers/i18n/strings/strings.dart index 6e083207..a2f4d025 100644 --- a/lib/ui/helpers/i18n/strings/strings.dart +++ b/lib/ui/helpers/i18n/strings/strings.dart @@ -1,2 +1,2 @@ export './translation.dart'; -export './pt_br.dart'; \ No newline at end of file +export './pt_br.dart'; diff --git a/lib/ui/helpers/i18n/strings/translation.dart b/lib/ui/helpers/i18n/strings/translation.dart index 50bad48b..acf8dd32 100644 --- a/lib/ui/helpers/i18n/strings/translation.dart +++ b/lib/ui/helpers/i18n/strings/translation.dart @@ -16,4 +16,4 @@ abstract class Translation { String get surveys; String get surveyResult; String get wait; -} \ No newline at end of file +} diff --git a/lib/ui/mixins/keyboard_manager.dart b/lib/ui/mixins/keyboard_manager.dart index 5d4d8925..c28cde13 100644 --- a/lib/ui/mixins/keyboard_manager.dart +++ b/lib/ui/mixins/keyboard_manager.dart @@ -7,4 +7,4 @@ mixin KeyboardManager { currectFocus.unfocus(); } } -} \ No newline at end of file +} diff --git a/lib/ui/mixins/loading_manager.dart b/lib/ui/mixins/loading_manager.dart index 11bdb090..dbaabb33 100644 --- a/lib/ui/mixins/loading_manager.dart +++ b/lib/ui/mixins/loading_manager.dart @@ -12,4 +12,4 @@ mixin LoadingManager { } }); } -} \ No newline at end of file +} diff --git a/lib/ui/mixins/mixins.dart b/lib/ui/mixins/mixins.dart index 6b2f9bd8..ed46002a 100644 --- a/lib/ui/mixins/mixins.dart +++ b/lib/ui/mixins/mixins.dart @@ -2,4 +2,4 @@ export './keyboard_manager.dart'; export './loading_manager.dart'; export './ui_error_manager.dart'; export './navigation_manager.dart'; -export './session_manager.dart'; \ No newline at end of file +export './session_manager.dart'; diff --git a/lib/ui/mixins/navigation_manager.dart b/lib/ui/mixins/navigation_manager.dart index 43453129..49fbdc03 100644 --- a/lib/ui/mixins/navigation_manager.dart +++ b/lib/ui/mixins/navigation_manager.dart @@ -12,4 +12,4 @@ mixin NavigationManager { } }); } -} \ No newline at end of file +} diff --git a/lib/ui/mixins/session_manager.dart b/lib/ui/mixins/session_manager.dart index 4910d0a3..16249865 100644 --- a/lib/ui/mixins/session_manager.dart +++ b/lib/ui/mixins/session_manager.dart @@ -8,4 +8,4 @@ mixin SessionManager { } }); } -} \ No newline at end of file +} diff --git a/lib/ui/mixins/ui_error_manager.dart b/lib/ui/mixins/ui_error_manager.dart index 3f573b11..7c53a83c 100644 --- a/lib/ui/mixins/ui_error_manager.dart +++ b/lib/ui/mixins/ui_error_manager.dart @@ -11,4 +11,4 @@ mixin UIErrorManager { } }); } -} \ No newline at end of file +} diff --git a/lib/ui/pages/login/components/components.dart b/lib/ui/pages/login/components/components.dart index 743aec31..6609d2c3 100644 --- a/lib/ui/pages/login/components/components.dart +++ b/lib/ui/pages/login/components/components.dart @@ -1,3 +1,3 @@ export './email_input.dart'; export './password_input.dart'; -export './login_button.dart'; \ No newline at end of file +export './login_button.dart'; diff --git a/lib/ui/pages/login/components/email_input.dart b/lib/ui/pages/login/components/email_input.dart index b5f3b9dd..88c6eb4e 100644 --- a/lib/ui/pages/login/components/email_input.dart +++ b/lib/ui/pages/login/components/email_input.dart @@ -23,4 +23,4 @@ class EmailInput extends StatelessWidget { }, ); } -} \ No newline at end of file +} diff --git a/lib/ui/pages/login/components/login_button.dart b/lib/ui/pages/login/components/login_button.dart index 7acf8b78..fbe851bd 100644 --- a/lib/ui/pages/login/components/login_button.dart +++ b/lib/ui/pages/login/components/login_button.dart @@ -9,13 +9,12 @@ class LoginButton extends StatelessWidget { Widget build(BuildContext context) { final presenter = Provider.of(context); return StreamBuilder( - stream: presenter.isFormValidStream, - builder: (context, snapshot) { - return ElevatedButton( - onPressed: snapshot.data == true ? presenter.auth : null, - child: Text(R.string.enter.toUpperCase()), - ); - } - ); + stream: presenter.isFormValidStream, + builder: (context, snapshot) { + return ElevatedButton( + onPressed: snapshot.data == true ? presenter.auth : null, + child: Text(R.string.enter.toUpperCase()), + ); + }); } -} \ No newline at end of file +} diff --git a/lib/ui/pages/login/components/password_input.dart b/lib/ui/pages/login/components/password_input.dart index 5756518e..ae130e3f 100644 --- a/lib/ui/pages/login/components/password_input.dart +++ b/lib/ui/pages/login/components/password_input.dart @@ -9,18 +9,18 @@ class PasswordInput extends StatelessWidget { Widget build(BuildContext context) { final presenter = Provider.of(context); return StreamBuilder( - stream: presenter.passwordErrorStream, - builder: (context, snapshot) { - return TextFormField( - decoration: InputDecoration( - labelText: R.string.password, - icon: Icon(Icons.lock, color: Theme.of(context).primaryColorLight), - errorText: snapshot.data?.description, - ), - obscureText: true, - onChanged: presenter.validatePassword, - ); - } - ); + stream: presenter.passwordErrorStream, + builder: (context, snapshot) { + return TextFormField( + decoration: InputDecoration( + labelText: R.string.password, + icon: + Icon(Icons.lock, color: Theme.of(context).primaryColorLight), + errorText: snapshot.data?.description, + ), + obscureText: true, + onChanged: presenter.validatePassword, + ); + }); } -} \ No newline at end of file +} diff --git a/lib/ui/pages/login/login.dart b/lib/ui/pages/login/login.dart index 2fda2193..a9f16742 100644 --- a/lib/ui/pages/login/login.dart +++ b/lib/ui/pages/login/login.dart @@ -1,2 +1,2 @@ export './login_page.dart'; -export './login_presenter.dart'; \ No newline at end of file +export './login_presenter.dart'; diff --git a/lib/ui/pages/login/login_page.dart b/lib/ui/pages/login/login_page.dart index a2c02718..d3f013e8 100644 --- a/lib/ui/pages/login/login_page.dart +++ b/lib/ui/pages/login/login_page.dart @@ -7,7 +7,8 @@ import './login.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -class LoginPage extends StatelessWidget with KeyboardManager, LoadingManager, UIErrorManager, NavigationManager { +class LoginPage extends StatelessWidget + with KeyboardManager, LoadingManager, UIErrorManager, NavigationManager { final LoginPresenter presenter; LoginPage(this.presenter); @@ -43,10 +44,9 @@ class LoginPage extends StatelessWidget with KeyboardManager, LoadingManager, UI ), LoginButton(), TextButton.icon( - onPressed: presenter.goToSignUp, - icon: Icon(Icons.person), - label: Text(R.string.addAccount) - ) + onPressed: presenter.goToSignUp, + icon: Icon(Icons.person), + label: Text(R.string.addAccount)) ], ), ), diff --git a/lib/ui/pages/login/login_presenter.dart b/lib/ui/pages/login/login_presenter.dart index cb16cc5b..3c742359 100644 --- a/lib/ui/pages/login/login_presenter.dart +++ b/lib/ui/pages/login/login_presenter.dart @@ -14,4 +14,4 @@ abstract class LoginPresenter implements Listenable { void validatePassword(String password); Future auth(); void goToSignUp(); -} \ No newline at end of file +} diff --git a/lib/ui/pages/pages.dart b/lib/ui/pages/pages.dart index ca4fcbc5..7ba64a02 100644 --- a/lib/ui/pages/pages.dart +++ b/lib/ui/pages/pages.dart @@ -2,4 +2,4 @@ export './login/login.dart'; export './signup/signup.dart'; export './splash/splash.dart'; export './surveys/surveys.dart'; -export './survey_result/survey_result.dart'; \ No newline at end of file +export './survey_result/survey_result.dart'; diff --git a/lib/ui/pages/signup/components/components.dart b/lib/ui/pages/signup/components/components.dart index 5ec0c203..0f424f12 100644 --- a/lib/ui/pages/signup/components/components.dart +++ b/lib/ui/pages/signup/components/components.dart @@ -2,4 +2,4 @@ export './name_input.dart'; export './email_input.dart'; export './password_input.dart'; export './password_confirmation_input.dart'; -export './signup_button.dart'; \ No newline at end of file +export './signup_button.dart'; diff --git a/lib/ui/pages/signup/components/email_input.dart b/lib/ui/pages/signup/components/email_input.dart index 65cbb6c7..bc680274 100644 --- a/lib/ui/pages/signup/components/email_input.dart +++ b/lib/ui/pages/signup/components/email_input.dart @@ -23,4 +23,4 @@ class EmailInput extends StatelessWidget { }, ); } -} \ No newline at end of file +} diff --git a/lib/ui/pages/signup/components/name_input.dart b/lib/ui/pages/signup/components/name_input.dart index f8540203..1d401ea4 100644 --- a/lib/ui/pages/signup/components/name_input.dart +++ b/lib/ui/pages/signup/components/name_input.dart @@ -14,7 +14,8 @@ class NameInput extends StatelessWidget { return TextFormField( decoration: InputDecoration( labelText: R.string.name, - icon: Icon(Icons.person, color: Theme.of(context).primaryColorLight), + icon: + Icon(Icons.person, color: Theme.of(context).primaryColorLight), errorText: snapshot.data?.description, ), keyboardType: TextInputType.name, @@ -23,4 +24,4 @@ class NameInput extends StatelessWidget { }, ); } -} \ No newline at end of file +} diff --git a/lib/ui/pages/signup/components/password_confirmation_input.dart b/lib/ui/pages/signup/components/password_confirmation_input.dart index dee084e2..31ada985 100644 --- a/lib/ui/pages/signup/components/password_confirmation_input.dart +++ b/lib/ui/pages/signup/components/password_confirmation_input.dart @@ -23,4 +23,4 @@ class PasswordConfirmationInput extends StatelessWidget { }, ); } -} \ No newline at end of file +} diff --git a/lib/ui/pages/signup/components/password_input.dart b/lib/ui/pages/signup/components/password_input.dart index c36c936d..f6095ad1 100644 --- a/lib/ui/pages/signup/components/password_input.dart +++ b/lib/ui/pages/signup/components/password_input.dart @@ -23,4 +23,4 @@ class PasswordInput extends StatelessWidget { }, ); } -} \ No newline at end of file +} diff --git a/lib/ui/pages/signup/components/signup_button.dart b/lib/ui/pages/signup/components/signup_button.dart index 207245ff..cd095f3c 100644 --- a/lib/ui/pages/signup/components/signup_button.dart +++ b/lib/ui/pages/signup/components/signup_button.dart @@ -9,13 +9,12 @@ class SignUpButton extends StatelessWidget { Widget build(BuildContext context) { final presenter = Provider.of(context); return StreamBuilder( - stream: presenter.isFormValidStream, - builder: (context, snapshot) { - return ElevatedButton( - onPressed: snapshot.data == true ? presenter.signUp : null, - child: Text(R.string.addAccount.toUpperCase()), - ); - } - ); + stream: presenter.isFormValidStream, + builder: (context, snapshot) { + return ElevatedButton( + onPressed: snapshot.data == true ? presenter.signUp : null, + child: Text(R.string.addAccount.toUpperCase()), + ); + }); } -} \ No newline at end of file +} diff --git a/lib/ui/pages/signup/signup.dart b/lib/ui/pages/signup/signup.dart index dabe3d3b..6a500205 100644 --- a/lib/ui/pages/signup/signup.dart +++ b/lib/ui/pages/signup/signup.dart @@ -1,2 +1,2 @@ export './signup_page.dart'; -export './signup_presenter.dart'; \ No newline at end of file +export './signup_presenter.dart'; diff --git a/lib/ui/pages/signup/signup_page.dart b/lib/ui/pages/signup/signup_page.dart index d76a39be..7ee76e2f 100644 --- a/lib/ui/pages/signup/signup_page.dart +++ b/lib/ui/pages/signup/signup_page.dart @@ -7,7 +7,8 @@ import './signup.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -class SignUpPage extends StatelessWidget with KeyboardManager, LoadingManager, UIErrorManager, NavigationManager { +class SignUpPage extends StatelessWidget + with KeyboardManager, LoadingManager, UIErrorManager, NavigationManager { final SignUpPresenter presenter; SignUpPage(this.presenter); @@ -48,10 +49,9 @@ class SignUpPage extends StatelessWidget with KeyboardManager, LoadingManager, U ), SignUpButton(), TextButton.icon( - onPressed: presenter.goToLogin, - icon: Icon(Icons.exit_to_app), - label: Text(R.string.login) - ) + onPressed: presenter.goToLogin, + icon: Icon(Icons.exit_to_app), + label: Text(R.string.login)) ], ), ), diff --git a/lib/ui/pages/signup/signup_presenter.dart b/lib/ui/pages/signup/signup_presenter.dart index 6168cd79..341fa840 100644 --- a/lib/ui/pages/signup/signup_presenter.dart +++ b/lib/ui/pages/signup/signup_presenter.dart @@ -18,4 +18,4 @@ abstract class SignUpPresenter implements Listenable { void validatePasswordConfirmation(String passwordConfirmation); Future signUp(); void goToLogin(); -} \ No newline at end of file +} diff --git a/lib/ui/pages/splash/splash.dart b/lib/ui/pages/splash/splash.dart index c7958b85..916aa2af 100644 --- a/lib/ui/pages/splash/splash.dart +++ b/lib/ui/pages/splash/splash.dart @@ -1,2 +1,2 @@ export './splash_page.dart'; -export './splash_presenter.dart'; \ No newline at end of file +export './splash_presenter.dart'; diff --git a/lib/ui/pages/splash/splash_page.dart b/lib/ui/pages/splash/splash_page.dart index 6eee6ac0..495d147c 100644 --- a/lib/ui/pages/splash/splash_page.dart +++ b/lib/ui/pages/splash/splash_page.dart @@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; class SplashPage extends StatelessWidget with NavigationManager { final SplashPresenter presenter; - SplashPage({ required this.presenter }); + SplashPage({required this.presenter}); @override Widget build(BuildContext context) { @@ -25,4 +25,4 @@ class SplashPage extends StatelessWidget with NavigationManager { ), ); } -} \ No newline at end of file +} diff --git a/lib/ui/pages/splash/splash_presenter.dart b/lib/ui/pages/splash/splash_presenter.dart index 0b2e5bce..fa8fb4dc 100644 --- a/lib/ui/pages/splash/splash_presenter.dart +++ b/lib/ui/pages/splash/splash_presenter.dart @@ -4,4 +4,4 @@ abstract class SplashPresenter implements Listenable { Stream get navigateToStream; Future checkAccount({int durationInSeconds}); -} \ No newline at end of file +} diff --git a/lib/ui/pages/survey_result/components/active_icon.dart b/lib/ui/pages/survey_result/components/active_icon.dart index 8215cd71..e089273c 100644 --- a/lib/ui/pages/survey_result/components/active_icon.dart +++ b/lib/ui/pages/survey_result/components/active_icon.dart @@ -11,4 +11,4 @@ class ActiveIcon extends StatelessWidget { ), ); } -} \ No newline at end of file +} diff --git a/lib/ui/pages/survey_result/components/components.dart b/lib/ui/pages/survey_result/components/components.dart index 6b88bdda..1e096eaa 100644 --- a/lib/ui/pages/survey_result/components/components.dart +++ b/lib/ui/pages/survey_result/components/components.dart @@ -2,4 +2,4 @@ export './survey_result.dart'; export './active_icon.dart'; export './disabled_icon.dart'; export './survey_header.dart'; -export './survey_answer.dart'; \ No newline at end of file +export './survey_answer.dart'; diff --git a/lib/ui/pages/survey_result/components/disabled_icon.dart b/lib/ui/pages/survey_result/components/disabled_icon.dart index fb62f733..f5bb9947 100644 --- a/lib/ui/pages/survey_result/components/disabled_icon.dart +++ b/lib/ui/pages/survey_result/components/disabled_icon.dart @@ -11,4 +11,4 @@ class DisabledIcon extends StatelessWidget { ), ); } -} \ No newline at end of file +} diff --git a/lib/ui/pages/survey_result/components/survey_answer.dart b/lib/ui/pages/survey_result/components/survey_answer.dart index 678cc44a..6a3e1ea5 100644 --- a/lib/ui/pages/survey_result/components/survey_answer.dart +++ b/lib/ui/pages/survey_result/components/survey_answer.dart @@ -15,27 +15,24 @@ class SurveyAnswer extends StatelessWidget { Expanded( child: Padding( padding: EdgeInsets.symmetric(horizontal: 10), - child: Text( - viewModel.answer, - style: TextStyle(fontSize: 16) - ), + child: Text(viewModel.answer, style: TextStyle(fontSize: 16)), ), ), - Text( - viewModel.percent, - style: TextStyle( - fontSize: 16, - fontWeight: FontWeight.bold, - color: Theme.of(context).primaryColorDark, - ) - ), + Text(viewModel.percent, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: Theme.of(context).primaryColorDark, + )), viewModel.isCurrentAnswer ? ActiveIcon() : DisabledIcon() ]; if (viewModel.image != null) { - children.insert(0, Image.network( - viewModel.image!, - width: 40, - )); + children.insert( + 0, + Image.network( + viewModel.image!, + width: 40, + )); } return children; } @@ -44,9 +41,7 @@ class SurveyAnswer extends StatelessWidget { children: [ Container( padding: EdgeInsets.all(15), - decoration: BoxDecoration( - color: Theme.of(context).backgroundColor - ), + decoration: BoxDecoration(color: Theme.of(context).backgroundColor), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: _buildItems(), @@ -56,4 +51,4 @@ class SurveyAnswer extends StatelessWidget { ], ); } -} \ No newline at end of file +} diff --git a/lib/ui/pages/survey_result/components/survey_header.dart b/lib/ui/pages/survey_result/components/survey_header.dart index b5ebd913..7eb67051 100644 --- a/lib/ui/pages/survey_result/components/survey_header.dart +++ b/lib/ui/pages/survey_result/components/survey_header.dart @@ -8,11 +8,9 @@ class SurveyHeader extends StatelessWidget { @override Widget build(BuildContext context) { return Container( - padding: EdgeInsets.only(top: 40, bottom: 20, left: 20, right: 20), - decoration: BoxDecoration( - color: Theme.of(context).disabledColor.withAlpha(90) - ), - child: Text(question) - ); + padding: EdgeInsets.only(top: 40, bottom: 20, left: 20, right: 20), + decoration: + BoxDecoration(color: Theme.of(context).disabledColor.withAlpha(90)), + child: Text(question)); } -} \ No newline at end of file +} diff --git a/lib/ui/pages/survey_result/components/survey_result.dart b/lib/ui/pages/survey_result/components/survey_result.dart index ab833cc9..5f5f2d5a 100644 --- a/lib/ui/pages/survey_result/components/survey_result.dart +++ b/lib/ui/pages/survey_result/components/survey_result.dart @@ -5,9 +5,9 @@ import 'package:flutter/material.dart'; class SurveyResult extends StatelessWidget { final SurveyResultViewModel viewModel; - final void Function({ required String answer }) onSave; + final void Function({required String answer}) onSave; - SurveyResult({ required this.viewModel, required this.onSave }); + SurveyResult({required this.viewModel, required this.onSave}); @override Widget build(BuildContext context) { @@ -18,11 +18,11 @@ class SurveyResult extends StatelessWidget { } final answer = viewModel.answers[index - 1]; return GestureDetector( - onTap: () => answer.isCurrentAnswer ? null : onSave(answer: answer.answer), - child: SurveyAnswer(answer) - ); + onTap: () => + answer.isCurrentAnswer ? null : onSave(answer: answer.answer), + child: SurveyAnswer(answer)); }, itemCount: viewModel.answers.length + 1, ); } -} \ No newline at end of file +} diff --git a/lib/ui/pages/survey_result/survey_answer_viewmodel.dart b/lib/ui/pages/survey_result/survey_answer_viewmodel.dart index 9ede0b1b..6a08b287 100644 --- a/lib/ui/pages/survey_result/survey_answer_viewmodel.dart +++ b/lib/ui/pages/survey_result/survey_answer_viewmodel.dart @@ -14,4 +14,4 @@ class SurveyAnswerViewModel extends Equatable { required this.isCurrentAnswer, required this.percent, }); -} \ No newline at end of file +} diff --git a/lib/ui/pages/survey_result/survey_result.dart b/lib/ui/pages/survey_result/survey_result.dart index afd8d761..62894fe4 100644 --- a/lib/ui/pages/survey_result/survey_result.dart +++ b/lib/ui/pages/survey_result/survey_result.dart @@ -1,4 +1,4 @@ export './survey_result_page.dart'; export './survey_result_presenter.dart'; export './survey_result_viewmodel.dart'; -export './survey_answer_viewmodel.dart'; \ No newline at end of file +export './survey_answer_viewmodel.dart'; diff --git a/lib/ui/pages/survey_result/survey_result_page.dart b/lib/ui/pages/survey_result/survey_result_page.dart index 506aacab..7cbadbbf 100644 --- a/lib/ui/pages/survey_result/survey_result_page.dart +++ b/lib/ui/pages/survey_result/survey_result_page.dart @@ -6,7 +6,8 @@ import './survey_result.dart'; import 'package:flutter/material.dart'; -class SurveyResultPage extends StatelessWidget with LoadingManager, SessionManager { +class SurveyResultPage extends StatelessWidget + with LoadingManager, SessionManager { final SurveyResultPresenter presenter; SurveyResultPage(this.presenter); @@ -14,27 +15,25 @@ class SurveyResultPage extends StatelessWidget with LoadingManager, SessionManag @override Widget build(BuildContext context) { return Scaffold( - appBar: AppBar(title: Text(R.string.surveyResult)), - body: Builder( - builder: (context) { + appBar: AppBar(title: Text(R.string.surveyResult)), + body: Builder(builder: (context) { handleLoading(context, presenter.isLoadingStream); handleSessionExpired(presenter.isSessionExpiredStream); presenter.loadData(); return StreamBuilder( - stream: presenter.surveyResultStream, - builder: (context, snapshot) { - if (snapshot.hasError) { - return ReloadScreen(error: '${snapshot.error}', reload: presenter.loadData); - } - if (snapshot.hasData) { - return SurveyResult(viewModel: snapshot.data!, onSave: presenter.save); - } - return SizedBox.shrink(); - } - ); - } - ) - ); + stream: presenter.surveyResultStream, + builder: (context, snapshot) { + if (snapshot.hasError) { + return ReloadScreen( + error: '${snapshot.error}', reload: presenter.loadData); + } + if (snapshot.hasData) { + return SurveyResult( + viewModel: snapshot.data!, onSave: presenter.save); + } + return SizedBox.shrink(); + }); + })); } -} \ No newline at end of file +} diff --git a/lib/ui/pages/survey_result/survey_result_presenter.dart b/lib/ui/pages/survey_result/survey_result_presenter.dart index 0aa212ae..41c10e59 100644 --- a/lib/ui/pages/survey_result/survey_result_presenter.dart +++ b/lib/ui/pages/survey_result/survey_result_presenter.dart @@ -6,7 +6,7 @@ abstract class SurveyResultPresenter implements Listenable { Stream get isLoadingStream; Stream get isSessionExpiredStream; Stream get surveyResultStream; - + Future loadData(); - Future save({ required String answer }); -} \ No newline at end of file + Future save({required String answer}); +} diff --git a/lib/ui/pages/survey_result/survey_result_viewmodel.dart b/lib/ui/pages/survey_result/survey_result_viewmodel.dart index 572278b5..c16edc06 100644 --- a/lib/ui/pages/survey_result/survey_result_viewmodel.dart +++ b/lib/ui/pages/survey_result/survey_result_viewmodel.dart @@ -14,4 +14,4 @@ class SurveyResultViewModel extends Equatable { required this.question, required this.answers, }); -} \ No newline at end of file +} diff --git a/lib/ui/pages/surveys/components/components.dart b/lib/ui/pages/surveys/components/components.dart index ede8fb58..b24d7918 100644 --- a/lib/ui/pages/surveys/components/components.dart +++ b/lib/ui/pages/surveys/components/components.dart @@ -1,2 +1,2 @@ export './survey_item.dart'; -export './survey_items.dart'; \ No newline at end of file +export './survey_items.dart'; diff --git a/lib/ui/pages/surveys/components/survey_item.dart b/lib/ui/pages/surveys/components/survey_item.dart index 16d167e6..4e53bc71 100644 --- a/lib/ui/pages/surveys/components/survey_item.dart +++ b/lib/ui/pages/surveys/components/survey_item.dart @@ -18,23 +18,26 @@ class SurveyItem extends StatelessWidget { child: Container( padding: EdgeInsets.all(20), decoration: BoxDecoration( - color: viewModel.didAnswer ? Theme.of(context).secondaryHeaderColor : Theme.of(context).primaryColorDark, - boxShadow: [ - BoxShadow( - offset: Offset(0, 1), - spreadRadius: 0, - blurRadius: 2, - color: Colors.black - ) - ], - borderRadius: BorderRadius.all(Radius.circular(10)) - ), + color: viewModel.didAnswer + ? Theme.of(context).secondaryHeaderColor + : Theme.of(context).primaryColorDark, + boxShadow: [ + BoxShadow( + offset: Offset(0, 1), + spreadRadius: 0, + blurRadius: 2, + color: Colors.black) + ], + borderRadius: BorderRadius.all(Radius.circular(10))), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( viewModel.date, - style: TextStyle(color: Colors.white, fontSize: 20, fontWeight: FontWeight.bold), + style: TextStyle( + color: Colors.white, + fontSize: 20, + fontWeight: FontWeight.bold), ), SizedBox(height: 20), Text( @@ -47,4 +50,4 @@ class SurveyItem extends StatelessWidget { ), ); } -} \ No newline at end of file +} diff --git a/lib/ui/pages/surveys/components/survey_items.dart b/lib/ui/pages/surveys/components/survey_items.dart index 239e46cd..e160c731 100644 --- a/lib/ui/pages/surveys/components/survey_items.dart +++ b/lib/ui/pages/surveys/components/survey_items.dart @@ -14,12 +14,9 @@ class SurveyItems extends StatelessWidget { return Padding( padding: EdgeInsets.symmetric(vertical: 20), child: CarouselSlider( - options: CarouselOptions( - enlargeCenterPage: true, - aspectRatio: 1 - ), + options: CarouselOptions(enlargeCenterPage: true, aspectRatio: 1), items: viewModels.map((viewModel) => SurveyItem(viewModel)).toList(), ), ); } -} \ No newline at end of file +} diff --git a/lib/ui/pages/surveys/survey_viewmodel.dart b/lib/ui/pages/surveys/survey_viewmodel.dart index 20ff7629..cb73d162 100644 --- a/lib/ui/pages/surveys/survey_viewmodel.dart +++ b/lib/ui/pages/surveys/survey_viewmodel.dart @@ -8,10 +8,9 @@ class SurveyViewModel extends Equatable { List get props => [id, question, date, didAnswer]; - SurveyViewModel({ - required this.id, - required this.question, - required this.date, - required this.didAnswer - }); -} \ No newline at end of file + SurveyViewModel( + {required this.id, + required this.question, + required this.date, + required this.didAnswer}); +} diff --git a/lib/ui/pages/surveys/surveys.dart b/lib/ui/pages/surveys/surveys.dart index 9b8901f4..3842ee43 100644 --- a/lib/ui/pages/surveys/surveys.dart +++ b/lib/ui/pages/surveys/surveys.dart @@ -1,3 +1,3 @@ export './surveys_page.dart'; export './surveys_presenter.dart'; -export './survey_viewmodel.dart'; \ No newline at end of file +export './survey_viewmodel.dart'; diff --git a/lib/ui/pages/surveys/surveys_page.dart b/lib/ui/pages/surveys/surveys_page.dart index 30f62191..d528189f 100644 --- a/lib/ui/pages/surveys/surveys_page.dart +++ b/lib/ui/pages/surveys/surveys_page.dart @@ -17,10 +17,12 @@ class SurveysPage extends StatefulWidget { _SurveysPageState createState() => _SurveysPageState(); } -class _SurveysPageState extends State with LoadingManager, NavigationManager, SessionManager, RouteAware { +class _SurveysPageState extends State + with LoadingManager, NavigationManager, SessionManager, RouteAware { @override Widget build(BuildContext context) { - Get.find().subscribe(this, ModalRoute.of(context) as PageRoute); + Get.find() + .subscribe(this, ModalRoute.of(context) as PageRoute); return Scaffold( appBar: AppBar(title: Text(R.string.surveys)), body: Builder( @@ -31,20 +33,20 @@ class _SurveysPageState extends State with LoadingManager, Navigati widget.presenter.loadData(); return StreamBuilder>( - stream: widget.presenter.surveysStream, - builder: (context, snapshot) { - if (snapshot.hasError) { - return ReloadScreen(error: '${snapshot.error}', reload: widget.presenter.loadData); - } - if (snapshot.hasData) { - return ListenableProvider( - create: (_) => widget.presenter, - child: SurveyItems(snapshot.data!) - ); - } - return SizedBox(height: 0); - } - ); + stream: widget.presenter.surveysStream, + builder: (context, snapshot) { + if (snapshot.hasError) { + return ReloadScreen( + error: '${snapshot.error}', + reload: widget.presenter.loadData); + } + if (snapshot.hasData) { + return ListenableProvider( + create: (_) => widget.presenter, + child: SurveyItems(snapshot.data!)); + } + return SizedBox(height: 0); + }); }, ), ); @@ -60,4 +62,4 @@ class _SurveysPageState extends State with LoadingManager, Navigati Get.find().unsubscribe(this); super.dispose(); } -} \ No newline at end of file +} diff --git a/lib/ui/pages/surveys/surveys_presenter.dart b/lib/ui/pages/surveys/surveys_presenter.dart index e79220a7..e5a0d302 100644 --- a/lib/ui/pages/surveys/surveys_presenter.dart +++ b/lib/ui/pages/surveys/surveys_presenter.dart @@ -10,4 +10,4 @@ abstract class SurveysPresenter implements Listenable { Future loadData(); void goToSurveyResult(String surveyId); -} \ No newline at end of file +} diff --git a/lib/validation/protocols/field_validation.dart b/lib/validation/protocols/field_validation.dart index a7e85a80..e330bfae 100644 --- a/lib/validation/protocols/field_validation.dart +++ b/lib/validation/protocols/field_validation.dart @@ -3,4 +3,4 @@ import '../../presentation/protocols/protocols.dart'; abstract class FieldValidation { String get field; ValidationError? validate(Map input); -} \ No newline at end of file +} diff --git a/lib/validation/protocols/protocols.dart b/lib/validation/protocols/protocols.dart index ea0cf637..643c5966 100644 --- a/lib/validation/protocols/protocols.dart +++ b/lib/validation/protocols/protocols.dart @@ -1 +1 @@ -export './field_validation.dart'; \ No newline at end of file +export './field_validation.dart'; diff --git a/lib/validation/validators/compare_fields_validation.dart b/lib/validation/validators/compare_fields_validation.dart index aa0b90a3..a53ba162 100644 --- a/lib/validation/validators/compare_fields_validation.dart +++ b/lib/validation/validators/compare_fields_validation.dart @@ -9,12 +9,11 @@ class CompareFieldsValidation extends Equatable implements FieldValidation { List get props => [field, fieldToCompare]; - CompareFieldsValidation({ required this.field, required this.fieldToCompare}); + CompareFieldsValidation({required this.field, required this.fieldToCompare}); - ValidationError? validate(Map input) => - input[field] != null - && input[fieldToCompare] != null - && input[field] != input[fieldToCompare] + ValidationError? validate(Map input) => input[field] != null && + input[fieldToCompare] != null && + input[field] != input[fieldToCompare] ? ValidationError.invalidField : null; -} \ No newline at end of file +} diff --git a/lib/validation/validators/email_validation.dart b/lib/validation/validators/email_validation.dart index 4a0514b8..ed62c873 100644 --- a/lib/validation/validators/email_validation.dart +++ b/lib/validation/validators/email_validation.dart @@ -11,8 +11,10 @@ class EmailValidation extends Equatable implements FieldValidation { EmailValidation(this.field); ValidationError? validate(Map input) { - final regex = RegExp(r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+"); - final isValid = input[field]?.isNotEmpty != true || regex.hasMatch(input[field]); + final regex = RegExp( + r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+"); + final isValid = + input[field]?.isNotEmpty != true || regex.hasMatch(input[field]); return isValid ? null : ValidationError.invalidField; } -} \ No newline at end of file +} diff --git a/lib/validation/validators/min_length_validation.dart b/lib/validation/validators/min_length_validation.dart index 3222add2..3061c0c5 100644 --- a/lib/validation/validators/min_length_validation.dart +++ b/lib/validation/validators/min_length_validation.dart @@ -9,11 +9,10 @@ class MinLengthValidation extends Equatable implements FieldValidation { List get props => [field, size]; - MinLengthValidation({ required this.field, required this.size}); + MinLengthValidation({required this.field, required this.size}); ValidationError? validate(Map input) => - input[field] != null - && input[field].length >= size - ? null - : ValidationError.invalidField; -} \ No newline at end of file + input[field] != null && input[field].length >= size + ? null + : ValidationError.invalidField; +} diff --git a/lib/validation/validators/required_field_validation.dart b/lib/validation/validators/required_field_validation.dart index aee3e303..e2802c58 100644 --- a/lib/validation/validators/required_field_validation.dart +++ b/lib/validation/validators/required_field_validation.dart @@ -11,5 +11,5 @@ class RequiredFieldValidation extends Equatable implements FieldValidation { RequiredFieldValidation(this.field); ValidationError? validate(Map input) => - input[field]?.isNotEmpty == true ? null : ValidationError.requiredField; -} \ No newline at end of file + input[field]?.isNotEmpty == true ? null : ValidationError.requiredField; +} diff --git a/lib/validation/validators/validators.dart b/lib/validation/validators/validators.dart index 6464b206..b363417b 100644 --- a/lib/validation/validators/validators.dart +++ b/lib/validation/validators/validators.dart @@ -1,4 +1,4 @@ export './required_field_validation.dart'; export './min_length_validation.dart'; export './email_validation.dart'; -export './compare_fields_validation.dart'; \ No newline at end of file +export './compare_fields_validation.dart'; diff --git a/test/data/mocks/cache_storage_spy.dart b/test/data/mocks/cache_storage_spy.dart index 72b9cf5d..d160ddaf 100644 --- a/test/data/mocks/cache_storage_spy.dart +++ b/test/data/mocks/cache_storage_spy.dart @@ -7,16 +7,18 @@ class CacheStorageSpy extends Mock implements CacheStorage { this.mockDelete(); this.mockSave(); } - + When mockFetchCall() => when(() => this.fetch(any())); - void mockFetch(dynamic json) => this.mockFetchCall().thenAnswer((_) async => json); + void mockFetch(dynamic json) => + this.mockFetchCall().thenAnswer((_) async => json); void mockFetchError() => this.mockFetchCall().thenThrow(Exception()); When mockDeleteCall() => when(() => this.delete(any())); void mockDelete() => this.mockDeleteCall().thenAnswer((_) async => _); void mockDeleteError() => this.mockDeleteCall().thenThrow(Exception()); - When mockSaveCall() => when(() => this.save(key: any(named: 'key'), value: any(named: 'value'))); + When mockSaveCall() => + when(() => this.save(key: any(named: 'key'), value: any(named: 'value'))); void mockSave() => this.mockSaveCall().thenAnswer((_) async => _); void mockSaveError() => this.mockSaveCall().thenThrow(Exception()); -} \ No newline at end of file +} diff --git a/test/data/mocks/http_client_spy.dart b/test/data/mocks/http_client_spy.dart index 02a547fa..9950e4e6 100644 --- a/test/data/mocks/http_client_spy.dart +++ b/test/data/mocks/http_client_spy.dart @@ -4,11 +4,12 @@ import 'package:mocktail/mocktail.dart'; class HttpClientSpy extends Mock implements HttpClient { When mockRequestCall() => when(() => this.request( - url: any(named: 'url'), - method: any(named: 'method'), - body: any(named: 'body'), - headers: any(named: 'headers') - )); - void mockRequest(dynamic data) => this.mockRequestCall().thenAnswer((_) async => data); - void mockRequestError(HttpError error) => this.mockRequestCall().thenThrow(error); -} \ No newline at end of file + url: any(named: 'url'), + method: any(named: 'method'), + body: any(named: 'body'), + headers: any(named: 'headers'))); + void mockRequest(dynamic data) => + this.mockRequestCall().thenAnswer((_) async => data); + void mockRequestError(HttpError error) => + this.mockRequestCall().thenThrow(error); +} diff --git a/test/data/mocks/load_survey_result_spy.dart b/test/data/mocks/load_survey_result_spy.dart index aad71cdb..8977ae46 100644 --- a/test/data/mocks/load_survey_result_spy.dart +++ b/test/data/mocks/load_survey_result_spy.dart @@ -5,7 +5,9 @@ import 'package:fordev/domain/usecases/usecases.dart'; import 'package:mocktail/mocktail.dart'; class LoadSurveyResultSpy extends Mock implements LoadSurveyResult { - When mockLoadCall() => when(() => this.loadBySurvey(surveyId: any(named: 'surveyId'))); - void mockLoad(SurveyResultEntity surveyResult) => this.mockLoadCall().thenAnswer((_) async => surveyResult); + When mockLoadCall() => + when(() => this.loadBySurvey(surveyId: any(named: 'surveyId'))); + void mockLoad(SurveyResultEntity surveyResult) => + this.mockLoadCall().thenAnswer((_) async => surveyResult); void mockLoadError(DomainError error) => this.mockLoadCall().thenThrow(error); -} \ No newline at end of file +} diff --git a/test/data/mocks/load_surveys_spy.dart b/test/data/mocks/load_surveys_spy.dart index aeb0829e..14e91b5b 100644 --- a/test/data/mocks/load_surveys_spy.dart +++ b/test/data/mocks/load_surveys_spy.dart @@ -6,6 +6,7 @@ import 'package:mocktail/mocktail.dart'; class LoadSurveysSpy extends Mock implements LoadSurveys { When mockLoadCall() => when(() => this.load()); - void mockLoad(List surveys) => this.mockLoadCall().thenAnswer((_) async => surveys); + void mockLoad(List surveys) => + this.mockLoadCall().thenAnswer((_) async => surveys); void mockLoadError(DomainError error) => this.mockLoadCall().thenThrow(error); -} \ No newline at end of file +} diff --git a/test/data/mocks/local_load_survey_result_spy.dart b/test/data/mocks/local_load_survey_result_spy.dart index ee5ad851..847f456d 100644 --- a/test/data/mocks/local_load_survey_result_spy.dart +++ b/test/data/mocks/local_load_survey_result_spy.dart @@ -10,8 +10,10 @@ class LocalLoadSurveyResultSpy extends Mock implements LocalLoadSurveyResult { this.mockSave(); } - When mockLoadCall() => when(() => this.loadBySurvey(surveyId: any(named: 'surveyId'))); - void mockLoad(SurveyResultEntity surveyResult) => this.mockLoadCall().thenAnswer((_) async => surveyResult); + When mockLoadCall() => + when(() => this.loadBySurvey(surveyId: any(named: 'surveyId'))); + void mockLoad(SurveyResultEntity surveyResult) => + this.mockLoadCall().thenAnswer((_) async => surveyResult); void mockLoadError() => this.mockLoadCall().thenThrow(DomainError.unexpected); When mockValidateCall() => when(() => this.validate(any())); @@ -21,4 +23,4 @@ class LocalLoadSurveyResultSpy extends Mock implements LocalLoadSurveyResult { When mockSaveCall() => when(() => this.save(any())); void mockSave() => this.mockSaveCall().thenAnswer((_) async => _); void mockSaveError() => this.mockSaveCall().thenThrow(Exception()); -} \ No newline at end of file +} diff --git a/test/data/mocks/local_load_surveys_spy.dart b/test/data/mocks/local_load_surveys_spy.dart index 660fac65..33aaa0b9 100644 --- a/test/data/mocks/local_load_surveys_spy.dart +++ b/test/data/mocks/local_load_surveys_spy.dart @@ -11,7 +11,8 @@ class LocalLoadSurveysSpy extends Mock implements LocalLoadSurveys { } When mockLoadCall() => when(() => this.load()); - void mockLoad(List surveys) => this.mockLoadCall().thenAnswer((_) async => surveys); + void mockLoad(List surveys) => + this.mockLoadCall().thenAnswer((_) async => surveys); void mockLoadError() => this.mockLoadCall().thenThrow(DomainError.unexpected); When mockValidateCall() => when(() => this.validate()); @@ -21,4 +22,4 @@ class LocalLoadSurveysSpy extends Mock implements LocalLoadSurveys { When mockSaveCall() => when(() => this.save(any())); void mockSave() => this.mockSaveCall().thenAnswer((_) async => _); void mockSaveError() => this.mockSaveCall().thenThrow(Exception()); -} \ No newline at end of file +} diff --git a/test/data/mocks/mocks.dart b/test/data/mocks/mocks.dart index a801a3fe..b75ba7e8 100644 --- a/test/data/mocks/mocks.dart +++ b/test/data/mocks/mocks.dart @@ -6,4 +6,4 @@ export './local_load_surveys_spy.dart'; export './load_survey_result_spy.dart'; export './remote_load_survey_result_spy.dart'; export './load_surveys_spy.dart'; -export './remote_load_surveys_spy.dart'; \ No newline at end of file +export './remote_load_surveys_spy.dart'; diff --git a/test/data/mocks/remote_load_survey_result_spy.dart b/test/data/mocks/remote_load_survey_result_spy.dart index 77939fe2..f4d94ef1 100644 --- a/test/data/mocks/remote_load_survey_result_spy.dart +++ b/test/data/mocks/remote_load_survey_result_spy.dart @@ -5,7 +5,9 @@ import 'package:fordev/domain/helpers/helpers.dart'; import 'package:mocktail/mocktail.dart'; class RemoteLoadSurveyResultSpy extends Mock implements RemoteLoadSurveyResult { - When mockLoadCall() => when(() => this.loadBySurvey(surveyId: any(named: 'surveyId'))); - void mockLoad(SurveyResultEntity surveyResult) => this.mockLoadCall().thenAnswer((_) async => surveyResult); + When mockLoadCall() => + when(() => this.loadBySurvey(surveyId: any(named: 'surveyId'))); + void mockLoad(SurveyResultEntity surveyResult) => + this.mockLoadCall().thenAnswer((_) async => surveyResult); void mockLoadError(DomainError error) => this.mockLoadCall().thenThrow(error); -} \ No newline at end of file +} diff --git a/test/data/mocks/remote_load_surveys_spy.dart b/test/data/mocks/remote_load_surveys_spy.dart index a9505a97..e68c2fc5 100644 --- a/test/data/mocks/remote_load_surveys_spy.dart +++ b/test/data/mocks/remote_load_surveys_spy.dart @@ -6,6 +6,7 @@ import 'package:mocktail/mocktail.dart'; class RemoteLoadSurveysSpy extends Mock implements RemoteLoadSurveys { When mockLoadCall() => when(() => this.load()); - void mockLoad(List surveys) => this.mockLoadCall().thenAnswer((_) async => surveys); + void mockLoad(List surveys) => + this.mockLoadCall().thenAnswer((_) async => surveys); void mockLoadError(DomainError error) => this.mockLoadCall().thenThrow(error); -} \ No newline at end of file +} diff --git a/test/data/mocks/secure_cache_storage_spy.dart b/test/data/mocks/secure_cache_storage_spy.dart index 40729ea3..2832d2a5 100644 --- a/test/data/mocks/secure_cache_storage_spy.dart +++ b/test/data/mocks/secure_cache_storage_spy.dart @@ -2,21 +2,27 @@ import 'package:fordev/data/cache/cache.dart'; import 'package:mocktail/mocktail.dart'; -class SecureCacheStorageSpy extends Mock implements FetchSecureCacheStorage, DeleteSecureCacheStorage, SaveSecureCacheStorage { +class SecureCacheStorageSpy extends Mock + implements + FetchSecureCacheStorage, + DeleteSecureCacheStorage, + SaveSecureCacheStorage { SecureCacheStorageSpy() { this.mockDelete(); this.mockSave(); } - + When mockFetchCall() => when(() => this.fetch(any())); - void mockFetch(String? data) => this.mockFetchCall().thenAnswer((_) async => data); + void mockFetch(String? data) => + this.mockFetchCall().thenAnswer((_) async => data); void mockFetchError() => this.mockFetchCall().thenThrow(Exception()); When mockDeleteCall() => when(() => this.delete(any())); void mockDelete() => this.mockDeleteCall().thenAnswer((_) async => _); void mockDeleteError() => this.mockDeleteCall().thenThrow(Exception()); - When mockSaveCall() => when(() => this.save(key: any(named: 'key'), value: any(named: 'value'))); + When mockSaveCall() => + when(() => this.save(key: any(named: 'key'), value: any(named: 'value'))); void mockSave() => this.mockSaveCall().thenAnswer((_) async => _); void mockSaveError() => this.mockSaveCall().thenThrow(Exception()); -} \ No newline at end of file +} diff --git a/test/data/usecases/add_account/remote_add_account_test.dart b/test/data/usecases/add_account/remote_add_account_test.dart index 8103c468..b33adbe7 100644 --- a/test/data/usecases/add_account/remote_add_account_test.dart +++ b/test/data/usecases/add_account/remote_add_account_test.dart @@ -30,16 +30,12 @@ void main() { test('Should call HttpClient with correct values', () async { await sut.add(params); - verify(() => httpClient.request( - url: url, - method: 'post', - body: { - 'name': params.name, - 'email': params.email, - 'password': params.password, - 'passwordConfirmation': params.passwordConfirmation - } - )); + verify(() => httpClient.request(url: url, method: 'post', body: { + 'name': params.name, + 'email': params.email, + 'password': params.password, + 'passwordConfirmation': params.passwordConfirmation + })); }); test('Should throw UnexpectedError if HttpClient returns 400', () async { @@ -66,7 +62,8 @@ void main() { expect(future, throwsA(DomainError.unexpected)); }); - test('Should throw InvalidCredentialsError if HttpClient returns 403', () async { + test('Should throw InvalidCredentialsError if HttpClient returns 403', + () async { httpClient.mockRequestError(HttpError.forbidden); final future = sut.add(params); @@ -80,11 +77,13 @@ void main() { expect(account.token, apiResult['accessToken']); }); - test('Should throw UnexpectedError if HttpClient returns 200 with invalid data', () async { + test( + 'Should throw UnexpectedError if HttpClient returns 200 with invalid data', + () async { httpClient.mockRequest({'invalid_key': 'invalid_value'}); final future = sut.add(params); expect(future, throwsA(DomainError.unexpected)); }); -} \ No newline at end of file +} diff --git a/test/data/usecases/authentication/remote_authentication_test.dart b/test/data/usecases/authentication/remote_authentication_test.dart index 9dc40538..b439c994 100644 --- a/test/data/usecases/authentication/remote_authentication_test.dart +++ b/test/data/usecases/authentication/remote_authentication_test.dart @@ -31,10 +31,9 @@ void main() { await sut.auth(params); verify(() => httpClient.request( - url: url, - method: 'post', - body: {'email': params.email, 'password': params.secret} - )); + url: url, + method: 'post', + body: {'email': params.email, 'password': params.secret})); }); test('Should throw UnexpectedError if HttpClient returns 400', () async { @@ -61,7 +60,8 @@ void main() { expect(future, throwsA(DomainError.unexpected)); }); - test('Should throw InvalidCredentialsError if HttpClient returns 401', () async { + test('Should throw InvalidCredentialsError if HttpClient returns 401', + () async { httpClient.mockRequestError(HttpError.unauthorized); final future = sut.auth(params); @@ -75,11 +75,13 @@ void main() { expect(account.token, apiResult['accessToken']); }); - test('Should throw UnexpectedError if HttpClient returns 200 with invalid data', () async { + test( + 'Should throw UnexpectedError if HttpClient returns 200 with invalid data', + () async { httpClient.mockRequest({'invalid_key': 'invalid_value'}); final future = sut.auth(params); expect(future, throwsA(DomainError.unexpected)); }); -} \ No newline at end of file +} diff --git a/test/data/usecases/load_current_account/local_load_current_account_test.dart b/test/data/usecases/load_current_account/local_load_current_account_test.dart index e6b2973e..eb91a0d2 100644 --- a/test/data/usecases/load_current_account/local_load_current_account_test.dart +++ b/test/data/usecases/load_current_account/local_load_current_account_test.dart @@ -32,7 +32,8 @@ void main() { expect(account, AccountEntity(token: token)); }); - test('Should throw UnexpectedError if FetchSecureCacheStorage throws', () async { + test('Should throw UnexpectedError if FetchSecureCacheStorage throws', + () async { secureCacheStorage.mockFetchError(); final future = sut.load(); @@ -40,11 +41,12 @@ void main() { expect(future, throwsA(DomainError.unexpected)); }); - test('Should throw UnexpectedError if FetchSecureCacheStorage returns null', () async { + test('Should throw UnexpectedError if FetchSecureCacheStorage returns null', + () async { secureCacheStorage.mockFetch(null); final future = sut.load(); expect(future, throwsA(DomainError.unexpected)); }); -} \ No newline at end of file +} diff --git a/test/data/usecases/load_survey_result/local_load_survey_result_test.dart b/test/data/usecases/load_survey_result/local_load_survey_result_test.dart index 4e467c27..4156bd7a 100644 --- a/test/data/usecases/load_survey_result/local_load_survey_result_test.dart +++ b/test/data/usecases/load_survey_result/local_load_survey_result_test.dart @@ -36,23 +36,24 @@ void main() { test('Should return surveyResult on success', () async { final surveyResult = await sut.loadBySurvey(surveyId: surveyId); - expect(surveyResult, SurveyResultEntity( - surveyId: data['surveyId'], - question: data['question'], - answers: [ - SurveyAnswerEntity( - image: data['answers'][0]['image'], - answer: data['answers'][0]['answer'], - percent: 40, - isCurrentAnswer: true, - ), - SurveyAnswerEntity( - answer: data['answers'][1]['answer'], - percent: 60, - isCurrentAnswer: false, - ) - ] - )); + expect( + surveyResult, + SurveyResultEntity( + surveyId: data['surveyId'], + question: data['question'], + answers: [ + SurveyAnswerEntity( + image: data['answers'][0]['image'], + answer: data['answers'][0]['answer'], + percent: 40, + isCurrentAnswer: true, + ), + SurveyAnswerEntity( + answer: data['answers'][1]['answer'], + percent: 60, + isCurrentAnswer: false, + ) + ])); }); test('Should throw UnexpectedError if cache is empty', () async { @@ -125,22 +126,27 @@ void main() { Map json = { 'surveyId': surveyResult.surveyId, 'question': surveyResult.question, - 'answers': [{ - 'image': surveyResult.answers[0].image, - 'answer': surveyResult.answers[0].answer, - 'percent': '40', - 'isCurrentAnswer': 'true' - }, { - 'image': null, - 'answer': surveyResult.answers[1].answer, - 'percent': '60', - 'isCurrentAnswer': 'false' - }] + 'answers': [ + { + 'image': surveyResult.answers[0].image, + 'answer': surveyResult.answers[0].answer, + 'percent': '40', + 'isCurrentAnswer': 'true' + }, + { + 'image': null, + 'answer': surveyResult.answers[1].answer, + 'percent': '60', + 'isCurrentAnswer': 'false' + } + ] }; await sut.save(surveyResult); - verify(() => cacheStorage.save(key: 'survey_result/${surveyResult.surveyId}', value: json)).called(1); + verify(() => cacheStorage.save( + key: 'survey_result/${surveyResult.surveyId}', + value: json)).called(1); }); test('Should throw UnexpectedError if save throws', () async { @@ -151,4 +157,4 @@ void main() { expect(future, throwsA(DomainError.unexpected)); }); }); -} \ No newline at end of file +} diff --git a/test/data/usecases/load_survey_result/remote_load_survey_result_test.dart b/test/data/usecases/load_survey_result/remote_load_survey_result_test.dart index 84552279..9e004956 100644 --- a/test/data/usecases/load_survey_result/remote_load_survey_result_test.dart +++ b/test/data/usecases/load_survey_result/remote_load_survey_result_test.dart @@ -35,26 +35,31 @@ void main() { test('Should return surveyResult on 200', () async { final result = await sut.loadBySurvey(surveyId: surveyId); - expect(result, SurveyResultEntity( - surveyId: surveyResult['surveyId'], - question: surveyResult['question'], - answers: [ - SurveyAnswerEntity( - image: surveyResult['answers'][0]['image'], - answer: surveyResult['answers'][0]['answer'], - isCurrentAnswer: surveyResult['answers'][0]['isCurrentAccountAnswer'], - percent: surveyResult['answers'][0]['percent'], - ), - SurveyAnswerEntity( - answer: surveyResult['answers'][1]['answer'], - isCurrentAnswer: surveyResult['answers'][1]['isCurrentAccountAnswer'], - percent: surveyResult['answers'][1]['percent'], - ) - ] - )); + expect( + result, + SurveyResultEntity( + surveyId: surveyResult['surveyId'], + question: surveyResult['question'], + answers: [ + SurveyAnswerEntity( + image: surveyResult['answers'][0]['image'], + answer: surveyResult['answers'][0]['answer'], + isCurrentAnswer: surveyResult['answers'][0] + ['isCurrentAccountAnswer'], + percent: surveyResult['answers'][0]['percent'], + ), + SurveyAnswerEntity( + answer: surveyResult['answers'][1]['answer'], + isCurrentAnswer: surveyResult['answers'][1] + ['isCurrentAccountAnswer'], + percent: surveyResult['answers'][1]['percent'], + ) + ])); }); - test('Should throw UnexpectedError if HttpClient returns 200 with invalid data', () async { + test( + 'Should throw UnexpectedError if HttpClient returns 200 with invalid data', + () async { httpClient.mockRequest(ApiFactory.makeInvalidJson()); final future = sut.loadBySurvey(surveyId: surveyId); @@ -85,4 +90,4 @@ void main() { expect(future, throwsA(DomainError.accessDenied)); }); -} \ No newline at end of file +} diff --git a/test/data/usecases/load_surveys/local_load_surveys_test.dart b/test/data/usecases/load_surveys/local_load_surveys_test.dart index 87b7cda5..ad5042e9 100644 --- a/test/data/usecases/load_surveys/local_load_surveys_test.dart +++ b/test/data/usecases/load_surveys/local_load_surveys_test.dart @@ -34,8 +34,16 @@ void main() { final surveys = await sut.load(); expect(surveys, [ - SurveyEntity(id: data[0]['id'], question: data[0]['question'], dateTime: DateTime.utc(2020, 7, 20), didAnswer: false), - SurveyEntity(id: data[1]['id'], question: data[1]['question'], dateTime: DateTime.utc(2019, 2, 2), didAnswer: true), + SurveyEntity( + id: data[0]['id'], + question: data[0]['question'], + dateTime: DateTime.utc(2020, 7, 20), + didAnswer: false), + SurveyEntity( + id: data[1]['id'], + question: data[1]['question'], + dateTime: DateTime.utc(2019, 2, 2), + didAnswer: true), ]); }); @@ -106,17 +114,20 @@ void main() { group('save', () { test('Should call cacheStorage with correct values', () async { - final list = [{ - 'id': surveys[0].id, - 'question': surveys[0].question, - 'date': '2020-02-02T00:00:00.000Z', - 'didAnswer': 'true', - }, { - 'id': surveys[1].id, - 'question': surveys[1].question, - 'date': '2018-12-20T00:00:00.000Z', - 'didAnswer': 'false', - }]; + final list = [ + { + 'id': surveys[0].id, + 'question': surveys[0].question, + 'date': '2020-02-02T00:00:00.000Z', + 'didAnswer': 'true', + }, + { + 'id': surveys[1].id, + 'question': surveys[1].question, + 'date': '2018-12-20T00:00:00.000Z', + 'didAnswer': 'false', + } + ]; await sut.save(surveys); @@ -131,4 +142,4 @@ void main() { expect(future, throwsA(DomainError.unexpected)); }); }); -} \ No newline at end of file +} diff --git a/test/data/usecases/load_surveys/remote_load_surveys_test.dart b/test/data/usecases/load_surveys/remote_load_surveys_test.dart index 2985fe92..0817a644 100644 --- a/test/data/usecases/load_surveys/remote_load_surveys_test.dart +++ b/test/data/usecases/load_surveys/remote_load_surveys_test.dart @@ -49,7 +49,9 @@ void main() { ]); }); - test('Should throw UnexpectedError if HttpClient returns 200 with invalid data', () async { + test( + 'Should throw UnexpectedError if HttpClient returns 200 with invalid data', + () async { httpClient.mockRequest(ApiFactory.makeInvalidList()); final future = sut.load(); @@ -80,4 +82,4 @@ void main() { expect(future, throwsA(DomainError.accessDenied)); }); -} \ No newline at end of file +} diff --git a/test/data/usecases/save_current_account/local_save_current_account_test.dart b/test/data/usecases/save_current_account/local_save_current_account_test.dart index ad0e2a35..195690a8 100644 --- a/test/data/usecases/save_current_account/local_save_current_account_test.dart +++ b/test/data/usecases/save_current_account/local_save_current_account_test.dart @@ -25,11 +25,12 @@ void main() { verify(() => secureCacheStorage.save(key: 'token', value: account.token)); }); - test('Should throw UnexpectedError if SaveSecureCacheStorage throws', () async { + test('Should throw UnexpectedError if SaveSecureCacheStorage throws', + () async { secureCacheStorage.mockSaveError(); final future = sut.save(account); expect(future, throwsA(DomainError.unexpected)); }); -} \ No newline at end of file +} diff --git a/test/data/usecases/save_survey_result/remote_save_survey_result_test.dart b/test/data/usecases/save_survey_result/remote_save_survey_result_test.dart index 1db37245..a8c183a9 100644 --- a/test/data/usecases/save_survey_result/remote_save_survey_result_test.dart +++ b/test/data/usecases/save_survey_result/remote_save_survey_result_test.dart @@ -29,32 +29,38 @@ void main() { test('Should call HttpClient with correct values', () async { await sut.save(answer: answer); - verify(() => httpClient.request(url: url, method: 'put', body: {'answer': answer})); + verify(() => + httpClient.request(url: url, method: 'put', body: {'answer': answer})); }); test('Should return surveyResult on 200', () async { final result = await sut.save(answer: answer); - expect(result, SurveyResultEntity( - surveyId: surveyResult['surveyId'], - question: surveyResult['question'], - answers: [ - SurveyAnswerEntity( - image: surveyResult['answers'][0]['image'], - answer: surveyResult['answers'][0]['answer'], - isCurrentAnswer: surveyResult['answers'][0]['isCurrentAccountAnswer'], - percent: surveyResult['answers'][0]['percent'], - ), - SurveyAnswerEntity( - answer: surveyResult['answers'][1]['answer'], - isCurrentAnswer: surveyResult['answers'][1]['isCurrentAccountAnswer'], - percent: surveyResult['answers'][1]['percent'], - ) - ] - )); + expect( + result, + SurveyResultEntity( + surveyId: surveyResult['surveyId'], + question: surveyResult['question'], + answers: [ + SurveyAnswerEntity( + image: surveyResult['answers'][0]['image'], + answer: surveyResult['answers'][0]['answer'], + isCurrentAnswer: surveyResult['answers'][0] + ['isCurrentAccountAnswer'], + percent: surveyResult['answers'][0]['percent'], + ), + SurveyAnswerEntity( + answer: surveyResult['answers'][1]['answer'], + isCurrentAnswer: surveyResult['answers'][1] + ['isCurrentAccountAnswer'], + percent: surveyResult['answers'][1]['percent'], + ) + ])); }); - test('Should throw UnexpectedError if HttpClient returns 200 with invalid data', () async { + test( + 'Should throw UnexpectedError if HttpClient returns 200 with invalid data', + () async { httpClient.mockRequest(ApiFactory.makeInvalidJson()); final future = sut.save(answer: answer); @@ -85,4 +91,4 @@ void main() { expect(future, throwsA(DomainError.accessDenied)); }); -} \ No newline at end of file +} diff --git a/test/domain/mocks/add_account_spy.dart b/test/domain/mocks/add_account_spy.dart index eee6e107..d3946bbb 100644 --- a/test/domain/mocks/add_account_spy.dart +++ b/test/domain/mocks/add_account_spy.dart @@ -6,6 +6,8 @@ import 'package:mocktail/mocktail.dart'; class AddAccountSpy extends Mock implements AddAccount { When mockAddAccountCall() => when(() => this.add(any())); - void mockAddAccount(AccountEntity data) => this.mockAddAccountCall().thenAnswer((_) async => data); - void mockAddAccountError(DomainError error) => this.mockAddAccountCall().thenThrow(error); -} \ No newline at end of file + void mockAddAccount(AccountEntity data) => + this.mockAddAccountCall().thenAnswer((_) async => data); + void mockAddAccountError(DomainError error) => + this.mockAddAccountCall().thenThrow(error); +} diff --git a/test/domain/mocks/authentication_spy.dart b/test/domain/mocks/authentication_spy.dart index 6834b179..dee7ec64 100644 --- a/test/domain/mocks/authentication_spy.dart +++ b/test/domain/mocks/authentication_spy.dart @@ -6,6 +6,8 @@ import 'package:mocktail/mocktail.dart'; class AuthenticationSpy extends Mock implements Authentication { When mockAuthenticationCall() => when(() => this.auth(any())); - void mockAuthentication(AccountEntity data) => this.mockAuthenticationCall().thenAnswer((_) async => data); - void mockAuthenticationError(DomainError error) => this.mockAuthenticationCall().thenThrow(error); -} \ No newline at end of file + void mockAuthentication(AccountEntity data) => + this.mockAuthenticationCall().thenAnswer((_) async => data); + void mockAuthenticationError(DomainError error) => + this.mockAuthenticationCall().thenThrow(error); +} diff --git a/test/domain/mocks/entity_factory.dart b/test/domain/mocks/entity_factory.dart index ea2543ab..db3a3aed 100644 --- a/test/domain/mocks/entity_factory.dart +++ b/test/domain/mocks/entity_factory.dart @@ -3,40 +3,33 @@ import 'package:fordev/domain/entities/entities.dart'; import 'package:faker/faker.dart'; class EntityFactory { - static AccountEntity makeAccount() => AccountEntity( - token: faker.guid.guid() - ); + static AccountEntity makeAccount() => AccountEntity(token: faker.guid.guid()); static SurveyResultEntity makeSurveyResult() => SurveyResultEntity( - surveyId: faker.guid.guid(), - question: faker.lorem.sentence(), - answers: [ - SurveyAnswerEntity( - image: faker.internet.httpUrl(), - answer: faker.lorem.sentence(), - isCurrentAnswer: true, - percent: 40 - ), - SurveyAnswerEntity( - answer: faker.lorem.sentence(), - isCurrentAnswer: false, - percent: 60 - ) - ] - ); + surveyId: faker.guid.guid(), + question: faker.lorem.sentence(), + answers: [ + SurveyAnswerEntity( + image: faker.internet.httpUrl(), + answer: faker.lorem.sentence(), + isCurrentAnswer: true, + percent: 40), + SurveyAnswerEntity( + answer: faker.lorem.sentence(), + isCurrentAnswer: false, + percent: 60) + ]); static List makeSurveyList() => [ - SurveyEntity( - id: faker.guid.guid(), - question: faker.randomGenerator.string(10), - dateTime: DateTime.utc(2020, 2, 2), - didAnswer: true - ), - SurveyEntity( - id: faker.guid.guid(), - question: faker.randomGenerator.string(10), - dateTime: DateTime.utc(2018, 12, 20), - didAnswer: false - ) - ]; -} \ No newline at end of file + SurveyEntity( + id: faker.guid.guid(), + question: faker.randomGenerator.string(10), + dateTime: DateTime.utc(2020, 2, 2), + didAnswer: true), + SurveyEntity( + id: faker.guid.guid(), + question: faker.randomGenerator.string(10), + dateTime: DateTime.utc(2018, 12, 20), + didAnswer: false) + ]; +} diff --git a/test/domain/mocks/load_current_account_spy.dart b/test/domain/mocks/load_current_account_spy.dart index e36c6389..8901e728 100644 --- a/test/domain/mocks/load_current_account_spy.dart +++ b/test/domain/mocks/load_current_account_spy.dart @@ -5,6 +5,7 @@ import 'package:mocktail/mocktail.dart'; class LoadCurrentAccountSpy extends Mock implements LoadCurrentAccount { When mockLoadCall() => when(() => this.load()); - void mockLoad({ required AccountEntity account }) => this.mockLoadCall().thenAnswer((_) async => account); + void mockLoad({required AccountEntity account}) => + this.mockLoadCall().thenAnswer((_) async => account); void mockLoadError() => this.mockLoadCall().thenThrow(Exception()); -} \ No newline at end of file +} diff --git a/test/domain/mocks/mocks.dart b/test/domain/mocks/mocks.dart index ce2fd0c3..fb1740f6 100644 --- a/test/domain/mocks/mocks.dart +++ b/test/domain/mocks/mocks.dart @@ -4,4 +4,4 @@ export './authentication_spy.dart'; export './save_current_account_spy.dart'; export './load_current_account_spy.dart'; export './save_survey_result_spy.dart'; -export './add_account_spy.dart'; \ No newline at end of file +export './add_account_spy.dart'; diff --git a/test/domain/mocks/params_factory.dart b/test/domain/mocks/params_factory.dart index e9f61bcf..c92deab5 100644 --- a/test/domain/mocks/params_factory.dart +++ b/test/domain/mocks/params_factory.dart @@ -4,14 +4,11 @@ import 'package:faker/faker.dart'; class ParamsFactory { static AddAccountParams makeAddAccount() => AddAccountParams( - name: faker.person.name(), - email: faker.internet.email(), - password: faker.internet.password(), - passwordConfirmation: faker.internet.password() - ); + name: faker.person.name(), + email: faker.internet.email(), + password: faker.internet.password(), + passwordConfirmation: faker.internet.password()); static AuthenticationParams makeAuthentication() => AuthenticationParams( - email: faker.internet.email(), - secret: faker.internet.password() - ); -} \ No newline at end of file + email: faker.internet.email(), secret: faker.internet.password()); +} diff --git a/test/domain/mocks/save_current_account_spy.dart b/test/domain/mocks/save_current_account_spy.dart index b303a31f..f90b49b0 100644 --- a/test/domain/mocks/save_current_account_spy.dart +++ b/test/domain/mocks/save_current_account_spy.dart @@ -11,4 +11,4 @@ class SaveCurrentAccountSpy extends Mock implements SaveCurrentAccount { When mockSaveCall() => when(() => this.save(any())); void mockSave() => this.mockSaveCall().thenAnswer((_) async => _); void mockSaveError() => this.mockSaveCall().thenThrow(DomainError.unexpected); -} \ No newline at end of file +} diff --git a/test/domain/mocks/save_survey_result_spy.dart b/test/domain/mocks/save_survey_result_spy.dart index 585ea69b..1819f424 100644 --- a/test/domain/mocks/save_survey_result_spy.dart +++ b/test/domain/mocks/save_survey_result_spy.dart @@ -6,6 +6,7 @@ import 'package:mocktail/mocktail.dart'; class SaveSurveyResultSpy extends Mock implements SaveSurveyResult { When mockSaveCall() => when(() => this.save(answer: any(named: 'answer'))); - void mockSave(SurveyResultEntity data) => mockSaveCall().thenAnswer((_) async => data); + void mockSave(SurveyResultEntity data) => + mockSaveCall().thenAnswer((_) async => data); void mockSaveError(DomainError error) => mockSaveCall().thenThrow(error); -} \ No newline at end of file +} diff --git a/test/infra/cache/local_storage_adapter_test.dart b/test/infra/cache/local_storage_adapter_test.dart index c55893eb..27342891 100644 --- a/test/infra/cache/local_storage_adapter_test.dart +++ b/test/infra/cache/local_storage_adapter_test.dart @@ -40,7 +40,7 @@ void main() { test('Should throw if deleteItem throws', () async { localStorage.mockSaveError(); - + final future = sut.save(key: key, value: value); expect(future, throwsA(TypeMatcher())); @@ -84,4 +84,4 @@ void main() { expect(future, throwsA(TypeMatcher())); }); }); -} \ No newline at end of file +} diff --git a/test/infra/cache/secure_storage_adapter_test.dart b/test/infra/cache/secure_storage_adapter_test.dart index 01b32d91..2b755686 100644 --- a/test/infra/cache/secure_storage_adapter_test.dart +++ b/test/infra/cache/secure_storage_adapter_test.dart @@ -73,4 +73,4 @@ void main() { expect(future, throwsA(TypeMatcher())); }); }); -} \ No newline at end of file +} diff --git a/test/infra/http/http_adapter_test.dart b/test/infra/http/http_adapter_test.dart index 1bf751a6..82c4612e 100644 --- a/test/infra/http/http_adapter_test.dart +++ b/test/infra/http/http_adapter_test.dart @@ -32,35 +32,33 @@ void main() { group('post', () { test('Should call post with correct values', () async { - await sut.request(url: url, method: 'post', body: {'any_key': 'any_value'}); - verify(() => client.post( - Uri.parse(url), - headers: { - 'content-type': 'application/json', - 'accept': 'application/json' - }, - body: '{"any_key":"any_value"}' - )); - - await sut.request(url: url, method: 'post', body: {'any_key': 'any_value'}, headers: {'any_header': 'any_value'}); - verify(() => client.post( - Uri.parse(url), - headers: { - 'content-type': 'application/json', - 'accept': 'application/json', - 'any_header': 'any_value' - }, - body: '{"any_key":"any_value"}' - )); + await sut + .request(url: url, method: 'post', body: {'any_key': 'any_value'}); + verify(() => client.post(Uri.parse(url), + headers: { + 'content-type': 'application/json', + 'accept': 'application/json' + }, + body: '{"any_key":"any_value"}')); + + await sut.request( + url: url, + method: 'post', + body: {'any_key': 'any_value'}, + headers: {'any_header': 'any_value'}); + verify(() => client.post(Uri.parse(url), + headers: { + 'content-type': 'application/json', + 'accept': 'application/json', + 'any_header': 'any_value' + }, + body: '{"any_key":"any_value"}')); }); test('Should call post without body', () async { await sut.request(url: url, method: 'post'); - verify(() => client.post( - any(), - headers: any(named: 'headers') - )); + verify(() => client.post(any(), headers: any(named: 'headers'))); }); test('Should return data if post returns 200', () async { @@ -153,23 +151,18 @@ void main() { group('get', () { test('Should call get with correct values', () async { await sut.request(url: url, method: 'get'); - verify(() => client.get( - Uri.parse(url), - headers: { - 'content-type': 'application/json', - 'accept': 'application/json' - } - )); - - await sut.request(url: url, method: 'get', headers: {'any_header': 'any_value'}); - verify(() => client.get( - Uri.parse(url), - headers: { - 'content-type': 'application/json', - 'accept': 'application/json', - 'any_header': 'any_value' - } - )); + verify(() => client.get(Uri.parse(url), headers: { + 'content-type': 'application/json', + 'accept': 'application/json' + })); + + await sut.request( + url: url, method: 'get', headers: {'any_header': 'any_value'}); + verify(() => client.get(Uri.parse(url), headers: { + 'content-type': 'application/json', + 'accept': 'application/json', + 'any_header': 'any_value' + })); }); test('Should return data if get returns 200', () async { @@ -261,35 +254,33 @@ void main() { group('put', () { test('Should call put with correct values', () async { - await sut.request(url: url, method: 'put', body: {'any_key': 'any_value'}); - verify(() => client.put( - Uri.parse(url), - headers: { - 'content-type': 'application/json', - 'accept': 'application/json' - }, - body: '{"any_key":"any_value"}' - )); - - await sut.request(url: url, method: 'put', body: {'any_key': 'any_value'}, headers: {'any_header': 'any_value'}); - verify(() => client.put( - Uri.parse(url), - headers: { - 'content-type': 'application/json', - 'accept': 'application/json', - 'any_header': 'any_value' - }, - body: '{"any_key":"any_value"}' - )); + await sut + .request(url: url, method: 'put', body: {'any_key': 'any_value'}); + verify(() => client.put(Uri.parse(url), + headers: { + 'content-type': 'application/json', + 'accept': 'application/json' + }, + body: '{"any_key":"any_value"}')); + + await sut.request( + url: url, + method: 'put', + body: {'any_key': 'any_value'}, + headers: {'any_header': 'any_value'}); + verify(() => client.put(Uri.parse(url), + headers: { + 'content-type': 'application/json', + 'accept': 'application/json', + 'any_header': 'any_value' + }, + body: '{"any_key":"any_value"}')); }); test('Should call put without body', () async { await sut.request(url: url, method: 'put'); - verify(() => client.put( - any(), - headers: any(named: 'headers') - )); + verify(() => client.put(any(), headers: any(named: 'headers'))); }); test('Should return data if put returns 200', () async { @@ -378,4 +369,4 @@ void main() { expect(future, throwsA(HttpError.serverError)); }); }); -} \ No newline at end of file +} diff --git a/test/infra/mocks/api_factory.dart b/test/infra/mocks/api_factory.dart index 29a0fb17..ceada802 100644 --- a/test/infra/mocks/api_factory.dart +++ b/test/infra/mocks/api_factory.dart @@ -1,47 +1,46 @@ import 'package:faker/faker.dart'; class ApiFactory { - static Map makeAccountJson() => { - 'accessToken': faker.guid.guid(), - 'name': faker.person.name() - }; + static Map makeAccountJson() => + {'accessToken': faker.guid.guid(), 'name': faker.person.name()}; static Map makeSurveyResultJson() => { - 'surveyId': faker.guid.guid(), - 'question': faker.randomGenerator.string(50), - 'answers': [{ - 'image': faker.internet.httpUrl(), - 'answer': faker.randomGenerator.string(20), - 'percent': faker.randomGenerator.integer(100), - 'count': faker.randomGenerator.integer(1000), - 'isCurrentAccountAnswer': faker.randomGenerator.boolean() - }, { - 'answer': faker.randomGenerator.string(20), - 'percent': faker.randomGenerator.integer(100), - 'count': faker.randomGenerator.integer(1000), - 'isCurrentAccountAnswer': faker.randomGenerator.boolean() - }], - 'date': faker.date.dateTime().toIso8601String(), - }; + 'surveyId': faker.guid.guid(), + 'question': faker.randomGenerator.string(50), + 'answers': [ + { + 'image': faker.internet.httpUrl(), + 'answer': faker.randomGenerator.string(20), + 'percent': faker.randomGenerator.integer(100), + 'count': faker.randomGenerator.integer(1000), + 'isCurrentAccountAnswer': faker.randomGenerator.boolean() + }, + { + 'answer': faker.randomGenerator.string(20), + 'percent': faker.randomGenerator.integer(100), + 'count': faker.randomGenerator.integer(1000), + 'isCurrentAccountAnswer': faker.randomGenerator.boolean() + } + ], + 'date': faker.date.dateTime().toIso8601String(), + }; - static List makeSurveyList() => [{ - 'id': faker.guid.guid(), - 'question': faker.randomGenerator.string(50), - 'didAnswer': faker.randomGenerator.boolean(), - 'date': faker.date.dateTime().toIso8601String(), - }, { - 'id': faker.guid.guid(), - 'question': faker.randomGenerator.string(50), - 'didAnswer': faker.randomGenerator.boolean(), - 'date': faker.date.dateTime().toIso8601String(), - }]; + static List makeSurveyList() => [ + { + 'id': faker.guid.guid(), + 'question': faker.randomGenerator.string(50), + 'didAnswer': faker.randomGenerator.boolean(), + 'date': faker.date.dateTime().toIso8601String(), + }, + { + 'id': faker.guid.guid(), + 'question': faker.randomGenerator.string(50), + 'didAnswer': faker.randomGenerator.boolean(), + 'date': faker.date.dateTime().toIso8601String(), + } + ]; - static Map makeInvalidJson() => { - 'invalid_key': 'invalid_value' - }; + static Map makeInvalidJson() => {'invalid_key': 'invalid_value'}; - static List makeInvalidList() => [ - makeInvalidJson(), - makeInvalidJson() - ]; -} \ No newline at end of file + static List makeInvalidList() => [makeInvalidJson(), makeInvalidJson()]; +} diff --git a/test/infra/mocks/cache_factory.dart b/test/infra/mocks/cache_factory.dart index 79cf28f6..197446c7 100644 --- a/test/infra/mocks/cache_factory.dart +++ b/test/infra/mocks/cache_factory.dart @@ -2,56 +2,66 @@ import 'package:faker/faker.dart'; class CacheFactory { static Map makeSurveyResult() => { - 'surveyId': faker.guid.guid(), - 'question': faker.lorem.sentence(), - 'answers': [{ - 'image': faker.internet.httpUrl(), - 'answer': faker.lorem.sentence(), - 'isCurrentAnswer': 'true', - 'percent': '40' - }, { - 'answer': faker.lorem.sentence(), - 'isCurrentAnswer': 'false', - 'percent': '60' - }], - }; + 'surveyId': faker.guid.guid(), + 'question': faker.lorem.sentence(), + 'answers': [ + { + 'image': faker.internet.httpUrl(), + 'answer': faker.lorem.sentence(), + 'isCurrentAnswer': 'true', + 'percent': '40' + }, + { + 'answer': faker.lorem.sentence(), + 'isCurrentAnswer': 'false', + 'percent': '60' + } + ], + }; static Map makeInvalidSurveyResult() => { - 'surveyId': faker.guid.guid(), - 'question': faker.lorem.sentence(), - 'answers': [{ - 'image': faker.internet.httpUrl(), - 'answer': faker.lorem.sentence(), - 'isCurrentAnswer': 'invalid bool', - 'percent': 'invalid int' - }], - }; + 'surveyId': faker.guid.guid(), + 'question': faker.lorem.sentence(), + 'answers': [ + { + 'image': faker.internet.httpUrl(), + 'answer': faker.lorem.sentence(), + 'isCurrentAnswer': 'invalid bool', + 'percent': 'invalid int' + } + ], + }; - static Map makeIncompleteSurveyResult() => { - 'surveyId': faker.guid.guid() - }; + static Map makeIncompleteSurveyResult() => {'surveyId': faker.guid.guid()}; - static List makeSurveyList() => [{ - 'id': faker.guid.guid(), - 'question': faker.randomGenerator.string(10), - 'date': '2020-07-20T00:00:00Z', - 'didAnswer': 'false', - }, { - 'id': faker.guid.guid(), - 'question': faker.randomGenerator.string(10), - 'date': '2019-02-02T00:00:00Z', - 'didAnswer': 'true', - }]; + static List makeSurveyList() => [ + { + 'id': faker.guid.guid(), + 'question': faker.randomGenerator.string(10), + 'date': '2020-07-20T00:00:00Z', + 'didAnswer': 'false', + }, + { + 'id': faker.guid.guid(), + 'question': faker.randomGenerator.string(10), + 'date': '2019-02-02T00:00:00Z', + 'didAnswer': 'true', + } + ]; - static List makeInvalidSurveyList() => [{ - 'id': faker.guid.guid(), - 'question': faker.randomGenerator.string(10), - 'date': 'invalid date', - 'didAnswer': 'false', - }]; + static List makeInvalidSurveyList() => [ + { + 'id': faker.guid.guid(), + 'question': faker.randomGenerator.string(10), + 'date': 'invalid date', + 'didAnswer': 'false', + } + ]; - static List makeIncompleteSurveyList() => [{ - 'date': '2019-02-02T00:00:00Z', - 'didAnswer': 'false', - }]; -} \ No newline at end of file + static List makeIncompleteSurveyList() => [ + { + 'date': '2019-02-02T00:00:00Z', + 'didAnswer': 'false', + } + ]; +} diff --git a/test/infra/mocks/client_spy.dart b/test/infra/mocks/client_spy.dart index 98bbf8cd..2a9705c5 100644 --- a/test/infra/mocks/client_spy.dart +++ b/test/infra/mocks/client_spy.dart @@ -8,15 +8,22 @@ class ClientSpy extends Mock implements Client { this.mockGet(200); } - When mockPostCall() => when(() => this.post(any(), body: any(named: 'body'), headers: any(named: 'headers'))); - void mockPost(int statusCode, {String body = '{"any_key":"any_value"}'}) => this.mockPostCall().thenAnswer((_) async => Response(body, statusCode)); - void mockPostError() => when(() => this.mockPostCall().thenThrow(Exception())); + When mockPostCall() => when(() => this + .post(any(), body: any(named: 'body'), headers: any(named: 'headers'))); + void mockPost(int statusCode, {String body = '{"any_key":"any_value"}'}) => + this.mockPostCall().thenAnswer((_) async => Response(body, statusCode)); + void mockPostError() => + when(() => this.mockPostCall().thenThrow(Exception())); - When mockPutCall() => when(() => this.put(any(), body: any(named: 'body'), headers: any(named: 'headers'))); - void mockPut(int statusCode, {String body = '{"any_key":"any_value"}'}) => this.mockPutCall().thenAnswer((_) async => Response(body, statusCode)); + When mockPutCall() => when(() => this + .put(any(), body: any(named: 'body'), headers: any(named: 'headers'))); + void mockPut(int statusCode, {String body = '{"any_key":"any_value"}'}) => + this.mockPutCall().thenAnswer((_) async => Response(body, statusCode)); void mockPutError() => when(() => this.mockPutCall().thenThrow(Exception())); - When mockGetCall() => when(() => this.get(any(), headers: any(named: 'headers'))); - void mockGet(int statusCode, {String body = '{"any_key":"any_value"}'}) => this.mockGetCall().thenAnswer((_) async => Response(body, statusCode)); + When mockGetCall() => + when(() => this.get(any(), headers: any(named: 'headers'))); + void mockGet(int statusCode, {String body = '{"any_key":"any_value"}'}) => + this.mockGetCall().thenAnswer((_) async => Response(body, statusCode)); void mockGetError() => when(() => this.mockGetCall().thenThrow(Exception())); -} \ No newline at end of file +} diff --git a/test/infra/mocks/flutter_secure_storage_spy.dart b/test/infra/mocks/flutter_secure_storage_spy.dart index ebb31024..582fd9b0 100644 --- a/test/infra/mocks/flutter_secure_storage_spy.dart +++ b/test/infra/mocks/flutter_secure_storage_spy.dart @@ -9,13 +9,18 @@ class FlutterSecureStorageSpy extends Mock implements FlutterSecureStorage { When mockDeleteCall() => when(() => this.delete(key: any(named: 'key'))); void mockDelete() => this.mockDeleteCall().thenAnswer((_) async => _); - void mockDeleteError() => when(() => this.mockDeleteCall().thenThrow(Exception())); + void mockDeleteError() => + when(() => this.mockDeleteCall().thenThrow(Exception())); - When mockSaveCall() => when(() => this.write(key: any(named: 'key'), value: any(named: 'value'))); + When mockSaveCall() => when( + () => this.write(key: any(named: 'key'), value: any(named: 'value'))); void mockSave() => this.mockSaveCall().thenAnswer((_) async => _); - void mockSaveError() => when(() => this.mockSaveCall().thenThrow(Exception())); + void mockSaveError() => + when(() => this.mockSaveCall().thenThrow(Exception())); When mockFetchCall() => when(() => this.read(key: any(named: 'key'))); - void mockFetch(String? data) => this.mockFetchCall().thenAnswer((_) async => data); - void mockFetchError() => when(() => this.mockFetchCall().thenThrow(Exception())); -} \ No newline at end of file + void mockFetch(String? data) => + this.mockFetchCall().thenAnswer((_) async => data); + void mockFetchError() => + when(() => this.mockFetchCall().thenThrow(Exception())); +} diff --git a/test/infra/mocks/local_storage_spy.dart b/test/infra/mocks/local_storage_spy.dart index 802026f9..3bcfa7c7 100644 --- a/test/infra/mocks/local_storage_spy.dart +++ b/test/infra/mocks/local_storage_spy.dart @@ -9,13 +9,17 @@ class LocalStorageSpy extends Mock implements LocalStorage { When mockDeleteCall() => when(() => this.deleteItem(any())); void mockDelete() => this.mockDeleteCall().thenAnswer((_) async => _); - void mockDeleteError() => when(() => this.mockDeleteCall().thenThrow(Exception())); + void mockDeleteError() => + when(() => this.mockDeleteCall().thenThrow(Exception())); When mockSaveCall() => when(() => this.setItem(any(), any())); void mockSave() => this.mockSaveCall().thenAnswer((_) async => _); - void mockSaveError() => when(() => this.mockSaveCall().thenThrow(Exception())); + void mockSaveError() => + when(() => this.mockSaveCall().thenThrow(Exception())); When mockFetchCall() => when(() => this.getItem(any())); - void mockFetch(dynamic data) => this.mockFetchCall().thenAnswer((_) async => data); - void mockFetchError() => when(() => this.mockFetchCall().thenThrow(Exception())); -} \ No newline at end of file + void mockFetch(dynamic data) => + this.mockFetchCall().thenAnswer((_) async => data); + void mockFetchError() => + when(() => this.mockFetchCall().thenThrow(Exception())); +} diff --git a/test/infra/mocks/mocks.dart b/test/infra/mocks/mocks.dart index 879ab61c..74f1693e 100644 --- a/test/infra/mocks/mocks.dart +++ b/test/infra/mocks/mocks.dart @@ -2,4 +2,4 @@ export './api_factory.dart'; export './cache_factory.dart'; export './local_storage_spy.dart'; export './flutter_secure_storage_spy.dart'; -export './client_spy.dart'; \ No newline at end of file +export './client_spy.dart'; diff --git a/test/main/composites/remote_load_survey_result_with_local_fallback_test.dart b/test/main/composites/remote_load_survey_result_with_local_fallback_test.dart index fe38fc82..91c1e80e 100644 --- a/test/main/composites/remote_load_survey_result_with_local_fallback_test.dart +++ b/test/main/composites/remote_load_survey_result_with_local_fallback_test.dart @@ -25,10 +25,7 @@ void main() { remoteSurveyResult = EntityFactory.makeSurveyResult(); remote = RemoteLoadSurveyResultSpy(); remote.mockLoad(remoteSurveyResult); - sut = RemoteLoadSurveyResultWithLocalFallback( - remote: remote, - local: local - ); + sut = RemoteLoadSurveyResultWithLocalFallback(remote: remote, local: local); }); setUpAll(() { @@ -53,7 +50,8 @@ void main() { expect(response, remoteSurveyResult); }); - test('Should rethrow if remote loadBySurvey throws AccessDeniedError', () async { + test('Should rethrow if remote loadBySurvey throws AccessDeniedError', + () async { remote.mockLoadError(DomainError.accessDenied); final future = sut.loadBySurvey(surveyId: surveyId); @@ -78,7 +76,8 @@ void main() { expect(response, localSurveyResult); }); - test('Should throw UnexpectedError if remote and local loadBySurvey throws', () async { + test('Should throw UnexpectedError if remote and local loadBySurvey throws', + () async { remote.mockLoadError(DomainError.unexpected); local.mockLoadError(); @@ -86,4 +85,4 @@ void main() { expect(future, throwsA(DomainError.unexpected)); }); -} \ No newline at end of file +} diff --git a/test/main/composites/remote_load_surveys_with_local_fallback_test.dart b/test/main/composites/remote_load_surveys_with_local_fallback_test.dart index 2b756528..2e934e69 100644 --- a/test/main/composites/remote_load_surveys_with_local_fallback_test.dart +++ b/test/main/composites/remote_load_surveys_with_local_fallback_test.dart @@ -22,10 +22,7 @@ void main() { remoteSurveys = EntityFactory.makeSurveyList(); remote = RemoteLoadSurveysSpy(); remote.mockLoad(remoteSurveys); - sut = RemoteLoadSurveysWithLocalFallback( - remote: remote, - local: local - ); + sut = RemoteLoadSurveysWithLocalFallback(remote: remote, local: local); }); test('Should call remote load', () async { @@ -79,4 +76,4 @@ void main() { expect(future, throwsA(DomainError.unexpected)); }); -} \ No newline at end of file +} diff --git a/test/main/composites/validation_composite_test.dart b/test/main/composites/validation_composite_test.dart index 33037941..99cf93cf 100644 --- a/test/main/composites/validation_composite_test.dart +++ b/test/main/composites/validation_composite_test.dart @@ -20,7 +20,8 @@ void main() { }); test('Should return null if all validations returns null or empty', () { - final error = sut.validate(field: 'any_field', input: {'any_field': 'any_value'}); + final error = + sut.validate(field: 'any_field', input: {'any_field': 'any_value'}); expect(error, null); }); @@ -30,8 +31,9 @@ void main() { validation2.mockValidationError(ValidationError.requiredField); validation3.mockValidationError(ValidationError.invalidField); - final error = sut.validate(field: 'any_field', input: {'any_field': 'any_value'}); + final error = + sut.validate(field: 'any_field', input: {'any_field': 'any_value'}); expect(error, ValidationError.requiredField); }); -} \ No newline at end of file +} diff --git a/test/main/decorators/authorize_http_client_decorator_test.dart b/test/main/decorators/authorize_http_client_decorator_test.dart index 0c82d199..2e58c488 100644 --- a/test/main/decorators/authorize_http_client_decorator_test.dart +++ b/test/main/decorators/authorize_http_client_decorator_test.dart @@ -28,10 +28,9 @@ void main() { httpClient = HttpClientSpy(); httpClient.mockRequest(httpResponse); sut = AuthorizeHttpClientDecorator( - fetchSecureCacheStorage: secureCacheStorage, - deleteSecureCacheStorage: secureCacheStorage, - decoratee: httpClient - ); + fetchSecureCacheStorage: secureCacheStorage, + deleteSecureCacheStorage: secureCacheStorage, + decoratee: httpClient); }); test('Should call FetchSecureCacheStorage with correct key', () async { @@ -42,15 +41,23 @@ void main() { test('Should call decoratee with access token on header', () async { await sut.request(url: url, method: method, body: body); - verify(() => httpClient.request(url: url, method: method, body: body, headers: {'x-access-token': token})).called(1); - - await sut.request(url: url, method: method, body: body, headers: {'any_header': 'any_value'}); verify(() => httpClient.request( - url: url, - method: method, - body: body, - headers: {'x-access-token': token, 'any_header': 'any_value'} - )).called(1); + url: url, + method: method, + body: body, + headers: {'x-access-token': token})).called(1); + + await sut.request( + url: url, + method: method, + body: body, + headers: {'any_header': 'any_value'}); + verify(() => httpClient.request( + url: url, + method: method, + body: body, + headers: {'x-access-token': token, 'any_header': 'any_value'})) + .called(1); }); test('Should return same result as decoratee', () async { @@ -59,7 +66,8 @@ void main() { expect(response, httpResponse); }); - test('Should throw ForbiddenError if FetchSecureCacheStorage throws', () async { + test('Should throw ForbiddenError if FetchSecureCacheStorage throws', + () async { secureCacheStorage.mockFetchError(); final future = sut.request(url: url, method: method, body: body); @@ -85,4 +93,4 @@ void main() { expect(future, throwsA(HttpError.forbidden)); verify(() => secureCacheStorage.delete('token')).called(1); }); -} \ No newline at end of file +} diff --git a/test/main/factories/pages/login/login_validation_factory_test.dart b/test/main/factories/pages/login/login_validation_factory_test.dart index 7bf40d80..6867905f 100644 --- a/test/main/factories/pages/login/login_validation_factory_test.dart +++ b/test/main/factories/pages/login/login_validation_factory_test.dart @@ -14,4 +14,4 @@ void main() { MinLengthValidation(field: 'password', size: 3) ]); }); -} \ No newline at end of file +} diff --git a/test/main/factories/pages/login/signup_validation_factory_test.dart b/test/main/factories/pages/login/signup_validation_factory_test.dart index 8a64ef71..0e5a8de4 100644 --- a/test/main/factories/pages/login/signup_validation_factory_test.dart +++ b/test/main/factories/pages/login/signup_validation_factory_test.dart @@ -15,7 +15,8 @@ void main() { RequiredFieldValidation('password'), MinLengthValidation(field: 'password', size: 3), RequiredFieldValidation('passwordConfirmation'), - CompareFieldsValidation(field: 'passwordConfirmation', fieldToCompare: 'password') + CompareFieldsValidation( + field: 'passwordConfirmation', fieldToCompare: 'password') ]); }); -} \ No newline at end of file +} diff --git a/test/presentation/mocks/mocks.dart b/test/presentation/mocks/mocks.dart index 4fcf2a1e..844c24df 100644 --- a/test/presentation/mocks/mocks.dart +++ b/test/presentation/mocks/mocks.dart @@ -1 +1 @@ -export './validation_spy.dart'; \ No newline at end of file +export './validation_spy.dart'; diff --git a/test/presentation/mocks/validation_spy.dart b/test/presentation/mocks/validation_spy.dart index e5fcdb79..76526ba9 100644 --- a/test/presentation/mocks/validation_spy.dart +++ b/test/presentation/mocks/validation_spy.dart @@ -7,7 +7,11 @@ class ValidationSpy extends Mock implements Validation { this.mockValidation(); } - When mockValidationCall(String? field) => when(() => this.validate(field: field == null ? any(named: 'field') : field, input: any(named: 'input'))); - void mockValidation({ String? field }) => this.mockValidationCall(field).thenReturn(null); - void mockValidationError({ String? field, required ValidationError value }) => this.mockValidationCall(field).thenReturn(value); -} \ No newline at end of file + When mockValidationCall(String? field) => when(() => this.validate( + field: field == null ? any(named: 'field') : field, + input: any(named: 'input'))); + void mockValidation({String? field}) => + this.mockValidationCall(field).thenReturn(null); + void mockValidationError({String? field, required ValidationError value}) => + this.mockValidationCall(field).thenReturn(value); +} diff --git a/test/presentation/presenters/getx_login_presenter_test.dart b/test/presentation/presenters/getx_login_presenter_test.dart index a6460491..2eb73583 100644 --- a/test/presentation/presenters/getx_login_presenter_test.dart +++ b/test/presentation/presenters/getx_login_presenter_test.dart @@ -30,10 +30,9 @@ void main() { authentication.mockAuthentication(account); saveCurrentAccount = SaveCurrentAccountSpy(); sut = GetxLoginPresenter( - validation: validation, - authentication: authentication, - saveCurrentAccount: saveCurrentAccount - ); + validation: validation, + authentication: authentication, + saveCurrentAccount: saveCurrentAccount); }); setUpAll(() { @@ -46,14 +45,17 @@ void main() { sut.validateEmail(email); - verify(() => validation.validate(field: 'email', input: formData)).called(1); + verify(() => validation.validate(field: 'email', input: formData)) + .called(1); }); test('Should emit invalidFieldError if email is invalid', () { validation.mockValidationError(value: ValidationError.invalidField); - sut.emailErrorStream.listen(expectAsync1((error) => expect(error, UIError.invalidField))); - sut.isFormValidStream.listen(expectAsync1((isValid) => expect(isValid, false))); + sut.emailErrorStream + .listen(expectAsync1((error) => expect(error, UIError.invalidField))); + sut.isFormValidStream + .listen(expectAsync1((isValid) => expect(isValid, false))); sut.validateEmail(email); sut.validateEmail(email); @@ -62,8 +64,10 @@ void main() { test('Should emit requiredFieldError if email is empty', () { validation.mockValidationError(value: ValidationError.requiredField); - sut.emailErrorStream.listen(expectAsync1((error) => expect(error, UIError.requiredField))); - sut.isFormValidStream.listen(expectAsync1((isValid) => expect(isValid, false))); + sut.emailErrorStream + .listen(expectAsync1((error) => expect(error, UIError.requiredField))); + sut.isFormValidStream + .listen(expectAsync1((isValid) => expect(isValid, false))); sut.validateEmail(email); sut.validateEmail(email); @@ -71,7 +75,8 @@ void main() { test('Should emit null if validation succeeds', () { sut.emailErrorStream.listen(expectAsync1((error) => expect(error, null))); - sut.isFormValidStream.listen(expectAsync1((isValid) => expect(isValid, false))); + sut.isFormValidStream + .listen(expectAsync1((isValid) => expect(isValid, false))); sut.validateEmail(email); sut.validateEmail(email); @@ -82,31 +87,38 @@ void main() { sut.validatePassword(password); - verify(() => validation.validate(field: 'password', input: formData)).called(1); + verify(() => validation.validate(field: 'password', input: formData)) + .called(1); }); test('Should emit requiredFieldError if password is empty', () { validation.mockValidationError(value: ValidationError.requiredField); - sut.passwordErrorStream.listen(expectAsync1((error) => expect(error, UIError.requiredField))); - sut.isFormValidStream.listen(expectAsync1((isValid) => expect(isValid, false))); + sut.passwordErrorStream + .listen(expectAsync1((error) => expect(error, UIError.requiredField))); + sut.isFormValidStream + .listen(expectAsync1((isValid) => expect(isValid, false))); sut.validatePassword(password); sut.validatePassword(password); }); test('Should emit null if validation succeeds', () { - sut.passwordErrorStream.listen(expectAsync1((error) => expect(error, null))); - sut.isFormValidStream.listen(expectAsync1((isValid) => expect(isValid, false))); + sut.passwordErrorStream + .listen(expectAsync1((error) => expect(error, null))); + sut.isFormValidStream + .listen(expectAsync1((isValid) => expect(isValid, false))); sut.validatePassword(password); sut.validatePassword(password); }); test('Should disable form button if any field is invalid', () { - validation.mockValidationError(field: 'email', value: ValidationError.invalidField); + validation.mockValidationError( + field: 'email', value: ValidationError.invalidField); - sut.isFormValidStream.listen(expectAsync1((isValid) => expect(isValid, false))); + sut.isFormValidStream + .listen(expectAsync1((isValid) => expect(isValid, false))); sut.validateEmail(email); sut.validatePassword(password); @@ -126,7 +138,8 @@ void main() { await sut.auth(); - verify(() => authentication.auth(AuthenticationParams(email: email, secret: password))).called(1); + verify(() => authentication + .auth(AuthenticationParams(email: email, secret: password))).called(1); }); test('Should call SaveCurrentAccount with correct value', () async { @@ -163,7 +176,8 @@ void main() { sut.validateEmail(email); sut.validatePassword(password); - sut.navigateToStream.listen(expectAsync1((page) => expect(page, '/surveys'))); + sut.navigateToStream + .listen(expectAsync1((page) => expect(page, '/surveys'))); await sut.auth(); }); @@ -174,7 +188,8 @@ void main() { sut.validatePassword(password); expectLater(sut.isLoadingStream, emitsInOrder([true, false])); - expectLater(sut.mainErrorStream, emitsInOrder([null, UIError.invalidCredentials])); + expectLater( + sut.mainErrorStream, emitsInOrder([null, UIError.invalidCredentials])); await sut.auth(); }); @@ -191,8 +206,9 @@ void main() { }); test('Should go to SignUpPage on link click', () async { - sut.navigateToStream.listen(expectAsync1((page) => expect(page, '/signup'))); + sut.navigateToStream + .listen(expectAsync1((page) => expect(page, '/signup'))); sut.goToSignUp(); }); -} \ No newline at end of file +} diff --git a/test/presentation/presenters/getx_signup_presenter_test.dart b/test/presentation/presenters/getx_signup_presenter_test.dart index ca030b53..f50a3238 100644 --- a/test/presentation/presenters/getx_signup_presenter_test.dart +++ b/test/presentation/presenters/getx_signup_presenter_test.dart @@ -34,10 +34,9 @@ void main() { addAccount.mockAddAccount(account); saveCurrentAccount = SaveCurrentAccountSpy(); sut = GetxSignUpPresenter( - validation: validation, - addAccount: addAccount, - saveCurrentAccount: saveCurrentAccount - ); + validation: validation, + addAccount: addAccount, + saveCurrentAccount: saveCurrentAccount); }); setUpAll(() { @@ -46,18 +45,26 @@ void main() { }); test('Should call Validation with correct email', () { - final formData = {'name': null, 'email': email, 'password': null, 'passwordConfirmation': null}; + final formData = { + 'name': null, + 'email': email, + 'password': null, + 'passwordConfirmation': null + }; sut.validateEmail(email); - verify(() => validation.validate(field: 'email', input: formData)).called(1); + verify(() => validation.validate(field: 'email', input: formData)) + .called(1); }); test('Should emit invalidFieldError if email is invalid', () { validation.mockValidationError(value: ValidationError.invalidField); - sut.emailErrorStream.listen(expectAsync1((error) => expect(error, UIError.invalidField))); - sut.isFormValidStream.listen(expectAsync1((isValid) => expect(isValid, false))); + sut.emailErrorStream + .listen(expectAsync1((error) => expect(error, UIError.invalidField))); + sut.isFormValidStream + .listen(expectAsync1((isValid) => expect(isValid, false))); sut.validateEmail(email); sut.validateEmail(email); @@ -66,8 +73,10 @@ void main() { test('Should emit requiredFieldError if email is empty', () { validation.mockValidationError(value: ValidationError.requiredField); - sut.emailErrorStream.listen(expectAsync1((error) => expect(error, UIError.requiredField))); - sut.isFormValidStream.listen(expectAsync1((isValid) => expect(isValid, false))); + sut.emailErrorStream + .listen(expectAsync1((error) => expect(error, UIError.requiredField))); + sut.isFormValidStream + .listen(expectAsync1((isValid) => expect(isValid, false))); sut.validateEmail(email); sut.validateEmail(email); @@ -75,14 +84,20 @@ void main() { test('Should emit null if validation succeeds', () { sut.emailErrorStream.listen(expectAsync1((error) => expect(error, null))); - sut.isFormValidStream.listen(expectAsync1((isValid) => expect(isValid, false))); + sut.isFormValidStream + .listen(expectAsync1((isValid) => expect(isValid, false))); sut.validateEmail(email); sut.validateEmail(email); }); test('Should call Validation with correct name', () { - final formData = {'name': name, 'email': null, 'password': null, 'passwordConfirmation': null}; + final formData = { + 'name': name, + 'email': null, + 'password': null, + 'passwordConfirmation': null + }; sut.validateName(name); @@ -92,8 +107,10 @@ void main() { test('Should emit invalidFieldError if name is invalid', () { validation.mockValidationError(value: ValidationError.invalidField); - sut.nameErrorStream.listen(expectAsync1((error) => expect(error, UIError.invalidField))); - sut.isFormValidStream.listen(expectAsync1((isValid) => expect(isValid, false))); + sut.nameErrorStream + .listen(expectAsync1((error) => expect(error, UIError.invalidField))); + sut.isFormValidStream + .listen(expectAsync1((isValid) => expect(isValid, false))); sut.validateName(name); sut.validateName(name); @@ -102,8 +119,10 @@ void main() { test('Should emit requiredFieldError if name is empty', () { validation.mockValidationError(value: ValidationError.requiredField); - sut.nameErrorStream.listen(expectAsync1((error) => expect(error, UIError.requiredField))); - sut.isFormValidStream.listen(expectAsync1((isValid) => expect(isValid, false))); + sut.nameErrorStream + .listen(expectAsync1((error) => expect(error, UIError.requiredField))); + sut.isFormValidStream + .listen(expectAsync1((isValid) => expect(isValid, false))); sut.validateName(name); sut.validateName(name); @@ -111,25 +130,34 @@ void main() { test('Should emit null if validation succeeds', () { sut.nameErrorStream.listen(expectAsync1((error) => expect(error, null))); - sut.isFormValidStream.listen(expectAsync1((isValid) => expect(isValid, false))); + sut.isFormValidStream + .listen(expectAsync1((isValid) => expect(isValid, false))); sut.validateName(name); sut.validateName(name); }); test('Should call Validation with correct password', () { - final formData = {'name': null, 'email': null, 'password': password, 'passwordConfirmation': null}; + final formData = { + 'name': null, + 'email': null, + 'password': password, + 'passwordConfirmation': null + }; sut.validatePassword(password); - verify(() => validation.validate(field: 'password', input: formData)).called(1); + verify(() => validation.validate(field: 'password', input: formData)) + .called(1); }); test('Should emit invalidFieldError if password is invalid', () { validation.mockValidationError(value: ValidationError.invalidField); - sut.passwordErrorStream.listen(expectAsync1((error) => expect(error, UIError.invalidField))); - sut.isFormValidStream.listen(expectAsync1((isValid) => expect(isValid, false))); + sut.passwordErrorStream + .listen(expectAsync1((error) => expect(error, UIError.invalidField))); + sut.isFormValidStream + .listen(expectAsync1((isValid) => expect(isValid, false))); sut.validatePassword(password); sut.validatePassword(password); @@ -138,34 +166,47 @@ void main() { test('Should emit requiredFieldError if password is empty', () { validation.mockValidationError(value: ValidationError.requiredField); - sut.passwordErrorStream.listen(expectAsync1((error) => expect(error, UIError.requiredField))); - sut.isFormValidStream.listen(expectAsync1((isValid) => expect(isValid, false))); + sut.passwordErrorStream + .listen(expectAsync1((error) => expect(error, UIError.requiredField))); + sut.isFormValidStream + .listen(expectAsync1((isValid) => expect(isValid, false))); sut.validatePassword(password); sut.validatePassword(password); }); test('Should emit null if validation succeeds', () { - sut.passwordErrorStream.listen(expectAsync1((error) => expect(error, null))); - sut.isFormValidStream.listen(expectAsync1((isValid) => expect(isValid, false))); + sut.passwordErrorStream + .listen(expectAsync1((error) => expect(error, null))); + sut.isFormValidStream + .listen(expectAsync1((isValid) => expect(isValid, false))); sut.validatePassword(password); sut.validatePassword(password); }); test('Should call Validation with correct passwordConfirmation', () { - final formData = {'name': null, 'email': null, 'password': null, 'passwordConfirmation': passwordConfirmation}; + final formData = { + 'name': null, + 'email': null, + 'password': null, + 'passwordConfirmation': passwordConfirmation + }; sut.validatePasswordConfirmation(passwordConfirmation); - verify(() => validation.validate(field: 'passwordConfirmation', input: formData)).called(1); + verify(() => + validation.validate(field: 'passwordConfirmation', input: formData)) + .called(1); }); test('Should emit invalidFieldError if passwordConfirmation is invalid', () { validation.mockValidationError(value: ValidationError.invalidField); - sut.passwordConfirmationErrorStream.listen(expectAsync1((error) => expect(error, UIError.invalidField))); - sut.isFormValidStream.listen(expectAsync1((isValid) => expect(isValid, false))); + sut.passwordConfirmationErrorStream + .listen(expectAsync1((error) => expect(error, UIError.invalidField))); + sut.isFormValidStream + .listen(expectAsync1((isValid) => expect(isValid, false))); sut.validatePasswordConfirmation(passwordConfirmation); sut.validatePasswordConfirmation(passwordConfirmation); @@ -174,16 +215,20 @@ void main() { test('Should emit requiredFieldError if passwordConfirmation is empty', () { validation.mockValidationError(value: ValidationError.requiredField); - sut.passwordConfirmationErrorStream.listen(expectAsync1((error) => expect(error, UIError.requiredField))); - sut.isFormValidStream.listen(expectAsync1((isValid) => expect(isValid, false))); + sut.passwordConfirmationErrorStream + .listen(expectAsync1((error) => expect(error, UIError.requiredField))); + sut.isFormValidStream + .listen(expectAsync1((isValid) => expect(isValid, false))); sut.validatePasswordConfirmation(passwordConfirmation); sut.validatePasswordConfirmation(passwordConfirmation); }); test('Should emit null if validation succeeds', () { - sut.passwordConfirmationErrorStream.listen(expectAsync1((error) => expect(error, null))); - sut.isFormValidStream.listen(expectAsync1((isValid) => expect(isValid, false))); + sut.passwordConfirmationErrorStream + .listen(expectAsync1((error) => expect(error, null))); + sut.isFormValidStream + .listen(expectAsync1((isValid) => expect(isValid, false))); sut.validatePasswordConfirmation(passwordConfirmation); sut.validatePasswordConfirmation(passwordConfirmation); @@ -211,11 +256,10 @@ void main() { await sut.signUp(); verify(() => addAccount.add(AddAccountParams( - name: name, - email: email, - password: password, - passwordConfirmation: passwordConfirmation - ))).called(1); + name: name, + email: email, + password: password, + passwordConfirmation: passwordConfirmation))).called(1); }); test('Should call SaveCurrentAccount with correct value', () async { @@ -286,7 +330,8 @@ void main() { sut.validatePassword(password); sut.validatePasswordConfirmation(passwordConfirmation); - sut.navigateToStream.listen(expectAsync1((page) => expect(page, '/surveys'))); + sut.navigateToStream + .listen(expectAsync1((page) => expect(page, '/surveys'))); await sut.signUp(); }); @@ -296,4 +341,4 @@ void main() { sut.goToLogin(); }); -} \ No newline at end of file +} diff --git a/test/presentation/presenters/getx_splash_presenter_test.dart b/test/presentation/presenters/getx_splash_presenter_test.dart index c7ed15da..3c93ca25 100644 --- a/test/presentation/presenters/getx_splash_presenter_test.dart +++ b/test/presentation/presenters/getx_splash_presenter_test.dart @@ -26,7 +26,8 @@ void main() { }); test('Should go to surveys page on success', () async { - sut.navigateToStream.listen(expectAsync1((page) => expect(page, '/surveys'))); + sut.navigateToStream + .listen(expectAsync1((page) => expect(page, '/surveys'))); await sut.checkAccount(durationInSeconds: 0); }); @@ -38,4 +39,4 @@ void main() { await sut.checkAccount(durationInSeconds: 0); }); -} \ No newline at end of file +} diff --git a/test/presentation/presenters/getx_survey_result_presenter_test.dart b/test/presentation/presenters/getx_survey_result_presenter_test.dart index 7471ce93..5e39b57d 100644 --- a/test/presentation/presenters/getx_survey_result_presenter_test.dart +++ b/test/presentation/presenters/getx_survey_result_presenter_test.dart @@ -20,23 +20,21 @@ void main() { late String surveyId; late String answer; - SurveyResultViewModel mapToViewModel(SurveyResultEntity entity) => SurveyResultViewModel( - surveyId: entity.surveyId, - question: entity.question, - answers: [ - SurveyAnswerViewModel( - image: entity.answers[0].image, - answer: entity.answers[0].answer, - isCurrentAnswer: entity.answers[0].isCurrentAnswer, - percent: '${entity.answers[0].percent}%' - ), - SurveyAnswerViewModel( - answer: entity.answers[1].answer, - isCurrentAnswer: entity.answers[1].isCurrentAnswer, - percent: '${entity.answers[1].percent}%' - ) - ] - ); + SurveyResultViewModel mapToViewModel(SurveyResultEntity entity) => + SurveyResultViewModel( + surveyId: entity.surveyId, + question: entity.question, + answers: [ + SurveyAnswerViewModel( + image: entity.answers[0].image, + answer: entity.answers[0].answer, + isCurrentAnswer: entity.answers[0].isCurrentAnswer, + percent: '${entity.answers[0].percent}%'), + SurveyAnswerViewModel( + answer: entity.answers[1].answer, + isCurrentAnswer: entity.answers[1].isCurrentAnswer, + percent: '${entity.answers[1].percent}%') + ]); setUp(() { saveResult = EntityFactory.makeSurveyResult(); @@ -48,10 +46,9 @@ void main() { saveSurveyResult = SaveSurveyResultSpy(); saveSurveyResult.mockSave(saveResult); sut = GetxSurveyResultPresenter( - loadSurveyResult: loadSurveyResult, - saveSurveyResult: saveSurveyResult, - surveyId: surveyId - ); + loadSurveyResult: loadSurveyResult, + saveSurveyResult: saveSurveyResult, + surveyId: surveyId); }); group('loadData', () { @@ -63,7 +60,8 @@ void main() { test('Should emit correct events on success', () async { expectLater(sut.isLoadingStream, emitsInOrder([true, false])); - sut.surveyResultStream.listen(expectAsync1((result) => expect(result, mapToViewModel(loadResult)))); + sut.surveyResultStream.listen( + expectAsync1((result) => expect(result, mapToViewModel(loadResult)))); await sut.loadData(); }); @@ -72,7 +70,9 @@ void main() { loadSurveyResult.mockLoadError(DomainError.unexpected); expectLater(sut.isLoadingStream, emitsInOrder([true, false])); - sut.surveyResultStream.listen(null, onError: expectAsync1((error) => expect(error, UIError.unexpected.description))); + sut.surveyResultStream.listen(null, + onError: expectAsync1( + (error) => expect(error, UIError.unexpected.description))); await sut.loadData(); }); @@ -96,10 +96,12 @@ void main() { test('Should emit correct events on success', () async { expectLater(sut.isLoadingStream, emitsInOrder([true, false])); - expectLater(sut.surveyResultStream, emitsInOrder([ - mapToViewModel(loadResult), - mapToViewModel(saveResult), - ])); + expectLater( + sut.surveyResultStream, + emitsInOrder([ + mapToViewModel(loadResult), + mapToViewModel(saveResult), + ])); await sut.loadData(); await sut.save(answer: answer); @@ -109,7 +111,9 @@ void main() { saveSurveyResult.mockSaveError(DomainError.unexpected); expectLater(sut.isLoadingStream, emitsInOrder([true, false])); - sut.surveyResultStream.listen(null, onError: expectAsync1((error) => expect(error, UIError.unexpected.description))); + sut.surveyResultStream.listen(null, + onError: expectAsync1( + (error) => expect(error, UIError.unexpected.description))); await sut.save(answer: answer); }); @@ -123,4 +127,4 @@ void main() { await sut.save(answer: answer); }); }); -} \ No newline at end of file +} diff --git a/test/presentation/presenters/getx_surveys_presenter_test.dart b/test/presentation/presenters/getx_surveys_presenter_test.dart index 1a1a2753..1cc17ea4 100644 --- a/test/presentation/presenters/getx_surveys_presenter_test.dart +++ b/test/presentation/presenters/getx_surveys_presenter_test.dart @@ -31,9 +31,17 @@ void main() { test('Should emit correct events on success', () async { expectLater(sut.isLoadingStream, emitsInOrder([true, false])); sut.surveysStream.listen(expectAsync1((surveys) => expect(surveys, [ - SurveyViewModel(id: surveys[0].id, question: surveys[0].question, date: '02 Feb 2020', didAnswer: surveys[0].didAnswer), - SurveyViewModel(id: surveys[1].id, question: surveys[1].question, date: '20 Dec 2018', didAnswer: surveys[1].didAnswer), - ]))); + SurveyViewModel( + id: surveys[0].id, + question: surveys[0].question, + date: '02 Feb 2020', + didAnswer: surveys[0].didAnswer), + SurveyViewModel( + id: surveys[1].id, + question: surveys[1].question, + date: '20 Dec 2018', + didAnswer: surveys[1].didAnswer), + ]))); await sut.loadData(); }); @@ -42,7 +50,9 @@ void main() { loadSurveys.mockLoadError(DomainError.unexpected); expectLater(sut.isLoadingStream, emitsInOrder([true, false])); - sut.surveysStream.listen(null, onError: expectAsync1((error) => expect(error, UIError.unexpected.description))); + sut.surveysStream.listen(null, + onError: expectAsync1( + (error) => expect(error, UIError.unexpected.description))); await sut.loadData(); }); @@ -57,12 +67,10 @@ void main() { }); test('Should go to SurveyResultPage on survey click', () async { - expectLater(sut.navigateToStream, emitsInOrder([ - '/survey_result/any_route', - '/survey_result/any_route' - ])); + expectLater(sut.navigateToStream, + emitsInOrder(['/survey_result/any_route', '/survey_result/any_route'])); sut.goToSurveyResult('any_route'); sut.goToSurveyResult('any_route'); }); -} \ No newline at end of file +} diff --git a/test/ui/helpers/helpers.dart b/test/ui/helpers/helpers.dart index 91794e31..03143ff5 100644 --- a/test/ui/helpers/helpers.dart +++ b/test/ui/helpers/helpers.dart @@ -4,10 +4,14 @@ import 'package:get/get.dart'; Widget makePage({required String path, required Widget Function() page}) { final getPages = [ GetPage(name: path, page: page), - GetPage(name: '/any_route', page: () => Scaffold(appBar: AppBar(title: Text('any title')), body: Text('fake page'))) + GetPage( + name: '/any_route', + page: () => Scaffold( + appBar: AppBar(title: Text('any title')), body: Text('fake page'))) ]; if (path != '/login') { - getPages.add(GetPage(name: '/login', page: () => Scaffold(body: Text('fake login')))); + getPages.add(GetPage( + name: '/login', page: () => Scaffold(body: Text('fake login')))); } return GetMaterialApp( initialRoute: path, @@ -16,4 +20,4 @@ Widget makePage({required String path, required Widget Function() page}) { ); } -String get currentRoute => Get.currentRoute; \ No newline at end of file +String get currentRoute => Get.currentRoute; diff --git a/test/ui/mocks/login_presenter_spy.dart b/test/ui/mocks/login_presenter_spy.dart index 8cac255f..8f737088 100644 --- a/test/ui/mocks/login_presenter_spy.dart +++ b/test/ui/mocks/login_presenter_spy.dart @@ -14,12 +14,18 @@ class LoginPresenterSpy extends Mock implements LoginPresenter { LoginPresenterSpy() { when(() => this.auth()).thenAnswer((_) async => _); - when(() => this.emailErrorStream).thenAnswer((_) => emailErrorController.stream); - when(() => this.passwordErrorStream).thenAnswer((_) => passwordErrorController.stream); - when(() => this.mainErrorStream).thenAnswer((_) => mainErrorController.stream); - when(() => this.navigateToStream).thenAnswer((_) => navigateToController.stream); - when(() => this.isFormValidStream).thenAnswer((_) => isFormValidController.stream); - when(() => this.isLoadingStream).thenAnswer((_) => isLoadingController.stream); + when(() => this.emailErrorStream) + .thenAnswer((_) => emailErrorController.stream); + when(() => this.passwordErrorStream) + .thenAnswer((_) => passwordErrorController.stream); + when(() => this.mainErrorStream) + .thenAnswer((_) => mainErrorController.stream); + when(() => this.navigateToStream) + .thenAnswer((_) => navigateToController.stream); + when(() => this.isFormValidStream) + .thenAnswer((_) => isFormValidController.stream); + when(() => this.isLoadingStream) + .thenAnswer((_) => isLoadingController.stream); } void emitEmailError(UIError error) => emailErrorController.add(error); @@ -40,4 +46,4 @@ class LoginPresenterSpy extends Mock implements LoginPresenter { isFormValidController.close(); isLoadingController.close(); } -} \ No newline at end of file +} diff --git a/test/ui/mocks/mocks.dart b/test/ui/mocks/mocks.dart index fd9a3cd0..f2d059f9 100644 --- a/test/ui/mocks/mocks.dart +++ b/test/ui/mocks/mocks.dart @@ -3,4 +3,4 @@ export './login_presenter_spy.dart'; export './signup_presenter_spy.dart'; export './splash_presenter_spy.dart'; export './survey_result_presenter_spy.dart'; -export './surveys_presenter_spy.dart'; \ No newline at end of file +export './surveys_presenter_spy.dart'; diff --git a/test/ui/mocks/signup_presenter_spy.dart b/test/ui/mocks/signup_presenter_spy.dart index 6407738d..114300f6 100644 --- a/test/ui/mocks/signup_presenter_spy.dart +++ b/test/ui/mocks/signup_presenter_spy.dart @@ -16,14 +16,22 @@ class SignUpPresenterSpy extends Mock implements SignUpPresenter { SignUpPresenterSpy() { when(() => this.signUp()).thenAnswer((_) async => _); - when(() => this.nameErrorStream).thenAnswer((_) => nameErrorController.stream); - when(() => this.emailErrorStream).thenAnswer((_) => emailErrorController.stream); - when(() => this.passwordErrorStream).thenAnswer((_) => passwordErrorController.stream); - when(() => this.passwordConfirmationErrorStream).thenAnswer((_) => passwordConfirmationErrorController.stream); - when(() => this.mainErrorStream).thenAnswer((_) => mainErrorController.stream); - when(() => this.navigateToStream).thenAnswer((_) => navigateToController.stream); - when(() => this.isFormValidStream).thenAnswer((_) => isFormValidController.stream); - when(() => this.isLoadingStream).thenAnswer((_) => isLoadingController.stream); + when(() => this.nameErrorStream) + .thenAnswer((_) => nameErrorController.stream); + when(() => this.emailErrorStream) + .thenAnswer((_) => emailErrorController.stream); + when(() => this.passwordErrorStream) + .thenAnswer((_) => passwordErrorController.stream); + when(() => this.passwordConfirmationErrorStream) + .thenAnswer((_) => passwordConfirmationErrorController.stream); + when(() => this.mainErrorStream) + .thenAnswer((_) => mainErrorController.stream); + when(() => this.navigateToStream) + .thenAnswer((_) => navigateToController.stream); + when(() => this.isFormValidStream) + .thenAnswer((_) => isFormValidController.stream); + when(() => this.isLoadingStream) + .thenAnswer((_) => isLoadingController.stream); } void emitNameError(UIError error) => nameErrorController.add(error); @@ -32,8 +40,10 @@ class SignUpPresenterSpy extends Mock implements SignUpPresenter { void emitEmailValid() => emailErrorController.add(null); void emitPasswordError(UIError error) => passwordErrorController.add(error); void emitPasswordValid() => passwordErrorController.add(null); - void emitPasswordConfirmationError(UIError error) => passwordConfirmationErrorController.add(error); - void emitPasswordConfirmationValid() => passwordConfirmationErrorController.add(null); + void emitPasswordConfirmationError(UIError error) => + passwordConfirmationErrorController.add(error); + void emitPasswordConfirmationValid() => + passwordConfirmationErrorController.add(null); void emitFormError() => isFormValidController.add(false); void emitFormValid() => isFormValidController.add(true); void emitLoading([bool show = true]) => isLoadingController.add(show); @@ -50,4 +60,4 @@ class SignUpPresenterSpy extends Mock implements SignUpPresenter { isFormValidController.close(); isLoadingController.close(); } -} \ No newline at end of file +} diff --git a/test/ui/mocks/splash_presenter_spy.dart b/test/ui/mocks/splash_presenter_spy.dart index 59ebf65b..0b5e6746 100644 --- a/test/ui/mocks/splash_presenter_spy.dart +++ b/test/ui/mocks/splash_presenter_spy.dart @@ -7,12 +7,15 @@ class SplashPresenterSpy extends Mock implements SplashPresenter { final navigateToController = StreamController(); SplashPresenterSpy() { - when(() => this.checkAccount(durationInSeconds: any(named: 'durationInSeconds'))).thenAnswer((_) async => _); - when(() => this.navigateToStream).thenAnswer((_) => navigateToController.stream); + when(() => this + .checkAccount(durationInSeconds: any(named: 'durationInSeconds'))) + .thenAnswer((_) async => _); + when(() => this.navigateToStream) + .thenAnswer((_) => navigateToController.stream); } void emitNavigateTo(String route) => navigateToController.add(route); void dispose() { navigateToController.close(); } -} \ No newline at end of file +} diff --git a/test/ui/mocks/survey_result_presenter_spy.dart b/test/ui/mocks/survey_result_presenter_spy.dart index 6fb7d551..7423abf2 100644 --- a/test/ui/mocks/survey_result_presenter_spy.dart +++ b/test/ui/mocks/survey_result_presenter_spy.dart @@ -10,20 +10,27 @@ class SurveyResultPresenterSpy extends Mock implements SurveyResultPresenter { SurveyResultPresenterSpy() { when(() => this.loadData()).thenAnswer((_) async => _); - when(() => this.save(answer: any(named: 'answer'))).thenAnswer((_) async => _); - when(() => this.surveyResultStream).thenAnswer((_) => surveyResultController.stream); - when(() => this.isSessionExpiredStream).thenAnswer((_) => isSessionExpiredController.stream); - when(() => this.isLoadingStream).thenAnswer((_) => isLoadingController.stream); + when(() => this.save(answer: any(named: 'answer'))) + .thenAnswer((_) async => _); + when(() => this.surveyResultStream) + .thenAnswer((_) => surveyResultController.stream); + when(() => this.isSessionExpiredStream) + .thenAnswer((_) => isSessionExpiredController.stream); + when(() => this.isLoadingStream) + .thenAnswer((_) => isLoadingController.stream); } - void emitSurveyResult(SurveyResultViewModel? data) => surveyResultController.add(data); - void emitSurveyResultError(String error) => surveyResultController.addError(error); + void emitSurveyResult(SurveyResultViewModel? data) => + surveyResultController.add(data); + void emitSurveyResultError(String error) => + surveyResultController.addError(error); void emitLoading([bool show = true]) => isLoadingController.add(show); - void emitSessionExpired([bool show = true]) => isSessionExpiredController.add(show); + void emitSessionExpired([bool show = true]) => + isSessionExpiredController.add(show); void dispose() { surveyResultController.close(); isSessionExpiredController.close(); isLoadingController.close(); } -} \ No newline at end of file +} diff --git a/test/ui/mocks/surveys_presenter_spy.dart b/test/ui/mocks/surveys_presenter_spy.dart index 1de5d30a..4f068898 100644 --- a/test/ui/mocks/surveys_presenter_spy.dart +++ b/test/ui/mocks/surveys_presenter_spy.dart @@ -12,15 +12,19 @@ class SurveysPresenterSpy extends Mock implements SurveysPresenter { SurveysPresenterSpy() { when(() => this.loadData()).thenAnswer((_) async => _); when(() => this.surveysStream).thenAnswer((_) => surveysController.stream); - when(() => this.isSessionExpiredStream).thenAnswer((_) => isSessionExpiredController.stream); - when(() => this.isLoadingStream).thenAnswer((_) => isLoadingController.stream); - when(() => this.navigateToStream).thenAnswer((_) => navigateToController.stream); + when(() => this.isSessionExpiredStream) + .thenAnswer((_) => isSessionExpiredController.stream); + when(() => this.isLoadingStream) + .thenAnswer((_) => isLoadingController.stream); + when(() => this.navigateToStream) + .thenAnswer((_) => navigateToController.stream); } void emitSurveys(List data) => surveysController.add(data); void emitSurveysError(String error) => surveysController.addError(error); void emitLoading([bool show = true]) => isLoadingController.add(show); - void emitSessionExpired([bool show = true]) => isSessionExpiredController.add(show); + void emitSessionExpired([bool show = true]) => + isSessionExpiredController.add(show); void emitNavigateTo(String route) => navigateToController.add(route); void dispose() { @@ -29,4 +33,4 @@ class SurveysPresenterSpy extends Mock implements SurveysPresenter { isLoadingController.close(); navigateToController.close(); } -} \ No newline at end of file +} diff --git a/test/ui/mocks/viewmodel_factory.dart b/test/ui/mocks/viewmodel_factory.dart index a9f69425..881248d1 100644 --- a/test/ui/mocks/viewmodel_factory.dart +++ b/test/ui/mocks/viewmodel_factory.dart @@ -1,26 +1,21 @@ import 'package:fordev/ui/pages/pages.dart'; class ViewModelFactory { - static SurveyResultViewModel makeSurveyResult() => SurveyResultViewModel( - surveyId: 'Any id', - question: 'Question', - answers: [ - SurveyAnswerViewModel( - image: 'Image 0', - answer: 'Answer 0', - isCurrentAnswer: true, - percent: '60%' - ), - SurveyAnswerViewModel( - answer: 'Answer 1', - isCurrentAnswer: false, - percent: '40%' - ) - ] - ); + static SurveyResultViewModel makeSurveyResult() => + SurveyResultViewModel(surveyId: 'Any id', question: 'Question', answers: [ + SurveyAnswerViewModel( + image: 'Image 0', + answer: 'Answer 0', + isCurrentAnswer: true, + percent: '60%'), + SurveyAnswerViewModel( + answer: 'Answer 1', isCurrentAnswer: false, percent: '40%') + ]); static List makeSurveyList() => [ - SurveyViewModel(id: '1', question: 'Question 1', date: 'Date 1', didAnswer: true), - SurveyViewModel(id: '2', question: 'Question 2', date: 'Date 2', didAnswer: false), - ]; -} \ No newline at end of file + SurveyViewModel( + id: '1', question: 'Question 1', date: 'Date 1', didAnswer: true), + SurveyViewModel( + id: '2', question: 'Question 2', date: 'Date 2', didAnswer: false), + ]; +} diff --git a/test/ui/pages/login_page_test.dart b/test/ui/pages/login_page_test.dart index 4b7e8d6f..13741244 100644 --- a/test/ui/pages/login_page_test.dart +++ b/test/ui/pages/login_page_test.dart @@ -14,14 +14,16 @@ void main() { Future loadPage(WidgetTester tester) async { presenter = LoginPresenterSpy(); - await tester.pumpWidget(makePage(path: '/login', page: () => LoginPage(presenter))); + await tester + .pumpWidget(makePage(path: '/login', page: () => LoginPage(presenter))); } tearDown(() { presenter.dispose(); }); - testWidgets('Should call validate with correct values', (WidgetTester tester) async { + testWidgets('Should call validate with correct values', + (WidgetTester tester) async { await loadPage(tester); final email = faker.internet.email(); @@ -33,7 +35,8 @@ void main() { verify(() => presenter.validatePassword(password)); }); - testWidgets('Should present error if email is invalid', (WidgetTester tester) async { + testWidgets('Should present error if email is invalid', + (WidgetTester tester) async { await loadPage(tester); presenter.emitEmailError(UIError.invalidField); @@ -42,7 +45,8 @@ void main() { expect(find.text('Campo inválido'), findsOneWidget); }); - testWidgets('Should present error if email is empty', (WidgetTester tester) async { + testWidgets('Should present error if email is empty', + (WidgetTester tester) async { await loadPage(tester); presenter.emitEmailError(UIError.requiredField); @@ -51,19 +55,21 @@ void main() { expect(find.text('Campo obrigatório'), findsOneWidget); }); - testWidgets('Should present no error if email is valid', (WidgetTester tester) async { + testWidgets('Should present no error if email is valid', + (WidgetTester tester) async { await loadPage(tester); presenter.emitEmailValid(); await tester.pump(); expect( - find.descendant(of: find.bySemanticsLabel('Email'), matching: find.byType(Text)), - findsOneWidget - ); + find.descendant( + of: find.bySemanticsLabel('Email'), matching: find.byType(Text)), + findsOneWidget); }); - testWidgets('Should present error if password is empty', (WidgetTester tester) async { + testWidgets('Should present error if password is empty', + (WidgetTester tester) async { await loadPage(tester); presenter.emitPasswordError(UIError.requiredField); @@ -72,19 +78,21 @@ void main() { expect(find.text('Campo obrigatório'), findsOneWidget); }); - testWidgets('Should present no error if password is valid', (WidgetTester tester) async { + testWidgets('Should present no error if password is valid', + (WidgetTester tester) async { await loadPage(tester); presenter.emitPasswordValid(); await tester.pump(); expect( - find.descendant(of: find.bySemanticsLabel('Senha'), matching: find.byType(Text)), - findsOneWidget - ); + find.descendant( + of: find.bySemanticsLabel('Senha'), matching: find.byType(Text)), + findsOneWidget); }); - testWidgets('Should enable button if form is valid', (WidgetTester tester) async { + testWidgets('Should enable button if form is valid', + (WidgetTester tester) async { await loadPage(tester); presenter.emitFormValid(); @@ -94,7 +102,8 @@ void main() { expect(button.onPressed, isNotNull); }); - testWidgets('Should disable button if form is invalid', (WidgetTester tester) async { + testWidgets('Should disable button if form is invalid', + (WidgetTester tester) async { await loadPage(tester); presenter.emitFormError(); @@ -104,7 +113,8 @@ void main() { expect(button.onPressed, null); }); - testWidgets('Should call authentication on form submit', (WidgetTester tester) async { + testWidgets('Should call authentication on form submit', + (WidgetTester tester) async { await loadPage(tester); presenter.emitFormValid(); @@ -133,7 +143,8 @@ void main() { expect(find.byType(CircularProgressIndicator), findsOneWidget); }); - testWidgets('Should present error message if authentication fails', (WidgetTester tester) async { + testWidgets('Should present error message if authentication fails', + (WidgetTester tester) async { await loadPage(tester); presenter.emitMainError(UIError.invalidCredentials); @@ -142,13 +153,15 @@ void main() { expect(find.text('Credenciais inválidas.'), findsOneWidget); }); - testWidgets('Should present error message if authentication throws', (WidgetTester tester) async { + testWidgets('Should present error message if authentication throws', + (WidgetTester tester) async { await loadPage(tester); presenter.emitMainError(UIError.unexpected); await tester.pump(); - expect(find.text('Algo errado aconteceu. Tente novamente em breve.'), findsOneWidget); + expect(find.text('Algo errado aconteceu. Tente novamente em breve.'), + findsOneWidget); }); testWidgets('Should change page', (WidgetTester tester) async { @@ -169,7 +182,8 @@ void main() { expect(currentRoute, '/login'); }); - testWidgets('Should call gotoSignUp on link click', (WidgetTester tester) async { + testWidgets('Should call gotoSignUp on link click', + (WidgetTester tester) async { await loadPage(tester); final button = find.text('Criar conta'); @@ -179,4 +193,4 @@ void main() { verify(() => presenter.goToSignUp()).called(1); }); -} \ No newline at end of file +} diff --git a/test/ui/pages/signup_page_test.dart b/test/ui/pages/signup_page_test.dart index e9f2e7ce..93b8ef0f 100644 --- a/test/ui/pages/signup_page_test.dart +++ b/test/ui/pages/signup_page_test.dart @@ -14,14 +14,16 @@ void main() { Future loadPage(WidgetTester tester) async { presenter = SignUpPresenterSpy(); - await tester.pumpWidget(makePage(path: '/signup', page: () => SignUpPage(presenter))); + await tester.pumpWidget( + makePage(path: '/signup', page: () => SignUpPage(presenter))); } tearDown(() { presenter.dispose(); }); - testWidgets('Should call validate with correct values', (WidgetTester tester) async { + testWidgets('Should call validate with correct values', + (WidgetTester tester) async { await loadPage(tester); final name = faker.person.name(); @@ -54,9 +56,9 @@ void main() { presenter.emitEmailValid(); await tester.pump(); expect( - find.descendant(of: find.bySemanticsLabel('Email'), matching: find.byType(Text)), - findsOneWidget - ); + find.descendant( + of: find.bySemanticsLabel('Email'), matching: find.byType(Text)), + findsOneWidget); }); testWidgets('Should present name error', (WidgetTester tester) async { @@ -73,9 +75,9 @@ void main() { presenter.emitNameValid(); await tester.pump(); expect( - find.descendant(of: find.bySemanticsLabel('Nome'), matching: find.byType(Text)), - findsOneWidget - ); + find.descendant( + of: find.bySemanticsLabel('Nome'), matching: find.byType(Text)), + findsOneWidget); }); testWidgets('Should present password error', (WidgetTester tester) async { @@ -92,12 +94,13 @@ void main() { presenter.emitPasswordValid(); await tester.pump(); expect( - find.descendant(of: find.bySemanticsLabel('Senha'), matching: find.byType(Text)), - findsOneWidget - ); + find.descendant( + of: find.bySemanticsLabel('Senha'), matching: find.byType(Text)), + findsOneWidget); }); - testWidgets('Should present passwordConfirmation error', (WidgetTester tester) async { + testWidgets('Should present passwordConfirmation error', + (WidgetTester tester) async { await loadPage(tester); presenter.emitPasswordConfirmationError(UIError.invalidField); @@ -111,12 +114,14 @@ void main() { presenter.emitPasswordConfirmationValid(); await tester.pump(); expect( - find.descendant(of: find.bySemanticsLabel('Confirmar senha'), matching: find.byType(Text)), - findsOneWidget - ); + find.descendant( + of: find.bySemanticsLabel('Confirmar senha'), + matching: find.byType(Text)), + findsOneWidget); }); - testWidgets('Should enable button if form is valid', (WidgetTester tester) async { + testWidgets('Should enable button if form is valid', + (WidgetTester tester) async { await loadPage(tester); presenter.emitFormValid(); @@ -126,7 +131,8 @@ void main() { expect(button.onPressed, isNotNull); }); - testWidgets('Should disable button if form is invalid', (WidgetTester tester) async { + testWidgets('Should disable button if form is invalid', + (WidgetTester tester) async { await loadPage(tester); presenter.emitFormError(); @@ -165,7 +171,8 @@ void main() { expect(find.byType(CircularProgressIndicator), findsOneWidget); }); - testWidgets('Should present error message if signUp fails', (WidgetTester tester) async { + testWidgets('Should present error message if signUp fails', + (WidgetTester tester) async { await loadPage(tester); presenter.emitMainError(UIError.emailInUse); @@ -174,13 +181,15 @@ void main() { expect(find.text('O email já está em uso.'), findsOneWidget); }); - testWidgets('Should present error message if signUp throws', (WidgetTester tester) async { + testWidgets('Should present error message if signUp throws', + (WidgetTester tester) async { await loadPage(tester); presenter.emitMainError(UIError.unexpected); await tester.pump(); - expect(find.text('Algo errado aconteceu. Tente novamente em breve.'), findsOneWidget); + expect(find.text('Algo errado aconteceu. Tente novamente em breve.'), + findsOneWidget); }); testWidgets('Should change page', (WidgetTester tester) async { @@ -201,7 +210,8 @@ void main() { expect(currentRoute, '/signup'); }); - testWidgets('Should call gotoLogin on link click', (WidgetTester tester) async { + testWidgets('Should call gotoLogin on link click', + (WidgetTester tester) async { await loadPage(tester); final button = find.text('Login'); @@ -211,4 +221,4 @@ void main() { verify(() => presenter.goToLogin()).called(1); }); -} \ No newline at end of file +} diff --git a/test/ui/pages/splash_page_test.dart b/test/ui/pages/splash_page_test.dart index 70fb2ef5..63f81a82 100644 --- a/test/ui/pages/splash_page_test.dart +++ b/test/ui/pages/splash_page_test.dart @@ -12,20 +12,23 @@ void main() { Future loadPage(WidgetTester tester) async { presenter = SplashPresenterSpy(); - await tester.pumpWidget(makePage(path: '/', page: () => SplashPage(presenter: presenter))); + await tester.pumpWidget( + makePage(path: '/', page: () => SplashPage(presenter: presenter))); } tearDown(() { presenter.dispose(); }); - testWidgets('Should present spinner on page load', (WidgetTester tester) async { + testWidgets('Should present spinner on page load', + (WidgetTester tester) async { await loadPage(tester); expect(find.byType(CircularProgressIndicator), findsOneWidget); }); - testWidgets('Should call loadCurrentAccount on page load', (WidgetTester tester) async { + testWidgets('Should call loadCurrentAccount on page load', + (WidgetTester tester) async { await loadPage(tester); verify(() => presenter.checkAccount()).called(1); @@ -48,4 +51,4 @@ void main() { await tester.pump(); expect(currentRoute, '/'); }); -} \ No newline at end of file +} diff --git a/test/ui/pages/surveys_page_test.dart b/test/ui/pages/surveys_page_test.dart index f2c6fb6d..cb5cc788 100644 --- a/test/ui/pages/surveys_page_test.dart +++ b/test/ui/pages/surveys_page_test.dart @@ -13,14 +13,16 @@ void main() { Future loadPage(WidgetTester tester) async { presenter = SurveysPresenterSpy(); - await tester.pumpWidget(makePage(path: '/surveys', page: () => SurveysPage(presenter))); + await tester.pumpWidget( + makePage(path: '/surveys', page: () => SurveysPage(presenter))); } tearDown(() { presenter.dispose(); }); - testWidgets('Should call LoadSurveys on page load', (WidgetTester tester) async { + testWidgets('Should call LoadSurveys on page load', + (WidgetTester tester) async { await loadPage(tester); verify(() => presenter.loadData()).called(1); @@ -52,24 +54,28 @@ void main() { expect(find.byType(CircularProgressIndicator), findsOneWidget); }); - testWidgets('Should present error if surveysStream fails', (WidgetTester tester) async { + testWidgets('Should present error if surveysStream fails', + (WidgetTester tester) async { await loadPage(tester); presenter.emitSurveysError(UIError.unexpected.description); await tester.pump(); - expect(find.text('Algo errado aconteceu. Tente novamente em breve.'), findsOneWidget); + expect(find.text('Algo errado aconteceu. Tente novamente em breve.'), + findsOneWidget); expect(find.text('Recarregar'), findsOneWidget); expect(find.text('Question 1'), findsNothing); }); - testWidgets('Should present list if surveysStream succeeds', (WidgetTester tester) async { + testWidgets('Should present list if surveysStream succeeds', + (WidgetTester tester) async { await loadPage(tester); presenter.emitSurveys(ViewModelFactory.makeSurveyList()); await tester.pump(); - expect(find.text('Algo errado aconteceu. Tente novamente em breve.'), findsNothing); + expect(find.text('Algo errado aconteceu. Tente novamente em breve.'), + findsNothing); expect(find.text('Recarregar'), findsNothing); expect(find.text('Question 1'), findsWidgets); expect(find.text('Question 2'), findsWidgets); @@ -77,7 +83,8 @@ void main() { expect(find.text('Date 2'), findsWidgets); }); - testWidgets('Should call LoadSurveys on reload button click', (WidgetTester tester) async { + testWidgets('Should call LoadSurveys on reload button click', + (WidgetTester tester) async { await loadPage(tester); presenter.emitSurveysError(UIError.unexpected.description); @@ -87,7 +94,8 @@ void main() { verify(() => presenter.loadData()).called(2); }); - testWidgets('Should call gotoSurveyResult on survey click', (WidgetTester tester) async { + testWidgets('Should call gotoSurveyResult on survey click', + (WidgetTester tester) async { await loadPage(tester); presenter.emitSurveys(ViewModelFactory.makeSurveyList()); @@ -134,4 +142,4 @@ void main() { await tester.pumpAndSettle(); expect(currentRoute, '/surveys'); }); -} \ No newline at end of file +} diff --git a/test/validation/mocks/field_validation_spy.dart b/test/validation/mocks/field_validation_spy.dart index ebb6d1ee..594c4334 100644 --- a/test/validation/mocks/field_validation_spy.dart +++ b/test/validation/mocks/field_validation_spy.dart @@ -11,7 +11,9 @@ class FieldValidationSpy extends Mock implements FieldValidation { When mockValidationCall() => when(() => this.validate(any())); void mockValidation() => this.mockValidationCall().thenReturn(null); - void mockValidationError(ValidationError error) => this.mockValidationCall().thenReturn(error); + void mockValidationError(ValidationError error) => + this.mockValidationCall().thenReturn(error); - void mockFieldName(String fieldName) => when(() => this.field).thenReturn(fieldName); -} \ No newline at end of file + void mockFieldName(String fieldName) => + when(() => this.field).thenReturn(fieldName); +} diff --git a/test/validation/mocks/mocks.dart b/test/validation/mocks/mocks.dart index ee43b685..8303a024 100644 --- a/test/validation/mocks/mocks.dart +++ b/test/validation/mocks/mocks.dart @@ -1 +1 @@ -export './field_validation_spy.dart'; \ No newline at end of file +export './field_validation_spy.dart'; diff --git a/test/validation/validators/compare_fields_validation_test.dart b/test/validation/validators/compare_fields_validation_test.dart index 29ca01b7..db8a091b 100644 --- a/test/validation/validators/compare_fields_validation_test.dart +++ b/test/validation/validators/compare_fields_validation_test.dart @@ -7,7 +7,8 @@ void main() { late CompareFieldsValidation sut; setUp(() { - sut = CompareFieldsValidation(field: 'any_field', fieldToCompare: 'other_field'); + sut = CompareFieldsValidation( + field: 'any_field', fieldToCompare: 'other_field'); }); test('Should return null on invalid cases', () { @@ -28,4 +29,4 @@ void main() { final formData = {'any_field': 'any_value', 'other_field': 'any_value'}; expect(sut.validate(formData), null); }); -} \ No newline at end of file +} diff --git a/test/validation/validators/email_validation_test.dart b/test/validation/validators/email_validation_test.dart index ac149b34..d5421a42 100644 --- a/test/validation/validators/email_validation_test.dart +++ b/test/validation/validators/email_validation_test.dart @@ -24,6 +24,7 @@ void main() { }); test('Should return error if email is invalid', () { - expect(sut.validate({'any_field': 'rodrigo.manguinho'}), ValidationError.invalidField); + expect(sut.validate({'any_field': 'rodrigo.manguinho'}), + ValidationError.invalidField); }); -} \ No newline at end of file +} diff --git a/test/validation/validators/min_length_validation_test.dart b/test/validation/validators/min_length_validation_test.dart index a1ba40ac..6e827fb4 100644 --- a/test/validation/validators/min_length_validation_test.dart +++ b/test/validation/validators/min_length_validation_test.dart @@ -21,14 +21,18 @@ void main() { }); test('Should return error if value is less than min size', () { - expect(sut.validate({'any_field': faker.randomGenerator.string(4, min: 1)}), ValidationError.invalidField); + expect(sut.validate({'any_field': faker.randomGenerator.string(4, min: 1)}), + ValidationError.invalidField); }); test('Should return null if value is equal than min size', () { - expect(sut.validate({'any_field': faker.randomGenerator.string(5, min: 5)}), null); + expect(sut.validate({'any_field': faker.randomGenerator.string(5, min: 5)}), + null); }); test('Should return null if value is bigger than min size', () { - expect(sut.validate({'any_field': faker.randomGenerator.string(10, min: 6)}), null); + expect( + sut.validate({'any_field': faker.randomGenerator.string(10, min: 6)}), + null); }); -} \ No newline at end of file +} diff --git a/test/validation/validators/required_field_validation_test.dart b/test/validation/validators/required_field_validation_test.dart index df9822e2..b67d1668 100644 --- a/test/validation/validators/required_field_validation_test.dart +++ b/test/validation/validators/required_field_validation_test.dart @@ -22,4 +22,4 @@ void main() { expect(sut.validate({}), ValidationError.requiredField); expect(sut.validate({'any_field': null}), ValidationError.requiredField); }); -} \ No newline at end of file +} From 6c939e331dba6be0961657928cc1278f0d6107b4 Mon Sep 17 00:00:00 2001 From: Andres Garcia Date: Sun, 29 May 2022 23:25:31 -0500 Subject: [PATCH 12/21] fix: alert flutter_lints 2.0.1 - annotate_overrides - prefer_const_constructors_in_immutables - prefer_const_literals_to_create_immutables - prefer_const_constructors_in_immutables - prefer_const_constructors - unnecessary_this - prefer_const_constructors --- .../add_account/remote_add_account.dart | 1 + .../authentication/remote_authentication.dart | 1 + .../local_load_current_account.dart | 1 + .../local_load_survey_result.dart | 1 + .../remote_load_survey_result.dart | 1 + .../load_surveys/local_load_surveys.dart | 1 + .../load_surveys/remote_load_surveys.dart | 1 + .../local_save_current_account.dart | 1 + .../remote_save_survey_result.dart | 1 + lib/domain/entities/account_entity.dart | 3 ++- lib/domain/entities/survey_answer_entity.dart | 3 ++- lib/domain/entities/survey_entity.dart | 3 ++- lib/domain/entities/survey_result_entity.dart | 3 ++- lib/domain/usecases/add_account.dart | 3 ++- lib/domain/usecases/authentication.dart | 3 ++- lib/infra/cache/local_storage_adapter.dart | 3 +++ lib/infra/cache/secure_storage_adapter.dart | 3 +++ lib/infra/http/http_adapter.dart | 3 ++- ...oad_survey_result_with_local_fallback.dart | 1 + ...mote_load_surveys_with_local_fallback.dart | 1 + lib/main/composites/validation_composite.dart | 1 + .../authorize_http_client_decorator.dart | 1 + .../cache/secure_storage_adapter_factory.dart | 2 +- .../presenters/getx_login_presenter.dart | 6 +++++ .../presenters/getx_signup_presenter.dart | 10 +++++++++ .../presenters/getx_splash_presenter.dart | 1 + .../getx_survey_result_presenter.dart | 5 ++++- .../presenters/getx_surveys_presenter.dart | 3 +++ lib/ui/components/app_theme.dart | 22 +++++++++---------- lib/ui/components/headline1.dart | 2 +- lib/ui/components/login_header.dart | 8 +++---- lib/ui/components/reload_screen.dart | 6 ++--- lib/ui/components/spinner_dialog.dart | 4 ++-- lib/ui/helpers/i18n/strings/pt_br.dart | 16 ++++++++++++++ lib/ui/pages/login/login_page.dart | 6 ++--- lib/ui/pages/signup/signup_page.dart | 8 +++---- lib/ui/pages/splash/splash_page.dart | 4 ++-- .../survey_result/components/active_icon.dart | 2 +- .../components/disabled_icon.dart | 2 +- .../components/survey_answer.dart | 10 ++++----- .../components/survey_header.dart | 4 ++-- .../components/survey_result.dart | 2 +- .../survey_answer_viewmodel.dart | 3 ++- .../survey_result/survey_result_page.dart | 2 +- .../survey_result_viewmodel.dart | 3 ++- .../pages/surveys/components/survey_item.dart | 16 +++++++------- .../surveys/components/survey_items.dart | 4 ++-- lib/ui/pages/surveys/survey_viewmodel.dart | 3 ++- lib/ui/pages/surveys/surveys_page.dart | 4 ++-- .../validators/compare_fields_validation.dart | 5 ++++- .../validators/email_validation.dart | 5 ++++- .../validators/min_length_validation.dart | 5 ++++- .../validators/required_field_validation.dart | 5 ++++- test/data/mocks/cache_storage_spy.dart | 22 +++++++++---------- test/data/mocks/http_client_spy.dart | 6 ++--- test/data/mocks/load_survey_result_spy.dart | 6 ++--- test/data/mocks/load_surveys_spy.dart | 6 ++--- .../mocks/local_load_survey_result_spy.dart | 22 +++++++++---------- test/data/mocks/local_load_surveys_spy.dart | 22 +++++++++---------- .../mocks/remote_load_survey_result_spy.dart | 6 ++--- test/data/mocks/remote_load_surveys_spy.dart | 6 ++--- test/data/mocks/secure_cache_storage_spy.dart | 22 +++++++++---------- test/domain/mocks/add_account_spy.dart | 6 ++--- test/domain/mocks/authentication_spy.dart | 6 ++--- .../mocks/load_current_account_spy.dart | 6 ++--- .../mocks/save_current_account_spy.dart | 8 +++---- test/domain/mocks/save_survey_result_spy.dart | 2 +- .../cache/local_storage_adapter_test.dart | 8 +++---- .../cache/secure_storage_adapter_test.dart | 6 ++--- test/infra/mocks/client_spy.dart | 18 +++++++-------- .../mocks/flutter_secure_storage_spy.dart | 22 +++++++++---------- test/infra/mocks/local_storage_spy.dart | 22 +++++++++---------- .../login/login_validation_factory_test.dart | 8 +++---- .../login/signup_validation_factory_test.dart | 16 +++++++------- test/presentation/mocks/validation_spy.dart | 10 ++++----- test/ui/helpers/helpers.dart | 4 ++-- test/ui/mocks/login_presenter_spy.dart | 14 ++++++------ test/ui/mocks/signup_presenter_spy.dart | 18 +++++++-------- test/ui/mocks/splash_presenter_spy.dart | 5 ++--- .../ui/mocks/survey_result_presenter_spy.dart | 10 ++++----- test/ui/mocks/surveys_presenter_spy.dart | 10 ++++----- test/ui/mocks/viewmodel_factory.dart | 6 ++--- .../mocks/field_validation_spy.dart | 12 +++++----- .../compare_fields_validation_test.dart | 2 +- .../validators/email_validation_test.dart | 2 +- .../min_length_validation_test.dart | 2 +- .../required_field_validation_test.dart | 2 +- 87 files changed, 320 insertions(+), 241 deletions(-) diff --git a/lib/data/usecases/add_account/remote_add_account.dart b/lib/data/usecases/add_account/remote_add_account.dart index 85315d5c..5580baf2 100644 --- a/lib/data/usecases/add_account/remote_add_account.dart +++ b/lib/data/usecases/add_account/remote_add_account.dart @@ -10,6 +10,7 @@ class RemoteAddAccount implements AddAccount { RemoteAddAccount({required this.httpClient, required this.url}); + @override Future add(AddAccountParams params) async { final body = RemoteAddAccountParams.fromDomain(params).toJson(); try { diff --git a/lib/data/usecases/authentication/remote_authentication.dart b/lib/data/usecases/authentication/remote_authentication.dart index cf5dbdf8..07e66009 100644 --- a/lib/data/usecases/authentication/remote_authentication.dart +++ b/lib/data/usecases/authentication/remote_authentication.dart @@ -10,6 +10,7 @@ class RemoteAuthentication implements Authentication { RemoteAuthentication({required this.httpClient, required this.url}); + @override Future auth(AuthenticationParams params) async { final body = RemoteAuthenticationParams.fromDomain(params).toJson(); try { diff --git a/lib/data/usecases/load_current_account/local_load_current_account.dart b/lib/data/usecases/load_current_account/local_load_current_account.dart index daba7ba5..3aeda99b 100644 --- a/lib/data/usecases/load_current_account/local_load_current_account.dart +++ b/lib/data/usecases/load_current_account/local_load_current_account.dart @@ -8,6 +8,7 @@ class LocalLoadCurrentAccount implements LoadCurrentAccount { LocalLoadCurrentAccount({required this.fetchSecureCacheStorage}); + @override Future load() async { try { final token = await fetchSecureCacheStorage.fetch('token'); diff --git a/lib/data/usecases/load_survey_result/local_load_survey_result.dart b/lib/data/usecases/load_survey_result/local_load_survey_result.dart index ca458c6f..e9ad70bd 100644 --- a/lib/data/usecases/load_survey_result/local_load_survey_result.dart +++ b/lib/data/usecases/load_survey_result/local_load_survey_result.dart @@ -9,6 +9,7 @@ class LocalLoadSurveyResult implements LoadSurveyResult { LocalLoadSurveyResult({required this.cacheStorage}); + @override Future loadBySurvey({required String surveyId}) async { try { final data = await cacheStorage.fetch('survey_result/$surveyId'); diff --git a/lib/data/usecases/load_survey_result/remote_load_survey_result.dart b/lib/data/usecases/load_survey_result/remote_load_survey_result.dart index 4ad90db1..038c0d2a 100644 --- a/lib/data/usecases/load_survey_result/remote_load_survey_result.dart +++ b/lib/data/usecases/load_survey_result/remote_load_survey_result.dart @@ -10,6 +10,7 @@ class RemoteLoadSurveyResult implements LoadSurveyResult { RemoteLoadSurveyResult({required this.url, required this.httpClient}); + @override Future loadBySurvey({required String surveyId}) async { try { final json = await httpClient.request(url: url, method: 'get'); diff --git a/lib/data/usecases/load_surveys/local_load_surveys.dart b/lib/data/usecases/load_surveys/local_load_surveys.dart index aa75f8f9..e4385da7 100644 --- a/lib/data/usecases/load_surveys/local_load_surveys.dart +++ b/lib/data/usecases/load_surveys/local_load_surveys.dart @@ -9,6 +9,7 @@ class LocalLoadSurveys implements LoadSurveys { LocalLoadSurveys({required this.cacheStorage}); + @override Future> load() async { try { final data = await cacheStorage.fetch('surveys'); diff --git a/lib/data/usecases/load_surveys/remote_load_surveys.dart b/lib/data/usecases/load_surveys/remote_load_surveys.dart index df775000..ffc49e62 100644 --- a/lib/data/usecases/load_surveys/remote_load_surveys.dart +++ b/lib/data/usecases/load_surveys/remote_load_surveys.dart @@ -10,6 +10,7 @@ class RemoteLoadSurveys implements LoadSurveys { RemoteLoadSurveys({required this.url, required this.httpClient}); + @override Future> load() async { try { final httpResponse = await httpClient.request(url: url, method: 'get'); diff --git a/lib/data/usecases/save_current_account/local_save_current_account.dart b/lib/data/usecases/save_current_account/local_save_current_account.dart index 40340c72..824f441f 100644 --- a/lib/data/usecases/save_current_account/local_save_current_account.dart +++ b/lib/data/usecases/save_current_account/local_save_current_account.dart @@ -8,6 +8,7 @@ class LocalSaveCurrentAccount implements SaveCurrentAccount { LocalSaveCurrentAccount({required this.saveSecureCacheStorage}); + @override Future save(AccountEntity account) async { try { await saveSecureCacheStorage.save(key: 'token', value: account.token); diff --git a/lib/data/usecases/save_survey_result/remote_save_survey_result.dart b/lib/data/usecases/save_survey_result/remote_save_survey_result.dart index c52898fb..b6609cc0 100644 --- a/lib/data/usecases/save_survey_result/remote_save_survey_result.dart +++ b/lib/data/usecases/save_survey_result/remote_save_survey_result.dart @@ -10,6 +10,7 @@ class RemoteSaveSurveyResult implements SaveSurveyResult { RemoteSaveSurveyResult({required this.url, required this.httpClient}); + @override Future save({required String answer}) async { try { final json = await httpClient diff --git a/lib/domain/entities/account_entity.dart b/lib/domain/entities/account_entity.dart index 794c53f5..d13dd4dd 100644 --- a/lib/domain/entities/account_entity.dart +++ b/lib/domain/entities/account_entity.dart @@ -3,7 +3,8 @@ import 'package:equatable/equatable.dart'; class AccountEntity extends Equatable { final String token; + @override List get props => [token]; - AccountEntity({required this.token}); + const AccountEntity({required this.token}); } diff --git a/lib/domain/entities/survey_answer_entity.dart b/lib/domain/entities/survey_answer_entity.dart index 94824315..1f8ccd30 100644 --- a/lib/domain/entities/survey_answer_entity.dart +++ b/lib/domain/entities/survey_answer_entity.dart @@ -6,9 +6,10 @@ class SurveyAnswerEntity extends Equatable { final bool isCurrentAnswer; final int percent; + @override List get props => [image, answer, isCurrentAnswer, percent]; - SurveyAnswerEntity({ + const SurveyAnswerEntity({ this.image, required this.answer, required this.isCurrentAnswer, diff --git a/lib/domain/entities/survey_entity.dart b/lib/domain/entities/survey_entity.dart index eb1db834..719fde7a 100644 --- a/lib/domain/entities/survey_entity.dart +++ b/lib/domain/entities/survey_entity.dart @@ -6,9 +6,10 @@ class SurveyEntity extends Equatable { final DateTime dateTime; final bool didAnswer; + @override List get props => [id, question, dateTime, didAnswer]; - SurveyEntity({ + const SurveyEntity({ required this.id, required this.question, required this.dateTime, diff --git a/lib/domain/entities/survey_result_entity.dart b/lib/domain/entities/survey_result_entity.dart index c5ae2b6e..873686e0 100644 --- a/lib/domain/entities/survey_result_entity.dart +++ b/lib/domain/entities/survey_result_entity.dart @@ -7,9 +7,10 @@ class SurveyResultEntity extends Equatable { final String question; final List answers; + @override List get props => [surveyId, question, answers]; - SurveyResultEntity({ + const SurveyResultEntity({ required this.surveyId, required this.question, required this.answers, diff --git a/lib/domain/usecases/add_account.dart b/lib/domain/usecases/add_account.dart index 31f4787d..f819669c 100644 --- a/lib/domain/usecases/add_account.dart +++ b/lib/domain/usecases/add_account.dart @@ -12,9 +12,10 @@ class AddAccountParams extends Equatable { final String password; final String passwordConfirmation; + @override List get props => [name, email, password, passwordConfirmation]; - AddAccountParams( + const AddAccountParams( {required this.name, required this.email, required this.password, diff --git a/lib/domain/usecases/authentication.dart b/lib/domain/usecases/authentication.dart index 143cf432..76160ed3 100644 --- a/lib/domain/usecases/authentication.dart +++ b/lib/domain/usecases/authentication.dart @@ -10,7 +10,8 @@ class AuthenticationParams extends Equatable { final String email; final String secret; + @override List get props => [email, secret]; - AuthenticationParams({required this.email, required this.secret}); + const AuthenticationParams({required this.email, required this.secret}); } diff --git a/lib/infra/cache/local_storage_adapter.dart b/lib/infra/cache/local_storage_adapter.dart index 2c1fb256..888542c3 100644 --- a/lib/infra/cache/local_storage_adapter.dart +++ b/lib/infra/cache/local_storage_adapter.dart @@ -7,15 +7,18 @@ class LocalStorageAdapter implements CacheStorage { LocalStorageAdapter({required this.localStorage}); + @override Future save({required String key, required dynamic value}) async { await localStorage.deleteItem(key); await localStorage.setItem(key, value); } + @override Future delete(String key) async { await localStorage.deleteItem(key); } + @override Future fetch(String key) async { return await localStorage.getItem(key); } diff --git a/lib/infra/cache/secure_storage_adapter.dart b/lib/infra/cache/secure_storage_adapter.dart index 1a10808c..da4eee2c 100644 --- a/lib/infra/cache/secure_storage_adapter.dart +++ b/lib/infra/cache/secure_storage_adapter.dart @@ -11,14 +11,17 @@ class SecureStorageAdapter SecureStorageAdapter({required this.secureStorage}); + @override Future save({required String key, required String value}) async { await secureStorage.write(key: key, value: value); } + @override Future fetch(String key) async { return await secureStorage.read(key: key); } + @override Future delete(String key) async { await secureStorage.delete(key: key); } diff --git a/lib/infra/http/http_adapter.dart b/lib/infra/http/http_adapter.dart index 0ae2e610..79fdd5a4 100644 --- a/lib/infra/http/http_adapter.dart +++ b/lib/infra/http/http_adapter.dart @@ -8,6 +8,7 @@ class HttpAdapter implements HttpClient { HttpAdapter(this.client); + @override Future request( {required String url, required String method, @@ -30,7 +31,7 @@ class HttpAdapter implements HttpClient { client.put(Uri.parse(url), headers: defaultHeaders, body: jsonBody); } if (futureResponse != null) { - response = await futureResponse.timeout(Duration(seconds: 10)); + response = await futureResponse.timeout(const Duration(seconds: 10)); } } catch (error) { throw HttpError.serverError; diff --git a/lib/main/composites/remote_load_survey_result_with_local_fallback.dart b/lib/main/composites/remote_load_survey_result_with_local_fallback.dart index c416d100..f184e61b 100644 --- a/lib/main/composites/remote_load_survey_result_with_local_fallback.dart +++ b/lib/main/composites/remote_load_survey_result_with_local_fallback.dart @@ -12,6 +12,7 @@ class RemoteLoadSurveyResultWithLocalFallback implements LoadSurveyResult { required this.local, }); + @override Future loadBySurvey({required String surveyId}) async { try { final surveyResult = await remote.loadBySurvey(surveyId: surveyId); diff --git a/lib/main/composites/remote_load_surveys_with_local_fallback.dart b/lib/main/composites/remote_load_surveys_with_local_fallback.dart index c69fa89d..32f80599 100644 --- a/lib/main/composites/remote_load_surveys_with_local_fallback.dart +++ b/lib/main/composites/remote_load_surveys_with_local_fallback.dart @@ -10,6 +10,7 @@ class RemoteLoadSurveysWithLocalFallback implements LoadSurveys { RemoteLoadSurveysWithLocalFallback( {required this.remote, required this.local}); + @override Future> load() async { try { final surveys = await remote.load(); diff --git a/lib/main/composites/validation_composite.dart b/lib/main/composites/validation_composite.dart index de3eba89..562b208a 100644 --- a/lib/main/composites/validation_composite.dart +++ b/lib/main/composites/validation_composite.dart @@ -6,6 +6,7 @@ class ValidationComposite implements Validation { ValidationComposite(this.validations); + @override ValidationError? validate({required String field, required Map input}) { ValidationError? error; for (final validation in validations.where((v) => v.field == field)) { diff --git a/lib/main/decorators/authorize_http_client_decorator.dart b/lib/main/decorators/authorize_http_client_decorator.dart index e8f85072..1918df45 100644 --- a/lib/main/decorators/authorize_http_client_decorator.dart +++ b/lib/main/decorators/authorize_http_client_decorator.dart @@ -12,6 +12,7 @@ class AuthorizeHttpClientDecorator implements HttpClient { required this.decoratee, }); + @override Future request({ required String url, required String method, diff --git a/lib/main/factories/cache/secure_storage_adapter_factory.dart b/lib/main/factories/cache/secure_storage_adapter_factory.dart index 3a206eb2..0f559438 100644 --- a/lib/main/factories/cache/secure_storage_adapter_factory.dart +++ b/lib/main/factories/cache/secure_storage_adapter_factory.dart @@ -3,4 +3,4 @@ import '../../../infra/cache/cache.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; SecureStorageAdapter makeSecureStorageAdapter() => - SecureStorageAdapter(secureStorage: FlutterSecureStorage()); + SecureStorageAdapter(secureStorage: const FlutterSecureStorage()); diff --git a/lib/presentation/presenters/getx_login_presenter.dart b/lib/presentation/presenters/getx_login_presenter.dart index 0f18adc8..1899e2ac 100644 --- a/lib/presentation/presenters/getx_login_presenter.dart +++ b/lib/presentation/presenters/getx_login_presenter.dart @@ -20,7 +20,9 @@ class GetxLoginPresenter extends GetxController String? _email; String? _password; + @override Stream get emailErrorStream => _emailError.stream; + @override Stream get passwordErrorStream => _passwordError.stream; GetxLoginPresenter( @@ -28,12 +30,14 @@ class GetxLoginPresenter extends GetxController required this.authentication, required this.saveCurrentAccount}); + @override void validateEmail(String email) { _email = email; _emailError.value = _validateField('email'); _validateForm(); } + @override void validatePassword(String password) { _password = password; _passwordError.value = _validateField('password'); @@ -63,6 +67,7 @@ class GetxLoginPresenter extends GetxController _password != null; } + @override Future auth() async { try { mainError = null; @@ -84,6 +89,7 @@ class GetxLoginPresenter extends GetxController } } + @override void goToSignUp() { navigateTo = '/signup'; } diff --git a/lib/presentation/presenters/getx_signup_presenter.dart b/lib/presentation/presenters/getx_signup_presenter.dart index 504462be..b45b72b4 100644 --- a/lib/presentation/presenters/getx_signup_presenter.dart +++ b/lib/presentation/presenters/getx_signup_presenter.dart @@ -24,9 +24,13 @@ class GetxSignUpPresenter extends GetxController String? _password; String? _passwordConfirmation; + @override Stream get emailErrorStream => _emailError.stream; + @override Stream get nameErrorStream => _nameError.stream; + @override Stream get passwordErrorStream => _passwordError.stream; + @override Stream get passwordConfirmationErrorStream => _passwordConfirmationError.stream; @@ -35,24 +39,28 @@ class GetxSignUpPresenter extends GetxController required this.addAccount, required this.saveCurrentAccount}); + @override void validateEmail(String email) { _email = email; _emailError.value = _validateField('email'); _validateForm(); } + @override void validateName(String name) { _name = name; _nameError.value = _validateField('name'); _validateForm(); } + @override void validatePassword(String password) { _password = password; _passwordError.value = _validateField('password'); _validateForm(); } + @override void validatePasswordConfirmation(String passwordConfirmation) { _passwordConfirmation = passwordConfirmation; _passwordConfirmationError.value = _validateField('passwordConfirmation'); @@ -88,6 +96,7 @@ class GetxSignUpPresenter extends GetxController _passwordConfirmation != null; } + @override Future signUp() async { try { mainError = null; @@ -112,6 +121,7 @@ class GetxSignUpPresenter extends GetxController } } + @override void goToLogin() { navigateTo = '/login'; } diff --git a/lib/presentation/presenters/getx_splash_presenter.dart b/lib/presentation/presenters/getx_splash_presenter.dart index 7828d53b..a2f2d8e3 100644 --- a/lib/presentation/presenters/getx_splash_presenter.dart +++ b/lib/presentation/presenters/getx_splash_presenter.dart @@ -11,6 +11,7 @@ class GetxSplashPresenter extends GetxController GetxSplashPresenter({required this.loadCurrentAccount}); + @override Future checkAccount({int durationInSeconds = 2}) async { await Future.delayed(Duration(seconds: durationInSeconds)); try { diff --git a/lib/presentation/presenters/getx_survey_result_presenter.dart b/lib/presentation/presenters/getx_survey_result_presenter.dart index dcef996e..593c5581 100644 --- a/lib/presentation/presenters/getx_survey_result_presenter.dart +++ b/lib/presentation/presenters/getx_survey_result_presenter.dart @@ -16,6 +16,7 @@ class GetxSurveyResultPresenter extends GetxController final String surveyId; final _surveyResult = Rx(null); + @override Stream get surveyResultStream => _surveyResult.stream; GetxSurveyResultPresenter({ @@ -24,15 +25,17 @@ class GetxSurveyResultPresenter extends GetxController required this.surveyId, }); + @override Future loadData() async { showResultOnAction(() => loadSurveyResult.loadBySurvey(surveyId: surveyId)); } + @override Future save({required String answer}) async { showResultOnAction(() => saveSurveyResult.save(answer: answer)); } - Future showResultOnAction(Future action()) async { + Future showResultOnAction(Future Function() action) async { try { isLoading = true; final surveyResult = await action(); diff --git a/lib/presentation/presenters/getx_surveys_presenter.dart b/lib/presentation/presenters/getx_surveys_presenter.dart index 831075ea..48c00b8a 100644 --- a/lib/presentation/presenters/getx_surveys_presenter.dart +++ b/lib/presentation/presenters/getx_surveys_presenter.dart @@ -13,10 +13,12 @@ class GetxSurveysPresenter extends GetxController final LoadSurveys loadSurveys; final _surveys = Rx>([]); + @override Stream> get surveysStream => _surveys.stream; GetxSurveysPresenter({required this.loadSurveys}); + @override Future loadData() async { try { isLoading = true; @@ -39,6 +41,7 @@ class GetxSurveysPresenter extends GetxController } } + @override void goToSurveyResult(String surveyId) { navigateTo = '/survey_result/$surveyId'; } diff --git a/lib/ui/components/app_theme.dart b/lib/ui/components/app_theme.dart index bd71a7b6..a8158bc9 100644 --- a/lib/ui/components/app_theme.dart +++ b/lib/ui/components/app_theme.dart @@ -1,27 +1,27 @@ import 'package:flutter/material.dart'; ThemeData makeAppTheme() { - final primaryColor = Color.fromRGBO(136, 14, 79, 1); - final primaryColorDark = Color.fromRGBO(96, 0, 39, 1); - final primaryColorLight = Color.fromRGBO(188, 71, 123, 1); - final secondaryColor = Color.fromRGBO(0, 77, 64, 1); - final secondaryColorDark = Color.fromRGBO(0, 37, 26, 1); + const primaryColor = Color.fromRGBO(136, 14, 79, 1); + const primaryColorDark = Color.fromRGBO(96, 0, 39, 1); + const primaryColorLight = Color.fromRGBO(188, 71, 123, 1); + const secondaryColor = Color.fromRGBO(0, 77, 64, 1); + const secondaryColorDark = Color.fromRGBO(0, 37, 26, 1); final disabledColor = Colors.grey[400]; - final dividerColor = Colors.grey; - final textTheme = TextTheme( + const dividerColor = Colors.grey; + const textTheme = const TextTheme( headline1: TextStyle( fontSize: 30, fontWeight: FontWeight.bold, color: primaryColorDark)); - final inputDecorationTheme = InputDecorationTheme( + const inputDecorationTheme = const InputDecorationTheme( enabledBorder: UnderlineInputBorder( borderSide: BorderSide(color: primaryColorLight)), focusedBorder: UnderlineInputBorder(borderSide: BorderSide(color: primaryColor)), alignLabelWithHint: true); final buttonTheme = ButtonThemeData( - colorScheme: ColorScheme.light(primary: primaryColor), + colorScheme: const ColorScheme.light(primary: primaryColor), buttonColor: primaryColor, splashColor: primaryColorLight, - padding: EdgeInsets.symmetric(vertical: 10, horizontal: 20), + padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 20), textTheme: ButtonTextTheme.primary, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20))); @@ -33,7 +33,7 @@ ThemeData makeAppTheme() { secondaryHeaderColor: secondaryColorDark, disabledColor: disabledColor, dividerColor: dividerColor, - colorScheme: ColorScheme.light(primary: primaryColor), + colorScheme: const ColorScheme.light(primary: primaryColor), backgroundColor: Colors.white, textTheme: textTheme, inputDecorationTheme: inputDecorationTheme, diff --git a/lib/ui/components/headline1.dart b/lib/ui/components/headline1.dart index bdc57d03..214dd15c 100644 --- a/lib/ui/components/headline1.dart +++ b/lib/ui/components/headline1.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; class Headline1 extends StatelessWidget { final String text; - Headline1({required this.text}); + const Headline1({required this.text}); @override Widget build(BuildContext context) { diff --git a/lib/ui/components/login_header.dart b/lib/ui/components/login_header.dart index c262fbb2..dd1c5c07 100644 --- a/lib/ui/components/login_header.dart +++ b/lib/ui/components/login_header.dart @@ -5,7 +5,7 @@ class LoginHeader extends StatelessWidget { Widget build(BuildContext context) { return Container( height: 240, - margin: EdgeInsets.only(bottom: 32), + margin: const EdgeInsets.only(bottom: 32), decoration: BoxDecoration( gradient: LinearGradient( begin: Alignment.topRight, @@ -14,15 +14,15 @@ class LoginHeader extends StatelessWidget { Theme.of(context).primaryColorLight, Theme.of(context).primaryColorDark ]), - boxShadow: [ + boxShadow: const [ BoxShadow( offset: Offset(0, 0), spreadRadius: 0, blurRadius: 4, color: Colors.black) ], - borderRadius: BorderRadius.only(bottomLeft: Radius.circular(80))), - child: Image(image: AssetImage('lib/ui/assets/logo.png')), + borderRadius: const BorderRadius.only(bottomLeft: Radius.circular(80))), + child: const Image(image: AssetImage('lib/ui/assets/logo.png')), ); } } diff --git a/lib/ui/components/reload_screen.dart b/lib/ui/components/reload_screen.dart index 0d225d95..6620b212 100644 --- a/lib/ui/components/reload_screen.dart +++ b/lib/ui/components/reload_screen.dart @@ -11,13 +11,13 @@ class ReloadScreen extends StatelessWidget { @override Widget build(BuildContext context) { return Padding( - padding: EdgeInsets.all(40), + padding: const EdgeInsets.all(40), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text(error, - style: TextStyle(fontSize: 16), textAlign: TextAlign.center), - SizedBox(height: 10), + style: const TextStyle(fontSize: 16), textAlign: TextAlign.center), + const SizedBox(height: 10), ElevatedButton( onPressed: reload, child: Text(R.string.reload), diff --git a/lib/ui/components/spinner_dialog.dart b/lib/ui/components/spinner_dialog.dart index d408790a..239fec99 100644 --- a/lib/ui/components/spinner_dialog.dart +++ b/lib/ui/components/spinner_dialog.dart @@ -13,8 +13,8 @@ Future showLoading(BuildContext context) async { Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - CircularProgressIndicator(), - SizedBox(height: 10), + const CircularProgressIndicator(), + const SizedBox(height: 10), Text(R.string.wait, textAlign: TextAlign.center), ], ), diff --git a/lib/ui/helpers/i18n/strings/pt_br.dart b/lib/ui/helpers/i18n/strings/pt_br.dart index 28b37e2f..ebfb0902 100644 --- a/lib/ui/helpers/i18n/strings/pt_br.dart +++ b/lib/ui/helpers/i18n/strings/pt_br.dart @@ -1,22 +1,38 @@ import './translation.dart'; class PtBr implements Translation { + @override String get msgEmailInUse => 'O email já está em uso.'; + @override String get msgInvalidCredentials => 'Credenciais inválidas.'; + @override String get msgInvalidField => 'Campo inválido'; + @override String get msgRequiredField => 'Campo obrigatório'; + @override String get msgUnexpectedError => 'Algo errado aconteceu. Tente novamente em breve.'; + @override String get addAccount => 'Criar conta'; + @override String get confirmPassword => 'Confirmar senha'; + @override String get email => 'Email'; + @override String get enter => 'Entrar'; + @override String get login => 'Login'; + @override String get name => 'Nome'; + @override String get password => 'Senha'; + @override String get reload => 'Recarregar'; + @override String get surveys => 'Enquetes'; + @override String get surveyResult => 'Resultado da enquete'; + @override String get wait => 'Aguarde...'; } diff --git a/lib/ui/pages/login/login_page.dart b/lib/ui/pages/login/login_page.dart index d3f013e8..c7e150da 100644 --- a/lib/ui/pages/login/login_page.dart +++ b/lib/ui/pages/login/login_page.dart @@ -31,7 +31,7 @@ class LoginPage extends StatelessWidget LoginHeader(), Headline1(text: R.string.login), Padding( - padding: EdgeInsets.all(32), + padding: const EdgeInsets.all(32), child: ListenableProvider( create: (_) => presenter, child: Form( @@ -39,13 +39,13 @@ class LoginPage extends StatelessWidget children: [ EmailInput(), Padding( - padding: EdgeInsets.only(top: 8, bottom: 32), + padding: const EdgeInsets.only(top: 8, bottom: 32), child: PasswordInput(), ), LoginButton(), TextButton.icon( onPressed: presenter.goToSignUp, - icon: Icon(Icons.person), + icon: const Icon(Icons.person), label: Text(R.string.addAccount)) ], ), diff --git a/lib/ui/pages/signup/signup_page.dart b/lib/ui/pages/signup/signup_page.dart index 7ee76e2f..816981de 100644 --- a/lib/ui/pages/signup/signup_page.dart +++ b/lib/ui/pages/signup/signup_page.dart @@ -31,7 +31,7 @@ class SignUpPage extends StatelessWidget LoginHeader(), Headline1(text: R.string.addAccount), Padding( - padding: EdgeInsets.all(32), + padding: const EdgeInsets.all(32), child: ListenableProvider( create: (_) => presenter, child: Form( @@ -39,18 +39,18 @@ class SignUpPage extends StatelessWidget children: [ NameInput(), Padding( - padding: EdgeInsets.symmetric(vertical: 8), + padding: const EdgeInsets.symmetric(vertical: 8), child: EmailInput(), ), PasswordInput(), Padding( - padding: EdgeInsets.only(top: 8, bottom: 32), + padding: const EdgeInsets.only(top: 8, bottom: 32), child: PasswordConfirmationInput(), ), SignUpButton(), TextButton.icon( onPressed: presenter.goToLogin, - icon: Icon(Icons.exit_to_app), + icon: const Icon(Icons.exit_to_app), label: Text(R.string.login)) ], ), diff --git a/lib/ui/pages/splash/splash_page.dart b/lib/ui/pages/splash/splash_page.dart index 495d147c..5c0ee00c 100644 --- a/lib/ui/pages/splash/splash_page.dart +++ b/lib/ui/pages/splash/splash_page.dart @@ -13,12 +13,12 @@ class SplashPage extends StatelessWidget with NavigationManager { presenter.checkAccount(); return Scaffold( - appBar: AppBar(title: Text('4Dev')), + appBar: AppBar(title: const Text('4Dev')), body: Builder( builder: (context) { handleNavigation(presenter.navigateToStream, clear: true); - return Center( + return const Center( child: CircularProgressIndicator(), ); }, diff --git a/lib/ui/pages/survey_result/components/active_icon.dart b/lib/ui/pages/survey_result/components/active_icon.dart index e089273c..55a29b24 100644 --- a/lib/ui/pages/survey_result/components/active_icon.dart +++ b/lib/ui/pages/survey_result/components/active_icon.dart @@ -4,7 +4,7 @@ class ActiveIcon extends StatelessWidget { @override Widget build(BuildContext context) { return Padding( - padding: EdgeInsets.only(left: 10), + padding: const EdgeInsets.only(left: 10), child: Icon( Icons.check_circle, color: Theme.of(context).highlightColor, diff --git a/lib/ui/pages/survey_result/components/disabled_icon.dart b/lib/ui/pages/survey_result/components/disabled_icon.dart index f5bb9947..3471dd91 100644 --- a/lib/ui/pages/survey_result/components/disabled_icon.dart +++ b/lib/ui/pages/survey_result/components/disabled_icon.dart @@ -4,7 +4,7 @@ class DisabledIcon extends StatelessWidget { @override Widget build(BuildContext context) { return Padding( - padding: EdgeInsets.only(left: 10), + padding: const EdgeInsets.only(left: 10), child: Icon( Icons.check_circle, color: Theme.of(context).disabledColor, diff --git a/lib/ui/pages/survey_result/components/survey_answer.dart b/lib/ui/pages/survey_result/components/survey_answer.dart index 6a3e1ea5..89acc12b 100644 --- a/lib/ui/pages/survey_result/components/survey_answer.dart +++ b/lib/ui/pages/survey_result/components/survey_answer.dart @@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; class SurveyAnswer extends StatelessWidget { final SurveyAnswerViewModel viewModel; - SurveyAnswer(this.viewModel); + const SurveyAnswer(this.viewModel); @override Widget build(BuildContext context) { @@ -14,8 +14,8 @@ class SurveyAnswer extends StatelessWidget { List children = [ Expanded( child: Padding( - padding: EdgeInsets.symmetric(horizontal: 10), - child: Text(viewModel.answer, style: TextStyle(fontSize: 16)), + padding: const EdgeInsets.symmetric(horizontal: 10), + child: Text(viewModel.answer, style: const TextStyle(fontSize: 16)), ), ), Text(viewModel.percent, @@ -40,14 +40,14 @@ class SurveyAnswer extends StatelessWidget { return Column( children: [ Container( - padding: EdgeInsets.all(15), + padding: const EdgeInsets.all(15), decoration: BoxDecoration(color: Theme.of(context).backgroundColor), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: _buildItems(), ), ), - Divider(height: 1) + const Divider(height: 1) ], ); } diff --git a/lib/ui/pages/survey_result/components/survey_header.dart b/lib/ui/pages/survey_result/components/survey_header.dart index 7eb67051..b2f8e04e 100644 --- a/lib/ui/pages/survey_result/components/survey_header.dart +++ b/lib/ui/pages/survey_result/components/survey_header.dart @@ -3,12 +3,12 @@ import 'package:flutter/material.dart'; class SurveyHeader extends StatelessWidget { final String question; - SurveyHeader(this.question); + const SurveyHeader(this.question); @override Widget build(BuildContext context) { return Container( - padding: EdgeInsets.only(top: 40, bottom: 20, left: 20, right: 20), + padding: const EdgeInsets.only(top: 40, bottom: 20, left: 20, right: 20), decoration: BoxDecoration(color: Theme.of(context).disabledColor.withAlpha(90)), child: Text(question)); diff --git a/lib/ui/pages/survey_result/components/survey_result.dart b/lib/ui/pages/survey_result/components/survey_result.dart index 5f5f2d5a..503c1b01 100644 --- a/lib/ui/pages/survey_result/components/survey_result.dart +++ b/lib/ui/pages/survey_result/components/survey_result.dart @@ -7,7 +7,7 @@ class SurveyResult extends StatelessWidget { final SurveyResultViewModel viewModel; final void Function({required String answer}) onSave; - SurveyResult({required this.viewModel, required this.onSave}); + const SurveyResult({required this.viewModel, required this.onSave}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/survey_result/survey_answer_viewmodel.dart b/lib/ui/pages/survey_result/survey_answer_viewmodel.dart index 6a08b287..74551604 100644 --- a/lib/ui/pages/survey_result/survey_answer_viewmodel.dart +++ b/lib/ui/pages/survey_result/survey_answer_viewmodel.dart @@ -6,9 +6,10 @@ class SurveyAnswerViewModel extends Equatable { final bool isCurrentAnswer; final String percent; + @override List get props => [image, answer, isCurrentAnswer, percent]; - SurveyAnswerViewModel({ + const SurveyAnswerViewModel({ this.image, required this.answer, required this.isCurrentAnswer, diff --git a/lib/ui/pages/survey_result/survey_result_page.dart b/lib/ui/pages/survey_result/survey_result_page.dart index 7cbadbbf..dfc1a5c5 100644 --- a/lib/ui/pages/survey_result/survey_result_page.dart +++ b/lib/ui/pages/survey_result/survey_result_page.dart @@ -32,7 +32,7 @@ class SurveyResultPage extends StatelessWidget return SurveyResult( viewModel: snapshot.data!, onSave: presenter.save); } - return SizedBox.shrink(); + return const SizedBox.shrink(); }); })); } diff --git a/lib/ui/pages/survey_result/survey_result_viewmodel.dart b/lib/ui/pages/survey_result/survey_result_viewmodel.dart index c16edc06..3f17cacc 100644 --- a/lib/ui/pages/survey_result/survey_result_viewmodel.dart +++ b/lib/ui/pages/survey_result/survey_result_viewmodel.dart @@ -7,9 +7,10 @@ class SurveyResultViewModel extends Equatable { final String question; final List answers; + @override List get props => [surveyId, question, answers]; - SurveyResultViewModel({ + const SurveyResultViewModel({ required this.surveyId, required this.question, required this.answers, diff --git a/lib/ui/pages/surveys/components/survey_item.dart b/lib/ui/pages/surveys/components/survey_item.dart index 4e53bc71..65b28993 100644 --- a/lib/ui/pages/surveys/components/survey_item.dart +++ b/lib/ui/pages/surveys/components/survey_item.dart @@ -6,7 +6,7 @@ import 'package:provider/provider.dart'; class SurveyItem extends StatelessWidget { final SurveyViewModel viewModel; - SurveyItem(this.viewModel); + const SurveyItem(this.viewModel); @override Widget build(BuildContext context) { @@ -14,35 +14,35 @@ class SurveyItem extends StatelessWidget { return GestureDetector( onTap: () => presenter.goToSurveyResult(viewModel.id), child: Padding( - padding: EdgeInsets.symmetric(vertical: 5), + padding: const EdgeInsets.symmetric(vertical: 5), child: Container( - padding: EdgeInsets.all(20), + padding: const EdgeInsets.all(20), decoration: BoxDecoration( color: viewModel.didAnswer ? Theme.of(context).secondaryHeaderColor : Theme.of(context).primaryColorDark, - boxShadow: [ + boxShadow: const [ BoxShadow( offset: Offset(0, 1), spreadRadius: 0, blurRadius: 2, color: Colors.black) ], - borderRadius: BorderRadius.all(Radius.circular(10))), + borderRadius: const BorderRadius.all(Radius.circular(10))), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( viewModel.date, - style: TextStyle( + style: const TextStyle( color: Colors.white, fontSize: 20, fontWeight: FontWeight.bold), ), - SizedBox(height: 20), + const SizedBox(height: 20), Text( viewModel.question, - style: TextStyle(color: Colors.white, fontSize: 24), + style: const TextStyle(color: Colors.white, fontSize: 24), ), ], ), diff --git a/lib/ui/pages/surveys/components/survey_items.dart b/lib/ui/pages/surveys/components/survey_items.dart index e160c731..5f7df264 100644 --- a/lib/ui/pages/surveys/components/survey_items.dart +++ b/lib/ui/pages/surveys/components/survey_items.dart @@ -7,12 +7,12 @@ import 'package:flutter/material.dart'; class SurveyItems extends StatelessWidget { final List viewModels; - SurveyItems(this.viewModels); + const SurveyItems(this.viewModels); @override Widget build(BuildContext context) { return Padding( - padding: EdgeInsets.symmetric(vertical: 20), + padding: const EdgeInsets.symmetric(vertical: 20), child: CarouselSlider( options: CarouselOptions(enlargeCenterPage: true, aspectRatio: 1), items: viewModels.map((viewModel) => SurveyItem(viewModel)).toList(), diff --git a/lib/ui/pages/surveys/survey_viewmodel.dart b/lib/ui/pages/surveys/survey_viewmodel.dart index cb73d162..c7382526 100644 --- a/lib/ui/pages/surveys/survey_viewmodel.dart +++ b/lib/ui/pages/surveys/survey_viewmodel.dart @@ -6,9 +6,10 @@ class SurveyViewModel extends Equatable { final String date; final bool didAnswer; + @override List get props => [id, question, date, didAnswer]; - SurveyViewModel( + const SurveyViewModel( {required this.id, required this.question, required this.date, diff --git a/lib/ui/pages/surveys/surveys_page.dart b/lib/ui/pages/surveys/surveys_page.dart index d528189f..81e9ff06 100644 --- a/lib/ui/pages/surveys/surveys_page.dart +++ b/lib/ui/pages/surveys/surveys_page.dart @@ -11,7 +11,7 @@ import 'package:provider/provider.dart'; class SurveysPage extends StatefulWidget { final SurveysPresenter presenter; - SurveysPage(this.presenter); + const SurveysPage(this.presenter); @override _SurveysPageState createState() => _SurveysPageState(); @@ -45,7 +45,7 @@ class _SurveysPageState extends State create: (_) => widget.presenter, child: SurveyItems(snapshot.data!)); } - return SizedBox(height: 0); + return const SizedBox(height: 0); }); }, ), diff --git a/lib/validation/validators/compare_fields_validation.dart b/lib/validation/validators/compare_fields_validation.dart index a53ba162..ced31360 100644 --- a/lib/validation/validators/compare_fields_validation.dart +++ b/lib/validation/validators/compare_fields_validation.dart @@ -4,13 +4,16 @@ import '../protocols/protocols.dart'; import 'package:equatable/equatable.dart'; class CompareFieldsValidation extends Equatable implements FieldValidation { + @override final String field; final String fieldToCompare; + @override List get props => [field, fieldToCompare]; - CompareFieldsValidation({required this.field, required this.fieldToCompare}); + const CompareFieldsValidation({required this.field, required this.fieldToCompare}); + @override ValidationError? validate(Map input) => input[field] != null && input[fieldToCompare] != null && input[field] != input[fieldToCompare] diff --git a/lib/validation/validators/email_validation.dart b/lib/validation/validators/email_validation.dart index ed62c873..fff9323c 100644 --- a/lib/validation/validators/email_validation.dart +++ b/lib/validation/validators/email_validation.dart @@ -4,12 +4,15 @@ import '../protocols/protocols.dart'; import 'package:equatable/equatable.dart'; class EmailValidation extends Equatable implements FieldValidation { + @override final String field; + @override List get props => [field]; - EmailValidation(this.field); + const EmailValidation(this.field); + @override ValidationError? validate(Map input) { final regex = RegExp( r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+"); diff --git a/lib/validation/validators/min_length_validation.dart b/lib/validation/validators/min_length_validation.dart index 3061c0c5..fbfb1553 100644 --- a/lib/validation/validators/min_length_validation.dart +++ b/lib/validation/validators/min_length_validation.dart @@ -4,13 +4,16 @@ import '../protocols/protocols.dart'; import 'package:equatable/equatable.dart'; class MinLengthValidation extends Equatable implements FieldValidation { + @override final String field; final int size; + @override List get props => [field, size]; - MinLengthValidation({required this.field, required this.size}); + const MinLengthValidation({required this.field, required this.size}); + @override ValidationError? validate(Map input) => input[field] != null && input[field].length >= size ? null diff --git a/lib/validation/validators/required_field_validation.dart b/lib/validation/validators/required_field_validation.dart index e2802c58..c69247a8 100644 --- a/lib/validation/validators/required_field_validation.dart +++ b/lib/validation/validators/required_field_validation.dart @@ -4,12 +4,15 @@ import '../protocols/protocols.dart'; import 'package:equatable/equatable.dart'; class RequiredFieldValidation extends Equatable implements FieldValidation { + @override final String field; + @override List get props => [field]; - RequiredFieldValidation(this.field); + const RequiredFieldValidation(this.field); + @override ValidationError? validate(Map input) => input[field]?.isNotEmpty == true ? null : ValidationError.requiredField; } diff --git a/test/data/mocks/cache_storage_spy.dart b/test/data/mocks/cache_storage_spy.dart index d160ddaf..0ccd5661 100644 --- a/test/data/mocks/cache_storage_spy.dart +++ b/test/data/mocks/cache_storage_spy.dart @@ -4,21 +4,21 @@ import 'package:mocktail/mocktail.dart'; class CacheStorageSpy extends Mock implements CacheStorage { CacheStorageSpy() { - this.mockDelete(); - this.mockSave(); + mockDelete(); + mockSave(); } - When mockFetchCall() => when(() => this.fetch(any())); + When mockFetchCall() => when(() => fetch(any())); void mockFetch(dynamic json) => - this.mockFetchCall().thenAnswer((_) async => json); - void mockFetchError() => this.mockFetchCall().thenThrow(Exception()); + mockFetchCall().thenAnswer((_) async => json); + void mockFetchError() => mockFetchCall().thenThrow(Exception()); - When mockDeleteCall() => when(() => this.delete(any())); - void mockDelete() => this.mockDeleteCall().thenAnswer((_) async => _); - void mockDeleteError() => this.mockDeleteCall().thenThrow(Exception()); + When mockDeleteCall() => when(() => delete(any())); + void mockDelete() => mockDeleteCall().thenAnswer((_) async => _); + void mockDeleteError() => mockDeleteCall().thenThrow(Exception()); When mockSaveCall() => - when(() => this.save(key: any(named: 'key'), value: any(named: 'value'))); - void mockSave() => this.mockSaveCall().thenAnswer((_) async => _); - void mockSaveError() => this.mockSaveCall().thenThrow(Exception()); + when(() => save(key: any(named: 'key'), value: any(named: 'value'))); + void mockSave() => mockSaveCall().thenAnswer((_) async => _); + void mockSaveError() => mockSaveCall().thenThrow(Exception()); } diff --git a/test/data/mocks/http_client_spy.dart b/test/data/mocks/http_client_spy.dart index 9950e4e6..7db265b6 100644 --- a/test/data/mocks/http_client_spy.dart +++ b/test/data/mocks/http_client_spy.dart @@ -3,13 +3,13 @@ import 'package:fordev/data/http/http.dart'; import 'package:mocktail/mocktail.dart'; class HttpClientSpy extends Mock implements HttpClient { - When mockRequestCall() => when(() => this.request( + When mockRequestCall() => when(() => request( url: any(named: 'url'), method: any(named: 'method'), body: any(named: 'body'), headers: any(named: 'headers'))); void mockRequest(dynamic data) => - this.mockRequestCall().thenAnswer((_) async => data); + mockRequestCall().thenAnswer((_) async => data); void mockRequestError(HttpError error) => - this.mockRequestCall().thenThrow(error); + mockRequestCall().thenThrow(error); } diff --git a/test/data/mocks/load_survey_result_spy.dart b/test/data/mocks/load_survey_result_spy.dart index 8977ae46..7e3866ed 100644 --- a/test/data/mocks/load_survey_result_spy.dart +++ b/test/data/mocks/load_survey_result_spy.dart @@ -6,8 +6,8 @@ import 'package:mocktail/mocktail.dart'; class LoadSurveyResultSpy extends Mock implements LoadSurveyResult { When mockLoadCall() => - when(() => this.loadBySurvey(surveyId: any(named: 'surveyId'))); + when(() => loadBySurvey(surveyId: any(named: 'surveyId'))); void mockLoad(SurveyResultEntity surveyResult) => - this.mockLoadCall().thenAnswer((_) async => surveyResult); - void mockLoadError(DomainError error) => this.mockLoadCall().thenThrow(error); + mockLoadCall().thenAnswer((_) async => surveyResult); + void mockLoadError(DomainError error) => mockLoadCall().thenThrow(error); } diff --git a/test/data/mocks/load_surveys_spy.dart b/test/data/mocks/load_surveys_spy.dart index 14e91b5b..02fdbbe5 100644 --- a/test/data/mocks/load_surveys_spy.dart +++ b/test/data/mocks/load_surveys_spy.dart @@ -5,8 +5,8 @@ import 'package:fordev/domain/usecases/usecases.dart'; import 'package:mocktail/mocktail.dart'; class LoadSurveysSpy extends Mock implements LoadSurveys { - When mockLoadCall() => when(() => this.load()); + When mockLoadCall() => when(() => load()); void mockLoad(List surveys) => - this.mockLoadCall().thenAnswer((_) async => surveys); - void mockLoadError(DomainError error) => this.mockLoadCall().thenThrow(error); + mockLoadCall().thenAnswer((_) async => surveys); + void mockLoadError(DomainError error) => mockLoadCall().thenThrow(error); } diff --git a/test/data/mocks/local_load_survey_result_spy.dart b/test/data/mocks/local_load_survey_result_spy.dart index 847f456d..1cde0bba 100644 --- a/test/data/mocks/local_load_survey_result_spy.dart +++ b/test/data/mocks/local_load_survey_result_spy.dart @@ -6,21 +6,21 @@ import 'package:mocktail/mocktail.dart'; class LocalLoadSurveyResultSpy extends Mock implements LocalLoadSurveyResult { LocalLoadSurveyResultSpy() { - this.mockValidate(); - this.mockSave(); + mockValidate(); + mockSave(); } When mockLoadCall() => - when(() => this.loadBySurvey(surveyId: any(named: 'surveyId'))); + when(() => loadBySurvey(surveyId: any(named: 'surveyId'))); void mockLoad(SurveyResultEntity surveyResult) => - this.mockLoadCall().thenAnswer((_) async => surveyResult); - void mockLoadError() => this.mockLoadCall().thenThrow(DomainError.unexpected); + mockLoadCall().thenAnswer((_) async => surveyResult); + void mockLoadError() => mockLoadCall().thenThrow(DomainError.unexpected); - When mockValidateCall() => when(() => this.validate(any())); - void mockValidate() => this.mockValidateCall().thenAnswer((_) async => _); - void mockValidateError() => this.mockValidateCall().thenThrow(Exception()); + When mockValidateCall() => when(() => validate(any())); + void mockValidate() => mockValidateCall().thenAnswer((_) async => _); + void mockValidateError() => mockValidateCall().thenThrow(Exception()); - When mockSaveCall() => when(() => this.save(any())); - void mockSave() => this.mockSaveCall().thenAnswer((_) async => _); - void mockSaveError() => this.mockSaveCall().thenThrow(Exception()); + When mockSaveCall() => when(() => save(any())); + void mockSave() => mockSaveCall().thenAnswer((_) async => _); + void mockSaveError() => mockSaveCall().thenThrow(Exception()); } diff --git a/test/data/mocks/local_load_surveys_spy.dart b/test/data/mocks/local_load_surveys_spy.dart index 33aaa0b9..d39ae46d 100644 --- a/test/data/mocks/local_load_surveys_spy.dart +++ b/test/data/mocks/local_load_surveys_spy.dart @@ -6,20 +6,20 @@ import 'package:mocktail/mocktail.dart'; class LocalLoadSurveysSpy extends Mock implements LocalLoadSurveys { LocalLoadSurveysSpy() { - this.mockValidate(); - this.mockSave(); + mockValidate(); + mockSave(); } - When mockLoadCall() => when(() => this.load()); + When mockLoadCall() => when(() => load()); void mockLoad(List surveys) => - this.mockLoadCall().thenAnswer((_) async => surveys); - void mockLoadError() => this.mockLoadCall().thenThrow(DomainError.unexpected); + mockLoadCall().thenAnswer((_) async => surveys); + void mockLoadError() => mockLoadCall().thenThrow(DomainError.unexpected); - When mockValidateCall() => when(() => this.validate()); - void mockValidate() => this.mockValidateCall().thenAnswer((_) async => _); - void mockValidateError() => this.mockValidateCall().thenThrow(Exception()); + When mockValidateCall() => when(() => validate()); + void mockValidate() => mockValidateCall().thenAnswer((_) async => _); + void mockValidateError() => mockValidateCall().thenThrow(Exception()); - When mockSaveCall() => when(() => this.save(any())); - void mockSave() => this.mockSaveCall().thenAnswer((_) async => _); - void mockSaveError() => this.mockSaveCall().thenThrow(Exception()); + When mockSaveCall() => when(() => save(any())); + void mockSave() => mockSaveCall().thenAnswer((_) async => _); + void mockSaveError() => mockSaveCall().thenThrow(Exception()); } diff --git a/test/data/mocks/remote_load_survey_result_spy.dart b/test/data/mocks/remote_load_survey_result_spy.dart index f4d94ef1..efda827f 100644 --- a/test/data/mocks/remote_load_survey_result_spy.dart +++ b/test/data/mocks/remote_load_survey_result_spy.dart @@ -6,8 +6,8 @@ import 'package:mocktail/mocktail.dart'; class RemoteLoadSurveyResultSpy extends Mock implements RemoteLoadSurveyResult { When mockLoadCall() => - when(() => this.loadBySurvey(surveyId: any(named: 'surveyId'))); + when(() => loadBySurvey(surveyId: any(named: 'surveyId'))); void mockLoad(SurveyResultEntity surveyResult) => - this.mockLoadCall().thenAnswer((_) async => surveyResult); - void mockLoadError(DomainError error) => this.mockLoadCall().thenThrow(error); + mockLoadCall().thenAnswer((_) async => surveyResult); + void mockLoadError(DomainError error) => mockLoadCall().thenThrow(error); } diff --git a/test/data/mocks/remote_load_surveys_spy.dart b/test/data/mocks/remote_load_surveys_spy.dart index e68c2fc5..e4f79dd5 100644 --- a/test/data/mocks/remote_load_surveys_spy.dart +++ b/test/data/mocks/remote_load_surveys_spy.dart @@ -5,8 +5,8 @@ import 'package:fordev/domain/helpers/helpers.dart'; import 'package:mocktail/mocktail.dart'; class RemoteLoadSurveysSpy extends Mock implements RemoteLoadSurveys { - When mockLoadCall() => when(() => this.load()); + When mockLoadCall() => when(() => load()); void mockLoad(List surveys) => - this.mockLoadCall().thenAnswer((_) async => surveys); - void mockLoadError(DomainError error) => this.mockLoadCall().thenThrow(error); + mockLoadCall().thenAnswer((_) async => surveys); + void mockLoadError(DomainError error) => mockLoadCall().thenThrow(error); } diff --git a/test/data/mocks/secure_cache_storage_spy.dart b/test/data/mocks/secure_cache_storage_spy.dart index 2832d2a5..e7ea5eaf 100644 --- a/test/data/mocks/secure_cache_storage_spy.dart +++ b/test/data/mocks/secure_cache_storage_spy.dart @@ -8,21 +8,21 @@ class SecureCacheStorageSpy extends Mock DeleteSecureCacheStorage, SaveSecureCacheStorage { SecureCacheStorageSpy() { - this.mockDelete(); - this.mockSave(); + mockDelete(); + mockSave(); } - When mockFetchCall() => when(() => this.fetch(any())); + When mockFetchCall() => when(() => fetch(any())); void mockFetch(String? data) => - this.mockFetchCall().thenAnswer((_) async => data); - void mockFetchError() => this.mockFetchCall().thenThrow(Exception()); + mockFetchCall().thenAnswer((_) async => data); + void mockFetchError() => mockFetchCall().thenThrow(Exception()); - When mockDeleteCall() => when(() => this.delete(any())); - void mockDelete() => this.mockDeleteCall().thenAnswer((_) async => _); - void mockDeleteError() => this.mockDeleteCall().thenThrow(Exception()); + When mockDeleteCall() => when(() => delete(any())); + void mockDelete() => mockDeleteCall().thenAnswer((_) async => _); + void mockDeleteError() => mockDeleteCall().thenThrow(Exception()); When mockSaveCall() => - when(() => this.save(key: any(named: 'key'), value: any(named: 'value'))); - void mockSave() => this.mockSaveCall().thenAnswer((_) async => _); - void mockSaveError() => this.mockSaveCall().thenThrow(Exception()); + when(() => save(key: any(named: 'key'), value: any(named: 'value'))); + void mockSave() => mockSaveCall().thenAnswer((_) async => _); + void mockSaveError() => mockSaveCall().thenThrow(Exception()); } diff --git a/test/domain/mocks/add_account_spy.dart b/test/domain/mocks/add_account_spy.dart index d3946bbb..7731737d 100644 --- a/test/domain/mocks/add_account_spy.dart +++ b/test/domain/mocks/add_account_spy.dart @@ -5,9 +5,9 @@ import 'package:fordev/domain/usecases/usecases.dart'; import 'package:mocktail/mocktail.dart'; class AddAccountSpy extends Mock implements AddAccount { - When mockAddAccountCall() => when(() => this.add(any())); + When mockAddAccountCall() => when(() => add(any())); void mockAddAccount(AccountEntity data) => - this.mockAddAccountCall().thenAnswer((_) async => data); + mockAddAccountCall().thenAnswer((_) async => data); void mockAddAccountError(DomainError error) => - this.mockAddAccountCall().thenThrow(error); + mockAddAccountCall().thenThrow(error); } diff --git a/test/domain/mocks/authentication_spy.dart b/test/domain/mocks/authentication_spy.dart index dee7ec64..cf669d09 100644 --- a/test/domain/mocks/authentication_spy.dart +++ b/test/domain/mocks/authentication_spy.dart @@ -5,9 +5,9 @@ import 'package:fordev/domain/usecases/usecases.dart'; import 'package:mocktail/mocktail.dart'; class AuthenticationSpy extends Mock implements Authentication { - When mockAuthenticationCall() => when(() => this.auth(any())); + When mockAuthenticationCall() => when(() => auth(any())); void mockAuthentication(AccountEntity data) => - this.mockAuthenticationCall().thenAnswer((_) async => data); + mockAuthenticationCall().thenAnswer((_) async => data); void mockAuthenticationError(DomainError error) => - this.mockAuthenticationCall().thenThrow(error); + mockAuthenticationCall().thenThrow(error); } diff --git a/test/domain/mocks/load_current_account_spy.dart b/test/domain/mocks/load_current_account_spy.dart index 8901e728..de7961bc 100644 --- a/test/domain/mocks/load_current_account_spy.dart +++ b/test/domain/mocks/load_current_account_spy.dart @@ -4,8 +4,8 @@ import 'package:fordev/domain/usecases/usecases.dart'; import 'package:mocktail/mocktail.dart'; class LoadCurrentAccountSpy extends Mock implements LoadCurrentAccount { - When mockLoadCall() => when(() => this.load()); + When mockLoadCall() => when(() => load()); void mockLoad({required AccountEntity account}) => - this.mockLoadCall().thenAnswer((_) async => account); - void mockLoadError() => this.mockLoadCall().thenThrow(Exception()); + mockLoadCall().thenAnswer((_) async => account); + void mockLoadError() => mockLoadCall().thenThrow(Exception()); } diff --git a/test/domain/mocks/save_current_account_spy.dart b/test/domain/mocks/save_current_account_spy.dart index f90b49b0..07eaefd2 100644 --- a/test/domain/mocks/save_current_account_spy.dart +++ b/test/domain/mocks/save_current_account_spy.dart @@ -5,10 +5,10 @@ import 'package:mocktail/mocktail.dart'; class SaveCurrentAccountSpy extends Mock implements SaveCurrentAccount { SaveCurrentAccountSpy() { - this.mockSave(); + mockSave(); } - When mockSaveCall() => when(() => this.save(any())); - void mockSave() => this.mockSaveCall().thenAnswer((_) async => _); - void mockSaveError() => this.mockSaveCall().thenThrow(DomainError.unexpected); + When mockSaveCall() => when(() => save(any())); + void mockSave() => mockSaveCall().thenAnswer((_) async => _); + void mockSaveError() => mockSaveCall().thenThrow(DomainError.unexpected); } diff --git a/test/domain/mocks/save_survey_result_spy.dart b/test/domain/mocks/save_survey_result_spy.dart index 1819f424..eab002ec 100644 --- a/test/domain/mocks/save_survey_result_spy.dart +++ b/test/domain/mocks/save_survey_result_spy.dart @@ -5,7 +5,7 @@ import 'package:fordev/domain/usecases/usecases.dart'; import 'package:mocktail/mocktail.dart'; class SaveSurveyResultSpy extends Mock implements SaveSurveyResult { - When mockSaveCall() => when(() => this.save(answer: any(named: 'answer'))); + When mockSaveCall() => when(() => save(answer: any(named: 'answer'))); void mockSave(SurveyResultEntity data) => mockSaveCall().thenAnswer((_) async => data); void mockSaveError(DomainError error) => mockSaveCall().thenThrow(error); diff --git a/test/infra/cache/local_storage_adapter_test.dart b/test/infra/cache/local_storage_adapter_test.dart index 27342891..4a24206c 100644 --- a/test/infra/cache/local_storage_adapter_test.dart +++ b/test/infra/cache/local_storage_adapter_test.dart @@ -35,7 +35,7 @@ void main() { final future = sut.save(key: key, value: value); - expect(future, throwsA(TypeMatcher())); + expect(future, throwsA(const TypeMatcher())); }); test('Should throw if deleteItem throws', () async { @@ -43,7 +43,7 @@ void main() { final future = sut.save(key: key, value: value); - expect(future, throwsA(TypeMatcher())); + expect(future, throwsA(const TypeMatcher())); }); }); @@ -59,7 +59,7 @@ void main() { final future = sut.delete(key); - expect(future, throwsA(TypeMatcher())); + expect(future, throwsA(const TypeMatcher())); }); }); @@ -81,7 +81,7 @@ void main() { final future = sut.fetch(key); - expect(future, throwsA(TypeMatcher())); + expect(future, throwsA(const TypeMatcher())); }); }); } diff --git a/test/infra/cache/secure_storage_adapter_test.dart b/test/infra/cache/secure_storage_adapter_test.dart index 2b755686..e15984c8 100644 --- a/test/infra/cache/secure_storage_adapter_test.dart +++ b/test/infra/cache/secure_storage_adapter_test.dart @@ -32,7 +32,7 @@ void main() { final future = sut.save(key: key, value: value); - expect(future, throwsA(TypeMatcher())); + expect(future, throwsA(const TypeMatcher())); }); }); @@ -54,7 +54,7 @@ void main() { final future = sut.fetch(key); - expect(future, throwsA(TypeMatcher())); + expect(future, throwsA(const TypeMatcher())); }); }); @@ -70,7 +70,7 @@ void main() { final future = sut.delete(key); - expect(future, throwsA(TypeMatcher())); + expect(future, throwsA(const TypeMatcher())); }); }); } diff --git a/test/infra/mocks/client_spy.dart b/test/infra/mocks/client_spy.dart index 2a9705c5..2e98a9ef 100644 --- a/test/infra/mocks/client_spy.dart +++ b/test/infra/mocks/client_spy.dart @@ -3,27 +3,27 @@ import 'package:mocktail/mocktail.dart'; class ClientSpy extends Mock implements Client { ClientSpy() { - this.mockPost(200); - this.mockPut(200); - this.mockGet(200); + mockPost(200); + mockPut(200); + mockGet(200); } When mockPostCall() => when(() => this .post(any(), body: any(named: 'body'), headers: any(named: 'headers'))); void mockPost(int statusCode, {String body = '{"any_key":"any_value"}'}) => - this.mockPostCall().thenAnswer((_) async => Response(body, statusCode)); + mockPostCall().thenAnswer((_) async => Response(body, statusCode)); void mockPostError() => - when(() => this.mockPostCall().thenThrow(Exception())); + when(() => mockPostCall().thenThrow(Exception())); When mockPutCall() => when(() => this .put(any(), body: any(named: 'body'), headers: any(named: 'headers'))); void mockPut(int statusCode, {String body = '{"any_key":"any_value"}'}) => - this.mockPutCall().thenAnswer((_) async => Response(body, statusCode)); - void mockPutError() => when(() => this.mockPutCall().thenThrow(Exception())); + mockPutCall().thenAnswer((_) async => Response(body, statusCode)); + void mockPutError() => when(() => mockPutCall().thenThrow(Exception())); When mockGetCall() => when(() => this.get(any(), headers: any(named: 'headers'))); void mockGet(int statusCode, {String body = '{"any_key":"any_value"}'}) => - this.mockGetCall().thenAnswer((_) async => Response(body, statusCode)); - void mockGetError() => when(() => this.mockGetCall().thenThrow(Exception())); + mockGetCall().thenAnswer((_) async => Response(body, statusCode)); + void mockGetError() => when(() => mockGetCall().thenThrow(Exception())); } diff --git a/test/infra/mocks/flutter_secure_storage_spy.dart b/test/infra/mocks/flutter_secure_storage_spy.dart index 582fd9b0..780d2e49 100644 --- a/test/infra/mocks/flutter_secure_storage_spy.dart +++ b/test/infra/mocks/flutter_secure_storage_spy.dart @@ -3,24 +3,24 @@ import 'package:mocktail/mocktail.dart'; class FlutterSecureStorageSpy extends Mock implements FlutterSecureStorage { FlutterSecureStorageSpy() { - this.mockDelete(); - this.mockSave(); + mockDelete(); + mockSave(); } - When mockDeleteCall() => when(() => this.delete(key: any(named: 'key'))); - void mockDelete() => this.mockDeleteCall().thenAnswer((_) async => _); + When mockDeleteCall() => when(() => delete(key: any(named: 'key'))); + void mockDelete() => mockDeleteCall().thenAnswer((_) async => _); void mockDeleteError() => - when(() => this.mockDeleteCall().thenThrow(Exception())); + when(() => mockDeleteCall().thenThrow(Exception())); When mockSaveCall() => when( - () => this.write(key: any(named: 'key'), value: any(named: 'value'))); - void mockSave() => this.mockSaveCall().thenAnswer((_) async => _); + () => write(key: any(named: 'key'), value: any(named: 'value'))); + void mockSave() => mockSaveCall().thenAnswer((_) async => _); void mockSaveError() => - when(() => this.mockSaveCall().thenThrow(Exception())); + when(() => mockSaveCall().thenThrow(Exception())); - When mockFetchCall() => when(() => this.read(key: any(named: 'key'))); + When mockFetchCall() => when(() => read(key: any(named: 'key'))); void mockFetch(String? data) => - this.mockFetchCall().thenAnswer((_) async => data); + mockFetchCall().thenAnswer((_) async => data); void mockFetchError() => - when(() => this.mockFetchCall().thenThrow(Exception())); + when(() => mockFetchCall().thenThrow(Exception())); } diff --git a/test/infra/mocks/local_storage_spy.dart b/test/infra/mocks/local_storage_spy.dart index 3bcfa7c7..3b830441 100644 --- a/test/infra/mocks/local_storage_spy.dart +++ b/test/infra/mocks/local_storage_spy.dart @@ -3,23 +3,23 @@ import 'package:mocktail/mocktail.dart'; class LocalStorageSpy extends Mock implements LocalStorage { LocalStorageSpy() { - this.mockDelete(); - this.mockSave(); + mockDelete(); + mockSave(); } - When mockDeleteCall() => when(() => this.deleteItem(any())); - void mockDelete() => this.mockDeleteCall().thenAnswer((_) async => _); + When mockDeleteCall() => when(() => deleteItem(any())); + void mockDelete() => mockDeleteCall().thenAnswer((_) async => _); void mockDeleteError() => - when(() => this.mockDeleteCall().thenThrow(Exception())); + when(() => mockDeleteCall().thenThrow(Exception())); - When mockSaveCall() => when(() => this.setItem(any(), any())); - void mockSave() => this.mockSaveCall().thenAnswer((_) async => _); + When mockSaveCall() => when(() => setItem(any(), any())); + void mockSave() => mockSaveCall().thenAnswer((_) async => _); void mockSaveError() => - when(() => this.mockSaveCall().thenThrow(Exception())); + when(() => mockSaveCall().thenThrow(Exception())); - When mockFetchCall() => when(() => this.getItem(any())); + When mockFetchCall() => when(() => getItem(any())); void mockFetch(dynamic data) => - this.mockFetchCall().thenAnswer((_) async => data); + mockFetchCall().thenAnswer((_) async => data); void mockFetchError() => - when(() => this.mockFetchCall().thenThrow(Exception())); + when(() => mockFetchCall().thenThrow(Exception())); } diff --git a/test/main/factories/pages/login/login_validation_factory_test.dart b/test/main/factories/pages/login/login_validation_factory_test.dart index 6867905f..7eb44ad0 100644 --- a/test/main/factories/pages/login/login_validation_factory_test.dart +++ b/test/main/factories/pages/login/login_validation_factory_test.dart @@ -8,10 +8,10 @@ void main() { final validations = makeLoginValidations(); expect(validations, [ - RequiredFieldValidation('email'), - EmailValidation('email'), - RequiredFieldValidation('password'), - MinLengthValidation(field: 'password', size: 3) + const RequiredFieldValidation('email'), + const EmailValidation('email'), + const RequiredFieldValidation('password'), + const MinLengthValidation(field: 'password', size: 3) ]); }); } diff --git a/test/main/factories/pages/login/signup_validation_factory_test.dart b/test/main/factories/pages/login/signup_validation_factory_test.dart index 0e5a8de4..585a1524 100644 --- a/test/main/factories/pages/login/signup_validation_factory_test.dart +++ b/test/main/factories/pages/login/signup_validation_factory_test.dart @@ -8,14 +8,14 @@ void main() { final validations = makeSignUpValidations(); expect(validations, [ - RequiredFieldValidation('name'), - MinLengthValidation(field: 'name', size: 3), - RequiredFieldValidation('email'), - EmailValidation('email'), - RequiredFieldValidation('password'), - MinLengthValidation(field: 'password', size: 3), - RequiredFieldValidation('passwordConfirmation'), - CompareFieldsValidation( + const RequiredFieldValidation('name'), + const MinLengthValidation(field: 'name', size: 3), + const RequiredFieldValidation('email'), + const EmailValidation('email'), + const RequiredFieldValidation('password'), + const MinLengthValidation(field: 'password', size: 3), + const RequiredFieldValidation('passwordConfirmation'), + const CompareFieldsValidation( field: 'passwordConfirmation', fieldToCompare: 'password') ]); }); diff --git a/test/presentation/mocks/validation_spy.dart b/test/presentation/mocks/validation_spy.dart index 76526ba9..49fe3ebc 100644 --- a/test/presentation/mocks/validation_spy.dart +++ b/test/presentation/mocks/validation_spy.dart @@ -4,14 +4,14 @@ import 'package:mocktail/mocktail.dart'; class ValidationSpy extends Mock implements Validation { ValidationSpy() { - this.mockValidation(); + mockValidation(); } - When mockValidationCall(String? field) => when(() => this.validate( - field: field == null ? any(named: 'field') : field, + When mockValidationCall(String? field) => when(() => validate( + field: field ?? any(named: 'field'), input: any(named: 'input'))); void mockValidation({String? field}) => - this.mockValidationCall(field).thenReturn(null); + mockValidationCall(field).thenReturn(null); void mockValidationError({String? field, required ValidationError value}) => - this.mockValidationCall(field).thenReturn(value); + mockValidationCall(field).thenReturn(value); } diff --git a/test/ui/helpers/helpers.dart b/test/ui/helpers/helpers.dart index 03143ff5..29a8df95 100644 --- a/test/ui/helpers/helpers.dart +++ b/test/ui/helpers/helpers.dart @@ -7,11 +7,11 @@ Widget makePage({required String path, required Widget Function() page}) { GetPage( name: '/any_route', page: () => Scaffold( - appBar: AppBar(title: Text('any title')), body: Text('fake page'))) + appBar: AppBar(title: const Text('any title')), body: const Text('fake page'))) ]; if (path != '/login') { getPages.add(GetPage( - name: '/login', page: () => Scaffold(body: Text('fake login')))); + name: '/login', page: () => const Scaffold(body: Text('fake login')))); } return GetMaterialApp( initialRoute: path, diff --git a/test/ui/mocks/login_presenter_spy.dart b/test/ui/mocks/login_presenter_spy.dart index 8f737088..d7c59836 100644 --- a/test/ui/mocks/login_presenter_spy.dart +++ b/test/ui/mocks/login_presenter_spy.dart @@ -13,18 +13,18 @@ class LoginPresenterSpy extends Mock implements LoginPresenter { final isLoadingController = StreamController(); LoginPresenterSpy() { - when(() => this.auth()).thenAnswer((_) async => _); - when(() => this.emailErrorStream) + when(() => auth()).thenAnswer((_) async => _); + when(() => emailErrorStream) .thenAnswer((_) => emailErrorController.stream); - when(() => this.passwordErrorStream) + when(() => passwordErrorStream) .thenAnswer((_) => passwordErrorController.stream); - when(() => this.mainErrorStream) + when(() => mainErrorStream) .thenAnswer((_) => mainErrorController.stream); - when(() => this.navigateToStream) + when(() => navigateToStream) .thenAnswer((_) => navigateToController.stream); - when(() => this.isFormValidStream) + when(() => isFormValidStream) .thenAnswer((_) => isFormValidController.stream); - when(() => this.isLoadingStream) + when(() => isLoadingStream) .thenAnswer((_) => isLoadingController.stream); } diff --git a/test/ui/mocks/signup_presenter_spy.dart b/test/ui/mocks/signup_presenter_spy.dart index 114300f6..10056e5b 100644 --- a/test/ui/mocks/signup_presenter_spy.dart +++ b/test/ui/mocks/signup_presenter_spy.dart @@ -15,22 +15,22 @@ class SignUpPresenterSpy extends Mock implements SignUpPresenter { final isLoadingController = StreamController(); SignUpPresenterSpy() { - when(() => this.signUp()).thenAnswer((_) async => _); - when(() => this.nameErrorStream) + when(() => signUp()).thenAnswer((_) async => _); + when(() => nameErrorStream) .thenAnswer((_) => nameErrorController.stream); - when(() => this.emailErrorStream) + when(() => emailErrorStream) .thenAnswer((_) => emailErrorController.stream); - when(() => this.passwordErrorStream) + when(() => passwordErrorStream) .thenAnswer((_) => passwordErrorController.stream); - when(() => this.passwordConfirmationErrorStream) + when(() => passwordConfirmationErrorStream) .thenAnswer((_) => passwordConfirmationErrorController.stream); - when(() => this.mainErrorStream) + when(() => mainErrorStream) .thenAnswer((_) => mainErrorController.stream); - when(() => this.navigateToStream) + when(() => navigateToStream) .thenAnswer((_) => navigateToController.stream); - when(() => this.isFormValidStream) + when(() => isFormValidStream) .thenAnswer((_) => isFormValidController.stream); - when(() => this.isLoadingStream) + when(() => isLoadingStream) .thenAnswer((_) => isLoadingController.stream); } diff --git a/test/ui/mocks/splash_presenter_spy.dart b/test/ui/mocks/splash_presenter_spy.dart index 0b5e6746..80db4259 100644 --- a/test/ui/mocks/splash_presenter_spy.dart +++ b/test/ui/mocks/splash_presenter_spy.dart @@ -7,10 +7,9 @@ class SplashPresenterSpy extends Mock implements SplashPresenter { final navigateToController = StreamController(); SplashPresenterSpy() { - when(() => this - .checkAccount(durationInSeconds: any(named: 'durationInSeconds'))) + when(() => checkAccount(durationInSeconds: any(named: 'durationInSeconds'))) .thenAnswer((_) async => _); - when(() => this.navigateToStream) + when(() => navigateToStream) .thenAnswer((_) => navigateToController.stream); } void emitNavigateTo(String route) => navigateToController.add(route); diff --git a/test/ui/mocks/survey_result_presenter_spy.dart b/test/ui/mocks/survey_result_presenter_spy.dart index 7423abf2..dffe846b 100644 --- a/test/ui/mocks/survey_result_presenter_spy.dart +++ b/test/ui/mocks/survey_result_presenter_spy.dart @@ -9,14 +9,14 @@ class SurveyResultPresenterSpy extends Mock implements SurveyResultPresenter { final isLoadingController = StreamController(); SurveyResultPresenterSpy() { - when(() => this.loadData()).thenAnswer((_) async => _); - when(() => this.save(answer: any(named: 'answer'))) + when(() => loadData()).thenAnswer((_) async => _); + when(() => save(answer: any(named: 'answer'))) .thenAnswer((_) async => _); - when(() => this.surveyResultStream) + when(() => surveyResultStream) .thenAnswer((_) => surveyResultController.stream); - when(() => this.isSessionExpiredStream) + when(() => isSessionExpiredStream) .thenAnswer((_) => isSessionExpiredController.stream); - when(() => this.isLoadingStream) + when(() => isLoadingStream) .thenAnswer((_) => isLoadingController.stream); } diff --git a/test/ui/mocks/surveys_presenter_spy.dart b/test/ui/mocks/surveys_presenter_spy.dart index 4f068898..14190fa6 100644 --- a/test/ui/mocks/surveys_presenter_spy.dart +++ b/test/ui/mocks/surveys_presenter_spy.dart @@ -10,13 +10,13 @@ class SurveysPresenterSpy extends Mock implements SurveysPresenter { final navigateToController = StreamController(); SurveysPresenterSpy() { - when(() => this.loadData()).thenAnswer((_) async => _); - when(() => this.surveysStream).thenAnswer((_) => surveysController.stream); - when(() => this.isSessionExpiredStream) + when(() => loadData()).thenAnswer((_) async => _); + when(() => surveysStream).thenAnswer((_) => surveysController.stream); + when(() => isSessionExpiredStream) .thenAnswer((_) => isSessionExpiredController.stream); - when(() => this.isLoadingStream) + when(() => isLoadingStream) .thenAnswer((_) => isLoadingController.stream); - when(() => this.navigateToStream) + when(() => navigateToStream) .thenAnswer((_) => navigateToController.stream); } diff --git a/test/ui/mocks/viewmodel_factory.dart b/test/ui/mocks/viewmodel_factory.dart index 881248d1..3b44093d 100644 --- a/test/ui/mocks/viewmodel_factory.dart +++ b/test/ui/mocks/viewmodel_factory.dart @@ -2,7 +2,7 @@ import 'package:fordev/ui/pages/pages.dart'; class ViewModelFactory { static SurveyResultViewModel makeSurveyResult() => - SurveyResultViewModel(surveyId: 'Any id', question: 'Question', answers: [ + const SurveyResultViewModel(surveyId: 'Any id', question: 'Question', answers: [ SurveyAnswerViewModel( image: 'Image 0', answer: 'Answer 0', @@ -13,9 +13,9 @@ class ViewModelFactory { ]); static List makeSurveyList() => [ - SurveyViewModel( + const SurveyViewModel( id: '1', question: 'Question 1', date: 'Date 1', didAnswer: true), - SurveyViewModel( + const SurveyViewModel( id: '2', question: 'Question 2', date: 'Date 2', didAnswer: false), ]; } diff --git a/test/validation/mocks/field_validation_spy.dart b/test/validation/mocks/field_validation_spy.dart index 594c4334..cf2bdf58 100644 --- a/test/validation/mocks/field_validation_spy.dart +++ b/test/validation/mocks/field_validation_spy.dart @@ -5,15 +5,15 @@ import 'package:mocktail/mocktail.dart'; class FieldValidationSpy extends Mock implements FieldValidation { FieldValidationSpy() { - this.mockValidation(); - this.mockFieldName('any_field'); + mockValidation(); + mockFieldName('any_field'); } - When mockValidationCall() => when(() => this.validate(any())); - void mockValidation() => this.mockValidationCall().thenReturn(null); + When mockValidationCall() => when(() => validate(any())); + void mockValidation() => mockValidationCall().thenReturn(null); void mockValidationError(ValidationError error) => - this.mockValidationCall().thenReturn(error); + mockValidationCall().thenReturn(error); void mockFieldName(String fieldName) => - when(() => this.field).thenReturn(fieldName); + when(() => field).thenReturn(fieldName); } diff --git a/test/validation/validators/compare_fields_validation_test.dart b/test/validation/validators/compare_fields_validation_test.dart index db8a091b..08fead97 100644 --- a/test/validation/validators/compare_fields_validation_test.dart +++ b/test/validation/validators/compare_fields_validation_test.dart @@ -7,7 +7,7 @@ void main() { late CompareFieldsValidation sut; setUp(() { - sut = CompareFieldsValidation( + sut = const CompareFieldsValidation( field: 'any_field', fieldToCompare: 'other_field'); }); diff --git a/test/validation/validators/email_validation_test.dart b/test/validation/validators/email_validation_test.dart index d5421a42..29b9111e 100644 --- a/test/validation/validators/email_validation_test.dart +++ b/test/validation/validators/email_validation_test.dart @@ -7,7 +7,7 @@ void main() { late EmailValidation sut; setUp(() { - sut = EmailValidation('any_field'); + sut = const EmailValidation('any_field'); }); test('Should return null if email is empty', () { diff --git a/test/validation/validators/min_length_validation_test.dart b/test/validation/validators/min_length_validation_test.dart index 6e827fb4..42ac9857 100644 --- a/test/validation/validators/min_length_validation_test.dart +++ b/test/validation/validators/min_length_validation_test.dart @@ -8,7 +8,7 @@ void main() { late MinLengthValidation sut; setUp(() { - sut = MinLengthValidation(field: 'any_field', size: 5); + sut = const MinLengthValidation(field: 'any_field', size: 5); }); test('Should return error if value is empty', () { diff --git a/test/validation/validators/required_field_validation_test.dart b/test/validation/validators/required_field_validation_test.dart index b67d1668..8e8ba933 100644 --- a/test/validation/validators/required_field_validation_test.dart +++ b/test/validation/validators/required_field_validation_test.dart @@ -7,7 +7,7 @@ void main() { late RequiredFieldValidation sut; setUp(() { - sut = RequiredFieldValidation('any_field'); + sut = const RequiredFieldValidation('any_field'); }); test('Should return null if value is not empty', () { From 1f4c9f50052f6925654d9b765c812ab01155702e Mon Sep 17 00:00:00 2001 From: Andres Garcia Date: Sun, 29 May 2022 23:25:49 -0500 Subject: [PATCH 13/21] add rules of flutter_lints --- analysis_options.yaml | 86 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 analysis_options.yaml diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 00000000..3d956841 --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,86 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at + # https://dart-lang.github.io/linter/lints/index.html. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # require_trailing_commas: true + # always_put_required_named_parameters_first: true + # use_super_parameters: true + # always_declare_return_types: true + # avoid_print: true + # curly_braces_in_flow_control_structures: true + # sized_box_shrink_expand: true + # avoid_unnecessary_containers: true + # avoid_web_libraries_in_flutter: true + # no_logic_in_create_state: false + # prefer_const_constructors: true + # prefer_const_constructors_in_immutables: true + # prefer_const_declarations: true + # prefer_const_literals_to_create_immutables: true + # sized_box_for_whitespace: true + # use_full_hex_values_for_flutter_colors: true + # cancel_subscriptions: true + # close_sinks: true + # comment_references: false + # one_member_abstracts: false + # only_throw_errors: true + # package_api_docs: true + # prefer_single_quotes: true + # sort_child_properties_last: true + # camel_case_types: true + # library_names: true + # file_names: true + # library_prefixes: true + # non_constant_identifier_names: true + # constant_identifier_names: false + # directives_ordering: true + # slash_for_doc_comments: false + # prefer_interpolation_to_compose_strings: true + # prefer_collection_literals: true + # avoid_function_literals_in_foreach_calls: false + # avoid_init_to_null: true + # prefer_initializing_formals: true + # type_init_formals: true + # empty_constructor_bodies: true + # empty_statements: true + # unnecessary_new: true + # unnecessary_this: true + # unnecessary_const: true + # unnecessary_overrides: true + # unnecessary_parenthesis: true + # unnecessary_getters_setters: true + # avoid_setters_without_getters: true + # avoid_return_types_on_setters: true + # parameter_assignments: true + # prefer_function_declarations_over_variables: false + # unawaited_futures: true + # prefer_relative_imports: true + # annotate_overrides: false + # overridden_fields: false + # deprecated_member_use: true + + + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options From 263452b96d54bc3af13f21863fdd637d04d52d55 Mon Sep 17 00:00:00 2001 From: Andres Garcia Date: Sun, 29 May 2022 23:29:17 -0500 Subject: [PATCH 14/21] fix: alert lint require_trailing_commas --- analysis_options.yaml | 2 +- .../models/local_survey_answer_model.dart | 27 ++++--- .../models/local_survey_result_model.dart | 39 +++++----- .../models/remote_survey_result_model.dart | 3 +- .../add_account/remote_add_account.dart | 11 +-- .../local_load_survey_result.dart | 4 +- .../load_surveys/remote_load_surveys.dart | 3 +- lib/domain/usecases/add_account.dart | 11 +-- lib/infra/http/http_adapter.dart | 21 ++++-- lib/main/builders/validation_builder.dart | 8 +- ...mote_load_surveys_with_local_fallback.dart | 6 +- .../authorize_http_client_decorator.dart | 6 +- .../pages/login/login_presenter_factory.dart | 7 +- .../signup/signup_presenter_factory.dart | 7 +- .../survey_result_page_factory.dart | 3 +- .../survey_result_presenter_factory.dart | 7 +- .../usecases/authentication_factory.dart | 4 +- .../load_current_account_factory.dart | 3 +- .../usecases/load_survey_result_factory.dart | 10 ++- .../usecases/load_surveys_factory.dart | 8 +- .../usecases/save_survey_result_factory.dart | 5 +- lib/main/main.dart | 12 ++- .../survey_result_entity_extensions.dart | 16 ++-- .../presenters/getx_login_presenter.dart | 9 ++- .../presenters/getx_signup_presenter.dart | 16 ++-- .../getx_survey_result_presenter.dart | 4 +- .../presenters/getx_surveys_presenter.dart | 7 +- lib/ui/components/app_theme.dart | 62 +++++++++------- lib/ui/components/error_message.dart | 10 ++- lib/ui/components/headline1.dart | 8 +- lib/ui/components/login_header.dart | 31 ++++---- lib/ui/components/reload_screen.dart | 7 +- .../pages/login/components/login_button.dart | 15 ++-- .../login/components/password_input.dart | 26 +++---- lib/ui/pages/login/login_page.dart | 10 ++- .../signup/components/signup_button.dart | 15 ++-- lib/ui/pages/signup/signup_page.dart | 10 ++- .../components/survey_answer.dart | 25 ++++--- .../components/survey_header.dart | 9 ++- .../components/survey_result.dart | 7 +- .../survey_result/survey_result_page.dart | 38 ++++++---- .../pages/surveys/components/survey_item.dart | 31 ++++---- lib/ui/pages/surveys/survey_viewmodel.dart | 11 +-- lib/ui/pages/surveys/surveys_page.dart | 31 ++++---- .../validators/compare_fields_validation.dart | 5 +- .../validators/email_validation.dart | 3 +- test/data/mocks/cache_storage_spy.dart | 3 +- test/data/mocks/http_client_spy.dart | 16 ++-- test/data/mocks/secure_cache_storage_spy.dart | 3 +- .../add_account/remote_add_account_test.dart | 10 ++- .../remote_authentication_test.dart | 7 +- .../local_load_survey_result_test.dart | 43 ++++++----- .../remote_load_survey_result_test.dart | 40 +++++----- .../load_surveys/local_load_surveys_test.dart | 18 +++-- .../remote_save_survey_result_test.dart | 46 ++++++------ test/domain/mocks/entity_factory.dart | 47 ++++++------ test/domain/mocks/params_factory.dart | 13 ++-- test/infra/http/http_adapter_test.dart | 73 +++++++++++++------ test/infra/mocks/client_spy.dart | 21 ++++-- .../mocks/flutter_secure_storage_spy.dart | 15 ++-- test/infra/mocks/local_storage_spy.dart | 12 +-- .../authorize_http_client_decorator_test.dart | 31 +++++--- .../login/signup_validation_factory_test.dart | 4 +- test/presentation/mocks/validation_spy.dart | 9 ++- .../presenters/getx_login_presenter_test.dart | 21 ++++-- .../getx_signup_presenter_test.dart | 28 ++++--- .../getx_survey_result_presenter_test.dart | 68 ++++++++++------- .../getx_surveys_presenter_test.dart | 41 +++++++---- test/ui/helpers/helpers.dart | 17 +++-- test/ui/mocks/login_presenter_spy.dart | 12 +-- test/ui/mocks/signup_presenter_spy.dart | 15 ++-- test/ui/mocks/splash_presenter_spy.dart | 3 +- .../ui/mocks/survey_result_presenter_spy.dart | 6 +- test/ui/mocks/surveys_presenter_spy.dart | 6 +- test/ui/mocks/viewmodel_factory.dart | 32 ++++++-- test/ui/pages/login_page_test.dart | 24 ++++-- test/ui/pages/signup_page_test.dart | 46 ++++++++---- test/ui/pages/splash_page_test.dart | 3 +- test/ui/pages/survey_result_page_test.dart | 12 ++- test/ui/pages/surveys_page_test.dart | 15 ++-- .../compare_fields_validation_test.dart | 4 +- .../validators/email_validation_test.dart | 6 +- .../min_length_validation_test.dart | 17 +++-- 83 files changed, 834 insertions(+), 566 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 3d956841..6f5a9265 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -22,7 +22,7 @@ linter: # `// ignore_for_file: name_of_lint` syntax on the line or in the file # producing the lint. rules: - # require_trailing_commas: true + require_trailing_commas: true # always_put_required_named_parameters_first: true # use_super_parameters: true # always_declare_return_types: true diff --git a/lib/data/models/local_survey_answer_model.dart b/lib/data/models/local_survey_answer_model.dart index b9f12639..e9243a58 100644 --- a/lib/data/models/local_survey_answer_model.dart +++ b/lib/data/models/local_survey_answer_model.dart @@ -20,24 +20,27 @@ class LocalSurveyAnswerModel { throw Exception(); } return LocalSurveyAnswerModel( - image: json['image'], - answer: json['answer'], - isCurrentAnswer: json['isCurrentAnswer'].toLowerCase() == 'true', - percent: int.parse(json['percent'])); + image: json['image'], + answer: json['answer'], + isCurrentAnswer: json['isCurrentAnswer'].toLowerCase() == 'true', + percent: int.parse(json['percent']), + ); } factory LocalSurveyAnswerModel.fromEntity(SurveyAnswerEntity entity) => LocalSurveyAnswerModel( - image: entity.image, - answer: entity.answer, - percent: entity.percent, - isCurrentAnswer: entity.isCurrentAnswer); + image: entity.image, + answer: entity.answer, + percent: entity.percent, + isCurrentAnswer: entity.isCurrentAnswer, + ); SurveyAnswerEntity toEntity() => SurveyAnswerEntity( - image: image, - answer: answer, - isCurrentAnswer: isCurrentAnswer, - percent: percent); + image: image, + answer: answer, + isCurrentAnswer: isCurrentAnswer, + percent: percent, + ); Map toJson() => { 'image': image, diff --git a/lib/data/models/local_survey_result_model.dart b/lib/data/models/local_survey_result_model.dart index c70be354..faf7cb9c 100644 --- a/lib/data/models/local_survey_result_model.dart +++ b/lib/data/models/local_survey_result_model.dart @@ -17,29 +17,34 @@ class LocalSurveyResultModel { throw Exception(); } return LocalSurveyResultModel( - surveyId: json['surveyId'], - question: json['question'], - answers: json['answers'] - .map( - (answerJson) => LocalSurveyAnswerModel.fromJson(answerJson)) - .toList()); + surveyId: json['surveyId'], + question: json['question'], + answers: json['answers'] + .map( + (answerJson) => LocalSurveyAnswerModel.fromJson(answerJson), + ) + .toList(), + ); } factory LocalSurveyResultModel.fromEntity(SurveyResultEntity entity) => LocalSurveyResultModel( - surveyId: entity.surveyId, - question: entity.question, - answers: entity.answers - .map( - (answer) => LocalSurveyAnswerModel.fromEntity(answer)) - .toList()); + surveyId: entity.surveyId, + question: entity.question, + answers: entity.answers + .map( + (answer) => LocalSurveyAnswerModel.fromEntity(answer), + ) + .toList(), + ); SurveyResultEntity toEntity() => SurveyResultEntity( - surveyId: surveyId, - question: question, - answers: answers - .map((answer) => answer.toEntity()) - .toList()); + surveyId: surveyId, + question: question, + answers: answers + .map((answer) => answer.toEntity()) + .toList(), + ); Map toJson() => { 'surveyId': surveyId, diff --git a/lib/data/models/remote_survey_result_model.dart b/lib/data/models/remote_survey_result_model.dart index 78326ece..3a4e0b78 100644 --- a/lib/data/models/remote_survey_result_model.dart +++ b/lib/data/models/remote_survey_result_model.dart @@ -22,7 +22,8 @@ class RemoteSurveyResultModel { question: json['question'], answers: json['answers'] .map( - (answerJson) => RemoteSurveyAnswerModel.fromJson(answerJson)) + (answerJson) => RemoteSurveyAnswerModel.fromJson(answerJson), + ) .toList(), ); } diff --git a/lib/data/usecases/add_account/remote_add_account.dart b/lib/data/usecases/add_account/remote_add_account.dart index 5580baf2..80cd183d 100644 --- a/lib/data/usecases/add_account/remote_add_account.dart +++ b/lib/data/usecases/add_account/remote_add_account.dart @@ -31,11 +31,12 @@ class RemoteAddAccountParams { final String password; final String passwordConfirmation; - RemoteAddAccountParams( - {required this.name, - required this.email, - required this.password, - required this.passwordConfirmation}); + RemoteAddAccountParams({ + required this.name, + required this.email, + required this.password, + required this.passwordConfirmation, + }); factory RemoteAddAccountParams.fromDomain(AddAccountParams params) => RemoteAddAccountParams( diff --git a/lib/data/usecases/load_survey_result/local_load_survey_result.dart b/lib/data/usecases/load_survey_result/local_load_survey_result.dart index e9ad70bd..28e8978e 100644 --- a/lib/data/usecases/load_survey_result/local_load_survey_result.dart +++ b/lib/data/usecases/load_survey_result/local_load_survey_result.dart @@ -35,7 +35,9 @@ class LocalLoadSurveyResult implements LoadSurveyResult { try { final json = LocalSurveyResultModel.fromEntity(surveyResult).toJson(); await cacheStorage.save( - key: 'survey_result/${surveyResult.surveyId}', value: json); + key: 'survey_result/${surveyResult.surveyId}', + value: json, + ); } catch (error) { throw DomainError.unexpected; } diff --git a/lib/data/usecases/load_surveys/remote_load_surveys.dart b/lib/data/usecases/load_surveys/remote_load_surveys.dart index ffc49e62..b503ba9c 100644 --- a/lib/data/usecases/load_surveys/remote_load_surveys.dart +++ b/lib/data/usecases/load_surveys/remote_load_surveys.dart @@ -16,7 +16,8 @@ class RemoteLoadSurveys implements LoadSurveys { final httpResponse = await httpClient.request(url: url, method: 'get'); return httpResponse .map( - (json) => RemoteSurveyModel.fromJson(json).toEntity()) + (json) => RemoteSurveyModel.fromJson(json).toEntity(), + ) .toList(); } on HttpError catch (error) { throw error == HttpError.forbidden diff --git a/lib/domain/usecases/add_account.dart b/lib/domain/usecases/add_account.dart index f819669c..6438bdb9 100644 --- a/lib/domain/usecases/add_account.dart +++ b/lib/domain/usecases/add_account.dart @@ -15,9 +15,10 @@ class AddAccountParams extends Equatable { @override List get props => [name, email, password, passwordConfirmation]; - const AddAccountParams( - {required this.name, - required this.email, - required this.password, - required this.passwordConfirmation}); + const AddAccountParams({ + required this.name, + required this.email, + required this.password, + required this.passwordConfirmation, + }); } diff --git a/lib/infra/http/http_adapter.dart b/lib/infra/http/http_adapter.dart index 79fdd5a4..77672a74 100644 --- a/lib/infra/http/http_adapter.dart +++ b/lib/infra/http/http_adapter.dart @@ -9,21 +9,26 @@ class HttpAdapter implements HttpClient { HttpAdapter(this.client); @override - Future request( - {required String url, - required String method, - Map? body, - Map? headers}) async { + Future request({ + required String url, + required String method, + Map? body, + Map? headers, + }) async { final defaultHeaders = headers?.cast() ?? {} ..addAll( - {'content-type': 'application/json', 'accept': 'application/json'}); + {'content-type': 'application/json', 'accept': 'application/json'}, + ); final jsonBody = body != null ? jsonEncode(body) : null; var response = Response('', 500); Future? futureResponse; try { if (method == 'post') { - futureResponse = client.post(Uri.parse(url), - headers: defaultHeaders, body: jsonBody); + futureResponse = client.post( + Uri.parse(url), + headers: defaultHeaders, + body: jsonBody, + ); } else if (method == 'get') { futureResponse = client.get(Uri.parse(url), headers: defaultHeaders); } else if (method == 'put') { diff --git a/lib/main/builders/validation_builder.dart b/lib/main/builders/validation_builder.dart index 22b32e9b..cfa5bff1 100644 --- a/lib/main/builders/validation_builder.dart +++ b/lib/main/builders/validation_builder.dart @@ -29,8 +29,12 @@ class ValidationBuilder { } ValidationBuilder sameAs(String fieldToCompare) { - validations.add(CompareFieldsValidation( - field: fieldName, fieldToCompare: fieldToCompare)); + validations.add( + CompareFieldsValidation( + field: fieldName, + fieldToCompare: fieldToCompare, + ), + ); return this; } diff --git a/lib/main/composites/remote_load_surveys_with_local_fallback.dart b/lib/main/composites/remote_load_surveys_with_local_fallback.dart index 32f80599..c951b62c 100644 --- a/lib/main/composites/remote_load_surveys_with_local_fallback.dart +++ b/lib/main/composites/remote_load_surveys_with_local_fallback.dart @@ -7,8 +7,10 @@ class RemoteLoadSurveysWithLocalFallback implements LoadSurveys { final RemoteLoadSurveys remote; final LocalLoadSurveys local; - RemoteLoadSurveysWithLocalFallback( - {required this.remote, required this.local}); + RemoteLoadSurveysWithLocalFallback({ + required this.remote, + required this.local, + }); @override Future> load() async { diff --git a/lib/main/decorators/authorize_http_client_decorator.dart b/lib/main/decorators/authorize_http_client_decorator.dart index 1918df45..0a33c03a 100644 --- a/lib/main/decorators/authorize_http_client_decorator.dart +++ b/lib/main/decorators/authorize_http_client_decorator.dart @@ -24,7 +24,11 @@ class AuthorizeHttpClientDecorator implements HttpClient { final authorizedHeaders = headers ?? {} ..addAll({'x-access-token': token}); return await decoratee.request( - url: url, method: method, body: body, headers: authorizedHeaders); + url: url, + method: method, + body: body, + headers: authorizedHeaders, + ); } catch (error) { if (error is HttpError && error != HttpError.forbidden) { rethrow; diff --git a/lib/main/factories/pages/login/login_presenter_factory.dart b/lib/main/factories/pages/login/login_presenter_factory.dart index e2b0ec4f..e6fe0d63 100644 --- a/lib/main/factories/pages/login/login_presenter_factory.dart +++ b/lib/main/factories/pages/login/login_presenter_factory.dart @@ -3,6 +3,7 @@ import '../../../../ui/pages/pages.dart'; import '../../factories.dart'; LoginPresenter makeGetxLoginPresenter() => GetxLoginPresenter( - authentication: makeRemoteAuthentication(), - validation: makeLoginValidation(), - saveCurrentAccount: makeLocalSaveCurrentAccount()); + authentication: makeRemoteAuthentication(), + validation: makeLoginValidation(), + saveCurrentAccount: makeLocalSaveCurrentAccount(), + ); diff --git a/lib/main/factories/pages/signup/signup_presenter_factory.dart b/lib/main/factories/pages/signup/signup_presenter_factory.dart index f6d2048f..9c41e9bd 100644 --- a/lib/main/factories/pages/signup/signup_presenter_factory.dart +++ b/lib/main/factories/pages/signup/signup_presenter_factory.dart @@ -3,6 +3,7 @@ import '../../../../ui/pages/pages.dart'; import '../../factories.dart'; SignUpPresenter makeGetxSignUpPresenter() => GetxSignUpPresenter( - addAccount: makeRemoteAddAccount(), - validation: makeSignUpValidation(), - saveCurrentAccount: makeLocalSaveCurrentAccount()); + addAccount: makeRemoteAddAccount(), + validation: makeSignUpValidation(), + saveCurrentAccount: makeLocalSaveCurrentAccount(), + ); diff --git a/lib/main/factories/pages/survey_result/survey_result_page_factory.dart b/lib/main/factories/pages/survey_result/survey_result_page_factory.dart index a7cba0d9..3629344b 100644 --- a/lib/main/factories/pages/survey_result/survey_result_page_factory.dart +++ b/lib/main/factories/pages/survey_result/survey_result_page_factory.dart @@ -5,4 +5,5 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; Widget makeSurveyResultPage() => SurveyResultPage( - makeGetxSurveyResultPresenter(Get.parameters['survey_id'] ?? '')); + makeGetxSurveyResultPresenter(Get.parameters['survey_id'] ?? ''), + ); diff --git a/lib/main/factories/pages/survey_result/survey_result_presenter_factory.dart b/lib/main/factories/pages/survey_result/survey_result_presenter_factory.dart index a56b92a0..4139d6f7 100644 --- a/lib/main/factories/pages/survey_result/survey_result_presenter_factory.dart +++ b/lib/main/factories/pages/survey_result/survey_result_presenter_factory.dart @@ -4,6 +4,7 @@ import '../../factories.dart'; SurveyResultPresenter makeGetxSurveyResultPresenter(String surveyId) => GetxSurveyResultPresenter( - loadSurveyResult: makeRemoteLoadSurveyResultWithLocalFallback(surveyId), - saveSurveyResult: makeRemoteSaveSurveyResult(surveyId), - surveyId: surveyId); + loadSurveyResult: makeRemoteLoadSurveyResultWithLocalFallback(surveyId), + saveSurveyResult: makeRemoteSaveSurveyResult(surveyId), + surveyId: surveyId, + ); diff --git a/lib/main/factories/usecases/authentication_factory.dart b/lib/main/factories/usecases/authentication_factory.dart index b8d5a9c0..e9aaf16f 100644 --- a/lib/main/factories/usecases/authentication_factory.dart +++ b/lib/main/factories/usecases/authentication_factory.dart @@ -3,4 +3,6 @@ import '../../../domain/usecases/usecases.dart'; import '../factories.dart'; Authentication makeRemoteAuthentication() => RemoteAuthentication( - httpClient: makeHttpAdapter(), url: makeApiUrl('login')); + httpClient: makeHttpAdapter(), + url: makeApiUrl('login'), + ); diff --git a/lib/main/factories/usecases/load_current_account_factory.dart b/lib/main/factories/usecases/load_current_account_factory.dart index c45fe690..595fef6b 100644 --- a/lib/main/factories/usecases/load_current_account_factory.dart +++ b/lib/main/factories/usecases/load_current_account_factory.dart @@ -3,4 +3,5 @@ import '../../../domain/usecases/usecases.dart'; import '../factories.dart'; LoadCurrentAccount makeLocalLoadCurrentAccount() => LocalLoadCurrentAccount( - fetchSecureCacheStorage: makeSecureStorageAdapter()); + fetchSecureCacheStorage: makeSecureStorageAdapter(), + ); diff --git a/lib/main/factories/usecases/load_survey_result_factory.dart b/lib/main/factories/usecases/load_survey_result_factory.dart index 97ff1025..6c98a1e3 100644 --- a/lib/main/factories/usecases/load_survey_result_factory.dart +++ b/lib/main/factories/usecases/load_survey_result_factory.dart @@ -5,13 +5,15 @@ import '../factories.dart'; RemoteLoadSurveyResult makeRemoteLoadSurveyResult(String surveyId) => RemoteLoadSurveyResult( - httpClient: makeAuthorizeHttpClientDecorator(), - url: makeApiUrl('surveys/$surveyId/results')); + httpClient: makeAuthorizeHttpClientDecorator(), + url: makeApiUrl('surveys/$surveyId/results'), + ); LocalLoadSurveyResult makeLocalLoadSurveyResult(String surveyId) => LocalLoadSurveyResult(cacheStorage: makeLocalStorageAdapter()); LoadSurveyResult makeRemoteLoadSurveyResultWithLocalFallback(String surveyId) => RemoteLoadSurveyResultWithLocalFallback( - remote: makeRemoteLoadSurveyResult(surveyId), - local: makeLocalLoadSurveyResult(surveyId)); + remote: makeRemoteLoadSurveyResult(surveyId), + local: makeLocalLoadSurveyResult(surveyId), + ); diff --git a/lib/main/factories/usecases/load_surveys_factory.dart b/lib/main/factories/usecases/load_surveys_factory.dart index 544e304f..8f44ee73 100644 --- a/lib/main/factories/usecases/load_surveys_factory.dart +++ b/lib/main/factories/usecases/load_surveys_factory.dart @@ -4,11 +4,15 @@ import '../../composites/composites.dart'; import '../factories.dart'; RemoteLoadSurveys makeRemoteLoadSurveys() => RemoteLoadSurveys( - httpClient: makeAuthorizeHttpClientDecorator(), url: makeApiUrl('surveys')); + httpClient: makeAuthorizeHttpClientDecorator(), + url: makeApiUrl('surveys'), + ); LocalLoadSurveys makeLocalLoadSurveys() => LocalLoadSurveys(cacheStorage: makeLocalStorageAdapter()); LoadSurveys makeRemoteLoadSurveysWithLocalFallback() => RemoteLoadSurveysWithLocalFallback( - remote: makeRemoteLoadSurveys(), local: makeLocalLoadSurveys()); + remote: makeRemoteLoadSurveys(), + local: makeLocalLoadSurveys(), + ); diff --git a/lib/main/factories/usecases/save_survey_result_factory.dart b/lib/main/factories/usecases/save_survey_result_factory.dart index d34cf594..5b50a894 100644 --- a/lib/main/factories/usecases/save_survey_result_factory.dart +++ b/lib/main/factories/usecases/save_survey_result_factory.dart @@ -4,5 +4,6 @@ import '../factories.dart'; SaveSurveyResult makeRemoteSaveSurveyResult(String surveyId) => RemoteSaveSurveyResult( - httpClient: makeAuthorizeHttpClientDecorator(), - url: makeApiUrl('surveys/$surveyId/results')); + httpClient: makeAuthorizeHttpClientDecorator(), + url: makeApiUrl('surveys/$surveyId/results'), + ); diff --git a/lib/main/main.dart b/lib/main/main.dart index e800eeb5..d740b179 100644 --- a/lib/main/main.dart +++ b/lib/main/main.dart @@ -24,12 +24,16 @@ class App extends StatelessWidget { getPages: [ GetPage(name: '/', page: makeSplashPage, transition: Transition.fade), GetPage( - name: '/login', page: makeLoginPage, transition: Transition.fadeIn), + name: '/login', + page: makeLoginPage, + transition: Transition.fadeIn, + ), GetPage(name: '/signup', page: makeSignUpPage), GetPage( - name: '/surveys', - page: makeSurveysPage, - transition: Transition.fadeIn), + name: '/surveys', + page: makeSurveysPage, + transition: Transition.fadeIn, + ), GetPage(name: '/survey_result/:survey_id', page: makeSurveyResultPage), ], ); diff --git a/lib/presentation/helpers/survey_result_entity_extensions.dart b/lib/presentation/helpers/survey_result_entity_extensions.dart index ab06cae3..f9635da4 100644 --- a/lib/presentation/helpers/survey_result_entity_extensions.dart +++ b/lib/presentation/helpers/survey_result_entity_extensions.dart @@ -3,15 +3,17 @@ import '../../ui/pages/pages.dart'; extension SurveyResultEntityExtensions on SurveyResultEntity { SurveyResultViewModel toViewModel() => SurveyResultViewModel( - surveyId: surveyId, - question: question, - answers: answers.map((answer) => answer.toViewModel()).toList()); + surveyId: surveyId, + question: question, + answers: answers.map((answer) => answer.toViewModel()).toList(), + ); } extension SurveyAnswerEntityExtensions on SurveyAnswerEntity { SurveyAnswerViewModel toViewModel() => SurveyAnswerViewModel( - image: image, - answer: answer, - percent: '$percent%', - isCurrentAnswer: isCurrentAnswer); + image: image, + answer: answer, + percent: '$percent%', + isCurrentAnswer: isCurrentAnswer, + ); } diff --git a/lib/presentation/presenters/getx_login_presenter.dart b/lib/presentation/presenters/getx_login_presenter.dart index 1899e2ac..65903649 100644 --- a/lib/presentation/presenters/getx_login_presenter.dart +++ b/lib/presentation/presenters/getx_login_presenter.dart @@ -25,10 +25,11 @@ class GetxLoginPresenter extends GetxController @override Stream get passwordErrorStream => _passwordError.stream; - GetxLoginPresenter( - {required this.validation, - required this.authentication, - required this.saveCurrentAccount}); + GetxLoginPresenter({ + required this.validation, + required this.authentication, + required this.saveCurrentAccount, + }); @override void validateEmail(String email) { diff --git a/lib/presentation/presenters/getx_signup_presenter.dart b/lib/presentation/presenters/getx_signup_presenter.dart index b45b72b4..6b9fe82d 100644 --- a/lib/presentation/presenters/getx_signup_presenter.dart +++ b/lib/presentation/presenters/getx_signup_presenter.dart @@ -34,10 +34,11 @@ class GetxSignUpPresenter extends GetxController Stream get passwordConfirmationErrorStream => _passwordConfirmationError.stream; - GetxSignUpPresenter( - {required this.validation, - required this.addAccount, - required this.saveCurrentAccount}); + GetxSignUpPresenter({ + required this.validation, + required this.addAccount, + required this.saveCurrentAccount, + }); @override void validateEmail(String email) { @@ -101,11 +102,14 @@ class GetxSignUpPresenter extends GetxController try { mainError = null; isLoading = true; - final account = await addAccount.add(AddAccountParams( + final account = await addAccount.add( + AddAccountParams( name: _name!, email: _email!, password: _password!, - passwordConfirmation: _passwordConfirmation!)); + passwordConfirmation: _passwordConfirmation!, + ), + ); await saveCurrentAccount.save(account); navigateTo = '/surveys'; } on DomainError catch (error) { diff --git a/lib/presentation/presenters/getx_survey_result_presenter.dart b/lib/presentation/presenters/getx_survey_result_presenter.dart index 593c5581..5b20ccea 100644 --- a/lib/presentation/presenters/getx_survey_result_presenter.dart +++ b/lib/presentation/presenters/getx_survey_result_presenter.dart @@ -35,7 +35,9 @@ class GetxSurveyResultPresenter extends GetxController showResultOnAction(() => saveSurveyResult.save(answer: answer)); } - Future showResultOnAction(Future Function() action) async { + Future showResultOnAction( + Future Function() action, + ) async { try { isLoading = true; final surveyResult = await action(); diff --git a/lib/presentation/presenters/getx_surveys_presenter.dart b/lib/presentation/presenters/getx_surveys_presenter.dart index 48c00b8a..32662bd7 100644 --- a/lib/presentation/presenters/getx_surveys_presenter.dart +++ b/lib/presentation/presenters/getx_surveys_presenter.dart @@ -24,11 +24,14 @@ class GetxSurveysPresenter extends GetxController isLoading = true; final surveys = await loadSurveys.load(); _surveys.value = surveys - .map((survey) => SurveyViewModel( + .map( + (survey) => SurveyViewModel( id: survey.id, question: survey.question, date: DateFormat('dd MMM yyyy').format(survey.dateTime), - didAnswer: survey.didAnswer)) + didAnswer: survey.didAnswer, + ), + ) .toList(); } on DomainError catch (error) { if (error == DomainError.accessDenied) { diff --git a/lib/ui/components/app_theme.dart b/lib/ui/components/app_theme.dart index a8158bc9..4333aefa 100644 --- a/lib/ui/components/app_theme.dart +++ b/lib/ui/components/app_theme.dart @@ -8,34 +8,42 @@ ThemeData makeAppTheme() { const secondaryColorDark = Color.fromRGBO(0, 37, 26, 1); final disabledColor = Colors.grey[400]; const dividerColor = Colors.grey; - const textTheme = const TextTheme( - headline1: TextStyle( - fontSize: 30, fontWeight: FontWeight.bold, color: primaryColorDark)); - const inputDecorationTheme = const InputDecorationTheme( - enabledBorder: UnderlineInputBorder( - borderSide: BorderSide(color: primaryColorLight)), - focusedBorder: - UnderlineInputBorder(borderSide: BorderSide(color: primaryColor)), - alignLabelWithHint: true); + const textTheme = TextTheme( + headline1: TextStyle( + fontSize: 30, + fontWeight: FontWeight.bold, + color: primaryColorDark, + ), + ); + const inputDecorationTheme = InputDecorationTheme( + enabledBorder: UnderlineInputBorder( + borderSide: BorderSide(color: primaryColorLight), + ), + focusedBorder: + UnderlineInputBorder(borderSide: BorderSide(color: primaryColor)), + alignLabelWithHint: true, + ); final buttonTheme = ButtonThemeData( - colorScheme: const ColorScheme.light(primary: primaryColor), - buttonColor: primaryColor, - splashColor: primaryColorLight, - padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 20), - textTheme: ButtonTextTheme.primary, - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20))); + colorScheme: const ColorScheme.light(primary: primaryColor), + buttonColor: primaryColor, + splashColor: primaryColorLight, + padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 20), + textTheme: ButtonTextTheme.primary, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), + ); return ThemeData( - primaryColor: primaryColor, - primaryColorDark: primaryColorDark, - primaryColorLight: primaryColorLight, - highlightColor: secondaryColor, - secondaryHeaderColor: secondaryColorDark, - disabledColor: disabledColor, - dividerColor: dividerColor, - colorScheme: const ColorScheme.light(primary: primaryColor), - backgroundColor: Colors.white, - textTheme: textTheme, - inputDecorationTheme: inputDecorationTheme, - buttonTheme: buttonTheme); + primaryColor: primaryColor, + primaryColorDark: primaryColorDark, + primaryColorLight: primaryColorLight, + highlightColor: secondaryColor, + secondaryHeaderColor: secondaryColorDark, + disabledColor: disabledColor, + dividerColor: dividerColor, + colorScheme: const ColorScheme.light(primary: primaryColor), + backgroundColor: Colors.white, + textTheme: textTheme, + inputDecorationTheme: inputDecorationTheme, + buttonTheme: buttonTheme, + ); } diff --git a/lib/ui/components/error_message.dart b/lib/ui/components/error_message.dart index 00144d10..27bc2c76 100644 --- a/lib/ui/components/error_message.dart +++ b/lib/ui/components/error_message.dart @@ -1,8 +1,10 @@ import 'package:flutter/material.dart'; void showErrorMessage(BuildContext context, String error) { - ScaffoldMessenger.of(context).showSnackBar(SnackBar( - backgroundColor: Colors.red[900], - content: Text(error, textAlign: TextAlign.center), - )); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + backgroundColor: Colors.red[900], + content: Text(error, textAlign: TextAlign.center), + ), + ); } diff --git a/lib/ui/components/headline1.dart b/lib/ui/components/headline1.dart index 214dd15c..5d1cebb5 100644 --- a/lib/ui/components/headline1.dart +++ b/lib/ui/components/headline1.dart @@ -7,8 +7,10 @@ class Headline1 extends StatelessWidget { @override Widget build(BuildContext context) { - return Text(text.toUpperCase(), - textAlign: TextAlign.center, - style: Theme.of(context).textTheme.headline1); + return Text( + text.toUpperCase(), + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.headline1, + ); } } diff --git a/lib/ui/components/login_header.dart b/lib/ui/components/login_header.dart index dd1c5c07..5cf9f7e4 100644 --- a/lib/ui/components/login_header.dart +++ b/lib/ui/components/login_header.dart @@ -7,21 +7,24 @@ class LoginHeader extends StatelessWidget { height: 240, margin: const EdgeInsets.only(bottom: 32), decoration: BoxDecoration( - gradient: LinearGradient( - begin: Alignment.topRight, - end: Alignment.bottomLeft, - colors: [ - Theme.of(context).primaryColorLight, - Theme.of(context).primaryColorDark - ]), - boxShadow: const [ - BoxShadow( - offset: Offset(0, 0), - spreadRadius: 0, - blurRadius: 4, - color: Colors.black) + gradient: LinearGradient( + begin: Alignment.topRight, + end: Alignment.bottomLeft, + colors: [ + Theme.of(context).primaryColorLight, + Theme.of(context).primaryColorDark ], - borderRadius: const BorderRadius.only(bottomLeft: Radius.circular(80))), + ), + boxShadow: const [ + BoxShadow( + offset: Offset(0, 0), + spreadRadius: 0, + blurRadius: 4, + color: Colors.black, + ) + ], + borderRadius: const BorderRadius.only(bottomLeft: Radius.circular(80)), + ), child: const Image(image: AssetImage('lib/ui/assets/logo.png')), ); } diff --git a/lib/ui/components/reload_screen.dart b/lib/ui/components/reload_screen.dart index 6620b212..2de4cc02 100644 --- a/lib/ui/components/reload_screen.dart +++ b/lib/ui/components/reload_screen.dart @@ -15,8 +15,11 @@ class ReloadScreen extends StatelessWidget { child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - Text(error, - style: const TextStyle(fontSize: 16), textAlign: TextAlign.center), + Text( + error, + style: const TextStyle(fontSize: 16), + textAlign: TextAlign.center, + ), const SizedBox(height: 10), ElevatedButton( onPressed: reload, diff --git a/lib/ui/pages/login/components/login_button.dart b/lib/ui/pages/login/components/login_button.dart index fbe851bd..b0d1522d 100644 --- a/lib/ui/pages/login/components/login_button.dart +++ b/lib/ui/pages/login/components/login_button.dart @@ -9,12 +9,13 @@ class LoginButton extends StatelessWidget { Widget build(BuildContext context) { final presenter = Provider.of(context); return StreamBuilder( - stream: presenter.isFormValidStream, - builder: (context, snapshot) { - return ElevatedButton( - onPressed: snapshot.data == true ? presenter.auth : null, - child: Text(R.string.enter.toUpperCase()), - ); - }); + stream: presenter.isFormValidStream, + builder: (context, snapshot) { + return ElevatedButton( + onPressed: snapshot.data == true ? presenter.auth : null, + child: Text(R.string.enter.toUpperCase()), + ); + }, + ); } } diff --git a/lib/ui/pages/login/components/password_input.dart b/lib/ui/pages/login/components/password_input.dart index ae130e3f..54f4be79 100644 --- a/lib/ui/pages/login/components/password_input.dart +++ b/lib/ui/pages/login/components/password_input.dart @@ -9,18 +9,18 @@ class PasswordInput extends StatelessWidget { Widget build(BuildContext context) { final presenter = Provider.of(context); return StreamBuilder( - stream: presenter.passwordErrorStream, - builder: (context, snapshot) { - return TextFormField( - decoration: InputDecoration( - labelText: R.string.password, - icon: - Icon(Icons.lock, color: Theme.of(context).primaryColorLight), - errorText: snapshot.data?.description, - ), - obscureText: true, - onChanged: presenter.validatePassword, - ); - }); + stream: presenter.passwordErrorStream, + builder: (context, snapshot) { + return TextFormField( + decoration: InputDecoration( + labelText: R.string.password, + icon: Icon(Icons.lock, color: Theme.of(context).primaryColorLight), + errorText: snapshot.data?.description, + ), + obscureText: true, + onChanged: presenter.validatePassword, + ); + }, + ); } } diff --git a/lib/ui/pages/login/login_page.dart b/lib/ui/pages/login/login_page.dart index c7e150da..c4f96e39 100644 --- a/lib/ui/pages/login/login_page.dart +++ b/lib/ui/pages/login/login_page.dart @@ -39,14 +39,16 @@ class LoginPage extends StatelessWidget children: [ EmailInput(), Padding( - padding: const EdgeInsets.only(top: 8, bottom: 32), + padding: + const EdgeInsets.only(top: 8, bottom: 32), child: PasswordInput(), ), LoginButton(), TextButton.icon( - onPressed: presenter.goToSignUp, - icon: const Icon(Icons.person), - label: Text(R.string.addAccount)) + onPressed: presenter.goToSignUp, + icon: const Icon(Icons.person), + label: Text(R.string.addAccount), + ) ], ), ), diff --git a/lib/ui/pages/signup/components/signup_button.dart b/lib/ui/pages/signup/components/signup_button.dart index cd095f3c..1e88c983 100644 --- a/lib/ui/pages/signup/components/signup_button.dart +++ b/lib/ui/pages/signup/components/signup_button.dart @@ -9,12 +9,13 @@ class SignUpButton extends StatelessWidget { Widget build(BuildContext context) { final presenter = Provider.of(context); return StreamBuilder( - stream: presenter.isFormValidStream, - builder: (context, snapshot) { - return ElevatedButton( - onPressed: snapshot.data == true ? presenter.signUp : null, - child: Text(R.string.addAccount.toUpperCase()), - ); - }); + stream: presenter.isFormValidStream, + builder: (context, snapshot) { + return ElevatedButton( + onPressed: snapshot.data == true ? presenter.signUp : null, + child: Text(R.string.addAccount.toUpperCase()), + ); + }, + ); } } diff --git a/lib/ui/pages/signup/signup_page.dart b/lib/ui/pages/signup/signup_page.dart index 816981de..b2a39a08 100644 --- a/lib/ui/pages/signup/signup_page.dart +++ b/lib/ui/pages/signup/signup_page.dart @@ -44,14 +44,16 @@ class SignUpPage extends StatelessWidget ), PasswordInput(), Padding( - padding: const EdgeInsets.only(top: 8, bottom: 32), + padding: + const EdgeInsets.only(top: 8, bottom: 32), child: PasswordConfirmationInput(), ), SignUpButton(), TextButton.icon( - onPressed: presenter.goToLogin, - icon: const Icon(Icons.exit_to_app), - label: Text(R.string.login)) + onPressed: presenter.goToLogin, + icon: const Icon(Icons.exit_to_app), + label: Text(R.string.login), + ) ], ), ), diff --git a/lib/ui/pages/survey_result/components/survey_answer.dart b/lib/ui/pages/survey_result/components/survey_answer.dart index 89acc12b..df3560ee 100644 --- a/lib/ui/pages/survey_result/components/survey_answer.dart +++ b/lib/ui/pages/survey_result/components/survey_answer.dart @@ -18,21 +18,24 @@ class SurveyAnswer extends StatelessWidget { child: Text(viewModel.answer, style: const TextStyle(fontSize: 16)), ), ), - Text(viewModel.percent, - style: TextStyle( - fontSize: 16, - fontWeight: FontWeight.bold, - color: Theme.of(context).primaryColorDark, - )), + Text( + viewModel.percent, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: Theme.of(context).primaryColorDark, + ), + ), viewModel.isCurrentAnswer ? ActiveIcon() : DisabledIcon() ]; if (viewModel.image != null) { children.insert( - 0, - Image.network( - viewModel.image!, - width: 40, - )); + 0, + Image.network( + viewModel.image!, + width: 40, + ), + ); } return children; } diff --git a/lib/ui/pages/survey_result/components/survey_header.dart b/lib/ui/pages/survey_result/components/survey_header.dart index b2f8e04e..1d91699a 100644 --- a/lib/ui/pages/survey_result/components/survey_header.dart +++ b/lib/ui/pages/survey_result/components/survey_header.dart @@ -8,9 +8,10 @@ class SurveyHeader extends StatelessWidget { @override Widget build(BuildContext context) { return Container( - padding: const EdgeInsets.only(top: 40, bottom: 20, left: 20, right: 20), - decoration: - BoxDecoration(color: Theme.of(context).disabledColor.withAlpha(90)), - child: Text(question)); + padding: const EdgeInsets.only(top: 40, bottom: 20, left: 20, right: 20), + decoration: + BoxDecoration(color: Theme.of(context).disabledColor.withAlpha(90)), + child: Text(question), + ); } } diff --git a/lib/ui/pages/survey_result/components/survey_result.dart b/lib/ui/pages/survey_result/components/survey_result.dart index 503c1b01..d5b20aa2 100644 --- a/lib/ui/pages/survey_result/components/survey_result.dart +++ b/lib/ui/pages/survey_result/components/survey_result.dart @@ -18,9 +18,10 @@ class SurveyResult extends StatelessWidget { } final answer = viewModel.answers[index - 1]; return GestureDetector( - onTap: () => - answer.isCurrentAnswer ? null : onSave(answer: answer.answer), - child: SurveyAnswer(answer)); + onTap: () => + answer.isCurrentAnswer ? null : onSave(answer: answer.answer), + child: SurveyAnswer(answer), + ); }, itemCount: viewModel.answers.length + 1, ); diff --git a/lib/ui/pages/survey_result/survey_result_page.dart b/lib/ui/pages/survey_result/survey_result_page.dart index dfc1a5c5..e6f4ca2d 100644 --- a/lib/ui/pages/survey_result/survey_result_page.dart +++ b/lib/ui/pages/survey_result/survey_result_page.dart @@ -15,25 +15,33 @@ class SurveyResultPage extends StatelessWidget @override Widget build(BuildContext context) { return Scaffold( - appBar: AppBar(title: Text(R.string.surveyResult)), - body: Builder(builder: (context) { + appBar: AppBar(title: Text(R.string.surveyResult)), + body: Builder( + builder: (context) { handleLoading(context, presenter.isLoadingStream); handleSessionExpired(presenter.isSessionExpiredStream); presenter.loadData(); return StreamBuilder( - stream: presenter.surveyResultStream, - builder: (context, snapshot) { - if (snapshot.hasError) { - return ReloadScreen( - error: '${snapshot.error}', reload: presenter.loadData); - } - if (snapshot.hasData) { - return SurveyResult( - viewModel: snapshot.data!, onSave: presenter.save); - } - return const SizedBox.shrink(); - }); - })); + stream: presenter.surveyResultStream, + builder: (context, snapshot) { + if (snapshot.hasError) { + return ReloadScreen( + error: '${snapshot.error}', + reload: presenter.loadData, + ); + } + if (snapshot.hasData) { + return SurveyResult( + viewModel: snapshot.data!, + onSave: presenter.save, + ); + } + return const SizedBox.shrink(); + }, + ); + }, + ), + ); } } diff --git a/lib/ui/pages/surveys/components/survey_item.dart b/lib/ui/pages/surveys/components/survey_item.dart index 65b28993..4103ee37 100644 --- a/lib/ui/pages/surveys/components/survey_item.dart +++ b/lib/ui/pages/surveys/components/survey_item.dart @@ -18,26 +18,29 @@ class SurveyItem extends StatelessWidget { child: Container( padding: const EdgeInsets.all(20), decoration: BoxDecoration( - color: viewModel.didAnswer - ? Theme.of(context).secondaryHeaderColor - : Theme.of(context).primaryColorDark, - boxShadow: const [ - BoxShadow( - offset: Offset(0, 1), - spreadRadius: 0, - blurRadius: 2, - color: Colors.black) - ], - borderRadius: const BorderRadius.all(Radius.circular(10))), + color: viewModel.didAnswer + ? Theme.of(context).secondaryHeaderColor + : Theme.of(context).primaryColorDark, + boxShadow: const [ + BoxShadow( + offset: Offset(0, 1), + spreadRadius: 0, + blurRadius: 2, + color: Colors.black, + ) + ], + borderRadius: const BorderRadius.all(Radius.circular(10)), + ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( viewModel.date, style: const TextStyle( - color: Colors.white, - fontSize: 20, - fontWeight: FontWeight.bold), + color: Colors.white, + fontSize: 20, + fontWeight: FontWeight.bold, + ), ), const SizedBox(height: 20), Text( diff --git a/lib/ui/pages/surveys/survey_viewmodel.dart b/lib/ui/pages/surveys/survey_viewmodel.dart index c7382526..d49f7de1 100644 --- a/lib/ui/pages/surveys/survey_viewmodel.dart +++ b/lib/ui/pages/surveys/survey_viewmodel.dart @@ -9,9 +9,10 @@ class SurveyViewModel extends Equatable { @override List get props => [id, question, date, didAnswer]; - const SurveyViewModel( - {required this.id, - required this.question, - required this.date, - required this.didAnswer}); + const SurveyViewModel({ + required this.id, + required this.question, + required this.date, + required this.didAnswer, + }); } diff --git a/lib/ui/pages/surveys/surveys_page.dart b/lib/ui/pages/surveys/surveys_page.dart index 81e9ff06..1cd74d4d 100644 --- a/lib/ui/pages/surveys/surveys_page.dart +++ b/lib/ui/pages/surveys/surveys_page.dart @@ -33,20 +33,23 @@ class _SurveysPageState extends State widget.presenter.loadData(); return StreamBuilder>( - stream: widget.presenter.surveysStream, - builder: (context, snapshot) { - if (snapshot.hasError) { - return ReloadScreen( - error: '${snapshot.error}', - reload: widget.presenter.loadData); - } - if (snapshot.hasData) { - return ListenableProvider( - create: (_) => widget.presenter, - child: SurveyItems(snapshot.data!)); - } - return const SizedBox(height: 0); - }); + stream: widget.presenter.surveysStream, + builder: (context, snapshot) { + if (snapshot.hasError) { + return ReloadScreen( + error: '${snapshot.error}', + reload: widget.presenter.loadData, + ); + } + if (snapshot.hasData) { + return ListenableProvider( + create: (_) => widget.presenter, + child: SurveyItems(snapshot.data!), + ); + } + return const SizedBox(height: 0); + }, + ); }, ), ); diff --git a/lib/validation/validators/compare_fields_validation.dart b/lib/validation/validators/compare_fields_validation.dart index ced31360..d1d927b8 100644 --- a/lib/validation/validators/compare_fields_validation.dart +++ b/lib/validation/validators/compare_fields_validation.dart @@ -11,7 +11,10 @@ class CompareFieldsValidation extends Equatable implements FieldValidation { @override List get props => [field, fieldToCompare]; - const CompareFieldsValidation({required this.field, required this.fieldToCompare}); + const CompareFieldsValidation({ + required this.field, + required this.fieldToCompare, + }); @override ValidationError? validate(Map input) => input[field] != null && diff --git a/lib/validation/validators/email_validation.dart b/lib/validation/validators/email_validation.dart index fff9323c..2c2c17c4 100644 --- a/lib/validation/validators/email_validation.dart +++ b/lib/validation/validators/email_validation.dart @@ -15,7 +15,8 @@ class EmailValidation extends Equatable implements FieldValidation { @override ValidationError? validate(Map input) { final regex = RegExp( - r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+"); + r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+", + ); final isValid = input[field]?.isNotEmpty != true || regex.hasMatch(input[field]); return isValid ? null : ValidationError.invalidField; diff --git a/test/data/mocks/cache_storage_spy.dart b/test/data/mocks/cache_storage_spy.dart index 0ccd5661..24ffb9ae 100644 --- a/test/data/mocks/cache_storage_spy.dart +++ b/test/data/mocks/cache_storage_spy.dart @@ -9,8 +9,7 @@ class CacheStorageSpy extends Mock implements CacheStorage { } When mockFetchCall() => when(() => fetch(any())); - void mockFetch(dynamic json) => - mockFetchCall().thenAnswer((_) async => json); + void mockFetch(dynamic json) => mockFetchCall().thenAnswer((_) async => json); void mockFetchError() => mockFetchCall().thenThrow(Exception()); When mockDeleteCall() => when(() => delete(any())); diff --git a/test/data/mocks/http_client_spy.dart b/test/data/mocks/http_client_spy.dart index 7db265b6..c0034d4c 100644 --- a/test/data/mocks/http_client_spy.dart +++ b/test/data/mocks/http_client_spy.dart @@ -3,13 +3,15 @@ import 'package:fordev/data/http/http.dart'; import 'package:mocktail/mocktail.dart'; class HttpClientSpy extends Mock implements HttpClient { - When mockRequestCall() => when(() => request( - url: any(named: 'url'), - method: any(named: 'method'), - body: any(named: 'body'), - headers: any(named: 'headers'))); + When mockRequestCall() => when( + () => request( + url: any(named: 'url'), + method: any(named: 'method'), + body: any(named: 'body'), + headers: any(named: 'headers'), + ), + ); void mockRequest(dynamic data) => mockRequestCall().thenAnswer((_) async => data); - void mockRequestError(HttpError error) => - mockRequestCall().thenThrow(error); + void mockRequestError(HttpError error) => mockRequestCall().thenThrow(error); } diff --git a/test/data/mocks/secure_cache_storage_spy.dart b/test/data/mocks/secure_cache_storage_spy.dart index e7ea5eaf..5f02d555 100644 --- a/test/data/mocks/secure_cache_storage_spy.dart +++ b/test/data/mocks/secure_cache_storage_spy.dart @@ -13,8 +13,7 @@ class SecureCacheStorageSpy extends Mock } When mockFetchCall() => when(() => fetch(any())); - void mockFetch(String? data) => - mockFetchCall().thenAnswer((_) async => data); + void mockFetch(String? data) => mockFetchCall().thenAnswer((_) async => data); void mockFetchError() => mockFetchCall().thenThrow(Exception()); When mockDeleteCall() => when(() => delete(any())); diff --git a/test/data/usecases/add_account/remote_add_account_test.dart b/test/data/usecases/add_account/remote_add_account_test.dart index b33adbe7..0594efa0 100644 --- a/test/data/usecases/add_account/remote_add_account_test.dart +++ b/test/data/usecases/add_account/remote_add_account_test.dart @@ -30,12 +30,18 @@ void main() { test('Should call HttpClient with correct values', () async { await sut.add(params); - verify(() => httpClient.request(url: url, method: 'post', body: { + verify( + () => httpClient.request( + url: url, + method: 'post', + body: { 'name': params.name, 'email': params.email, 'password': params.password, 'passwordConfirmation': params.passwordConfirmation - })); + }, + ), + ); }); test('Should throw UnexpectedError if HttpClient returns 400', () async { diff --git a/test/data/usecases/authentication/remote_authentication_test.dart b/test/data/usecases/authentication/remote_authentication_test.dart index b439c994..2f1fd18c 100644 --- a/test/data/usecases/authentication/remote_authentication_test.dart +++ b/test/data/usecases/authentication/remote_authentication_test.dart @@ -30,10 +30,13 @@ void main() { test('Should call HttpClient with correct values', () async { await sut.auth(params); - verify(() => httpClient.request( + verify( + () => httpClient.request( url: url, method: 'post', - body: {'email': params.email, 'password': params.secret})); + body: {'email': params.email, 'password': params.secret}, + ), + ); }); test('Should throw UnexpectedError if HttpClient returns 400', () async { diff --git a/test/data/usecases/load_survey_result/local_load_survey_result_test.dart b/test/data/usecases/load_survey_result/local_load_survey_result_test.dart index 4156bd7a..eff059f5 100644 --- a/test/data/usecases/load_survey_result/local_load_survey_result_test.dart +++ b/test/data/usecases/load_survey_result/local_load_survey_result_test.dart @@ -37,23 +37,25 @@ void main() { final surveyResult = await sut.loadBySurvey(surveyId: surveyId); expect( - surveyResult, - SurveyResultEntity( - surveyId: data['surveyId'], - question: data['question'], - answers: [ - SurveyAnswerEntity( - image: data['answers'][0]['image'], - answer: data['answers'][0]['answer'], - percent: 40, - isCurrentAnswer: true, - ), - SurveyAnswerEntity( - answer: data['answers'][1]['answer'], - percent: 60, - isCurrentAnswer: false, - ) - ])); + surveyResult, + SurveyResultEntity( + surveyId: data['surveyId'], + question: data['question'], + answers: [ + SurveyAnswerEntity( + image: data['answers'][0]['image'], + answer: data['answers'][0]['answer'], + percent: 40, + isCurrentAnswer: true, + ), + SurveyAnswerEntity( + answer: data['answers'][1]['answer'], + percent: 60, + isCurrentAnswer: false, + ) + ], + ), + ); }); test('Should throw UnexpectedError if cache is empty', () async { @@ -144,9 +146,12 @@ void main() { await sut.save(surveyResult); - verify(() => cacheStorage.save( + verify( + () => cacheStorage.save( key: 'survey_result/${surveyResult.surveyId}', - value: json)).called(1); + value: json, + ), + ).called(1); }); test('Should throw UnexpectedError if save throws', () async { diff --git a/test/data/usecases/load_survey_result/remote_load_survey_result_test.dart b/test/data/usecases/load_survey_result/remote_load_survey_result_test.dart index 9e004956..e1bc4a3d 100644 --- a/test/data/usecases/load_survey_result/remote_load_survey_result_test.dart +++ b/test/data/usecases/load_survey_result/remote_load_survey_result_test.dart @@ -36,25 +36,27 @@ void main() { final result = await sut.loadBySurvey(surveyId: surveyId); expect( - result, - SurveyResultEntity( - surveyId: surveyResult['surveyId'], - question: surveyResult['question'], - answers: [ - SurveyAnswerEntity( - image: surveyResult['answers'][0]['image'], - answer: surveyResult['answers'][0]['answer'], - isCurrentAnswer: surveyResult['answers'][0] - ['isCurrentAccountAnswer'], - percent: surveyResult['answers'][0]['percent'], - ), - SurveyAnswerEntity( - answer: surveyResult['answers'][1]['answer'], - isCurrentAnswer: surveyResult['answers'][1] - ['isCurrentAccountAnswer'], - percent: surveyResult['answers'][1]['percent'], - ) - ])); + result, + SurveyResultEntity( + surveyId: surveyResult['surveyId'], + question: surveyResult['question'], + answers: [ + SurveyAnswerEntity( + image: surveyResult['answers'][0]['image'], + answer: surveyResult['answers'][0]['answer'], + isCurrentAnswer: surveyResult['answers'][0] + ['isCurrentAccountAnswer'], + percent: surveyResult['answers'][0]['percent'], + ), + SurveyAnswerEntity( + answer: surveyResult['answers'][1]['answer'], + isCurrentAnswer: surveyResult['answers'][1] + ['isCurrentAccountAnswer'], + percent: surveyResult['answers'][1]['percent'], + ) + ], + ), + ); }); test( diff --git a/test/data/usecases/load_surveys/local_load_surveys_test.dart b/test/data/usecases/load_surveys/local_load_surveys_test.dart index ad5042e9..97f56d50 100644 --- a/test/data/usecases/load_surveys/local_load_surveys_test.dart +++ b/test/data/usecases/load_surveys/local_load_surveys_test.dart @@ -35,15 +35,17 @@ void main() { expect(surveys, [ SurveyEntity( - id: data[0]['id'], - question: data[0]['question'], - dateTime: DateTime.utc(2020, 7, 20), - didAnswer: false), + id: data[0]['id'], + question: data[0]['question'], + dateTime: DateTime.utc(2020, 7, 20), + didAnswer: false, + ), SurveyEntity( - id: data[1]['id'], - question: data[1]['question'], - dateTime: DateTime.utc(2019, 2, 2), - didAnswer: true), + id: data[1]['id'], + question: data[1]['question'], + dateTime: DateTime.utc(2019, 2, 2), + didAnswer: true, + ), ]); }); diff --git a/test/data/usecases/save_survey_result/remote_save_survey_result_test.dart b/test/data/usecases/save_survey_result/remote_save_survey_result_test.dart index a8c183a9..59dfa4b7 100644 --- a/test/data/usecases/save_survey_result/remote_save_survey_result_test.dart +++ b/test/data/usecases/save_survey_result/remote_save_survey_result_test.dart @@ -29,33 +29,37 @@ void main() { test('Should call HttpClient with correct values', () async { await sut.save(answer: answer); - verify(() => - httpClient.request(url: url, method: 'put', body: {'answer': answer})); + verify( + () => + httpClient.request(url: url, method: 'put', body: {'answer': answer}), + ); }); test('Should return surveyResult on 200', () async { final result = await sut.save(answer: answer); expect( - result, - SurveyResultEntity( - surveyId: surveyResult['surveyId'], - question: surveyResult['question'], - answers: [ - SurveyAnswerEntity( - image: surveyResult['answers'][0]['image'], - answer: surveyResult['answers'][0]['answer'], - isCurrentAnswer: surveyResult['answers'][0] - ['isCurrentAccountAnswer'], - percent: surveyResult['answers'][0]['percent'], - ), - SurveyAnswerEntity( - answer: surveyResult['answers'][1]['answer'], - isCurrentAnswer: surveyResult['answers'][1] - ['isCurrentAccountAnswer'], - percent: surveyResult['answers'][1]['percent'], - ) - ])); + result, + SurveyResultEntity( + surveyId: surveyResult['surveyId'], + question: surveyResult['question'], + answers: [ + SurveyAnswerEntity( + image: surveyResult['answers'][0]['image'], + answer: surveyResult['answers'][0]['answer'], + isCurrentAnswer: surveyResult['answers'][0] + ['isCurrentAccountAnswer'], + percent: surveyResult['answers'][0]['percent'], + ), + SurveyAnswerEntity( + answer: surveyResult['answers'][1]['answer'], + isCurrentAnswer: surveyResult['answers'][1] + ['isCurrentAccountAnswer'], + percent: surveyResult['answers'][1]['percent'], + ) + ], + ), + ); }); test( diff --git a/test/domain/mocks/entity_factory.dart b/test/domain/mocks/entity_factory.dart index db3a3aed..14d70208 100644 --- a/test/domain/mocks/entity_factory.dart +++ b/test/domain/mocks/entity_factory.dart @@ -6,30 +6,35 @@ class EntityFactory { static AccountEntity makeAccount() => AccountEntity(token: faker.guid.guid()); static SurveyResultEntity makeSurveyResult() => SurveyResultEntity( - surveyId: faker.guid.guid(), - question: faker.lorem.sentence(), - answers: [ - SurveyAnswerEntity( - image: faker.internet.httpUrl(), - answer: faker.lorem.sentence(), - isCurrentAnswer: true, - percent: 40), - SurveyAnswerEntity( - answer: faker.lorem.sentence(), - isCurrentAnswer: false, - percent: 60) - ]); + surveyId: faker.guid.guid(), + question: faker.lorem.sentence(), + answers: [ + SurveyAnswerEntity( + image: faker.internet.httpUrl(), + answer: faker.lorem.sentence(), + isCurrentAnswer: true, + percent: 40, + ), + SurveyAnswerEntity( + answer: faker.lorem.sentence(), + isCurrentAnswer: false, + percent: 60, + ) + ], + ); static List makeSurveyList() => [ SurveyEntity( - id: faker.guid.guid(), - question: faker.randomGenerator.string(10), - dateTime: DateTime.utc(2020, 2, 2), - didAnswer: true), + id: faker.guid.guid(), + question: faker.randomGenerator.string(10), + dateTime: DateTime.utc(2020, 2, 2), + didAnswer: true, + ), SurveyEntity( - id: faker.guid.guid(), - question: faker.randomGenerator.string(10), - dateTime: DateTime.utc(2018, 12, 20), - didAnswer: false) + id: faker.guid.guid(), + question: faker.randomGenerator.string(10), + dateTime: DateTime.utc(2018, 12, 20), + didAnswer: false, + ) ]; } diff --git a/test/domain/mocks/params_factory.dart b/test/domain/mocks/params_factory.dart index c92deab5..c05d9d87 100644 --- a/test/domain/mocks/params_factory.dart +++ b/test/domain/mocks/params_factory.dart @@ -4,11 +4,14 @@ import 'package:faker/faker.dart'; class ParamsFactory { static AddAccountParams makeAddAccount() => AddAccountParams( - name: faker.person.name(), - email: faker.internet.email(), - password: faker.internet.password(), - passwordConfirmation: faker.internet.password()); + name: faker.person.name(), + email: faker.internet.email(), + password: faker.internet.password(), + passwordConfirmation: faker.internet.password(), + ); static AuthenticationParams makeAuthentication() => AuthenticationParams( - email: faker.internet.email(), secret: faker.internet.password()); + email: faker.internet.email(), + secret: faker.internet.password(), + ); } diff --git a/test/infra/http/http_adapter_test.dart b/test/infra/http/http_adapter_test.dart index 82c4612e..d8202305 100644 --- a/test/infra/http/http_adapter_test.dart +++ b/test/infra/http/http_adapter_test.dart @@ -34,25 +34,34 @@ void main() { test('Should call post with correct values', () async { await sut .request(url: url, method: 'post', body: {'any_key': 'any_value'}); - verify(() => client.post(Uri.parse(url), + verify( + () => client.post( + Uri.parse(url), headers: { 'content-type': 'application/json', 'accept': 'application/json' }, - body: '{"any_key":"any_value"}')); + body: '{"any_key":"any_value"}', + ), + ); await sut.request( - url: url, - method: 'post', - body: {'any_key': 'any_value'}, - headers: {'any_header': 'any_value'}); - verify(() => client.post(Uri.parse(url), + url: url, + method: 'post', + body: {'any_key': 'any_value'}, + headers: {'any_header': 'any_value'}, + ); + verify( + () => client.post( + Uri.parse(url), headers: { 'content-type': 'application/json', 'accept': 'application/json', 'any_header': 'any_value' }, - body: '{"any_key":"any_value"}')); + body: '{"any_key":"any_value"}', + ), + ); }); test('Should call post without body', () async { @@ -151,18 +160,31 @@ void main() { group('get', () { test('Should call get with correct values', () async { await sut.request(url: url, method: 'get'); - verify(() => client.get(Uri.parse(url), headers: { + verify( + () => client.get( + Uri.parse(url), + headers: { 'content-type': 'application/json', 'accept': 'application/json' - })); + }, + ), + ); await sut.request( - url: url, method: 'get', headers: {'any_header': 'any_value'}); - verify(() => client.get(Uri.parse(url), headers: { + url: url, + method: 'get', + headers: {'any_header': 'any_value'}, + ); + verify( + () => client.get( + Uri.parse(url), + headers: { 'content-type': 'application/json', 'accept': 'application/json', 'any_header': 'any_value' - })); + }, + ), + ); }); test('Should return data if get returns 200', () async { @@ -256,25 +278,34 @@ void main() { test('Should call put with correct values', () async { await sut .request(url: url, method: 'put', body: {'any_key': 'any_value'}); - verify(() => client.put(Uri.parse(url), + verify( + () => client.put( + Uri.parse(url), headers: { 'content-type': 'application/json', 'accept': 'application/json' }, - body: '{"any_key":"any_value"}')); + body: '{"any_key":"any_value"}', + ), + ); await sut.request( - url: url, - method: 'put', - body: {'any_key': 'any_value'}, - headers: {'any_header': 'any_value'}); - verify(() => client.put(Uri.parse(url), + url: url, + method: 'put', + body: {'any_key': 'any_value'}, + headers: {'any_header': 'any_value'}, + ); + verify( + () => client.put( + Uri.parse(url), headers: { 'content-type': 'application/json', 'accept': 'application/json', 'any_header': 'any_value' }, - body: '{"any_key":"any_value"}')); + body: '{"any_key":"any_value"}', + ), + ); }); test('Should call put without body', () async { diff --git a/test/infra/mocks/client_spy.dart b/test/infra/mocks/client_spy.dart index 2e98a9ef..89dfe3e6 100644 --- a/test/infra/mocks/client_spy.dart +++ b/test/infra/mocks/client_spy.dart @@ -8,15 +8,24 @@ class ClientSpy extends Mock implements Client { mockGet(200); } - When mockPostCall() => when(() => this - .post(any(), body: any(named: 'body'), headers: any(named: 'headers'))); + When mockPostCall() => when( + () => this.post( + any(), + body: any(named: 'body'), + headers: any(named: 'headers'), + ), + ); void mockPost(int statusCode, {String body = '{"any_key":"any_value"}'}) => mockPostCall().thenAnswer((_) async => Response(body, statusCode)); - void mockPostError() => - when(() => mockPostCall().thenThrow(Exception())); + void mockPostError() => when(() => mockPostCall().thenThrow(Exception())); - When mockPutCall() => when(() => this - .put(any(), body: any(named: 'body'), headers: any(named: 'headers'))); + When mockPutCall() => when( + () => this.put( + any(), + body: any(named: 'body'), + headers: any(named: 'headers'), + ), + ); void mockPut(int statusCode, {String body = '{"any_key":"any_value"}'}) => mockPutCall().thenAnswer((_) async => Response(body, statusCode)); void mockPutError() => when(() => mockPutCall().thenThrow(Exception())); diff --git a/test/infra/mocks/flutter_secure_storage_spy.dart b/test/infra/mocks/flutter_secure_storage_spy.dart index 780d2e49..cbd6343d 100644 --- a/test/infra/mocks/flutter_secure_storage_spy.dart +++ b/test/infra/mocks/flutter_secure_storage_spy.dart @@ -9,18 +9,15 @@ class FlutterSecureStorageSpy extends Mock implements FlutterSecureStorage { When mockDeleteCall() => when(() => delete(key: any(named: 'key'))); void mockDelete() => mockDeleteCall().thenAnswer((_) async => _); - void mockDeleteError() => - when(() => mockDeleteCall().thenThrow(Exception())); + void mockDeleteError() => when(() => mockDeleteCall().thenThrow(Exception())); When mockSaveCall() => when( - () => write(key: any(named: 'key'), value: any(named: 'value'))); + () => write(key: any(named: 'key'), value: any(named: 'value')), + ); void mockSave() => mockSaveCall().thenAnswer((_) async => _); - void mockSaveError() => - when(() => mockSaveCall().thenThrow(Exception())); + void mockSaveError() => when(() => mockSaveCall().thenThrow(Exception())); When mockFetchCall() => when(() => read(key: any(named: 'key'))); - void mockFetch(String? data) => - mockFetchCall().thenAnswer((_) async => data); - void mockFetchError() => - when(() => mockFetchCall().thenThrow(Exception())); + void mockFetch(String? data) => mockFetchCall().thenAnswer((_) async => data); + void mockFetchError() => when(() => mockFetchCall().thenThrow(Exception())); } diff --git a/test/infra/mocks/local_storage_spy.dart b/test/infra/mocks/local_storage_spy.dart index 3b830441..9b38c1ec 100644 --- a/test/infra/mocks/local_storage_spy.dart +++ b/test/infra/mocks/local_storage_spy.dart @@ -9,17 +9,13 @@ class LocalStorageSpy extends Mock implements LocalStorage { When mockDeleteCall() => when(() => deleteItem(any())); void mockDelete() => mockDeleteCall().thenAnswer((_) async => _); - void mockDeleteError() => - when(() => mockDeleteCall().thenThrow(Exception())); + void mockDeleteError() => when(() => mockDeleteCall().thenThrow(Exception())); When mockSaveCall() => when(() => setItem(any(), any())); void mockSave() => mockSaveCall().thenAnswer((_) async => _); - void mockSaveError() => - when(() => mockSaveCall().thenThrow(Exception())); + void mockSaveError() => when(() => mockSaveCall().thenThrow(Exception())); When mockFetchCall() => when(() => getItem(any())); - void mockFetch(dynamic data) => - mockFetchCall().thenAnswer((_) async => data); - void mockFetchError() => - when(() => mockFetchCall().thenThrow(Exception())); + void mockFetch(dynamic data) => mockFetchCall().thenAnswer((_) async => data); + void mockFetchError() => when(() => mockFetchCall().thenThrow(Exception())); } diff --git a/test/main/decorators/authorize_http_client_decorator_test.dart b/test/main/decorators/authorize_http_client_decorator_test.dart index 2e58c488..72b4df31 100644 --- a/test/main/decorators/authorize_http_client_decorator_test.dart +++ b/test/main/decorators/authorize_http_client_decorator_test.dart @@ -28,9 +28,10 @@ void main() { httpClient = HttpClientSpy(); httpClient.mockRequest(httpResponse); sut = AuthorizeHttpClientDecorator( - fetchSecureCacheStorage: secureCacheStorage, - deleteSecureCacheStorage: secureCacheStorage, - decoratee: httpClient); + fetchSecureCacheStorage: secureCacheStorage, + deleteSecureCacheStorage: secureCacheStorage, + decoratee: httpClient, + ); }); test('Should call FetchSecureCacheStorage with correct key', () async { @@ -41,23 +42,29 @@ void main() { test('Should call decoratee with access token on header', () async { await sut.request(url: url, method: method, body: body); - verify(() => httpClient.request( + verify( + () => httpClient.request( url: url, method: method, body: body, - headers: {'x-access-token': token})).called(1); + headers: {'x-access-token': token}, + ), + ).called(1); await sut.request( + url: url, + method: method, + body: body, + headers: {'any_header': 'any_value'}, + ); + verify( + () => httpClient.request( url: url, method: method, body: body, - headers: {'any_header': 'any_value'}); - verify(() => httpClient.request( - url: url, - method: method, - body: body, - headers: {'x-access-token': token, 'any_header': 'any_value'})) - .called(1); + headers: {'x-access-token': token, 'any_header': 'any_value'}, + ), + ).called(1); }); test('Should return same result as decoratee', () async { diff --git a/test/main/factories/pages/login/signup_validation_factory_test.dart b/test/main/factories/pages/login/signup_validation_factory_test.dart index 585a1524..a387960f 100644 --- a/test/main/factories/pages/login/signup_validation_factory_test.dart +++ b/test/main/factories/pages/login/signup_validation_factory_test.dart @@ -16,7 +16,9 @@ void main() { const MinLengthValidation(field: 'password', size: 3), const RequiredFieldValidation('passwordConfirmation'), const CompareFieldsValidation( - field: 'passwordConfirmation', fieldToCompare: 'password') + field: 'passwordConfirmation', + fieldToCompare: 'password', + ) ]); }); } diff --git a/test/presentation/mocks/validation_spy.dart b/test/presentation/mocks/validation_spy.dart index 49fe3ebc..65842ba3 100644 --- a/test/presentation/mocks/validation_spy.dart +++ b/test/presentation/mocks/validation_spy.dart @@ -7,9 +7,12 @@ class ValidationSpy extends Mock implements Validation { mockValidation(); } - When mockValidationCall(String? field) => when(() => validate( - field: field ?? any(named: 'field'), - input: any(named: 'input'))); + When mockValidationCall(String? field) => when( + () => validate( + field: field ?? any(named: 'field'), + input: any(named: 'input'), + ), + ); void mockValidation({String? field}) => mockValidationCall(field).thenReturn(null); void mockValidationError({String? field, required ValidationError value}) => diff --git a/test/presentation/presenters/getx_login_presenter_test.dart b/test/presentation/presenters/getx_login_presenter_test.dart index 2eb73583..9266f22d 100644 --- a/test/presentation/presenters/getx_login_presenter_test.dart +++ b/test/presentation/presenters/getx_login_presenter_test.dart @@ -30,9 +30,10 @@ void main() { authentication.mockAuthentication(account); saveCurrentAccount = SaveCurrentAccountSpy(); sut = GetxLoginPresenter( - validation: validation, - authentication: authentication, - saveCurrentAccount: saveCurrentAccount); + validation: validation, + authentication: authentication, + saveCurrentAccount: saveCurrentAccount, + ); }); setUpAll(() { @@ -115,7 +116,9 @@ void main() { test('Should disable form button if any field is invalid', () { validation.mockValidationError( - field: 'email', value: ValidationError.invalidField); + field: 'email', + value: ValidationError.invalidField, + ); sut.isFormValidStream .listen(expectAsync1((isValid) => expect(isValid, false))); @@ -138,8 +141,10 @@ void main() { await sut.auth(); - verify(() => authentication - .auth(AuthenticationParams(email: email, secret: password))).called(1); + verify( + () => authentication + .auth(AuthenticationParams(email: email, secret: password)), + ).called(1); }); test('Should call SaveCurrentAccount with correct value', () async { @@ -189,7 +194,9 @@ void main() { expectLater(sut.isLoadingStream, emitsInOrder([true, false])); expectLater( - sut.mainErrorStream, emitsInOrder([null, UIError.invalidCredentials])); + sut.mainErrorStream, + emitsInOrder([null, UIError.invalidCredentials]), + ); await sut.auth(); }); diff --git a/test/presentation/presenters/getx_signup_presenter_test.dart b/test/presentation/presenters/getx_signup_presenter_test.dart index f50a3238..45826540 100644 --- a/test/presentation/presenters/getx_signup_presenter_test.dart +++ b/test/presentation/presenters/getx_signup_presenter_test.dart @@ -34,9 +34,10 @@ void main() { addAccount.mockAddAccount(account); saveCurrentAccount = SaveCurrentAccountSpy(); sut = GetxSignUpPresenter( - validation: validation, - addAccount: addAccount, - saveCurrentAccount: saveCurrentAccount); + validation: validation, + addAccount: addAccount, + saveCurrentAccount: saveCurrentAccount, + ); }); setUpAll(() { @@ -195,9 +196,9 @@ void main() { sut.validatePasswordConfirmation(passwordConfirmation); - verify(() => - validation.validate(field: 'passwordConfirmation', input: formData)) - .called(1); + verify( + () => validation.validate(field: 'passwordConfirmation', input: formData), + ).called(1); }); test('Should emit invalidFieldError if passwordConfirmation is invalid', () { @@ -255,11 +256,16 @@ void main() { await sut.signUp(); - verify(() => addAccount.add(AddAccountParams( - name: name, - email: email, - password: password, - passwordConfirmation: passwordConfirmation))).called(1); + verify( + () => addAccount.add( + AddAccountParams( + name: name, + email: email, + password: password, + passwordConfirmation: passwordConfirmation, + ), + ), + ).called(1); }); test('Should call SaveCurrentAccount with correct value', () async { diff --git a/test/presentation/presenters/getx_survey_result_presenter_test.dart b/test/presentation/presenters/getx_survey_result_presenter_test.dart index 5e39b57d..302cb90c 100644 --- a/test/presentation/presenters/getx_survey_result_presenter_test.dart +++ b/test/presentation/presenters/getx_survey_result_presenter_test.dart @@ -22,19 +22,22 @@ void main() { SurveyResultViewModel mapToViewModel(SurveyResultEntity entity) => SurveyResultViewModel( - surveyId: entity.surveyId, - question: entity.question, - answers: [ - SurveyAnswerViewModel( - image: entity.answers[0].image, - answer: entity.answers[0].answer, - isCurrentAnswer: entity.answers[0].isCurrentAnswer, - percent: '${entity.answers[0].percent}%'), - SurveyAnswerViewModel( - answer: entity.answers[1].answer, - isCurrentAnswer: entity.answers[1].isCurrentAnswer, - percent: '${entity.answers[1].percent}%') - ]); + surveyId: entity.surveyId, + question: entity.question, + answers: [ + SurveyAnswerViewModel( + image: entity.answers[0].image, + answer: entity.answers[0].answer, + isCurrentAnswer: entity.answers[0].isCurrentAnswer, + percent: '${entity.answers[0].percent}%', + ), + SurveyAnswerViewModel( + answer: entity.answers[1].answer, + isCurrentAnswer: entity.answers[1].isCurrentAnswer, + percent: '${entity.answers[1].percent}%', + ) + ], + ); setUp(() { saveResult = EntityFactory.makeSurveyResult(); @@ -46,9 +49,10 @@ void main() { saveSurveyResult = SaveSurveyResultSpy(); saveSurveyResult.mockSave(saveResult); sut = GetxSurveyResultPresenter( - loadSurveyResult: loadSurveyResult, - saveSurveyResult: saveSurveyResult, - surveyId: surveyId); + loadSurveyResult: loadSurveyResult, + saveSurveyResult: saveSurveyResult, + surveyId: surveyId, + ); }); group('loadData', () { @@ -61,7 +65,8 @@ void main() { test('Should emit correct events on success', () async { expectLater(sut.isLoadingStream, emitsInOrder([true, false])); sut.surveyResultStream.listen( - expectAsync1((result) => expect(result, mapToViewModel(loadResult)))); + expectAsync1((result) => expect(result, mapToViewModel(loadResult))), + ); await sut.loadData(); }); @@ -70,9 +75,12 @@ void main() { loadSurveyResult.mockLoadError(DomainError.unexpected); expectLater(sut.isLoadingStream, emitsInOrder([true, false])); - sut.surveyResultStream.listen(null, - onError: expectAsync1( - (error) => expect(error, UIError.unexpected.description))); + sut.surveyResultStream.listen( + null, + onError: expectAsync1( + (error) => expect(error, UIError.unexpected.description), + ), + ); await sut.loadData(); }); @@ -97,11 +105,12 @@ void main() { test('Should emit correct events on success', () async { expectLater(sut.isLoadingStream, emitsInOrder([true, false])); expectLater( - sut.surveyResultStream, - emitsInOrder([ - mapToViewModel(loadResult), - mapToViewModel(saveResult), - ])); + sut.surveyResultStream, + emitsInOrder([ + mapToViewModel(loadResult), + mapToViewModel(saveResult), + ]), + ); await sut.loadData(); await sut.save(answer: answer); @@ -111,9 +120,12 @@ void main() { saveSurveyResult.mockSaveError(DomainError.unexpected); expectLater(sut.isLoadingStream, emitsInOrder([true, false])); - sut.surveyResultStream.listen(null, - onError: expectAsync1( - (error) => expect(error, UIError.unexpected.description))); + sut.surveyResultStream.listen( + null, + onError: expectAsync1( + (error) => expect(error, UIError.unexpected.description), + ), + ); await sut.save(answer: answer); }); diff --git a/test/presentation/presenters/getx_surveys_presenter_test.dart b/test/presentation/presenters/getx_surveys_presenter_test.dart index 1cc17ea4..5f61b3ed 100644 --- a/test/presentation/presenters/getx_surveys_presenter_test.dart +++ b/test/presentation/presenters/getx_surveys_presenter_test.dart @@ -30,18 +30,24 @@ void main() { test('Should emit correct events on success', () async { expectLater(sut.isLoadingStream, emitsInOrder([true, false])); - sut.surveysStream.listen(expectAsync1((surveys) => expect(surveys, [ + sut.surveysStream.listen( + expectAsync1( + (surveys) => expect(surveys, [ SurveyViewModel( - id: surveys[0].id, - question: surveys[0].question, - date: '02 Feb 2020', - didAnswer: surveys[0].didAnswer), + id: surveys[0].id, + question: surveys[0].question, + date: '02 Feb 2020', + didAnswer: surveys[0].didAnswer, + ), SurveyViewModel( - id: surveys[1].id, - question: surveys[1].question, - date: '20 Dec 2018', - didAnswer: surveys[1].didAnswer), - ]))); + id: surveys[1].id, + question: surveys[1].question, + date: '20 Dec 2018', + didAnswer: surveys[1].didAnswer, + ), + ]), + ), + ); await sut.loadData(); }); @@ -50,9 +56,12 @@ void main() { loadSurveys.mockLoadError(DomainError.unexpected); expectLater(sut.isLoadingStream, emitsInOrder([true, false])); - sut.surveysStream.listen(null, - onError: expectAsync1( - (error) => expect(error, UIError.unexpected.description))); + sut.surveysStream.listen( + null, + onError: expectAsync1( + (error) => expect(error, UIError.unexpected.description), + ), + ); await sut.loadData(); }); @@ -67,8 +76,10 @@ void main() { }); test('Should go to SurveyResultPage on survey click', () async { - expectLater(sut.navigateToStream, - emitsInOrder(['/survey_result/any_route', '/survey_result/any_route'])); + expectLater( + sut.navigateToStream, + emitsInOrder(['/survey_result/any_route', '/survey_result/any_route']), + ); sut.goToSurveyResult('any_route'); sut.goToSurveyResult('any_route'); diff --git a/test/ui/helpers/helpers.dart b/test/ui/helpers/helpers.dart index 29a8df95..7ae00bcc 100644 --- a/test/ui/helpers/helpers.dart +++ b/test/ui/helpers/helpers.dart @@ -5,13 +5,20 @@ Widget makePage({required String path, required Widget Function() page}) { final getPages = [ GetPage(name: path, page: page), GetPage( - name: '/any_route', - page: () => Scaffold( - appBar: AppBar(title: const Text('any title')), body: const Text('fake page'))) + name: '/any_route', + page: () => Scaffold( + appBar: AppBar(title: const Text('any title')), + body: const Text('fake page'), + ), + ) ]; if (path != '/login') { - getPages.add(GetPage( - name: '/login', page: () => const Scaffold(body: Text('fake login')))); + getPages.add( + GetPage( + name: '/login', + page: () => const Scaffold(body: Text('fake login')), + ), + ); } return GetMaterialApp( initialRoute: path, diff --git a/test/ui/mocks/login_presenter_spy.dart b/test/ui/mocks/login_presenter_spy.dart index d7c59836..89645286 100644 --- a/test/ui/mocks/login_presenter_spy.dart +++ b/test/ui/mocks/login_presenter_spy.dart @@ -14,18 +14,14 @@ class LoginPresenterSpy extends Mock implements LoginPresenter { LoginPresenterSpy() { when(() => auth()).thenAnswer((_) async => _); - when(() => emailErrorStream) - .thenAnswer((_) => emailErrorController.stream); + when(() => emailErrorStream).thenAnswer((_) => emailErrorController.stream); when(() => passwordErrorStream) .thenAnswer((_) => passwordErrorController.stream); - when(() => mainErrorStream) - .thenAnswer((_) => mainErrorController.stream); - when(() => navigateToStream) - .thenAnswer((_) => navigateToController.stream); + when(() => mainErrorStream).thenAnswer((_) => mainErrorController.stream); + when(() => navigateToStream).thenAnswer((_) => navigateToController.stream); when(() => isFormValidStream) .thenAnswer((_) => isFormValidController.stream); - when(() => isLoadingStream) - .thenAnswer((_) => isLoadingController.stream); + when(() => isLoadingStream).thenAnswer((_) => isLoadingController.stream); } void emitEmailError(UIError error) => emailErrorController.add(error); diff --git a/test/ui/mocks/signup_presenter_spy.dart b/test/ui/mocks/signup_presenter_spy.dart index 10056e5b..014a4bf6 100644 --- a/test/ui/mocks/signup_presenter_spy.dart +++ b/test/ui/mocks/signup_presenter_spy.dart @@ -16,22 +16,17 @@ class SignUpPresenterSpy extends Mock implements SignUpPresenter { SignUpPresenterSpy() { when(() => signUp()).thenAnswer((_) async => _); - when(() => nameErrorStream) - .thenAnswer((_) => nameErrorController.stream); - when(() => emailErrorStream) - .thenAnswer((_) => emailErrorController.stream); + when(() => nameErrorStream).thenAnswer((_) => nameErrorController.stream); + when(() => emailErrorStream).thenAnswer((_) => emailErrorController.stream); when(() => passwordErrorStream) .thenAnswer((_) => passwordErrorController.stream); when(() => passwordConfirmationErrorStream) .thenAnswer((_) => passwordConfirmationErrorController.stream); - when(() => mainErrorStream) - .thenAnswer((_) => mainErrorController.stream); - when(() => navigateToStream) - .thenAnswer((_) => navigateToController.stream); + when(() => mainErrorStream).thenAnswer((_) => mainErrorController.stream); + when(() => navigateToStream).thenAnswer((_) => navigateToController.stream); when(() => isFormValidStream) .thenAnswer((_) => isFormValidController.stream); - when(() => isLoadingStream) - .thenAnswer((_) => isLoadingController.stream); + when(() => isLoadingStream).thenAnswer((_) => isLoadingController.stream); } void emitNameError(UIError error) => nameErrorController.add(error); diff --git a/test/ui/mocks/splash_presenter_spy.dart b/test/ui/mocks/splash_presenter_spy.dart index 80db4259..06b66d74 100644 --- a/test/ui/mocks/splash_presenter_spy.dart +++ b/test/ui/mocks/splash_presenter_spy.dart @@ -9,8 +9,7 @@ class SplashPresenterSpy extends Mock implements SplashPresenter { SplashPresenterSpy() { when(() => checkAccount(durationInSeconds: any(named: 'durationInSeconds'))) .thenAnswer((_) async => _); - when(() => navigateToStream) - .thenAnswer((_) => navigateToController.stream); + when(() => navigateToStream).thenAnswer((_) => navigateToController.stream); } void emitNavigateTo(String route) => navigateToController.add(route); diff --git a/test/ui/mocks/survey_result_presenter_spy.dart b/test/ui/mocks/survey_result_presenter_spy.dart index dffe846b..74bc7a07 100644 --- a/test/ui/mocks/survey_result_presenter_spy.dart +++ b/test/ui/mocks/survey_result_presenter_spy.dart @@ -10,14 +10,12 @@ class SurveyResultPresenterSpy extends Mock implements SurveyResultPresenter { SurveyResultPresenterSpy() { when(() => loadData()).thenAnswer((_) async => _); - when(() => save(answer: any(named: 'answer'))) - .thenAnswer((_) async => _); + when(() => save(answer: any(named: 'answer'))).thenAnswer((_) async => _); when(() => surveyResultStream) .thenAnswer((_) => surveyResultController.stream); when(() => isSessionExpiredStream) .thenAnswer((_) => isSessionExpiredController.stream); - when(() => isLoadingStream) - .thenAnswer((_) => isLoadingController.stream); + when(() => isLoadingStream).thenAnswer((_) => isLoadingController.stream); } void emitSurveyResult(SurveyResultViewModel? data) => diff --git a/test/ui/mocks/surveys_presenter_spy.dart b/test/ui/mocks/surveys_presenter_spy.dart index 14190fa6..4343ceac 100644 --- a/test/ui/mocks/surveys_presenter_spy.dart +++ b/test/ui/mocks/surveys_presenter_spy.dart @@ -14,10 +14,8 @@ class SurveysPresenterSpy extends Mock implements SurveysPresenter { when(() => surveysStream).thenAnswer((_) => surveysController.stream); when(() => isSessionExpiredStream) .thenAnswer((_) => isSessionExpiredController.stream); - when(() => isLoadingStream) - .thenAnswer((_) => isLoadingController.stream); - when(() => navigateToStream) - .thenAnswer((_) => navigateToController.stream); + when(() => isLoadingStream).thenAnswer((_) => isLoadingController.stream); + when(() => navigateToStream).thenAnswer((_) => navigateToController.stream); } void emitSurveys(List data) => surveysController.add(data); diff --git a/test/ui/mocks/viewmodel_factory.dart b/test/ui/mocks/viewmodel_factory.dart index 3b44093d..afaff237 100644 --- a/test/ui/mocks/viewmodel_factory.dart +++ b/test/ui/mocks/viewmodel_factory.dart @@ -2,20 +2,36 @@ import 'package:fordev/ui/pages/pages.dart'; class ViewModelFactory { static SurveyResultViewModel makeSurveyResult() => - const SurveyResultViewModel(surveyId: 'Any id', question: 'Question', answers: [ - SurveyAnswerViewModel( + const SurveyResultViewModel( + surveyId: 'Any id', + question: 'Question', + answers: [ + SurveyAnswerViewModel( image: 'Image 0', answer: 'Answer 0', isCurrentAnswer: true, - percent: '60%'), - SurveyAnswerViewModel( - answer: 'Answer 1', isCurrentAnswer: false, percent: '40%') - ]); + percent: '60%', + ), + SurveyAnswerViewModel( + answer: 'Answer 1', + isCurrentAnswer: false, + percent: '40%', + ) + ], + ); static List makeSurveyList() => [ const SurveyViewModel( - id: '1', question: 'Question 1', date: 'Date 1', didAnswer: true), + id: '1', + question: 'Question 1', + date: 'Date 1', + didAnswer: true, + ), const SurveyViewModel( - id: '2', question: 'Question 2', date: 'Date 2', didAnswer: false), + id: '2', + question: 'Question 2', + date: 'Date 2', + didAnswer: false, + ), ]; } diff --git a/test/ui/pages/login_page_test.dart b/test/ui/pages/login_page_test.dart index 13741244..1b078fdd 100644 --- a/test/ui/pages/login_page_test.dart +++ b/test/ui/pages/login_page_test.dart @@ -63,9 +63,12 @@ void main() { await tester.pump(); expect( - find.descendant( - of: find.bySemanticsLabel('Email'), matching: find.byType(Text)), - findsOneWidget); + find.descendant( + of: find.bySemanticsLabel('Email'), + matching: find.byType(Text), + ), + findsOneWidget, + ); }); testWidgets('Should present error if password is empty', @@ -86,9 +89,12 @@ void main() { await tester.pump(); expect( - find.descendant( - of: find.bySemanticsLabel('Senha'), matching: find.byType(Text)), - findsOneWidget); + find.descendant( + of: find.bySemanticsLabel('Senha'), + matching: find.byType(Text), + ), + findsOneWidget, + ); }); testWidgets('Should enable button if form is valid', @@ -160,8 +166,10 @@ void main() { presenter.emitMainError(UIError.unexpected); await tester.pump(); - expect(find.text('Algo errado aconteceu. Tente novamente em breve.'), - findsOneWidget); + expect( + find.text('Algo errado aconteceu. Tente novamente em breve.'), + findsOneWidget, + ); }); testWidgets('Should change page', (WidgetTester tester) async { diff --git a/test/ui/pages/signup_page_test.dart b/test/ui/pages/signup_page_test.dart index 93b8ef0f..9c876cf2 100644 --- a/test/ui/pages/signup_page_test.dart +++ b/test/ui/pages/signup_page_test.dart @@ -15,7 +15,8 @@ void main() { Future loadPage(WidgetTester tester) async { presenter = SignUpPresenterSpy(); await tester.pumpWidget( - makePage(path: '/signup', page: () => SignUpPage(presenter))); + makePage(path: '/signup', page: () => SignUpPage(presenter)), + ); } tearDown(() { @@ -56,9 +57,12 @@ void main() { presenter.emitEmailValid(); await tester.pump(); expect( - find.descendant( - of: find.bySemanticsLabel('Email'), matching: find.byType(Text)), - findsOneWidget); + find.descendant( + of: find.bySemanticsLabel('Email'), + matching: find.byType(Text), + ), + findsOneWidget, + ); }); testWidgets('Should present name error', (WidgetTester tester) async { @@ -75,9 +79,12 @@ void main() { presenter.emitNameValid(); await tester.pump(); expect( - find.descendant( - of: find.bySemanticsLabel('Nome'), matching: find.byType(Text)), - findsOneWidget); + find.descendant( + of: find.bySemanticsLabel('Nome'), + matching: find.byType(Text), + ), + findsOneWidget, + ); }); testWidgets('Should present password error', (WidgetTester tester) async { @@ -94,9 +101,12 @@ void main() { presenter.emitPasswordValid(); await tester.pump(); expect( - find.descendant( - of: find.bySemanticsLabel('Senha'), matching: find.byType(Text)), - findsOneWidget); + find.descendant( + of: find.bySemanticsLabel('Senha'), + matching: find.byType(Text), + ), + findsOneWidget, + ); }); testWidgets('Should present passwordConfirmation error', @@ -114,10 +124,12 @@ void main() { presenter.emitPasswordConfirmationValid(); await tester.pump(); expect( - find.descendant( - of: find.bySemanticsLabel('Confirmar senha'), - matching: find.byType(Text)), - findsOneWidget); + find.descendant( + of: find.bySemanticsLabel('Confirmar senha'), + matching: find.byType(Text), + ), + findsOneWidget, + ); }); testWidgets('Should enable button if form is valid', @@ -188,8 +200,10 @@ void main() { presenter.emitMainError(UIError.unexpected); await tester.pump(); - expect(find.text('Algo errado aconteceu. Tente novamente em breve.'), - findsOneWidget); + expect( + find.text('Algo errado aconteceu. Tente novamente em breve.'), + findsOneWidget, + ); }); testWidgets('Should change page', (WidgetTester tester) async { diff --git a/test/ui/pages/splash_page_test.dart b/test/ui/pages/splash_page_test.dart index 63f81a82..625a9133 100644 --- a/test/ui/pages/splash_page_test.dart +++ b/test/ui/pages/splash_page_test.dart @@ -13,7 +13,8 @@ void main() { Future loadPage(WidgetTester tester) async { presenter = SplashPresenterSpy(); await tester.pumpWidget( - makePage(path: '/', page: () => SplashPage(presenter: presenter))); + makePage(path: '/', page: () => SplashPage(presenter: presenter)), + ); } tearDown(() { diff --git a/test/ui/pages/survey_result_page_test.dart b/test/ui/pages/survey_result_page_test.dart index 05ace03b..910eb28e 100644 --- a/test/ui/pages/survey_result_page_test.dart +++ b/test/ui/pages/survey_result_page_test.dart @@ -59,8 +59,10 @@ void main() { presenter.emitSurveyResultError(UIError.unexpected.description); await tester.pump(); - expect(find.text('Algo errado aconteceu. Tente novamente em breve.'), - findsOneWidget); + expect( + find.text('Algo errado aconteceu. Tente novamente em breve.'), + findsOneWidget, + ); expect(find.text('Recarregar'), findsOneWidget); expect(find.text('Question'), findsNothing); }); @@ -85,8 +87,10 @@ void main() { await tester.pump(); }); - expect(find.text('Algo errado aconteceu. Tente novamente em breve.'), - findsNothing); + expect( + find.text('Algo errado aconteceu. Tente novamente em breve.'), + findsNothing, + ); expect(find.text('Recarregar'), findsNothing); expect(find.text('Question'), findsOneWidget); expect(find.text('Answer 0'), findsOneWidget); diff --git a/test/ui/pages/surveys_page_test.dart b/test/ui/pages/surveys_page_test.dart index cb5cc788..7908769d 100644 --- a/test/ui/pages/surveys_page_test.dart +++ b/test/ui/pages/surveys_page_test.dart @@ -14,7 +14,8 @@ void main() { Future loadPage(WidgetTester tester) async { presenter = SurveysPresenterSpy(); await tester.pumpWidget( - makePage(path: '/surveys', page: () => SurveysPage(presenter))); + makePage(path: '/surveys', page: () => SurveysPage(presenter)), + ); } tearDown(() { @@ -61,8 +62,10 @@ void main() { presenter.emitSurveysError(UIError.unexpected.description); await tester.pump(); - expect(find.text('Algo errado aconteceu. Tente novamente em breve.'), - findsOneWidget); + expect( + find.text('Algo errado aconteceu. Tente novamente em breve.'), + findsOneWidget, + ); expect(find.text('Recarregar'), findsOneWidget); expect(find.text('Question 1'), findsNothing); }); @@ -74,8 +77,10 @@ void main() { presenter.emitSurveys(ViewModelFactory.makeSurveyList()); await tester.pump(); - expect(find.text('Algo errado aconteceu. Tente novamente em breve.'), - findsNothing); + expect( + find.text('Algo errado aconteceu. Tente novamente em breve.'), + findsNothing, + ); expect(find.text('Recarregar'), findsNothing); expect(find.text('Question 1'), findsWidgets); expect(find.text('Question 2'), findsWidgets); diff --git a/test/validation/validators/compare_fields_validation_test.dart b/test/validation/validators/compare_fields_validation_test.dart index 08fead97..cdbf44ca 100644 --- a/test/validation/validators/compare_fields_validation_test.dart +++ b/test/validation/validators/compare_fields_validation_test.dart @@ -8,7 +8,9 @@ void main() { setUp(() { sut = const CompareFieldsValidation( - field: 'any_field', fieldToCompare: 'other_field'); + field: 'any_field', + fieldToCompare: 'other_field', + ); }); test('Should return null on invalid cases', () { diff --git a/test/validation/validators/email_validation_test.dart b/test/validation/validators/email_validation_test.dart index 29b9111e..8ba5c1b7 100644 --- a/test/validation/validators/email_validation_test.dart +++ b/test/validation/validators/email_validation_test.dart @@ -24,7 +24,9 @@ void main() { }); test('Should return error if email is invalid', () { - expect(sut.validate({'any_field': 'rodrigo.manguinho'}), - ValidationError.invalidField); + expect( + sut.validate({'any_field': 'rodrigo.manguinho'}), + ValidationError.invalidField, + ); }); } diff --git a/test/validation/validators/min_length_validation_test.dart b/test/validation/validators/min_length_validation_test.dart index 42ac9857..97508709 100644 --- a/test/validation/validators/min_length_validation_test.dart +++ b/test/validation/validators/min_length_validation_test.dart @@ -21,18 +21,23 @@ void main() { }); test('Should return error if value is less than min size', () { - expect(sut.validate({'any_field': faker.randomGenerator.string(4, min: 1)}), - ValidationError.invalidField); + expect( + sut.validate({'any_field': faker.randomGenerator.string(4, min: 1)}), + ValidationError.invalidField, + ); }); test('Should return null if value is equal than min size', () { - expect(sut.validate({'any_field': faker.randomGenerator.string(5, min: 5)}), - null); + expect( + sut.validate({'any_field': faker.randomGenerator.string(5, min: 5)}), + null, + ); }); test('Should return null if value is bigger than min size', () { expect( - sut.validate({'any_field': faker.randomGenerator.string(10, min: 6)}), - null); + sut.validate({'any_field': faker.randomGenerator.string(10, min: 6)}), + null, + ); }); } From f6f8c361e2cf5f01b8a604bf2cad645a4ddbd290 Mon Sep 17 00:00:00 2001 From: Andres Garcia Date: Sun, 29 May 2022 23:36:17 -0500 Subject: [PATCH 15/21] fix: alert lint use_key_in_widget_constructors --- analysis_options.yaml | 4 ++-- lib/main/main.dart | 4 +++- lib/ui/components/headline1.dart | 2 +- lib/ui/components/login_header.dart | 2 ++ lib/ui/components/reload_screen.dart | 3 ++- .../pages/login/components/email_input.dart | 2 ++ .../pages/login/components/login_button.dart | 2 ++ .../login/components/password_input.dart | 2 ++ lib/ui/pages/login/login_page.dart | 14 +++++++------- .../pages/signup/components/email_input.dart | 2 ++ .../pages/signup/components/name_input.dart | 2 ++ .../password_confirmation_input.dart | 2 ++ .../signup/components/password_input.dart | 2 ++ .../signup/components/signup_button.dart | 2 ++ lib/ui/pages/signup/signup_page.dart | 19 +++++++++---------- lib/ui/pages/splash/splash_page.dart | 2 +- .../survey_result/components/active_icon.dart | 2 ++ .../components/disabled_icon.dart | 2 ++ .../components/survey_answer.dart | 4 ++-- .../components/survey_header.dart | 2 +- .../components/survey_result.dart | 2 +- .../survey_result/survey_result_page.dart | 2 +- .../pages/surveys/components/survey_item.dart | 2 +- .../surveys/components/survey_items.dart | 2 +- lib/ui/pages/surveys/surveys_page.dart | 4 ++-- 25 files changed, 56 insertions(+), 32 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 6f5a9265..1d648c69 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -23,9 +23,9 @@ linter: # producing the lint. rules: require_trailing_commas: true - # always_put_required_named_parameters_first: true # use_super_parameters: true - # always_declare_return_types: true + # always_put_required_named_parameters_first: true + always_declare_return_types: true # avoid_print: true # curly_braces_in_flow_control_structures: true # sized_box_shrink_expand: true diff --git a/lib/main/main.dart b/lib/main/main.dart index d740b179..1dae88c3 100644 --- a/lib/main/main.dart +++ b/lib/main/main.dart @@ -6,10 +6,12 @@ import 'package:flutter/services.dart'; import 'package:get/get.dart'; void main() { - runApp(App()); + runApp(const App()); } class App extends StatelessWidget { + const App({Key? key}) : super(key: key); + @override Widget build(BuildContext context) { SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light); diff --git a/lib/ui/components/headline1.dart b/lib/ui/components/headline1.dart index 5d1cebb5..6cb324fd 100644 --- a/lib/ui/components/headline1.dart +++ b/lib/ui/components/headline1.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; class Headline1 extends StatelessWidget { final String text; - const Headline1({required this.text}); + const Headline1({Key? key, required this.text}) : super(key: key); @override Widget build(BuildContext context) { diff --git a/lib/ui/components/login_header.dart b/lib/ui/components/login_header.dart index 5cf9f7e4..4e8a5442 100644 --- a/lib/ui/components/login_header.dart +++ b/lib/ui/components/login_header.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; class LoginHeader extends StatelessWidget { + const LoginHeader({Key? key}) : super(key: key); + @override Widget build(BuildContext context) { return Container( diff --git a/lib/ui/components/reload_screen.dart b/lib/ui/components/reload_screen.dart index 2de4cc02..ccb1a1f3 100644 --- a/lib/ui/components/reload_screen.dart +++ b/lib/ui/components/reload_screen.dart @@ -6,7 +6,8 @@ class ReloadScreen extends StatelessWidget { final String error; final Future Function() reload; - const ReloadScreen({required this.error, required this.reload}); + const ReloadScreen({Key? key, required this.error, required this.reload}) + : super(key: key); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/login/components/email_input.dart b/lib/ui/pages/login/components/email_input.dart index 88c6eb4e..e6a73e32 100644 --- a/lib/ui/pages/login/components/email_input.dart +++ b/lib/ui/pages/login/components/email_input.dart @@ -5,6 +5,8 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class EmailInput extends StatelessWidget { + const EmailInput({Key? key}) : super(key: key); + @override Widget build(BuildContext context) { final presenter = Provider.of(context); diff --git a/lib/ui/pages/login/components/login_button.dart b/lib/ui/pages/login/components/login_button.dart index b0d1522d..1226ac1c 100644 --- a/lib/ui/pages/login/components/login_button.dart +++ b/lib/ui/pages/login/components/login_button.dart @@ -5,6 +5,8 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class LoginButton extends StatelessWidget { + const LoginButton({Key? key}) : super(key: key); + @override Widget build(BuildContext context) { final presenter = Provider.of(context); diff --git a/lib/ui/pages/login/components/password_input.dart b/lib/ui/pages/login/components/password_input.dart index 54f4be79..169461c1 100644 --- a/lib/ui/pages/login/components/password_input.dart +++ b/lib/ui/pages/login/components/password_input.dart @@ -5,6 +5,8 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class PasswordInput extends StatelessWidget { + const PasswordInput({Key? key}) : super(key: key); + @override Widget build(BuildContext context) { final presenter = Provider.of(context); diff --git a/lib/ui/pages/login/login_page.dart b/lib/ui/pages/login/login_page.dart index c4f96e39..4c6edd5b 100644 --- a/lib/ui/pages/login/login_page.dart +++ b/lib/ui/pages/login/login_page.dart @@ -11,7 +11,7 @@ class LoginPage extends StatelessWidget with KeyboardManager, LoadingManager, UIErrorManager, NavigationManager { final LoginPresenter presenter; - LoginPage(this.presenter); + LoginPage(this.presenter, {Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -28,7 +28,7 @@ class LoginPage extends StatelessWidget child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - LoginHeader(), + const LoginHeader(), Headline1(text: R.string.login), Padding( padding: const EdgeInsets.all(32), @@ -37,13 +37,13 @@ class LoginPage extends StatelessWidget child: Form( child: Column( children: [ - EmailInput(), - Padding( + const EmailInput(), + const Padding( padding: - const EdgeInsets.only(top: 8, bottom: 32), - child: PasswordInput(), + EdgeInsets.only(top: 8, bottom: 32), + child: PasswordInput(), ), - LoginButton(), + const LoginButton(), TextButton.icon( onPressed: presenter.goToSignUp, icon: const Icon(Icons.person), diff --git a/lib/ui/pages/signup/components/email_input.dart b/lib/ui/pages/signup/components/email_input.dart index bc680274..e80cc287 100644 --- a/lib/ui/pages/signup/components/email_input.dart +++ b/lib/ui/pages/signup/components/email_input.dart @@ -5,6 +5,8 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class EmailInput extends StatelessWidget { + const EmailInput({Key? key}) : super(key: key); + @override Widget build(BuildContext context) { final presenter = Provider.of(context); diff --git a/lib/ui/pages/signup/components/name_input.dart b/lib/ui/pages/signup/components/name_input.dart index 1d401ea4..a6df8dcb 100644 --- a/lib/ui/pages/signup/components/name_input.dart +++ b/lib/ui/pages/signup/components/name_input.dart @@ -5,6 +5,8 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class NameInput extends StatelessWidget { + const NameInput({Key? key}) : super(key: key); + @override Widget build(BuildContext context) { final presenter = Provider.of(context); diff --git a/lib/ui/pages/signup/components/password_confirmation_input.dart b/lib/ui/pages/signup/components/password_confirmation_input.dart index 31ada985..e75ed074 100644 --- a/lib/ui/pages/signup/components/password_confirmation_input.dart +++ b/lib/ui/pages/signup/components/password_confirmation_input.dart @@ -5,6 +5,8 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class PasswordConfirmationInput extends StatelessWidget { + const PasswordConfirmationInput({Key? key}) : super(key: key); + @override Widget build(BuildContext context) { final presenter = Provider.of(context); diff --git a/lib/ui/pages/signup/components/password_input.dart b/lib/ui/pages/signup/components/password_input.dart index f6095ad1..50aa33c7 100644 --- a/lib/ui/pages/signup/components/password_input.dart +++ b/lib/ui/pages/signup/components/password_input.dart @@ -5,6 +5,8 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class PasswordInput extends StatelessWidget { + const PasswordInput({Key? key}) : super(key: key); + @override Widget build(BuildContext context) { final presenter = Provider.of(context); diff --git a/lib/ui/pages/signup/components/signup_button.dart b/lib/ui/pages/signup/components/signup_button.dart index 1e88c983..dcc60a20 100644 --- a/lib/ui/pages/signup/components/signup_button.dart +++ b/lib/ui/pages/signup/components/signup_button.dart @@ -5,6 +5,8 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class SignUpButton extends StatelessWidget { + const SignUpButton({Key? key}) : super(key: key); + @override Widget build(BuildContext context) { final presenter = Provider.of(context); diff --git a/lib/ui/pages/signup/signup_page.dart b/lib/ui/pages/signup/signup_page.dart index b2a39a08..35cb8192 100644 --- a/lib/ui/pages/signup/signup_page.dart +++ b/lib/ui/pages/signup/signup_page.dart @@ -11,7 +11,7 @@ class SignUpPage extends StatelessWidget with KeyboardManager, LoadingManager, UIErrorManager, NavigationManager { final SignUpPresenter presenter; - SignUpPage(this.presenter); + SignUpPage(this.presenter, {Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -28,7 +28,7 @@ class SignUpPage extends StatelessWidget child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - LoginHeader(), + const LoginHeader(), Headline1(text: R.string.addAccount), Padding( padding: const EdgeInsets.all(32), @@ -37,18 +37,17 @@ class SignUpPage extends StatelessWidget child: Form( child: Column( children: [ - NameInput(), - Padding( - padding: const EdgeInsets.symmetric(vertical: 8), + const NameInput(), + const Padding( + padding: EdgeInsets.symmetric(vertical: 8), child: EmailInput(), ), - PasswordInput(), - Padding( - padding: - const EdgeInsets.only(top: 8, bottom: 32), + const PasswordInput(), + const Padding( + padding: EdgeInsets.only(top: 8, bottom: 32), child: PasswordConfirmationInput(), ), - SignUpButton(), + const SignUpButton(), TextButton.icon( onPressed: presenter.goToLogin, icon: const Icon(Icons.exit_to_app), diff --git a/lib/ui/pages/splash/splash_page.dart b/lib/ui/pages/splash/splash_page.dart index 5c0ee00c..5afca049 100644 --- a/lib/ui/pages/splash/splash_page.dart +++ b/lib/ui/pages/splash/splash_page.dart @@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; class SplashPage extends StatelessWidget with NavigationManager { final SplashPresenter presenter; - SplashPage({required this.presenter}); + SplashPage({Key? key, required this.presenter}) : super(key: key); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/survey_result/components/active_icon.dart b/lib/ui/pages/survey_result/components/active_icon.dart index 55a29b24..439d71c1 100644 --- a/lib/ui/pages/survey_result/components/active_icon.dart +++ b/lib/ui/pages/survey_result/components/active_icon.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; class ActiveIcon extends StatelessWidget { + const ActiveIcon({Key? key}) : super(key: key); + @override Widget build(BuildContext context) { return Padding( diff --git a/lib/ui/pages/survey_result/components/disabled_icon.dart b/lib/ui/pages/survey_result/components/disabled_icon.dart index 3471dd91..3c74550c 100644 --- a/lib/ui/pages/survey_result/components/disabled_icon.dart +++ b/lib/ui/pages/survey_result/components/disabled_icon.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; class DisabledIcon extends StatelessWidget { + const DisabledIcon({Key? key}) : super(key: key); + @override Widget build(BuildContext context) { return Padding( diff --git a/lib/ui/pages/survey_result/components/survey_answer.dart b/lib/ui/pages/survey_result/components/survey_answer.dart index df3560ee..72ea1a91 100644 --- a/lib/ui/pages/survey_result/components/survey_answer.dart +++ b/lib/ui/pages/survey_result/components/survey_answer.dart @@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; class SurveyAnswer extends StatelessWidget { final SurveyAnswerViewModel viewModel; - const SurveyAnswer(this.viewModel); + const SurveyAnswer(this.viewModel, {Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -26,7 +26,7 @@ class SurveyAnswer extends StatelessWidget { color: Theme.of(context).primaryColorDark, ), ), - viewModel.isCurrentAnswer ? ActiveIcon() : DisabledIcon() + viewModel.isCurrentAnswer ? const ActiveIcon() : const DisabledIcon() ]; if (viewModel.image != null) { children.insert( diff --git a/lib/ui/pages/survey_result/components/survey_header.dart b/lib/ui/pages/survey_result/components/survey_header.dart index 1d91699a..5841e3b4 100644 --- a/lib/ui/pages/survey_result/components/survey_header.dart +++ b/lib/ui/pages/survey_result/components/survey_header.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; class SurveyHeader extends StatelessWidget { final String question; - const SurveyHeader(this.question); + const SurveyHeader(this.question, {Key? key}) : super(key: key); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/survey_result/components/survey_result.dart b/lib/ui/pages/survey_result/components/survey_result.dart index d5b20aa2..f7193ac8 100644 --- a/lib/ui/pages/survey_result/components/survey_result.dart +++ b/lib/ui/pages/survey_result/components/survey_result.dart @@ -7,7 +7,7 @@ class SurveyResult extends StatelessWidget { final SurveyResultViewModel viewModel; final void Function({required String answer}) onSave; - const SurveyResult({required this.viewModel, required this.onSave}); + const SurveyResult({Key? key, required this.viewModel, required this.onSave}) : super(key: key); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/survey_result/survey_result_page.dart b/lib/ui/pages/survey_result/survey_result_page.dart index e6f4ca2d..5dbdb934 100644 --- a/lib/ui/pages/survey_result/survey_result_page.dart +++ b/lib/ui/pages/survey_result/survey_result_page.dart @@ -10,7 +10,7 @@ class SurveyResultPage extends StatelessWidget with LoadingManager, SessionManager { final SurveyResultPresenter presenter; - SurveyResultPage(this.presenter); + SurveyResultPage(this.presenter, {Key? key}) : super(key: key); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/surveys/components/survey_item.dart b/lib/ui/pages/surveys/components/survey_item.dart index 4103ee37..ef976964 100644 --- a/lib/ui/pages/surveys/components/survey_item.dart +++ b/lib/ui/pages/surveys/components/survey_item.dart @@ -6,7 +6,7 @@ import 'package:provider/provider.dart'; class SurveyItem extends StatelessWidget { final SurveyViewModel viewModel; - const SurveyItem(this.viewModel); + const SurveyItem(this.viewModel, {Key? key}) : super(key: key); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/surveys/components/survey_items.dart b/lib/ui/pages/surveys/components/survey_items.dart index 5f7df264..a6098411 100644 --- a/lib/ui/pages/surveys/components/survey_items.dart +++ b/lib/ui/pages/surveys/components/survey_items.dart @@ -7,7 +7,7 @@ import 'package:flutter/material.dart'; class SurveyItems extends StatelessWidget { final List viewModels; - const SurveyItems(this.viewModels); + const SurveyItems(this.viewModels, {Key? key}) : super(key: key); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/surveys/surveys_page.dart b/lib/ui/pages/surveys/surveys_page.dart index 1cd74d4d..c39ee0b6 100644 --- a/lib/ui/pages/surveys/surveys_page.dart +++ b/lib/ui/pages/surveys/surveys_page.dart @@ -11,10 +11,10 @@ import 'package:provider/provider.dart'; class SurveysPage extends StatefulWidget { final SurveysPresenter presenter; - const SurveysPage(this.presenter); + const SurveysPage(this.presenter, {Key? key}) : super(key: key); @override - _SurveysPageState createState() => _SurveysPageState(); + State createState() => _SurveysPageState(); } class _SurveysPageState extends State From 1f10d0014c2b48aef2e5d4de9517da349ed2cf9f Mon Sep 17 00:00:00 2001 From: Andres Garcia Date: Sun, 29 May 2022 23:37:30 -0500 Subject: [PATCH 16/21] fix: alert lint use_super_parameters --- analysis_options.yaml | 2 +- lib/main/main.dart | 2 +- lib/ui/components/headline1.dart | 2 +- lib/ui/components/login_header.dart | 2 +- lib/ui/components/reload_screen.dart | 3 +-- lib/ui/pages/login/components/email_input.dart | 2 +- lib/ui/pages/login/components/login_button.dart | 2 +- lib/ui/pages/login/components/password_input.dart | 2 +- lib/ui/pages/login/login_page.dart | 2 +- lib/ui/pages/signup/components/email_input.dart | 2 +- lib/ui/pages/signup/components/name_input.dart | 2 +- .../pages/signup/components/password_confirmation_input.dart | 2 +- lib/ui/pages/signup/components/password_input.dart | 2 +- lib/ui/pages/signup/components/signup_button.dart | 2 +- lib/ui/pages/signup/signup_page.dart | 2 +- lib/ui/pages/splash/splash_page.dart | 2 +- lib/ui/pages/survey_result/components/active_icon.dart | 2 +- lib/ui/pages/survey_result/components/disabled_icon.dart | 2 +- lib/ui/pages/survey_result/components/survey_answer.dart | 2 +- lib/ui/pages/survey_result/components/survey_header.dart | 2 +- lib/ui/pages/survey_result/components/survey_result.dart | 2 +- lib/ui/pages/survey_result/survey_result_page.dart | 2 +- lib/ui/pages/surveys/components/survey_item.dart | 2 +- lib/ui/pages/surveys/components/survey_items.dart | 2 +- lib/ui/pages/surveys/surveys_page.dart | 2 +- 25 files changed, 25 insertions(+), 26 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 1d648c69..15f57d98 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -23,7 +23,7 @@ linter: # producing the lint. rules: require_trailing_commas: true - # use_super_parameters: true + use_super_parameters: true # always_put_required_named_parameters_first: true always_declare_return_types: true # avoid_print: true diff --git a/lib/main/main.dart b/lib/main/main.dart index 1dae88c3..77a94561 100644 --- a/lib/main/main.dart +++ b/lib/main/main.dart @@ -10,7 +10,7 @@ void main() { } class App extends StatelessWidget { - const App({Key? key}) : super(key: key); + const App({super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/components/headline1.dart b/lib/ui/components/headline1.dart index 6cb324fd..407117bb 100644 --- a/lib/ui/components/headline1.dart +++ b/lib/ui/components/headline1.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; class Headline1 extends StatelessWidget { final String text; - const Headline1({Key? key, required this.text}) : super(key: key); + const Headline1({super.key, required this.text}); @override Widget build(BuildContext context) { diff --git a/lib/ui/components/login_header.dart b/lib/ui/components/login_header.dart index 4e8a5442..6f8216ef 100644 --- a/lib/ui/components/login_header.dart +++ b/lib/ui/components/login_header.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; class LoginHeader extends StatelessWidget { - const LoginHeader({Key? key}) : super(key: key); + const LoginHeader({super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/components/reload_screen.dart b/lib/ui/components/reload_screen.dart index ccb1a1f3..386c408a 100644 --- a/lib/ui/components/reload_screen.dart +++ b/lib/ui/components/reload_screen.dart @@ -6,8 +6,7 @@ class ReloadScreen extends StatelessWidget { final String error; final Future Function() reload; - const ReloadScreen({Key? key, required this.error, required this.reload}) - : super(key: key); + const ReloadScreen({super.key, required this.error, required this.reload}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/login/components/email_input.dart b/lib/ui/pages/login/components/email_input.dart index e6a73e32..db62a1e9 100644 --- a/lib/ui/pages/login/components/email_input.dart +++ b/lib/ui/pages/login/components/email_input.dart @@ -5,7 +5,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class EmailInput extends StatelessWidget { - const EmailInput({Key? key}) : super(key: key); + const EmailInput({super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/login/components/login_button.dart b/lib/ui/pages/login/components/login_button.dart index 1226ac1c..b16b4e2a 100644 --- a/lib/ui/pages/login/components/login_button.dart +++ b/lib/ui/pages/login/components/login_button.dart @@ -5,7 +5,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class LoginButton extends StatelessWidget { - const LoginButton({Key? key}) : super(key: key); + const LoginButton({super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/login/components/password_input.dart b/lib/ui/pages/login/components/password_input.dart index 169461c1..5582b6c2 100644 --- a/lib/ui/pages/login/components/password_input.dart +++ b/lib/ui/pages/login/components/password_input.dart @@ -5,7 +5,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class PasswordInput extends StatelessWidget { - const PasswordInput({Key? key}) : super(key: key); + const PasswordInput({super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/login/login_page.dart b/lib/ui/pages/login/login_page.dart index 4c6edd5b..82c3644c 100644 --- a/lib/ui/pages/login/login_page.dart +++ b/lib/ui/pages/login/login_page.dart @@ -11,7 +11,7 @@ class LoginPage extends StatelessWidget with KeyboardManager, LoadingManager, UIErrorManager, NavigationManager { final LoginPresenter presenter; - LoginPage(this.presenter, {Key? key}) : super(key: key); + LoginPage(this.presenter, {super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/signup/components/email_input.dart b/lib/ui/pages/signup/components/email_input.dart index e80cc287..fca9c3e3 100644 --- a/lib/ui/pages/signup/components/email_input.dart +++ b/lib/ui/pages/signup/components/email_input.dart @@ -5,7 +5,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class EmailInput extends StatelessWidget { - const EmailInput({Key? key}) : super(key: key); + const EmailInput({super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/signup/components/name_input.dart b/lib/ui/pages/signup/components/name_input.dart index a6df8dcb..2d6e83e4 100644 --- a/lib/ui/pages/signup/components/name_input.dart +++ b/lib/ui/pages/signup/components/name_input.dart @@ -5,7 +5,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class NameInput extends StatelessWidget { - const NameInput({Key? key}) : super(key: key); + const NameInput({super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/signup/components/password_confirmation_input.dart b/lib/ui/pages/signup/components/password_confirmation_input.dart index e75ed074..fd219287 100644 --- a/lib/ui/pages/signup/components/password_confirmation_input.dart +++ b/lib/ui/pages/signup/components/password_confirmation_input.dart @@ -5,7 +5,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class PasswordConfirmationInput extends StatelessWidget { - const PasswordConfirmationInput({Key? key}) : super(key: key); + const PasswordConfirmationInput({super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/signup/components/password_input.dart b/lib/ui/pages/signup/components/password_input.dart index 50aa33c7..92c924a5 100644 --- a/lib/ui/pages/signup/components/password_input.dart +++ b/lib/ui/pages/signup/components/password_input.dart @@ -5,7 +5,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class PasswordInput extends StatelessWidget { - const PasswordInput({Key? key}) : super(key: key); + const PasswordInput({super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/signup/components/signup_button.dart b/lib/ui/pages/signup/components/signup_button.dart index dcc60a20..c244611b 100644 --- a/lib/ui/pages/signup/components/signup_button.dart +++ b/lib/ui/pages/signup/components/signup_button.dart @@ -5,7 +5,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class SignUpButton extends StatelessWidget { - const SignUpButton({Key? key}) : super(key: key); + const SignUpButton({super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/signup/signup_page.dart b/lib/ui/pages/signup/signup_page.dart index 35cb8192..3a7e5ba9 100644 --- a/lib/ui/pages/signup/signup_page.dart +++ b/lib/ui/pages/signup/signup_page.dart @@ -11,7 +11,7 @@ class SignUpPage extends StatelessWidget with KeyboardManager, LoadingManager, UIErrorManager, NavigationManager { final SignUpPresenter presenter; - SignUpPage(this.presenter, {Key? key}) : super(key: key); + SignUpPage(this.presenter, {super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/splash/splash_page.dart b/lib/ui/pages/splash/splash_page.dart index 5afca049..d3c57d2c 100644 --- a/lib/ui/pages/splash/splash_page.dart +++ b/lib/ui/pages/splash/splash_page.dart @@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; class SplashPage extends StatelessWidget with NavigationManager { final SplashPresenter presenter; - SplashPage({Key? key, required this.presenter}) : super(key: key); + SplashPage({super.key, required this.presenter}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/survey_result/components/active_icon.dart b/lib/ui/pages/survey_result/components/active_icon.dart index 439d71c1..37439a62 100644 --- a/lib/ui/pages/survey_result/components/active_icon.dart +++ b/lib/ui/pages/survey_result/components/active_icon.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; class ActiveIcon extends StatelessWidget { - const ActiveIcon({Key? key}) : super(key: key); + const ActiveIcon({super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/survey_result/components/disabled_icon.dart b/lib/ui/pages/survey_result/components/disabled_icon.dart index 3c74550c..6cc6275a 100644 --- a/lib/ui/pages/survey_result/components/disabled_icon.dart +++ b/lib/ui/pages/survey_result/components/disabled_icon.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; class DisabledIcon extends StatelessWidget { - const DisabledIcon({Key? key}) : super(key: key); + const DisabledIcon({super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/survey_result/components/survey_answer.dart b/lib/ui/pages/survey_result/components/survey_answer.dart index 72ea1a91..abe24174 100644 --- a/lib/ui/pages/survey_result/components/survey_answer.dart +++ b/lib/ui/pages/survey_result/components/survey_answer.dart @@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; class SurveyAnswer extends StatelessWidget { final SurveyAnswerViewModel viewModel; - const SurveyAnswer(this.viewModel, {Key? key}) : super(key: key); + const SurveyAnswer(this.viewModel, {super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/survey_result/components/survey_header.dart b/lib/ui/pages/survey_result/components/survey_header.dart index 5841e3b4..68937850 100644 --- a/lib/ui/pages/survey_result/components/survey_header.dart +++ b/lib/ui/pages/survey_result/components/survey_header.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; class SurveyHeader extends StatelessWidget { final String question; - const SurveyHeader(this.question, {Key? key}) : super(key: key); + const SurveyHeader(this.question, {super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/survey_result/components/survey_result.dart b/lib/ui/pages/survey_result/components/survey_result.dart index f7193ac8..88ef54d5 100644 --- a/lib/ui/pages/survey_result/components/survey_result.dart +++ b/lib/ui/pages/survey_result/components/survey_result.dart @@ -7,7 +7,7 @@ class SurveyResult extends StatelessWidget { final SurveyResultViewModel viewModel; final void Function({required String answer}) onSave; - const SurveyResult({Key? key, required this.viewModel, required this.onSave}) : super(key: key); + const SurveyResult({super.key, required this.viewModel, required this.onSave}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/survey_result/survey_result_page.dart b/lib/ui/pages/survey_result/survey_result_page.dart index 5dbdb934..1ebd9ee7 100644 --- a/lib/ui/pages/survey_result/survey_result_page.dart +++ b/lib/ui/pages/survey_result/survey_result_page.dart @@ -10,7 +10,7 @@ class SurveyResultPage extends StatelessWidget with LoadingManager, SessionManager { final SurveyResultPresenter presenter; - SurveyResultPage(this.presenter, {Key? key}) : super(key: key); + SurveyResultPage(this.presenter, {super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/surveys/components/survey_item.dart b/lib/ui/pages/surveys/components/survey_item.dart index ef976964..07ab095c 100644 --- a/lib/ui/pages/surveys/components/survey_item.dart +++ b/lib/ui/pages/surveys/components/survey_item.dart @@ -6,7 +6,7 @@ import 'package:provider/provider.dart'; class SurveyItem extends StatelessWidget { final SurveyViewModel viewModel; - const SurveyItem(this.viewModel, {Key? key}) : super(key: key); + const SurveyItem(this.viewModel, {super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/surveys/components/survey_items.dart b/lib/ui/pages/surveys/components/survey_items.dart index a6098411..c79c42fc 100644 --- a/lib/ui/pages/surveys/components/survey_items.dart +++ b/lib/ui/pages/surveys/components/survey_items.dart @@ -7,7 +7,7 @@ import 'package:flutter/material.dart'; class SurveyItems extends StatelessWidget { final List viewModels; - const SurveyItems(this.viewModels, {Key? key}) : super(key: key); + const SurveyItems(this.viewModels, {super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/surveys/surveys_page.dart b/lib/ui/pages/surveys/surveys_page.dart index c39ee0b6..29a7b42c 100644 --- a/lib/ui/pages/surveys/surveys_page.dart +++ b/lib/ui/pages/surveys/surveys_page.dart @@ -11,7 +11,7 @@ import 'package:provider/provider.dart'; class SurveysPage extends StatefulWidget { final SurveysPresenter presenter; - const SurveysPage(this.presenter, {Key? key}) : super(key: key); + const SurveysPage(this.presenter, {super.key}); @override State createState() => _SurveysPageState(); From 41af5e24e24ab79096925d106b9f6409fa215fa0 Mon Sep 17 00:00:00 2001 From: Andres Garcia Date: Sun, 29 May 2022 23:40:30 -0500 Subject: [PATCH 17/21] fix: alert lint always_put_required_named_parameters_first --- analysis_options.yaml | 2 +- lib/data/models/local_survey_answer_model.dart | 2 +- lib/data/models/remote_survey_answer_model.dart | 2 +- lib/domain/entities/survey_answer_entity.dart | 2 +- lib/ui/components/headline1.dart | 2 +- lib/ui/components/reload_screen.dart | 2 +- lib/ui/pages/login/login_page.dart | 5 ++--- lib/ui/pages/splash/splash_page.dart | 2 +- lib/ui/pages/survey_result/components/survey_answer.dart | 2 +- lib/ui/pages/survey_result/components/survey_header.dart | 2 +- lib/ui/pages/survey_result/components/survey_result.dart | 6 +++++- lib/ui/pages/survey_result/survey_answer_viewmodel.dart | 2 +- lib/ui/pages/surveys/components/survey_item.dart | 2 +- lib/ui/pages/surveys/components/survey_items.dart | 2 +- test/presentation/mocks/validation_spy.dart | 2 +- 15 files changed, 20 insertions(+), 17 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 15f57d98..dbd5bbb7 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -24,7 +24,7 @@ linter: rules: require_trailing_commas: true use_super_parameters: true - # always_put_required_named_parameters_first: true + always_put_required_named_parameters_first: true always_declare_return_types: true # avoid_print: true # curly_braces_in_flow_control_structures: true diff --git a/lib/data/models/local_survey_answer_model.dart b/lib/data/models/local_survey_answer_model.dart index e9243a58..433a420e 100644 --- a/lib/data/models/local_survey_answer_model.dart +++ b/lib/data/models/local_survey_answer_model.dart @@ -7,10 +7,10 @@ class LocalSurveyAnswerModel { final int percent; LocalSurveyAnswerModel({ - this.image, required this.answer, required this.isCurrentAnswer, required this.percent, + this.image, }); factory LocalSurveyAnswerModel.fromJson(Map json) { diff --git a/lib/data/models/remote_survey_answer_model.dart b/lib/data/models/remote_survey_answer_model.dart index 9f6262f6..a258f29c 100644 --- a/lib/data/models/remote_survey_answer_model.dart +++ b/lib/data/models/remote_survey_answer_model.dart @@ -8,10 +8,10 @@ class RemoteSurveyAnswerModel { final int percent; RemoteSurveyAnswerModel({ - this.image, required this.answer, required this.isCurrentAccountAnswer, required this.percent, + this.image, }); factory RemoteSurveyAnswerModel.fromJson(Map json) { diff --git a/lib/domain/entities/survey_answer_entity.dart b/lib/domain/entities/survey_answer_entity.dart index 1f8ccd30..bf1e8534 100644 --- a/lib/domain/entities/survey_answer_entity.dart +++ b/lib/domain/entities/survey_answer_entity.dart @@ -10,9 +10,9 @@ class SurveyAnswerEntity extends Equatable { List get props => [image, answer, isCurrentAnswer, percent]; const SurveyAnswerEntity({ - this.image, required this.answer, required this.isCurrentAnswer, required this.percent, + this.image, }); } diff --git a/lib/ui/components/headline1.dart b/lib/ui/components/headline1.dart index 407117bb..ad82512f 100644 --- a/lib/ui/components/headline1.dart +++ b/lib/ui/components/headline1.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; class Headline1 extends StatelessWidget { final String text; - const Headline1({super.key, required this.text}); + const Headline1({required this.text, super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/components/reload_screen.dart b/lib/ui/components/reload_screen.dart index 386c408a..e0dae0a6 100644 --- a/lib/ui/components/reload_screen.dart +++ b/lib/ui/components/reload_screen.dart @@ -6,7 +6,7 @@ class ReloadScreen extends StatelessWidget { final String error; final Future Function() reload; - const ReloadScreen({super.key, required this.error, required this.reload}); + const ReloadScreen({required this.error, required this.reload, super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/login/login_page.dart b/lib/ui/pages/login/login_page.dart index 82c3644c..93ee7d62 100644 --- a/lib/ui/pages/login/login_page.dart +++ b/lib/ui/pages/login/login_page.dart @@ -39,9 +39,8 @@ class LoginPage extends StatelessWidget children: [ const EmailInput(), const Padding( - padding: - EdgeInsets.only(top: 8, bottom: 32), - child: PasswordInput(), + padding: EdgeInsets.only(top: 8, bottom: 32), + child: PasswordInput(), ), const LoginButton(), TextButton.icon( diff --git a/lib/ui/pages/splash/splash_page.dart b/lib/ui/pages/splash/splash_page.dart index d3c57d2c..77b17839 100644 --- a/lib/ui/pages/splash/splash_page.dart +++ b/lib/ui/pages/splash/splash_page.dart @@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; class SplashPage extends StatelessWidget with NavigationManager { final SplashPresenter presenter; - SplashPage({super.key, required this.presenter}); + SplashPage({required this.presenter, super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/survey_result/components/survey_answer.dart b/lib/ui/pages/survey_result/components/survey_answer.dart index abe24174..e6cfdd57 100644 --- a/lib/ui/pages/survey_result/components/survey_answer.dart +++ b/lib/ui/pages/survey_result/components/survey_answer.dart @@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; class SurveyAnswer extends StatelessWidget { final SurveyAnswerViewModel viewModel; - const SurveyAnswer(this.viewModel, {super.key}); + const SurveyAnswer(this.viewModel, {super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/survey_result/components/survey_header.dart b/lib/ui/pages/survey_result/components/survey_header.dart index 68937850..3f9ed9fb 100644 --- a/lib/ui/pages/survey_result/components/survey_header.dart +++ b/lib/ui/pages/survey_result/components/survey_header.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; class SurveyHeader extends StatelessWidget { final String question; - const SurveyHeader(this.question, {super.key}); + const SurveyHeader(this.question, {super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/survey_result/components/survey_result.dart b/lib/ui/pages/survey_result/components/survey_result.dart index 88ef54d5..20d3fbc0 100644 --- a/lib/ui/pages/survey_result/components/survey_result.dart +++ b/lib/ui/pages/survey_result/components/survey_result.dart @@ -7,7 +7,11 @@ class SurveyResult extends StatelessWidget { final SurveyResultViewModel viewModel; final void Function({required String answer}) onSave; - const SurveyResult({super.key, required this.viewModel, required this.onSave}); + const SurveyResult({ + required this.viewModel, + required this.onSave, + super.key, + }); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/survey_result/survey_answer_viewmodel.dart b/lib/ui/pages/survey_result/survey_answer_viewmodel.dart index 74551604..c3d011a0 100644 --- a/lib/ui/pages/survey_result/survey_answer_viewmodel.dart +++ b/lib/ui/pages/survey_result/survey_answer_viewmodel.dart @@ -10,9 +10,9 @@ class SurveyAnswerViewModel extends Equatable { List get props => [image, answer, isCurrentAnswer, percent]; const SurveyAnswerViewModel({ - this.image, required this.answer, required this.isCurrentAnswer, required this.percent, + this.image, }); } diff --git a/lib/ui/pages/surveys/components/survey_item.dart b/lib/ui/pages/surveys/components/survey_item.dart index 07ab095c..c0a14b2f 100644 --- a/lib/ui/pages/surveys/components/survey_item.dart +++ b/lib/ui/pages/surveys/components/survey_item.dart @@ -6,7 +6,7 @@ import 'package:provider/provider.dart'; class SurveyItem extends StatelessWidget { final SurveyViewModel viewModel; - const SurveyItem(this.viewModel, {super.key}); + const SurveyItem(this.viewModel, {super.key}); @override Widget build(BuildContext context) { diff --git a/lib/ui/pages/surveys/components/survey_items.dart b/lib/ui/pages/surveys/components/survey_items.dart index c79c42fc..fce25bde 100644 --- a/lib/ui/pages/surveys/components/survey_items.dart +++ b/lib/ui/pages/surveys/components/survey_items.dart @@ -7,7 +7,7 @@ import 'package:flutter/material.dart'; class SurveyItems extends StatelessWidget { final List viewModels; - const SurveyItems(this.viewModels, {super.key}); + const SurveyItems(this.viewModels, {super.key}); @override Widget build(BuildContext context) { diff --git a/test/presentation/mocks/validation_spy.dart b/test/presentation/mocks/validation_spy.dart index 65842ba3..154e139c 100644 --- a/test/presentation/mocks/validation_spy.dart +++ b/test/presentation/mocks/validation_spy.dart @@ -15,6 +15,6 @@ class ValidationSpy extends Mock implements Validation { ); void mockValidation({String? field}) => mockValidationCall(field).thenReturn(null); - void mockValidationError({String? field, required ValidationError value}) => + void mockValidationError({required ValidationError value, String? field}) => mockValidationCall(field).thenReturn(value); } From 186fbf00574c9ff4c41a35f4a1430a2b44e140f5 Mon Sep 17 00:00:00 2001 From: Andres Garcia Date: Sun, 29 May 2022 23:44:45 -0500 Subject: [PATCH 18/21] fix: alert lint directives_ordering --- analysis_options.yaml | 52 +++++++++---------- lib/data/cache/cache.dart | 6 +-- .../models/local_survey_result_model.dart | 2 +- lib/data/models/models.dart | 8 +-- lib/data/models/remote_survey_model.dart | 2 +- .../models/remote_survey_result_model.dart | 2 +- .../load_survey_result.dart | 2 +- .../usecases/load_surveys/load_surveys.dart | 2 +- lib/data/usecases/usecases.dart | 8 +-- lib/domain/entities/entities.dart | 2 +- lib/domain/usecases/add_account.dart | 4 +- lib/domain/usecases/authentication.dart | 4 +- lib/domain/usecases/usecases.dart | 6 +-- lib/infra/cache/cache.dart | 2 +- lib/infra/cache/local_storage_adapter.dart | 4 +- lib/infra/cache/secure_storage_adapter.dart | 4 +- lib/infra/http/http_adapter.dart | 5 +- lib/main/composites/composites.dart | 4 +- ...oad_survey_result_with_local_fallback.dart | 2 +- lib/main/factories/cache/cache.dart | 2 +- .../cache/local_storage_adapter_factory.dart | 4 +- .../cache/secure_storage_adapter_factory.dart | 4 +- lib/main/factories/http/http.dart | 2 +- .../factories/http/http_client_factory.dart | 4 +- .../pages/login/login_page_factory.dart | 4 +- lib/main/factories/pages/pages.dart | 2 +- .../pages/signup/signup_page_factory.dart | 4 +- .../pages/splash/splash_page_factory.dart | 4 +- .../survey_result_page_factory.dart | 6 +-- .../pages/surveys/surveys_page_factory.dart | 4 +- lib/main/factories/usecases/usecases.dart | 8 +-- lib/main/main.dart | 6 +-- lib/presentation/mixins/mixins.dart | 4 +- lib/presentation/mixins/ui_error_manager.dart | 4 +- .../presenters/getx_login_presenter.dart | 10 ++-- .../presenters/getx_signup_presenter.dart | 10 ++-- .../presenters/getx_splash_presenter.dart | 4 +- .../getx_survey_result_presenter.dart | 4 +- .../presenters/getx_surveys_presenter.dart | 6 +-- lib/presentation/presenters/presenters.dart | 2 +- lib/ui/components/components.dart | 6 +-- lib/ui/components/reload_screen.dart | 4 +- lib/ui/components/spinner_dialog.dart | 4 +- lib/ui/helpers/i18n/resources.dart | 4 +- lib/ui/helpers/i18n/strings/strings.dart | 2 +- lib/ui/mixins/loading_manager.dart | 4 +- lib/ui/mixins/mixins.dart | 2 +- lib/ui/mixins/ui_error_manager.dart | 4 +- lib/ui/pages/login/components/components.dart | 2 +- .../pages/login/components/email_input.dart | 6 +-- .../pages/login/components/login_button.dart | 6 +-- .../login/components/password_input.dart | 6 +-- lib/ui/pages/login/login_page.dart | 10 ++-- lib/ui/pages/login/login_presenter.dart | 4 +- lib/ui/pages/pages.dart | 2 +- .../pages/signup/components/components.dart | 4 +- .../pages/signup/components/email_input.dart | 6 +-- .../pages/signup/components/name_input.dart | 6 +-- .../password_confirmation_input.dart | 6 +-- .../signup/components/password_input.dart | 6 +-- .../signup/components/signup_button.dart | 6 +-- lib/ui/pages/signup/signup_page.dart | 10 ++-- lib/ui/pages/signup/signup_presenter.dart | 4 +- lib/ui/pages/splash/splash_page.dart | 6 +-- .../survey_result/components/components.dart | 4 +- .../components/survey_answer.dart | 6 +-- .../components/survey_result.dart | 6 +-- lib/ui/pages/survey_result/survey_result.dart | 2 +- .../survey_result/survey_result_page.dart | 8 +-- .../survey_result_presenter.dart | 4 +- .../survey_result_viewmodel.dart | 4 +- .../pages/surveys/components/survey_item.dart | 4 +- .../surveys/components/survey_items.dart | 6 +-- lib/ui/pages/surveys/surveys.dart | 2 +- lib/ui/pages/surveys/surveys_page.dart | 12 ++--- lib/ui/pages/surveys/surveys_presenter.dart | 4 +- .../validators/compare_fields_validation.dart | 4 +- .../validators/email_validation.dart | 4 +- .../validators/min_length_validation.dart | 4 +- .../validators/required_field_validation.dart | 4 +- lib/validation/validators/validators.dart | 6 +-- test/data/mocks/mocks.dart | 6 +-- .../add_account/remote_add_account_test.dart | 11 ++-- .../remote_authentication_test.dart | 11 ++-- .../local_load_current_account_test.dart | 9 ++-- .../local_load_survey_result_test.dart | 9 ++-- .../remote_load_survey_result_test.dart | 11 ++-- .../load_surveys/local_load_surveys_test.dart | 7 ++- .../remote_load_surveys_test.dart | 11 ++-- .../local_save_current_account_test.dart | 9 ++-- .../remote_save_survey_result_test.dart | 11 ++-- test/domain/mocks/entity_factory.dart | 3 +- test/domain/mocks/mocks.dart | 6 +-- test/domain/mocks/params_factory.dart | 3 +- test/domain/mocks/save_survey_result_spy.dart | 3 +- .../cache/local_storage_adapter_test.dart | 7 ++- .../cache/secure_storage_adapter_test.dart | 7 ++- test/infra/http/http_adapter_test.dart | 7 ++- test/infra/mocks/mocks.dart | 4 +- ...urvey_result_with_local_fallback_test.dart | 7 ++- ...load_surveys_with_local_fallback_test.dart | 5 +- .../composites/validation_composite_test.dart | 5 +- .../authorize_http_client_decorator_test.dart | 7 ++- .../login/login_validation_factory_test.dart | 3 +- .../login/signup_validation_factory_test.dart | 3 +- .../presenters/getx_login_presenter_test.dart | 9 ++-- .../getx_signup_presenter_test.dart | 9 ++-- .../getx_splash_presenter_test.dart | 5 +- .../getx_survey_result_presenter_test.dart | 11 ++-- .../getx_surveys_presenter_test.dart | 7 ++- test/ui/mocks/login_presenter_spy.dart | 4 +- test/ui/mocks/mocks.dart | 2 +- test/ui/mocks/signup_presenter_spy.dart | 4 +- test/ui/mocks/splash_presenter_spy.dart | 4 +- .../ui/mocks/survey_result_presenter_spy.dart | 4 +- test/ui/mocks/surveys_presenter_spy.dart | 4 +- test/ui/pages/login_page_test.dart | 9 ++-- test/ui/pages/signup_page_test.dart | 9 ++-- test/ui/pages/splash_page_test.dart | 7 ++- test/ui/pages/survey_result_page_test.dart | 9 ++-- test/ui/pages/surveys_page_test.dart | 7 ++- .../min_length_validation_test.dart | 3 +- 122 files changed, 332 insertions(+), 363 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index dbd5bbb7..75e67304 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -26,33 +26,33 @@ linter: use_super_parameters: true always_put_required_named_parameters_first: true always_declare_return_types: true - # avoid_print: true - # curly_braces_in_flow_control_structures: true - # sized_box_shrink_expand: true - # avoid_unnecessary_containers: true - # avoid_web_libraries_in_flutter: true - # no_logic_in_create_state: false - # prefer_const_constructors: true - # prefer_const_constructors_in_immutables: true - # prefer_const_declarations: true - # prefer_const_literals_to_create_immutables: true - # sized_box_for_whitespace: true - # use_full_hex_values_for_flutter_colors: true - # cancel_subscriptions: true - # close_sinks: true - # comment_references: false - # one_member_abstracts: false + avoid_print: true + curly_braces_in_flow_control_structures: true + sized_box_shrink_expand: true + avoid_unnecessary_containers: true + avoid_web_libraries_in_flutter: true + no_logic_in_create_state: false + prefer_const_constructors: true + prefer_const_constructors_in_immutables: true + prefer_const_declarations: true + prefer_const_literals_to_create_immutables: true + sized_box_for_whitespace: true + use_full_hex_values_for_flutter_colors: true + cancel_subscriptions: true + close_sinks: true + comment_references: false + one_member_abstracts: false # only_throw_errors: true - # package_api_docs: true - # prefer_single_quotes: true - # sort_child_properties_last: true - # camel_case_types: true - # library_names: true - # file_names: true - # library_prefixes: true - # non_constant_identifier_names: true - # constant_identifier_names: false - # directives_ordering: true + package_api_docs: true + prefer_single_quotes: true + sort_child_properties_last: true + camel_case_types: true + library_names: true + file_names: true + library_prefixes: true + non_constant_identifier_names: true + constant_identifier_names: false + directives_ordering: true # slash_for_doc_comments: false # prefer_interpolation_to_compose_strings: true # prefer_collection_literals: true diff --git a/lib/data/cache/cache.dart b/lib/data/cache/cache.dart index c1e96380..2faa3deb 100644 --- a/lib/data/cache/cache.dart +++ b/lib/data/cache/cache.dart @@ -1,4 +1,4 @@ -export './save_secure_cache_storage.dart'; -export './fetch_secure_cache_storage.dart'; -export './delete_secure_cache_storage.dart'; export './cache_storage.dart'; +export './delete_secure_cache_storage.dart'; +export './fetch_secure_cache_storage.dart'; +export './save_secure_cache_storage.dart'; diff --git a/lib/data/models/local_survey_result_model.dart b/lib/data/models/local_survey_result_model.dart index faf7cb9c..1159c515 100644 --- a/lib/data/models/local_survey_result_model.dart +++ b/lib/data/models/local_survey_result_model.dart @@ -1,5 +1,5 @@ -import '../../domain/entities/entities.dart'; import './models.dart'; +import '../../domain/entities/entities.dart'; class LocalSurveyResultModel { final String surveyId; diff --git a/lib/data/models/models.dart b/lib/data/models/models.dart index 17f0bd88..67b25f76 100644 --- a/lib/data/models/models.dart +++ b/lib/data/models/models.dart @@ -1,7 +1,7 @@ -export './remote_account_model.dart'; -export './remote_survey_model.dart'; +export './local_survey_answer_model.dart'; export './local_survey_model.dart'; +export './local_survey_result_model.dart'; +export './remote_account_model.dart'; export './remote_survey_answer_model.dart'; +export './remote_survey_model.dart'; export './remote_survey_result_model.dart'; -export './local_survey_answer_model.dart'; -export './local_survey_result_model.dart'; diff --git a/lib/data/models/remote_survey_model.dart b/lib/data/models/remote_survey_model.dart index 492d86f8..4b23e576 100644 --- a/lib/data/models/remote_survey_model.dart +++ b/lib/data/models/remote_survey_model.dart @@ -1,5 +1,5 @@ -import '../../domain/entities/entities.dart'; import '../../data/http/http.dart'; +import '../../domain/entities/entities.dart'; class RemoteSurveyModel { final String id; diff --git a/lib/data/models/remote_survey_result_model.dart b/lib/data/models/remote_survey_result_model.dart index 3a4e0b78..466455d7 100644 --- a/lib/data/models/remote_survey_result_model.dart +++ b/lib/data/models/remote_survey_result_model.dart @@ -1,6 +1,6 @@ +import './models.dart'; import '../../domain/entities/entities.dart'; import '../http/http.dart'; -import './models.dart'; class RemoteSurveyResultModel { final String surveyId; diff --git a/lib/data/usecases/load_survey_result/load_survey_result.dart b/lib/data/usecases/load_survey_result/load_survey_result.dart index 94eb4252..cb61ef40 100644 --- a/lib/data/usecases/load_survey_result/load_survey_result.dart +++ b/lib/data/usecases/load_survey_result/load_survey_result.dart @@ -1,2 +1,2 @@ -export './remote_load_survey_result.dart'; export './local_load_survey_result.dart'; +export './remote_load_survey_result.dart'; diff --git a/lib/data/usecases/load_surveys/load_surveys.dart b/lib/data/usecases/load_surveys/load_surveys.dart index 9e405733..24e12235 100644 --- a/lib/data/usecases/load_surveys/load_surveys.dart +++ b/lib/data/usecases/load_surveys/load_surveys.dart @@ -1,2 +1,2 @@ -export './remote_load_surveys.dart'; export './local_load_surveys.dart'; +export './remote_load_surveys.dart'; diff --git a/lib/data/usecases/usecases.dart b/lib/data/usecases/usecases.dart index f205cf5b..e5475a2b 100644 --- a/lib/data/usecases/usecases.dart +++ b/lib/data/usecases/usecases.dart @@ -1,7 +1,7 @@ -export './authentication/authentication.dart'; export './add_account/add_account.dart'; -export './load_surveys/load_surveys.dart'; +export './authentication/authentication.dart'; +export './load_current_account/load_current_account.dart'; export './load_survey_result/load_survey_result.dart'; -export './save_survey_result/save_survey_result.dart'; +export './load_surveys/load_surveys.dart'; export './save_current_account/save_current_account.dart'; -export './load_current_account/load_current_account.dart'; +export './save_survey_result/save_survey_result.dart'; diff --git a/lib/domain/entities/entities.dart b/lib/domain/entities/entities.dart index e50ad1ba..17b6b839 100644 --- a/lib/domain/entities/entities.dart +++ b/lib/domain/entities/entities.dart @@ -1,4 +1,4 @@ export './account_entity.dart'; +export './survey_answer_entity.dart'; export './survey_entity.dart'; export './survey_result_entity.dart'; -export './survey_answer_entity.dart'; diff --git a/lib/domain/usecases/add_account.dart b/lib/domain/usecases/add_account.dart index 6438bdb9..d3d62f42 100644 --- a/lib/domain/usecases/add_account.dart +++ b/lib/domain/usecases/add_account.dart @@ -1,7 +1,7 @@ -import '../entities/entities.dart'; - import 'package:equatable/equatable.dart'; +import '../entities/entities.dart'; + abstract class AddAccount { Future add(AddAccountParams params); } diff --git a/lib/domain/usecases/authentication.dart b/lib/domain/usecases/authentication.dart index 76160ed3..860a9329 100644 --- a/lib/domain/usecases/authentication.dart +++ b/lib/domain/usecases/authentication.dart @@ -1,7 +1,7 @@ -import '../entities/entities.dart'; - import 'package:equatable/equatable.dart'; +import '../entities/entities.dart'; + abstract class Authentication { Future auth(AuthenticationParams params); } diff --git a/lib/domain/usecases/usecases.dart b/lib/domain/usecases/usecases.dart index f8044284..7f52e7f7 100644 --- a/lib/domain/usecases/usecases.dart +++ b/lib/domain/usecases/usecases.dart @@ -1,7 +1,7 @@ -export './authentication.dart'; export './add_account.dart'; -export './load_surveys.dart'; -export './save_current_account.dart'; +export './authentication.dart'; export './load_current_account.dart'; export './load_survey_result.dart'; +export './load_surveys.dart'; +export './save_current_account.dart'; export './save_survey_result.dart'; diff --git a/lib/infra/cache/cache.dart b/lib/infra/cache/cache.dart index 2e59c0b5..58300c30 100644 --- a/lib/infra/cache/cache.dart +++ b/lib/infra/cache/cache.dart @@ -1,2 +1,2 @@ -export './secure_storage_adapter.dart'; export './local_storage_adapter.dart'; +export './secure_storage_adapter.dart'; diff --git a/lib/infra/cache/local_storage_adapter.dart b/lib/infra/cache/local_storage_adapter.dart index 888542c3..ca012347 100644 --- a/lib/infra/cache/local_storage_adapter.dart +++ b/lib/infra/cache/local_storage_adapter.dart @@ -1,7 +1,7 @@ -import '../../data/cache/cache.dart'; - import 'package:localstorage/localstorage.dart'; +import '../../data/cache/cache.dart'; + class LocalStorageAdapter implements CacheStorage { final LocalStorage localStorage; diff --git a/lib/infra/cache/secure_storage_adapter.dart b/lib/infra/cache/secure_storage_adapter.dart index da4eee2c..076df1ba 100644 --- a/lib/infra/cache/secure_storage_adapter.dart +++ b/lib/infra/cache/secure_storage_adapter.dart @@ -1,7 +1,7 @@ -import '../../data/cache/cache.dart'; - import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import '../../data/cache/cache.dart'; + class SecureStorageAdapter implements SaveSecureCacheStorage, diff --git a/lib/infra/http/http_adapter.dart b/lib/infra/http/http_adapter.dart index 77672a74..a945a3b8 100644 --- a/lib/infra/http/http_adapter.dart +++ b/lib/infra/http/http_adapter.dart @@ -1,7 +1,8 @@ -import '../../data/http/http.dart'; +import 'dart:convert'; import 'package:http/http.dart'; -import 'dart:convert'; + +import '../../data/http/http.dart'; class HttpAdapter implements HttpClient { final Client client; diff --git a/lib/main/composites/composites.dart b/lib/main/composites/composites.dart index e211d7a5..127b053e 100644 --- a/lib/main/composites/composites.dart +++ b/lib/main/composites/composites.dart @@ -1,3 +1,3 @@ -export './validation_composite.dart'; -export './remote_load_surveys_with_local_fallback.dart'; export './remote_load_survey_result_with_local_fallback.dart'; +export './remote_load_surveys_with_local_fallback.dart'; +export './validation_composite.dart'; diff --git a/lib/main/composites/remote_load_survey_result_with_local_fallback.dart b/lib/main/composites/remote_load_survey_result_with_local_fallback.dart index f184e61b..2947f9dd 100644 --- a/lib/main/composites/remote_load_survey_result_with_local_fallback.dart +++ b/lib/main/composites/remote_load_survey_result_with_local_fallback.dart @@ -1,7 +1,7 @@ +import '../../data/usecases/usecases.dart'; import '../../domain/entities/entities.dart'; import '../../domain/helpers/helpers.dart'; import '../../domain/usecases/usecases.dart'; -import '../../data/usecases/usecases.dart'; class RemoteLoadSurveyResultWithLocalFallback implements LoadSurveyResult { final RemoteLoadSurveyResult remote; diff --git a/lib/main/factories/cache/cache.dart b/lib/main/factories/cache/cache.dart index 4a3c30cc..d26fd682 100644 --- a/lib/main/factories/cache/cache.dart +++ b/lib/main/factories/cache/cache.dart @@ -1,2 +1,2 @@ -export './secure_storage_adapter_factory.dart'; export './local_storage_adapter_factory.dart'; +export './secure_storage_adapter_factory.dart'; diff --git a/lib/main/factories/cache/local_storage_adapter_factory.dart b/lib/main/factories/cache/local_storage_adapter_factory.dart index dfceb300..5d1df12f 100644 --- a/lib/main/factories/cache/local_storage_adapter_factory.dart +++ b/lib/main/factories/cache/local_storage_adapter_factory.dart @@ -1,6 +1,6 @@ -import '../../../infra/cache/cache.dart'; - import 'package:localstorage/localstorage.dart'; +import '../../../infra/cache/cache.dart'; + LocalStorageAdapter makeLocalStorageAdapter() => LocalStorageAdapter(localStorage: LocalStorage('fordev')); diff --git a/lib/main/factories/cache/secure_storage_adapter_factory.dart b/lib/main/factories/cache/secure_storage_adapter_factory.dart index 0f559438..b497b984 100644 --- a/lib/main/factories/cache/secure_storage_adapter_factory.dart +++ b/lib/main/factories/cache/secure_storage_adapter_factory.dart @@ -1,6 +1,6 @@ -import '../../../infra/cache/cache.dart'; - import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import '../../../infra/cache/cache.dart'; + SecureStorageAdapter makeSecureStorageAdapter() => SecureStorageAdapter(secureStorage: const FlutterSecureStorage()); diff --git a/lib/main/factories/http/http.dart b/lib/main/factories/http/http.dart index 3b84c3fd..28f1b2ca 100644 --- a/lib/main/factories/http/http.dart +++ b/lib/main/factories/http/http.dart @@ -1,3 +1,3 @@ -export './http_client_factory.dart'; export './api_url_factory.dart'; export './authorize_http_client_decorator_factory.dart'; +export './http_client_factory.dart'; diff --git a/lib/main/factories/http/http_client_factory.dart b/lib/main/factories/http/http_client_factory.dart index f449ebfc..d5ed6600 100644 --- a/lib/main/factories/http/http_client_factory.dart +++ b/lib/main/factories/http/http_client_factory.dart @@ -1,6 +1,6 @@ +import 'package:http/http.dart'; + import '../../../data/http/http.dart'; import '../../../infra/http/http.dart'; -import 'package:http/http.dart'; - HttpClient makeHttpAdapter() => HttpAdapter(Client()); diff --git a/lib/main/factories/pages/login/login_page_factory.dart b/lib/main/factories/pages/login/login_page_factory.dart index ad39aded..03993582 100644 --- a/lib/main/factories/pages/login/login_page_factory.dart +++ b/lib/main/factories/pages/login/login_page_factory.dart @@ -1,6 +1,6 @@ +import 'package:flutter/material.dart'; + import '../../../../ui/pages/pages.dart'; import '../../factories.dart'; -import 'package:flutter/material.dart'; - Widget makeLoginPage() => LoginPage(makeGetxLoginPresenter()); diff --git a/lib/main/factories/pages/pages.dart b/lib/main/factories/pages/pages.dart index 7ba64a02..8bd0668e 100644 --- a/lib/main/factories/pages/pages.dart +++ b/lib/main/factories/pages/pages.dart @@ -1,5 +1,5 @@ export './login/login.dart'; export './signup/signup.dart'; export './splash/splash.dart'; -export './surveys/surveys.dart'; export './survey_result/survey_result.dart'; +export './surveys/surveys.dart'; diff --git a/lib/main/factories/pages/signup/signup_page_factory.dart b/lib/main/factories/pages/signup/signup_page_factory.dart index 2b2269a3..63856d75 100644 --- a/lib/main/factories/pages/signup/signup_page_factory.dart +++ b/lib/main/factories/pages/signup/signup_page_factory.dart @@ -1,6 +1,6 @@ +import 'package:flutter/material.dart'; + import '../../../../ui/pages/pages.dart'; import '../../factories.dart'; -import 'package:flutter/material.dart'; - Widget makeSignUpPage() => SignUpPage(makeGetxSignUpPresenter()); diff --git a/lib/main/factories/pages/splash/splash_page_factory.dart b/lib/main/factories/pages/splash/splash_page_factory.dart index 03b8c6a7..66279af8 100644 --- a/lib/main/factories/pages/splash/splash_page_factory.dart +++ b/lib/main/factories/pages/splash/splash_page_factory.dart @@ -1,6 +1,6 @@ +import 'package:flutter/material.dart'; + import '../../../../ui/pages/pages.dart'; import '../../factories.dart'; -import 'package:flutter/material.dart'; - Widget makeSplashPage() => SplashPage(presenter: makeGetxSplashPresenter()); diff --git a/lib/main/factories/pages/survey_result/survey_result_page_factory.dart b/lib/main/factories/pages/survey_result/survey_result_page_factory.dart index 3629344b..d653df91 100644 --- a/lib/main/factories/pages/survey_result/survey_result_page_factory.dart +++ b/lib/main/factories/pages/survey_result/survey_result_page_factory.dart @@ -1,9 +1,9 @@ -import '../../../../ui/pages/pages.dart'; -import '../../factories.dart'; - import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import '../../../../ui/pages/pages.dart'; +import '../../factories.dart'; + Widget makeSurveyResultPage() => SurveyResultPage( makeGetxSurveyResultPresenter(Get.parameters['survey_id'] ?? ''), ); diff --git a/lib/main/factories/pages/surveys/surveys_page_factory.dart b/lib/main/factories/pages/surveys/surveys_page_factory.dart index 18f78fbe..c317edad 100644 --- a/lib/main/factories/pages/surveys/surveys_page_factory.dart +++ b/lib/main/factories/pages/surveys/surveys_page_factory.dart @@ -1,6 +1,6 @@ +import 'package:flutter/material.dart'; + import '../../../../ui/pages/pages.dart'; import '../../factories.dart'; -import 'package:flutter/material.dart'; - Widget makeSurveysPage() => SurveysPage(makeGetxSurveysPresenter()); diff --git a/lib/main/factories/usecases/usecases.dart b/lib/main/factories/usecases/usecases.dart index 58c842c9..b0e3a71c 100644 --- a/lib/main/factories/usecases/usecases.dart +++ b/lib/main/factories/usecases/usecases.dart @@ -1,7 +1,7 @@ -export './authentication_factory.dart'; export './add_account_factory.dart'; -export './load_surveys_factory.dart'; +export './authentication_factory.dart'; +export './load_current_account_factory.dart'; export './load_survey_result_factory.dart'; -export './save_survey_result_factory.dart'; +export './load_surveys_factory.dart'; export './save_current_account_factory.dart'; -export './load_current_account_factory.dart'; +export './save_survey_result_factory.dart'; diff --git a/lib/main/main.dart b/lib/main/main.dart index 77a94561..70f0de76 100644 --- a/lib/main/main.dart +++ b/lib/main/main.dart @@ -1,10 +1,10 @@ -import '../ui/components/components.dart'; -import './factories/factories.dart'; - import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:get/get.dart'; +import './factories/factories.dart'; +import '../ui/components/components.dart'; + void main() { runApp(const App()); } diff --git a/lib/presentation/mixins/mixins.dart b/lib/presentation/mixins/mixins.dart index de3dae67..12380af8 100644 --- a/lib/presentation/mixins/mixins.dart +++ b/lib/presentation/mixins/mixins.dart @@ -1,5 +1,5 @@ +export './form_manager.dart'; export './loading_manager.dart'; -export './session_manager.dart'; export './navigation_manager.dart'; -export './form_manager.dart'; +export './session_manager.dart'; export './ui_error_manager.dart'; diff --git a/lib/presentation/mixins/ui_error_manager.dart b/lib/presentation/mixins/ui_error_manager.dart index 134ae83f..3909621d 100644 --- a/lib/presentation/mixins/ui_error_manager.dart +++ b/lib/presentation/mixins/ui_error_manager.dart @@ -1,7 +1,7 @@ -import '../../ui/helpers/helpers.dart'; - import 'package:get/get.dart'; +import '../../ui/helpers/helpers.dart'; + mixin UIErrorManager on GetxController { final _mainError = Rx(null); Stream get mainErrorStream => _mainError.stream; diff --git a/lib/presentation/presenters/getx_login_presenter.dart b/lib/presentation/presenters/getx_login_presenter.dart index 65903649..db1974e3 100644 --- a/lib/presentation/presenters/getx_login_presenter.dart +++ b/lib/presentation/presenters/getx_login_presenter.dart @@ -1,11 +1,11 @@ -import '../../ui/helpers/helpers.dart'; -import '../../ui/pages/pages.dart'; +import 'package:get/get.dart'; + import '../../domain/helpers/helpers.dart'; import '../../domain/usecases/usecases.dart'; -import '../protocols/protocols.dart'; +import '../../ui/helpers/helpers.dart'; +import '../../ui/pages/pages.dart'; import '../mixins/mixins.dart'; - -import 'package:get/get.dart'; +import '../protocols/protocols.dart'; class GetxLoginPresenter extends GetxController with LoadingManager, NavigationManager, FormManager, UIErrorManager diff --git a/lib/presentation/presenters/getx_signup_presenter.dart b/lib/presentation/presenters/getx_signup_presenter.dart index 6b9fe82d..dc62b7c4 100644 --- a/lib/presentation/presenters/getx_signup_presenter.dart +++ b/lib/presentation/presenters/getx_signup_presenter.dart @@ -1,11 +1,11 @@ -import '../../ui/helpers/helpers.dart'; -import '../../ui/pages/pages.dart'; +import 'package:get/get.dart'; + import '../../domain/helpers/helpers.dart'; import '../../domain/usecases/usecases.dart'; -import '../protocols/protocols.dart'; +import '../../ui/helpers/helpers.dart'; +import '../../ui/pages/pages.dart'; import '../mixins/mixins.dart'; - -import 'package:get/get.dart'; +import '../protocols/protocols.dart'; class GetxSignUpPresenter extends GetxController with LoadingManager, NavigationManager, FormManager, UIErrorManager diff --git a/lib/presentation/presenters/getx_splash_presenter.dart b/lib/presentation/presenters/getx_splash_presenter.dart index a2f2d8e3..4b15fb40 100644 --- a/lib/presentation/presenters/getx_splash_presenter.dart +++ b/lib/presentation/presenters/getx_splash_presenter.dart @@ -1,9 +1,9 @@ +import 'package:get/get.dart'; + import '../../domain/usecases/usecases.dart'; import '../../ui/pages/pages.dart'; import '../mixins/mixins.dart'; -import 'package:get/get.dart'; - class GetxSplashPresenter extends GetxController with NavigationManager implements SplashPresenter { diff --git a/lib/presentation/presenters/getx_survey_result_presenter.dart b/lib/presentation/presenters/getx_survey_result_presenter.dart index 5b20ccea..c4574d79 100644 --- a/lib/presentation/presenters/getx_survey_result_presenter.dart +++ b/lib/presentation/presenters/getx_survey_result_presenter.dart @@ -1,3 +1,5 @@ +import 'package:get/get.dart'; + import '../../domain/entities/entities.dart'; import '../../domain/helpers/helpers.dart'; import '../../domain/usecases/usecases.dart'; @@ -6,8 +8,6 @@ import '../../ui/pages/pages.dart'; import '../helpers/helpers.dart'; import '../mixins/mixins.dart'; -import 'package:get/get.dart'; - class GetxSurveyResultPresenter extends GetxController with LoadingManager, SessionManager implements SurveyResultPresenter { diff --git a/lib/presentation/presenters/getx_surveys_presenter.dart b/lib/presentation/presenters/getx_surveys_presenter.dart index 32662bd7..5c3b4cdf 100644 --- a/lib/presentation/presenters/getx_surveys_presenter.dart +++ b/lib/presentation/presenters/getx_surveys_presenter.dart @@ -1,12 +1,12 @@ +import 'package:get/get.dart'; +import 'package:intl/intl.dart'; + import '../../domain/helpers/helpers.dart'; import '../../domain/usecases/usecases.dart'; import '../../ui/helpers/helpers.dart'; import '../../ui/pages/pages.dart'; import '../mixins/mixins.dart'; -import 'package:get/get.dart'; -import 'package:intl/intl.dart'; - class GetxSurveysPresenter extends GetxController with SessionManager, LoadingManager, NavigationManager implements SurveysPresenter { diff --git a/lib/presentation/presenters/presenters.dart b/lib/presentation/presenters/presenters.dart index 3b294e43..999de320 100644 --- a/lib/presentation/presenters/presenters.dart +++ b/lib/presentation/presenters/presenters.dart @@ -1,5 +1,5 @@ export './getx_login_presenter.dart'; export './getx_signup_presenter.dart'; export './getx_splash_presenter.dart'; -export './getx_surveys_presenter.dart'; export './getx_survey_result_presenter.dart'; +export './getx_surveys_presenter.dart'; diff --git a/lib/ui/components/components.dart b/lib/ui/components/components.dart index 28e2f522..362b8ca3 100644 --- a/lib/ui/components/components.dart +++ b/lib/ui/components/components.dart @@ -1,6 +1,6 @@ export './app_theme.dart'; -export './login_header.dart'; -export './headline1.dart'; -export './spinner_dialog.dart'; export './error_message.dart'; +export './headline1.dart'; +export './login_header.dart'; export './reload_screen.dart'; +export './spinner_dialog.dart'; diff --git a/lib/ui/components/reload_screen.dart b/lib/ui/components/reload_screen.dart index e0dae0a6..f6a2fc6e 100644 --- a/lib/ui/components/reload_screen.dart +++ b/lib/ui/components/reload_screen.dart @@ -1,7 +1,7 @@ -import '../helpers/helpers.dart'; - import 'package:flutter/material.dart'; +import '../helpers/helpers.dart'; + class ReloadScreen extends StatelessWidget { final String error; final Future Function() reload; diff --git a/lib/ui/components/spinner_dialog.dart b/lib/ui/components/spinner_dialog.dart index 239fec99..2162e006 100644 --- a/lib/ui/components/spinner_dialog.dart +++ b/lib/ui/components/spinner_dialog.dart @@ -1,7 +1,7 @@ -import '../helpers/helpers.dart'; - import 'package:flutter/material.dart'; +import '../helpers/helpers.dart'; + Future showLoading(BuildContext context) async { // await Future.delayed(Duration.zero); await showDialog( diff --git a/lib/ui/helpers/i18n/resources.dart b/lib/ui/helpers/i18n/resources.dart index 6bbb5e36..6e11d562 100644 --- a/lib/ui/helpers/i18n/resources.dart +++ b/lib/ui/helpers/i18n/resources.dart @@ -1,7 +1,7 @@ -import './strings/strings.dart'; - import 'package:flutter/widgets.dart'; +import './strings/strings.dart'; + class R { static Translation string = PtBr(); diff --git a/lib/ui/helpers/i18n/strings/strings.dart b/lib/ui/helpers/i18n/strings/strings.dart index a2f4d025..3d4de407 100644 --- a/lib/ui/helpers/i18n/strings/strings.dart +++ b/lib/ui/helpers/i18n/strings/strings.dart @@ -1,2 +1,2 @@ -export './translation.dart'; export './pt_br.dart'; +export './translation.dart'; diff --git a/lib/ui/mixins/loading_manager.dart b/lib/ui/mixins/loading_manager.dart index dbaabb33..3a65597a 100644 --- a/lib/ui/mixins/loading_manager.dart +++ b/lib/ui/mixins/loading_manager.dart @@ -1,7 +1,7 @@ -import '../components/components.dart'; - import 'package:flutter/material.dart'; +import '../components/components.dart'; + mixin LoadingManager { void handleLoading(BuildContext context, Stream stream) { stream.listen((isLoading) async { diff --git a/lib/ui/mixins/mixins.dart b/lib/ui/mixins/mixins.dart index ed46002a..6f245717 100644 --- a/lib/ui/mixins/mixins.dart +++ b/lib/ui/mixins/mixins.dart @@ -1,5 +1,5 @@ export './keyboard_manager.dart'; export './loading_manager.dart'; -export './ui_error_manager.dart'; export './navigation_manager.dart'; export './session_manager.dart'; +export './ui_error_manager.dart'; diff --git a/lib/ui/mixins/ui_error_manager.dart b/lib/ui/mixins/ui_error_manager.dart index 7c53a83c..5ea6b75f 100644 --- a/lib/ui/mixins/ui_error_manager.dart +++ b/lib/ui/mixins/ui_error_manager.dart @@ -1,8 +1,8 @@ +import 'package:flutter/material.dart'; + import '../components/components.dart'; import '../helpers/errors/errors.dart'; -import 'package:flutter/material.dart'; - mixin UIErrorManager { void handleMainError(BuildContext context, Stream stream) { stream.listen((error) { diff --git a/lib/ui/pages/login/components/components.dart b/lib/ui/pages/login/components/components.dart index 6609d2c3..5c5f8469 100644 --- a/lib/ui/pages/login/components/components.dart +++ b/lib/ui/pages/login/components/components.dart @@ -1,3 +1,3 @@ export './email_input.dart'; -export './password_input.dart'; export './login_button.dart'; +export './password_input.dart'; diff --git a/lib/ui/pages/login/components/email_input.dart b/lib/ui/pages/login/components/email_input.dart index db62a1e9..d5870147 100644 --- a/lib/ui/pages/login/components/email_input.dart +++ b/lib/ui/pages/login/components/email_input.dart @@ -1,9 +1,9 @@ -import '../../../helpers/helpers.dart'; -import '../login.dart'; - import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import '../../../helpers/helpers.dart'; +import '../login.dart'; + class EmailInput extends StatelessWidget { const EmailInput({super.key}); diff --git a/lib/ui/pages/login/components/login_button.dart b/lib/ui/pages/login/components/login_button.dart index b16b4e2a..6956fb8e 100644 --- a/lib/ui/pages/login/components/login_button.dart +++ b/lib/ui/pages/login/components/login_button.dart @@ -1,9 +1,9 @@ -import '../../../helpers/helpers.dart'; -import '../login.dart'; - import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import '../../../helpers/helpers.dart'; +import '../login.dart'; + class LoginButton extends StatelessWidget { const LoginButton({super.key}); diff --git a/lib/ui/pages/login/components/password_input.dart b/lib/ui/pages/login/components/password_input.dart index 5582b6c2..c430a36e 100644 --- a/lib/ui/pages/login/components/password_input.dart +++ b/lib/ui/pages/login/components/password_input.dart @@ -1,9 +1,9 @@ -import '../../../helpers/helpers.dart'; -import '../login.dart'; - import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import '../../../helpers/helpers.dart'; +import '../login.dart'; + class PasswordInput extends StatelessWidget { const PasswordInput({super.key}); diff --git a/lib/ui/pages/login/login_page.dart b/lib/ui/pages/login/login_page.dart index 93ee7d62..89bdf946 100644 --- a/lib/ui/pages/login/login_page.dart +++ b/lib/ui/pages/login/login_page.dart @@ -1,11 +1,11 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +import './components/components.dart'; +import './login.dart'; import '../../components/components.dart'; import '../../helpers/helpers.dart'; import '../../mixins/mixins.dart'; -import './components/components.dart'; -import './login.dart'; - -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; class LoginPage extends StatelessWidget with KeyboardManager, LoadingManager, UIErrorManager, NavigationManager { diff --git a/lib/ui/pages/login/login_presenter.dart b/lib/ui/pages/login/login_presenter.dart index 3c742359..11012b3f 100644 --- a/lib/ui/pages/login/login_presenter.dart +++ b/lib/ui/pages/login/login_presenter.dart @@ -1,7 +1,7 @@ -import '../../helpers/helpers.dart'; - import 'package:flutter/material.dart'; +import '../../helpers/helpers.dart'; + abstract class LoginPresenter implements Listenable { Stream get emailErrorStream; Stream get passwordErrorStream; diff --git a/lib/ui/pages/pages.dart b/lib/ui/pages/pages.dart index 7ba64a02..8bd0668e 100644 --- a/lib/ui/pages/pages.dart +++ b/lib/ui/pages/pages.dart @@ -1,5 +1,5 @@ export './login/login.dart'; export './signup/signup.dart'; export './splash/splash.dart'; -export './surveys/surveys.dart'; export './survey_result/survey_result.dart'; +export './surveys/surveys.dart'; diff --git a/lib/ui/pages/signup/components/components.dart b/lib/ui/pages/signup/components/components.dart index 0f424f12..e554f182 100644 --- a/lib/ui/pages/signup/components/components.dart +++ b/lib/ui/pages/signup/components/components.dart @@ -1,5 +1,5 @@ -export './name_input.dart'; export './email_input.dart'; -export './password_input.dart'; +export './name_input.dart'; export './password_confirmation_input.dart'; +export './password_input.dart'; export './signup_button.dart'; diff --git a/lib/ui/pages/signup/components/email_input.dart b/lib/ui/pages/signup/components/email_input.dart index fca9c3e3..2831d2a3 100644 --- a/lib/ui/pages/signup/components/email_input.dart +++ b/lib/ui/pages/signup/components/email_input.dart @@ -1,9 +1,9 @@ -import '../../../helpers/helpers.dart'; -import '../signup.dart'; - import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import '../../../helpers/helpers.dart'; +import '../signup.dart'; + class EmailInput extends StatelessWidget { const EmailInput({super.key}); diff --git a/lib/ui/pages/signup/components/name_input.dart b/lib/ui/pages/signup/components/name_input.dart index 2d6e83e4..b8fcee9c 100644 --- a/lib/ui/pages/signup/components/name_input.dart +++ b/lib/ui/pages/signup/components/name_input.dart @@ -1,9 +1,9 @@ -import '../../../helpers/helpers.dart'; -import '../signup.dart'; - import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import '../../../helpers/helpers.dart'; +import '../signup.dart'; + class NameInput extends StatelessWidget { const NameInput({super.key}); diff --git a/lib/ui/pages/signup/components/password_confirmation_input.dart b/lib/ui/pages/signup/components/password_confirmation_input.dart index fd219287..adbe5209 100644 --- a/lib/ui/pages/signup/components/password_confirmation_input.dart +++ b/lib/ui/pages/signup/components/password_confirmation_input.dart @@ -1,9 +1,9 @@ -import '../../../helpers/helpers.dart'; -import '../signup.dart'; - import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import '../../../helpers/helpers.dart'; +import '../signup.dart'; + class PasswordConfirmationInput extends StatelessWidget { const PasswordConfirmationInput({super.key}); diff --git a/lib/ui/pages/signup/components/password_input.dart b/lib/ui/pages/signup/components/password_input.dart index 92c924a5..21db1292 100644 --- a/lib/ui/pages/signup/components/password_input.dart +++ b/lib/ui/pages/signup/components/password_input.dart @@ -1,9 +1,9 @@ -import '../../../helpers/helpers.dart'; -import '../signup.dart'; - import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import '../../../helpers/helpers.dart'; +import '../signup.dart'; + class PasswordInput extends StatelessWidget { const PasswordInput({super.key}); diff --git a/lib/ui/pages/signup/components/signup_button.dart b/lib/ui/pages/signup/components/signup_button.dart index c244611b..1815866b 100644 --- a/lib/ui/pages/signup/components/signup_button.dart +++ b/lib/ui/pages/signup/components/signup_button.dart @@ -1,9 +1,9 @@ -import '../../../helpers/helpers.dart'; -import '../signup.dart'; - import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import '../../../helpers/helpers.dart'; +import '../signup.dart'; + class SignUpButton extends StatelessWidget { const SignUpButton({super.key}); diff --git a/lib/ui/pages/signup/signup_page.dart b/lib/ui/pages/signup/signup_page.dart index 3a7e5ba9..78c7c582 100644 --- a/lib/ui/pages/signup/signup_page.dart +++ b/lib/ui/pages/signup/signup_page.dart @@ -1,11 +1,11 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +import './components/components.dart'; +import './signup.dart'; import '../../components/components.dart'; import '../../helpers/helpers.dart'; import '../../mixins/mixins.dart'; -import './components/components.dart'; -import './signup.dart'; - -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; class SignUpPage extends StatelessWidget with KeyboardManager, LoadingManager, UIErrorManager, NavigationManager { diff --git a/lib/ui/pages/signup/signup_presenter.dart b/lib/ui/pages/signup/signup_presenter.dart index 341fa840..740f5f63 100644 --- a/lib/ui/pages/signup/signup_presenter.dart +++ b/lib/ui/pages/signup/signup_presenter.dart @@ -1,7 +1,7 @@ -import '../../helpers/helpers.dart'; - import 'package:flutter/material.dart'; +import '../../helpers/helpers.dart'; + abstract class SignUpPresenter implements Listenable { Stream get nameErrorStream; Stream get emailErrorStream; diff --git a/lib/ui/pages/splash/splash_page.dart b/lib/ui/pages/splash/splash_page.dart index 77b17839..1ac006ed 100644 --- a/lib/ui/pages/splash/splash_page.dart +++ b/lib/ui/pages/splash/splash_page.dart @@ -1,8 +1,8 @@ -import '../../mixins/mixins.dart'; -import './splash.dart'; - import 'package:flutter/material.dart'; +import './splash.dart'; +import '../../mixins/mixins.dart'; + class SplashPage extends StatelessWidget with NavigationManager { final SplashPresenter presenter; diff --git a/lib/ui/pages/survey_result/components/components.dart b/lib/ui/pages/survey_result/components/components.dart index 1e096eaa..4df3d1bb 100644 --- a/lib/ui/pages/survey_result/components/components.dart +++ b/lib/ui/pages/survey_result/components/components.dart @@ -1,5 +1,5 @@ -export './survey_result.dart'; export './active_icon.dart'; export './disabled_icon.dart'; -export './survey_header.dart'; export './survey_answer.dart'; +export './survey_header.dart'; +export './survey_result.dart'; diff --git a/lib/ui/pages/survey_result/components/survey_answer.dart b/lib/ui/pages/survey_result/components/survey_answer.dart index e6cfdd57..aed51473 100644 --- a/lib/ui/pages/survey_result/components/survey_answer.dart +++ b/lib/ui/pages/survey_result/components/survey_answer.dart @@ -1,8 +1,8 @@ -import '../survey_result.dart'; -import './components.dart'; - import 'package:flutter/material.dart'; +import './components.dart'; +import '../survey_result.dart'; + class SurveyAnswer extends StatelessWidget { final SurveyAnswerViewModel viewModel; diff --git a/lib/ui/pages/survey_result/components/survey_result.dart b/lib/ui/pages/survey_result/components/survey_result.dart index 20d3fbc0..98d82c60 100644 --- a/lib/ui/pages/survey_result/components/survey_result.dart +++ b/lib/ui/pages/survey_result/components/survey_result.dart @@ -1,8 +1,8 @@ -import '../survey_result.dart'; -import './components.dart'; - import 'package:flutter/material.dart'; +import './components.dart'; +import '../survey_result.dart'; + class SurveyResult extends StatelessWidget { final SurveyResultViewModel viewModel; final void Function({required String answer}) onSave; diff --git a/lib/ui/pages/survey_result/survey_result.dart b/lib/ui/pages/survey_result/survey_result.dart index 62894fe4..aa7642d6 100644 --- a/lib/ui/pages/survey_result/survey_result.dart +++ b/lib/ui/pages/survey_result/survey_result.dart @@ -1,4 +1,4 @@ +export './survey_answer_viewmodel.dart'; export './survey_result_page.dart'; export './survey_result_presenter.dart'; export './survey_result_viewmodel.dart'; -export './survey_answer_viewmodel.dart'; diff --git a/lib/ui/pages/survey_result/survey_result_page.dart b/lib/ui/pages/survey_result/survey_result_page.dart index 1ebd9ee7..2cd36745 100644 --- a/lib/ui/pages/survey_result/survey_result_page.dart +++ b/lib/ui/pages/survey_result/survey_result_page.dart @@ -1,10 +1,10 @@ +import 'package:flutter/material.dart'; + +import './components/components.dart'; +import './survey_result.dart'; import '../../components/components.dart'; import '../../helpers/helpers.dart'; import '../../mixins/mixins.dart'; -import './components/components.dart'; -import './survey_result.dart'; - -import 'package:flutter/material.dart'; class SurveyResultPage extends StatelessWidget with LoadingManager, SessionManager { diff --git a/lib/ui/pages/survey_result/survey_result_presenter.dart b/lib/ui/pages/survey_result/survey_result_presenter.dart index 41c10e59..3bce40ec 100644 --- a/lib/ui/pages/survey_result/survey_result_presenter.dart +++ b/lib/ui/pages/survey_result/survey_result_presenter.dart @@ -1,7 +1,7 @@ -import './survey_result.dart'; - import 'package:flutter/material.dart'; +import './survey_result.dart'; + abstract class SurveyResultPresenter implements Listenable { Stream get isLoadingStream; Stream get isSessionExpiredStream; diff --git a/lib/ui/pages/survey_result/survey_result_viewmodel.dart b/lib/ui/pages/survey_result/survey_result_viewmodel.dart index 3f17cacc..00064048 100644 --- a/lib/ui/pages/survey_result/survey_result_viewmodel.dart +++ b/lib/ui/pages/survey_result/survey_result_viewmodel.dart @@ -1,7 +1,7 @@ -import './survey_result.dart'; - import 'package:equatable/equatable.dart'; +import './survey_result.dart'; + class SurveyResultViewModel extends Equatable { final String surveyId; final String question; diff --git a/lib/ui/pages/surveys/components/survey_item.dart b/lib/ui/pages/surveys/components/survey_item.dart index c0a14b2f..2d7ff976 100644 --- a/lib/ui/pages/surveys/components/survey_item.dart +++ b/lib/ui/pages/surveys/components/survey_item.dart @@ -1,8 +1,8 @@ -import '../surveys.dart'; - import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import '../surveys.dart'; + class SurveyItem extends StatelessWidget { final SurveyViewModel viewModel; diff --git a/lib/ui/pages/surveys/components/survey_items.dart b/lib/ui/pages/surveys/components/survey_items.dart index fce25bde..61d689c3 100644 --- a/lib/ui/pages/surveys/components/survey_items.dart +++ b/lib/ui/pages/surveys/components/survey_items.dart @@ -1,9 +1,9 @@ -import '../surveys.dart'; -import './components.dart'; - import 'package:carousel_slider/carousel_slider.dart'; import 'package:flutter/material.dart'; +import './components.dart'; +import '../surveys.dart'; + class SurveyItems extends StatelessWidget { final List viewModels; diff --git a/lib/ui/pages/surveys/surveys.dart b/lib/ui/pages/surveys/surveys.dart index 3842ee43..862f2b6a 100644 --- a/lib/ui/pages/surveys/surveys.dart +++ b/lib/ui/pages/surveys/surveys.dart @@ -1,3 +1,3 @@ +export './survey_viewmodel.dart'; export './surveys_page.dart'; export './surveys_presenter.dart'; -export './survey_viewmodel.dart'; diff --git a/lib/ui/pages/surveys/surveys_page.dart b/lib/ui/pages/surveys/surveys_page.dart index 29a7b42c..1b01db40 100644 --- a/lib/ui/pages/surveys/surveys_page.dart +++ b/lib/ui/pages/surveys/surveys_page.dart @@ -1,13 +1,13 @@ -import '../../components/components.dart'; -import '../../helpers/helpers.dart'; -import '../../mixins/mixins.dart'; -import './components/components.dart'; -import './surveys.dart'; - import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:provider/provider.dart'; +import './components/components.dart'; +import './surveys.dart'; +import '../../components/components.dart'; +import '../../helpers/helpers.dart'; +import '../../mixins/mixins.dart'; + class SurveysPage extends StatefulWidget { final SurveysPresenter presenter; diff --git a/lib/ui/pages/surveys/surveys_presenter.dart b/lib/ui/pages/surveys/surveys_presenter.dart index e5a0d302..b26c4a41 100644 --- a/lib/ui/pages/surveys/surveys_presenter.dart +++ b/lib/ui/pages/surveys/surveys_presenter.dart @@ -1,7 +1,7 @@ -import './surveys.dart'; - import 'package:flutter/material.dart'; +import './surveys.dart'; + abstract class SurveysPresenter implements Listenable { Stream get isLoadingStream; Stream get isSessionExpiredStream; diff --git a/lib/validation/validators/compare_fields_validation.dart b/lib/validation/validators/compare_fields_validation.dart index d1d927b8..adbb4f60 100644 --- a/lib/validation/validators/compare_fields_validation.dart +++ b/lib/validation/validators/compare_fields_validation.dart @@ -1,8 +1,8 @@ +import 'package:equatable/equatable.dart'; + import '../../presentation/protocols/protocols.dart'; import '../protocols/protocols.dart'; -import 'package:equatable/equatable.dart'; - class CompareFieldsValidation extends Equatable implements FieldValidation { @override final String field; diff --git a/lib/validation/validators/email_validation.dart b/lib/validation/validators/email_validation.dart index 2c2c17c4..88fddcbf 100644 --- a/lib/validation/validators/email_validation.dart +++ b/lib/validation/validators/email_validation.dart @@ -1,8 +1,8 @@ +import 'package:equatable/equatable.dart'; + import '../../presentation/protocols/protocols.dart'; import '../protocols/protocols.dart'; -import 'package:equatable/equatable.dart'; - class EmailValidation extends Equatable implements FieldValidation { @override final String field; diff --git a/lib/validation/validators/min_length_validation.dart b/lib/validation/validators/min_length_validation.dart index fbfb1553..4f275012 100644 --- a/lib/validation/validators/min_length_validation.dart +++ b/lib/validation/validators/min_length_validation.dart @@ -1,8 +1,8 @@ +import 'package:equatable/equatable.dart'; + import '../../presentation/protocols/protocols.dart'; import '../protocols/protocols.dart'; -import 'package:equatable/equatable.dart'; - class MinLengthValidation extends Equatable implements FieldValidation { @override final String field; diff --git a/lib/validation/validators/required_field_validation.dart b/lib/validation/validators/required_field_validation.dart index c69247a8..cd779b3c 100644 --- a/lib/validation/validators/required_field_validation.dart +++ b/lib/validation/validators/required_field_validation.dart @@ -1,8 +1,8 @@ +import 'package:equatable/equatable.dart'; + import '../../presentation/protocols/protocols.dart'; import '../protocols/protocols.dart'; -import 'package:equatable/equatable.dart'; - class RequiredFieldValidation extends Equatable implements FieldValidation { @override final String field; diff --git a/lib/validation/validators/validators.dart b/lib/validation/validators/validators.dart index b363417b..7914dd91 100644 --- a/lib/validation/validators/validators.dart +++ b/lib/validation/validators/validators.dart @@ -1,4 +1,4 @@ -export './required_field_validation.dart'; -export './min_length_validation.dart'; -export './email_validation.dart'; export './compare_fields_validation.dart'; +export './email_validation.dart'; +export './min_length_validation.dart'; +export './required_field_validation.dart'; diff --git a/test/data/mocks/mocks.dart b/test/data/mocks/mocks.dart index b75ba7e8..f46e86ae 100644 --- a/test/data/mocks/mocks.dart +++ b/test/data/mocks/mocks.dart @@ -1,9 +1,9 @@ export './cache_storage_spy.dart'; export './http_client_spy.dart'; -export './secure_cache_storage_spy.dart'; +export './load_survey_result_spy.dart'; +export './load_surveys_spy.dart'; export './local_load_survey_result_spy.dart'; export './local_load_surveys_spy.dart'; -export './load_survey_result_spy.dart'; export './remote_load_survey_result_spy.dart'; -export './load_surveys_spy.dart'; export './remote_load_surveys_spy.dart'; +export './secure_cache_storage_spy.dart'; diff --git a/test/data/usecases/add_account/remote_add_account_test.dart b/test/data/usecases/add_account/remote_add_account_test.dart index 0594efa0..27921a1f 100644 --- a/test/data/usecases/add_account/remote_add_account_test.dart +++ b/test/data/usecases/add_account/remote_add_account_test.dart @@ -1,16 +1,15 @@ -import 'package:fordev/domain/helpers/helpers.dart'; -import 'package:fordev/domain/usecases/usecases.dart'; +import 'package:faker/faker.dart'; import 'package:fordev/data/http/http.dart'; import 'package:fordev/data/usecases/usecases.dart'; +import 'package:fordev/domain/helpers/helpers.dart'; +import 'package:fordev/domain/usecases/usecases.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:test/test.dart'; import '../../../domain/mocks/mocks.dart'; import '../../../infra/mocks/mocks.dart'; import '../../mocks/mocks.dart'; -import 'package:faker/faker.dart'; -import 'package:mocktail/mocktail.dart'; -import 'package:test/test.dart'; - void main() { late RemoteAddAccount sut; late HttpClientSpy httpClient; diff --git a/test/data/usecases/authentication/remote_authentication_test.dart b/test/data/usecases/authentication/remote_authentication_test.dart index 2f1fd18c..c867d6b6 100644 --- a/test/data/usecases/authentication/remote_authentication_test.dart +++ b/test/data/usecases/authentication/remote_authentication_test.dart @@ -1,16 +1,15 @@ -import 'package:fordev/domain/helpers/helpers.dart'; -import 'package:fordev/domain/usecases/usecases.dart'; +import 'package:faker/faker.dart'; import 'package:fordev/data/http/http.dart'; import 'package:fordev/data/usecases/usecases.dart'; +import 'package:fordev/domain/helpers/helpers.dart'; +import 'package:fordev/domain/usecases/usecases.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:test/test.dart'; import '../../../domain/mocks/mocks.dart'; import '../../../infra/mocks/mocks.dart'; import '../../mocks/mocks.dart'; -import 'package:faker/faker.dart'; -import 'package:mocktail/mocktail.dart'; -import 'package:test/test.dart'; - void main() { late RemoteAuthentication sut; late HttpClientSpy httpClient; diff --git a/test/data/usecases/load_current_account/local_load_current_account_test.dart b/test/data/usecases/load_current_account/local_load_current_account_test.dart index eb91a0d2..12ee4e9e 100644 --- a/test/data/usecases/load_current_account/local_load_current_account_test.dart +++ b/test/data/usecases/load_current_account/local_load_current_account_test.dart @@ -1,13 +1,12 @@ +import 'package:faker/faker.dart'; +import 'package:fordev/data/usecases/usecases.dart'; import 'package:fordev/domain/entities/entities.dart'; import 'package:fordev/domain/helpers/helpers.dart'; -import 'package:fordev/data/usecases/usecases.dart'; - -import '../../mocks/mocks.dart'; - -import 'package:faker/faker.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; +import '../../mocks/mocks.dart'; + void main() { late LocalLoadCurrentAccount sut; late SecureCacheStorageSpy secureCacheStorage; diff --git a/test/data/usecases/load_survey_result/local_load_survey_result_test.dart b/test/data/usecases/load_survey_result/local_load_survey_result_test.dart index eff059f5..b8f66aa1 100644 --- a/test/data/usecases/load_survey_result/local_load_survey_result_test.dart +++ b/test/data/usecases/load_survey_result/local_load_survey_result_test.dart @@ -1,15 +1,14 @@ +import 'package:faker/faker.dart'; +import 'package:fordev/data/usecases/usecases.dart'; import 'package:fordev/domain/entities/entities.dart'; import 'package:fordev/domain/helpers/helpers.dart'; -import 'package:fordev/data/usecases/usecases.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:test/test.dart'; import '../../../domain/mocks/mocks.dart'; import '../../../infra/mocks/mocks.dart'; import '../../mocks/mocks.dart'; -import 'package:faker/faker.dart'; -import 'package:mocktail/mocktail.dart'; -import 'package:test/test.dart'; - void main() { late LocalLoadSurveyResult sut; late CacheStorageSpy cacheStorage; diff --git a/test/data/usecases/load_survey_result/remote_load_survey_result_test.dart b/test/data/usecases/load_survey_result/remote_load_survey_result_test.dart index e1bc4a3d..0d0a63ec 100644 --- a/test/data/usecases/load_survey_result/remote_load_survey_result_test.dart +++ b/test/data/usecases/load_survey_result/remote_load_survey_result_test.dart @@ -1,15 +1,14 @@ -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; +import 'package:faker/faker.dart'; import 'package:fordev/data/http/http.dart'; import 'package:fordev/data/usecases/usecases.dart'; +import 'package:fordev/domain/entities/entities.dart'; +import 'package:fordev/domain/helpers/helpers.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:test/test.dart'; import '../../../infra/mocks/mocks.dart'; import '../../mocks/mocks.dart'; -import 'package:faker/faker.dart'; -import 'package:mocktail/mocktail.dart'; -import 'package:test/test.dart'; - void main() { late RemoteLoadSurveyResult sut; late HttpClientSpy httpClient; diff --git a/test/data/usecases/load_surveys/local_load_surveys_test.dart b/test/data/usecases/load_surveys/local_load_surveys_test.dart index 97f56d50..07df8b87 100644 --- a/test/data/usecases/load_surveys/local_load_surveys_test.dart +++ b/test/data/usecases/load_surveys/local_load_surveys_test.dart @@ -1,14 +1,13 @@ +import 'package:fordev/data/usecases/usecases.dart'; import 'package:fordev/domain/entities/entities.dart'; import 'package:fordev/domain/helpers/helpers.dart'; -import 'package:fordev/data/usecases/usecases.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:test/test.dart'; import '../../../domain/mocks/entity_factory.dart'; import '../../../infra/mocks/mocks.dart'; import '../../mocks/mocks.dart'; -import 'package:mocktail/mocktail.dart'; -import 'package:test/test.dart'; - void main() { late LocalLoadSurveys sut; late CacheStorageSpy cacheStorage; diff --git a/test/data/usecases/load_surveys/remote_load_surveys_test.dart b/test/data/usecases/load_surveys/remote_load_surveys_test.dart index 0817a644..41eca9fb 100644 --- a/test/data/usecases/load_surveys/remote_load_surveys_test.dart +++ b/test/data/usecases/load_surveys/remote_load_surveys_test.dart @@ -1,15 +1,14 @@ -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; +import 'package:faker/faker.dart'; import 'package:fordev/data/http/http.dart'; import 'package:fordev/data/usecases/usecases.dart'; +import 'package:fordev/domain/entities/entities.dart'; +import 'package:fordev/domain/helpers/helpers.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:test/test.dart'; import '../../../infra/mocks/mocks.dart'; import '../../mocks/mocks.dart'; -import 'package:faker/faker.dart'; -import 'package:mocktail/mocktail.dart'; -import 'package:test/test.dart'; - void main() { late RemoteLoadSurveys sut; late HttpClientSpy httpClient; diff --git a/test/data/usecases/save_current_account/local_save_current_account_test.dart b/test/data/usecases/save_current_account/local_save_current_account_test.dart index 195690a8..dfa5f9b7 100644 --- a/test/data/usecases/save_current_account/local_save_current_account_test.dart +++ b/test/data/usecases/save_current_account/local_save_current_account_test.dart @@ -1,13 +1,12 @@ +import 'package:faker/faker.dart'; +import 'package:fordev/data/usecases/usecases.dart'; import 'package:fordev/domain/entities/entities.dart'; import 'package:fordev/domain/helpers/helpers.dart'; -import 'package:fordev/data/usecases/usecases.dart'; - -import '../../mocks/mocks.dart'; - -import 'package:faker/faker.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; +import '../../mocks/mocks.dart'; + void main() { late LocalSaveCurrentAccount sut; late SecureCacheStorageSpy secureCacheStorage; diff --git a/test/data/usecases/save_survey_result/remote_save_survey_result_test.dart b/test/data/usecases/save_survey_result/remote_save_survey_result_test.dart index 59dfa4b7..2ddefa6d 100644 --- a/test/data/usecases/save_survey_result/remote_save_survey_result_test.dart +++ b/test/data/usecases/save_survey_result/remote_save_survey_result_test.dart @@ -1,15 +1,14 @@ -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; +import 'package:faker/faker.dart'; import 'package:fordev/data/http/http.dart'; import 'package:fordev/data/usecases/usecases.dart'; +import 'package:fordev/domain/entities/entities.dart'; +import 'package:fordev/domain/helpers/helpers.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:test/test.dart'; import '../../../infra/mocks/mocks.dart'; import '../../mocks/mocks.dart'; -import 'package:faker/faker.dart'; -import 'package:mocktail/mocktail.dart'; -import 'package:test/test.dart'; - void main() { late RemoteSaveSurveyResult sut; late HttpClientSpy httpClient; diff --git a/test/domain/mocks/entity_factory.dart b/test/domain/mocks/entity_factory.dart index 14d70208..fb2268c7 100644 --- a/test/domain/mocks/entity_factory.dart +++ b/test/domain/mocks/entity_factory.dart @@ -1,6 +1,5 @@ -import 'package:fordev/domain/entities/entities.dart'; - import 'package:faker/faker.dart'; +import 'package:fordev/domain/entities/entities.dart'; class EntityFactory { static AccountEntity makeAccount() => AccountEntity(token: faker.guid.guid()); diff --git a/test/domain/mocks/mocks.dart b/test/domain/mocks/mocks.dart index fb1740f6..42f0bd17 100644 --- a/test/domain/mocks/mocks.dart +++ b/test/domain/mocks/mocks.dart @@ -1,7 +1,7 @@ +export './add_account_spy.dart'; +export './authentication_spy.dart'; export './entity_factory.dart'; +export './load_current_account_spy.dart'; export './params_factory.dart'; -export './authentication_spy.dart'; export './save_current_account_spy.dart'; -export './load_current_account_spy.dart'; export './save_survey_result_spy.dart'; -export './add_account_spy.dart'; diff --git a/test/domain/mocks/params_factory.dart b/test/domain/mocks/params_factory.dart index c05d9d87..cc3469a0 100644 --- a/test/domain/mocks/params_factory.dart +++ b/test/domain/mocks/params_factory.dart @@ -1,6 +1,5 @@ -import 'package:fordev/domain/usecases/usecases.dart'; - import 'package:faker/faker.dart'; +import 'package:fordev/domain/usecases/usecases.dart'; class ParamsFactory { static AddAccountParams makeAddAccount() => AddAccountParams( diff --git a/test/domain/mocks/save_survey_result_spy.dart b/test/domain/mocks/save_survey_result_spy.dart index eab002ec..e812546a 100644 --- a/test/domain/mocks/save_survey_result_spy.dart +++ b/test/domain/mocks/save_survey_result_spy.dart @@ -1,7 +1,6 @@ -import 'package:fordev/domain/helpers/helpers.dart'; import 'package:fordev/domain/entities/entities.dart'; +import 'package:fordev/domain/helpers/helpers.dart'; import 'package:fordev/domain/usecases/usecases.dart'; - import 'package:mocktail/mocktail.dart'; class SaveSurveyResultSpy extends Mock implements SaveSurveyResult { diff --git a/test/infra/cache/local_storage_adapter_test.dart b/test/infra/cache/local_storage_adapter_test.dart index 4a24206c..2cf4db55 100644 --- a/test/infra/cache/local_storage_adapter_test.dart +++ b/test/infra/cache/local_storage_adapter_test.dart @@ -1,11 +1,10 @@ -import 'package:fordev/infra/cache/cache.dart'; - -import '../mocks/mocks.dart'; - import 'package:faker/faker.dart'; +import 'package:fordev/infra/cache/cache.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; +import '../mocks/mocks.dart'; + void main() { late LocalStorageAdapter sut; late LocalStorageSpy localStorage; diff --git a/test/infra/cache/secure_storage_adapter_test.dart b/test/infra/cache/secure_storage_adapter_test.dart index e15984c8..bf3389bf 100644 --- a/test/infra/cache/secure_storage_adapter_test.dart +++ b/test/infra/cache/secure_storage_adapter_test.dart @@ -1,11 +1,10 @@ -import 'package:fordev/infra/cache/cache.dart'; - -import '../mocks/mocks.dart'; - import 'package:faker/faker.dart'; +import 'package:fordev/infra/cache/cache.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; +import '../mocks/mocks.dart'; + void main() { late SecureStorageAdapter sut; late FlutterSecureStorageSpy secureStorage; diff --git a/test/infra/http/http_adapter_test.dart b/test/infra/http/http_adapter_test.dart index d8202305..d567d85f 100644 --- a/test/infra/http/http_adapter_test.dart +++ b/test/infra/http/http_adapter_test.dart @@ -1,12 +1,11 @@ +import 'package:faker/faker.dart'; import 'package:fordev/data/http/http.dart'; import 'package:fordev/infra/http/http.dart'; - -import '../mocks/mocks.dart'; - -import 'package:faker/faker.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; +import '../mocks/mocks.dart'; + void main() { late HttpAdapter sut; late ClientSpy client; diff --git a/test/infra/mocks/mocks.dart b/test/infra/mocks/mocks.dart index 74f1693e..20e8052e 100644 --- a/test/infra/mocks/mocks.dart +++ b/test/infra/mocks/mocks.dart @@ -1,5 +1,5 @@ export './api_factory.dart'; export './cache_factory.dart'; -export './local_storage_spy.dart'; -export './flutter_secure_storage_spy.dart'; export './client_spy.dart'; +export './flutter_secure_storage_spy.dart'; +export './local_storage_spy.dart'; diff --git a/test/main/composites/remote_load_survey_result_with_local_fallback_test.dart b/test/main/composites/remote_load_survey_result_with_local_fallback_test.dart index 91c1e80e..8d8158ce 100644 --- a/test/main/composites/remote_load_survey_result_with_local_fallback_test.dart +++ b/test/main/composites/remote_load_survey_result_with_local_fallback_test.dart @@ -1,14 +1,13 @@ +import 'package:faker/faker.dart'; import 'package:fordev/domain/entities/entities.dart'; import 'package:fordev/domain/helpers/helpers.dart'; import 'package:fordev/main/composites/composites.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:test/test.dart'; import '../../data/mocks/mocks.dart'; import '../../domain/mocks/mocks.dart'; -import 'package:faker/faker.dart'; -import 'package:mocktail/mocktail.dart'; -import 'package:test/test.dart'; - void main() { late RemoteLoadSurveyResultWithLocalFallback sut; late RemoteLoadSurveyResultSpy remote; diff --git a/test/main/composites/remote_load_surveys_with_local_fallback_test.dart b/test/main/composites/remote_load_surveys_with_local_fallback_test.dart index 2e934e69..c7330954 100644 --- a/test/main/composites/remote_load_surveys_with_local_fallback_test.dart +++ b/test/main/composites/remote_load_surveys_with_local_fallback_test.dart @@ -1,13 +1,12 @@ import 'package:fordev/domain/entities/entities.dart'; import 'package:fordev/domain/helpers/helpers.dart'; import 'package:fordev/main/composites/composites.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:test/test.dart'; import '../../data/mocks/mocks.dart'; import '../../domain/mocks/mocks.dart'; -import 'package:mocktail/mocktail.dart'; -import 'package:test/test.dart'; - void main() { late RemoteLoadSurveysWithLocalFallback sut; late RemoteLoadSurveysSpy remote; diff --git a/test/main/composites/validation_composite_test.dart b/test/main/composites/validation_composite_test.dart index 99cf93cf..74460565 100644 --- a/test/main/composites/validation_composite_test.dart +++ b/test/main/composites/validation_composite_test.dart @@ -1,10 +1,9 @@ -import 'package:fordev/presentation/protocols/protocols.dart'; import 'package:fordev/main/composites/composites.dart'; +import 'package:fordev/presentation/protocols/protocols.dart'; +import 'package:test/test.dart'; import '../../validation/mocks/mocks.dart'; -import 'package:test/test.dart'; - void main() { late ValidationComposite sut; late FieldValidationSpy validation1; diff --git a/test/main/decorators/authorize_http_client_decorator_test.dart b/test/main/decorators/authorize_http_client_decorator_test.dart index 72b4df31..15061ce1 100644 --- a/test/main/decorators/authorize_http_client_decorator_test.dart +++ b/test/main/decorators/authorize_http_client_decorator_test.dart @@ -1,12 +1,11 @@ +import 'package:faker/faker.dart'; import 'package:fordev/data/http/http.dart'; import 'package:fordev/main/decorators/decorators.dart'; - -import '../../data/mocks/mocks.dart'; - -import 'package:faker/faker.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; +import '../../data/mocks/mocks.dart'; + void main() { late AuthorizeHttpClientDecorator sut; late SecureCacheStorageSpy secureCacheStorage; diff --git a/test/main/factories/pages/login/login_validation_factory_test.dart b/test/main/factories/pages/login/login_validation_factory_test.dart index 7eb44ad0..11887096 100644 --- a/test/main/factories/pages/login/login_validation_factory_test.dart +++ b/test/main/factories/pages/login/login_validation_factory_test.dart @@ -1,6 +1,5 @@ -import 'package:fordev/validation/validators/validators.dart'; import 'package:fordev/main/factories/factories.dart'; - +import 'package:fordev/validation/validators/validators.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/main/factories/pages/login/signup_validation_factory_test.dart b/test/main/factories/pages/login/signup_validation_factory_test.dart index a387960f..0246c1dd 100644 --- a/test/main/factories/pages/login/signup_validation_factory_test.dart +++ b/test/main/factories/pages/login/signup_validation_factory_test.dart @@ -1,6 +1,5 @@ -import 'package:fordev/validation/validators/validators.dart'; import 'package:fordev/main/factories/factories.dart'; - +import 'package:fordev/validation/validators/validators.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/presentation/presenters/getx_login_presenter_test.dart b/test/presentation/presenters/getx_login_presenter_test.dart index 9266f22d..b8f8e0d7 100644 --- a/test/presentation/presenters/getx_login_presenter_test.dart +++ b/test/presentation/presenters/getx_login_presenter_test.dart @@ -1,17 +1,16 @@ -import 'package:fordev/ui/helpers/helpers.dart'; +import 'package:faker/faker.dart'; import 'package:fordev/domain/entities/entities.dart'; import 'package:fordev/domain/helpers/helpers.dart'; import 'package:fordev/domain/usecases/usecases.dart'; import 'package:fordev/presentation/presenters/presenters.dart'; import 'package:fordev/presentation/protocols/protocols.dart'; +import 'package:fordev/ui/helpers/helpers.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:test/test.dart'; import '../../domain/mocks/mocks.dart'; import '../mocks/mocks.dart'; -import 'package:faker/faker.dart'; -import 'package:mocktail/mocktail.dart'; -import 'package:test/test.dart'; - void main() { late GetxLoginPresenter sut; late AuthenticationSpy authentication; diff --git a/test/presentation/presenters/getx_signup_presenter_test.dart b/test/presentation/presenters/getx_signup_presenter_test.dart index 45826540..f26c0710 100644 --- a/test/presentation/presenters/getx_signup_presenter_test.dart +++ b/test/presentation/presenters/getx_signup_presenter_test.dart @@ -1,17 +1,16 @@ -import 'package:fordev/ui/helpers/helpers.dart'; +import 'package:faker/faker.dart'; import 'package:fordev/domain/entities/entities.dart'; import 'package:fordev/domain/helpers/helpers.dart'; import 'package:fordev/domain/usecases/usecases.dart'; import 'package:fordev/presentation/presenters/presenters.dart'; import 'package:fordev/presentation/protocols/protocols.dart'; +import 'package:fordev/ui/helpers/helpers.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:test/test.dart'; import '../../domain/mocks/mocks.dart'; import '../mocks/mocks.dart'; -import 'package:faker/faker.dart'; -import 'package:mocktail/mocktail.dart'; -import 'package:test/test.dart'; - void main() { late GetxSignUpPresenter sut; late ValidationSpy validation; diff --git a/test/presentation/presenters/getx_splash_presenter_test.dart b/test/presentation/presenters/getx_splash_presenter_test.dart index 3c93ca25..9dbf10ff 100644 --- a/test/presentation/presenters/getx_splash_presenter_test.dart +++ b/test/presentation/presenters/getx_splash_presenter_test.dart @@ -1,10 +1,9 @@ import 'package:fordev/presentation/presenters/presenters.dart'; - -import '../../domain/mocks/mocks.dart'; - import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; +import '../../domain/mocks/mocks.dart'; + void main() { late GetxSplashPresenter sut; late LoadCurrentAccountSpy loadCurrentAccount; diff --git a/test/presentation/presenters/getx_survey_result_presenter_test.dart b/test/presentation/presenters/getx_survey_result_presenter_test.dart index 302cb90c..98d43483 100644 --- a/test/presentation/presenters/getx_survey_result_presenter_test.dart +++ b/test/presentation/presenters/getx_survey_result_presenter_test.dart @@ -1,16 +1,15 @@ -import 'package:fordev/domain/helpers/helpers.dart'; +import 'package:faker/faker.dart'; import 'package:fordev/domain/entities/entities.dart'; +import 'package:fordev/domain/helpers/helpers.dart'; +import 'package:fordev/presentation/presenters/presenters.dart'; import 'package:fordev/ui/helpers/helpers.dart'; import 'package:fordev/ui/pages/pages.dart'; -import 'package:fordev/presentation/presenters/presenters.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:test/test.dart'; import '../../data/mocks/mocks.dart'; import '../../domain/mocks/mocks.dart'; -import 'package:faker/faker.dart'; -import 'package:mocktail/mocktail.dart'; -import 'package:test/test.dart'; - void main() { late GetxSurveyResultPresenter sut; late LoadSurveyResultSpy loadSurveyResult; diff --git a/test/presentation/presenters/getx_surveys_presenter_test.dart b/test/presentation/presenters/getx_surveys_presenter_test.dart index 5f61b3ed..f92c84fa 100644 --- a/test/presentation/presenters/getx_surveys_presenter_test.dart +++ b/test/presentation/presenters/getx_surveys_presenter_test.dart @@ -1,15 +1,14 @@ import 'package:fordev/domain/entities/entities.dart'; import 'package:fordev/domain/helpers/helpers.dart'; +import 'package:fordev/presentation/presenters/presenters.dart'; import 'package:fordev/ui/helpers/helpers.dart'; import 'package:fordev/ui/pages/pages.dart'; -import 'package:fordev/presentation/presenters/presenters.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:test/test.dart'; import '../../data/mocks/mocks.dart'; import '../../domain/mocks/mocks.dart'; -import 'package:mocktail/mocktail.dart'; -import 'package:test/test.dart'; - void main() { late GetxSurveysPresenter sut; late LoadSurveysSpy loadSurveys; diff --git a/test/ui/mocks/login_presenter_spy.dart b/test/ui/mocks/login_presenter_spy.dart index 89645286..3b3df11d 100644 --- a/test/ui/mocks/login_presenter_spy.dart +++ b/test/ui/mocks/login_presenter_spy.dart @@ -1,7 +1,7 @@ +import 'dart:async'; + import 'package:fordev/ui/helpers/helpers.dart'; import 'package:fordev/ui/pages/pages.dart'; - -import 'dart:async'; import 'package:mocktail/mocktail.dart'; class LoginPresenterSpy extends Mock implements LoginPresenter { diff --git a/test/ui/mocks/mocks.dart b/test/ui/mocks/mocks.dart index f2d059f9..c4a41ca3 100644 --- a/test/ui/mocks/mocks.dart +++ b/test/ui/mocks/mocks.dart @@ -1,6 +1,6 @@ -export './viewmodel_factory.dart'; export './login_presenter_spy.dart'; export './signup_presenter_spy.dart'; export './splash_presenter_spy.dart'; export './survey_result_presenter_spy.dart'; export './surveys_presenter_spy.dart'; +export './viewmodel_factory.dart'; diff --git a/test/ui/mocks/signup_presenter_spy.dart b/test/ui/mocks/signup_presenter_spy.dart index 014a4bf6..383cdf8e 100644 --- a/test/ui/mocks/signup_presenter_spy.dart +++ b/test/ui/mocks/signup_presenter_spy.dart @@ -1,7 +1,7 @@ +import 'dart:async'; + import 'package:fordev/ui/helpers/helpers.dart'; import 'package:fordev/ui/pages/pages.dart'; - -import 'dart:async'; import 'package:mocktail/mocktail.dart'; class SignUpPresenterSpy extends Mock implements SignUpPresenter { diff --git a/test/ui/mocks/splash_presenter_spy.dart b/test/ui/mocks/splash_presenter_spy.dart index 06b66d74..b05ffa9f 100644 --- a/test/ui/mocks/splash_presenter_spy.dart +++ b/test/ui/mocks/splash_presenter_spy.dart @@ -1,6 +1,6 @@ -import 'package:fordev/ui/pages/pages.dart'; - import 'dart:async'; + +import 'package:fordev/ui/pages/pages.dart'; import 'package:mocktail/mocktail.dart'; class SplashPresenterSpy extends Mock implements SplashPresenter { diff --git a/test/ui/mocks/survey_result_presenter_spy.dart b/test/ui/mocks/survey_result_presenter_spy.dart index 74bc7a07..c498a5f2 100644 --- a/test/ui/mocks/survey_result_presenter_spy.dart +++ b/test/ui/mocks/survey_result_presenter_spy.dart @@ -1,6 +1,6 @@ -import 'package:fordev/ui/pages/pages.dart'; - import 'dart:async'; + +import 'package:fordev/ui/pages/pages.dart'; import 'package:mocktail/mocktail.dart'; class SurveyResultPresenterSpy extends Mock implements SurveyResultPresenter { diff --git a/test/ui/mocks/surveys_presenter_spy.dart b/test/ui/mocks/surveys_presenter_spy.dart index 4343ceac..0e7f3ee0 100644 --- a/test/ui/mocks/surveys_presenter_spy.dart +++ b/test/ui/mocks/surveys_presenter_spy.dart @@ -1,6 +1,6 @@ -import 'package:fordev/ui/pages/pages.dart'; - import 'dart:async'; + +import 'package:fordev/ui/pages/pages.dart'; import 'package:mocktail/mocktail.dart'; class SurveysPresenterSpy extends Mock implements SurveysPresenter { diff --git a/test/ui/pages/login_page_test.dart b/test/ui/pages/login_page_test.dart index 1b078fdd..a6e72b80 100644 --- a/test/ui/pages/login_page_test.dart +++ b/test/ui/pages/login_page_test.dart @@ -1,14 +1,13 @@ +import 'package:faker/faker.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; import 'package:fordev/ui/helpers/helpers.dart'; import 'package:fordev/ui/pages/pages.dart'; +import 'package:mocktail/mocktail.dart'; import '../helpers/helpers.dart'; import '../mocks/mocks.dart'; -import 'package:faker/faker.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:mocktail/mocktail.dart'; - void main() { late LoginPresenterSpy presenter; diff --git a/test/ui/pages/signup_page_test.dart b/test/ui/pages/signup_page_test.dart index 9c876cf2..b93b3140 100644 --- a/test/ui/pages/signup_page_test.dart +++ b/test/ui/pages/signup_page_test.dart @@ -1,14 +1,13 @@ +import 'package:faker/faker.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; import 'package:fordev/ui/helpers/helpers.dart'; import 'package:fordev/ui/pages/pages.dart'; +import 'package:mocktail/mocktail.dart'; import '../helpers/helpers.dart'; import '../mocks/mocks.dart'; -import 'package:faker/faker.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:mocktail/mocktail.dart'; - void main() { late SignUpPresenterSpy presenter; diff --git a/test/ui/pages/splash_page_test.dart b/test/ui/pages/splash_page_test.dart index 625a9133..65b3385f 100644 --- a/test/ui/pages/splash_page_test.dart +++ b/test/ui/pages/splash_page_test.dart @@ -1,12 +1,11 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; import 'package:fordev/ui/pages/pages.dart'; +import 'package:mocktail/mocktail.dart'; import '../helpers/helpers.dart'; import '../mocks/mocks.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:mocktail/mocktail.dart'; - void main() { late SplashPresenterSpy presenter; diff --git a/test/ui/pages/survey_result_page_test.dart b/test/ui/pages/survey_result_page_test.dart index 910eb28e..ded62553 100644 --- a/test/ui/pages/survey_result_page_test.dart +++ b/test/ui/pages/survey_result_page_test.dart @@ -1,15 +1,14 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; import 'package:fordev/ui/helpers/helpers.dart'; import 'package:fordev/ui/pages/pages.dart'; import 'package:fordev/ui/pages/survey_result/components/components.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:network_image_mock/network_image_mock.dart'; import '../helpers/helpers.dart'; import '../mocks/mocks.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:network_image_mock/network_image_mock.dart'; -import 'package:mocktail/mocktail.dart'; - void main() { late SurveyResultPresenterSpy presenter; diff --git a/test/ui/pages/surveys_page_test.dart b/test/ui/pages/surveys_page_test.dart index 7908769d..08c6e72a 100644 --- a/test/ui/pages/surveys_page_test.dart +++ b/test/ui/pages/surveys_page_test.dart @@ -1,13 +1,12 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; import 'package:fordev/ui/helpers/helpers.dart'; import 'package:fordev/ui/pages/pages.dart'; +import 'package:mocktail/mocktail.dart'; import '../helpers/helpers.dart'; import '../mocks/mocks.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:mocktail/mocktail.dart'; - void main() { late SurveysPresenterSpy presenter; diff --git a/test/validation/validators/min_length_validation_test.dart b/test/validation/validators/min_length_validation_test.dart index 97508709..707354b2 100644 --- a/test/validation/validators/min_length_validation_test.dart +++ b/test/validation/validators/min_length_validation_test.dart @@ -1,7 +1,6 @@ +import 'package:faker/faker.dart'; import 'package:fordev/presentation/protocols/protocols.dart'; import 'package:fordev/validation/validators/validators.dart'; - -import 'package:faker/faker.dart'; import 'package:test/test.dart'; void main() { From c2a1733f3dbd7d494cdc34d8b86ba6f36ca90cfc Mon Sep 17 00:00:00 2001 From: Andres Garcia Date: Sun, 29 May 2022 23:50:19 -0500 Subject: [PATCH 19/21] fix: alert lint unawaited_futures --- analysis_options.yaml | 48 +++++++++---------- .../getx_survey_result_presenter.dart | 6 ++- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 75e67304..35322863 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -53,30 +53,30 @@ linter: non_constant_identifier_names: true constant_identifier_names: false directives_ordering: true - # slash_for_doc_comments: false - # prefer_interpolation_to_compose_strings: true - # prefer_collection_literals: true - # avoid_function_literals_in_foreach_calls: false - # avoid_init_to_null: true - # prefer_initializing_formals: true - # type_init_formals: true - # empty_constructor_bodies: true - # empty_statements: true - # unnecessary_new: true - # unnecessary_this: true - # unnecessary_const: true - # unnecessary_overrides: true - # unnecessary_parenthesis: true - # unnecessary_getters_setters: true - # avoid_setters_without_getters: true - # avoid_return_types_on_setters: true - # parameter_assignments: true - # prefer_function_declarations_over_variables: false - # unawaited_futures: true - # prefer_relative_imports: true - # annotate_overrides: false - # overridden_fields: false - # deprecated_member_use: true + slash_for_doc_comments: false + prefer_interpolation_to_compose_strings: true + prefer_collection_literals: true + avoid_function_literals_in_foreach_calls: false + avoid_init_to_null: true + prefer_initializing_formals: true + type_init_formals: true + empty_constructor_bodies: true + empty_statements: true + unnecessary_new: true + unnecessary_this: true + unnecessary_const: true + unnecessary_overrides: true + unnecessary_parenthesis: true + unnecessary_getters_setters: true + avoid_setters_without_getters: true + avoid_return_types_on_setters: true + parameter_assignments: true + prefer_function_declarations_over_variables: false + # unawaited_futures: true # Error testing + prefer_relative_imports: true + annotate_overrides: false + overridden_fields: false + deprecated_member_use: true # avoid_print: false # Uncomment to disable the `avoid_print` rule diff --git a/lib/presentation/presenters/getx_survey_result_presenter.dart b/lib/presentation/presenters/getx_survey_result_presenter.dart index c4574d79..d4dcacdb 100644 --- a/lib/presentation/presenters/getx_survey_result_presenter.dart +++ b/lib/presentation/presenters/getx_survey_result_presenter.dart @@ -27,12 +27,14 @@ class GetxSurveyResultPresenter extends GetxController @override Future loadData() async { - showResultOnAction(() => loadSurveyResult.loadBySurvey(surveyId: surveyId)); + await showResultOnAction( + () => loadSurveyResult.loadBySurvey(surveyId: surveyId), + ); } @override Future save({required String answer}) async { - showResultOnAction(() => saveSurveyResult.save(answer: answer)); + await showResultOnAction(() => saveSurveyResult.save(answer: answer)); } Future showResultOnAction( From e7fb24d85fddc854874686a0618d7855c9634f04 Mon Sep 17 00:00:00 2001 From: Andres Garcia Date: Mon, 30 May 2022 00:15:31 -0500 Subject: [PATCH 20/21] refactor add type variable --- analysis_options.yaml | 4 +- lib/data/data.dart | 4 + .../models/local_survey_answer_model.dart | 4 +- lib/data/models/local_survey_model.dart | 2 +- .../models/local_survey_result_model.dart | 13 +- lib/data/models/remote_account_model.dart | 2 +- .../models/remote_survey_answer_model.dart | 2 +- lib/data/models/remote_survey_model.dart | 2 +- .../models/remote_survey_result_model.dart | 10 +- .../add_account/remote_add_account.dart | 2 +- .../authentication/remote_authentication.dart | 2 +- .../local_load_current_account.dart | 2 +- .../local_load_survey_result.dart | 2 +- .../load_surveys/local_load_surveys.dart | 6 +- lib/domain/domain.dart | 3 + lib/domain/entities/account_entity.dart | 2 +- lib/domain/entities/survey_answer_entity.dart | 4 +- lib/domain/entities/survey_entity.dart | 2 +- lib/domain/entities/survey_result_entity.dart | 2 +- lib/domain/usecases/add_account.dart | 3 +- lib/domain/usecases/authentication.dart | 2 +- lib/infra/http/http_adapter.dart | 13 +- lib/infra/infra.dart | 2 + ...oad_survey_result_with_local_fallback.dart | 9 +- ...mote_load_surveys_with_local_fallback.dart | 6 +- lib/main/composites/validation_composite.dart | 3 +- .../authorize_http_client_decorator.dart | 4 +- lib/main/main.dart | 24 ++- .../survey_result_entity_extensions.dart | 6 +- lib/presentation/mixins/form_manager.dart | 2 +- lib/presentation/mixins/loading_manager.dart | 2 +- .../mixins/navigation_manager.dart | 2 +- lib/presentation/mixins/session_manager.dart | 2 +- lib/presentation/mixins/ui_error_manager.dart | 2 +- lib/presentation/presentation.dart | 4 + .../presenters/getx_login_presenter.dart | 14 +- .../presenters/getx_signup_presenter.dart | 18 +-- .../presenters/getx_splash_presenter.dart | 2 +- .../getx_survey_result_presenter.dart | 9 +- .../presenters/getx_surveys_presenter.dart | 9 +- lib/ui/components/app_theme.dart | 29 ++-- lib/ui/components/login_header.dart | 4 +- lib/ui/components/reload_screen.dart | 2 +- lib/ui/components/spinner_dialog.dart | 2 +- lib/ui/mixins/keyboard_manager.dart | 2 +- lib/ui/mixins/loading_manager.dart | 2 +- lib/ui/mixins/navigation_manager.dart | 2 +- lib/ui/mixins/session_manager.dart | 2 +- lib/ui/mixins/ui_error_manager.dart | 2 +- .../pages/login/components/email_input.dart | 4 +- .../pages/login/components/login_button.dart | 4 +- .../login/components/password_input.dart | 4 +- lib/ui/pages/login/login_page.dart | 4 +- .../pages/signup/components/email_input.dart | 4 +- .../pages/signup/components/name_input.dart | 4 +- .../password_confirmation_input.dart | 4 +- .../signup/components/password_input.dart | 4 +- .../signup/components/signup_button.dart | 4 +- lib/ui/pages/signup/signup_page.dart | 4 +- lib/ui/pages/splash/splash_page.dart | 2 +- .../components/survey_answer.dart | 1 - .../components/survey_result.dart | 5 +- .../survey_answer_viewmodel.dart | 2 +- lib/ui/pages/survey_result/survey_result.dart | 1 + .../survey_result/survey_result_page.dart | 8 +- .../survey_result_viewmodel.dart | 2 +- .../pages/surveys/components/survey_item.dart | 6 +- .../surveys/components/survey_items.dart | 4 +- lib/ui/pages/surveys/survey_viewmodel.dart | 2 +- lib/ui/pages/surveys/surveys_page.dart | 9 +- lib/ui/ui.dart | 4 + lib/validation/validation.dart | 2 + .../validators/compare_fields_validation.dart | 14 +- .../validators/email_validation.dart | 6 +- .../validators/min_length_validation.dart | 2 +- .../validators/required_field_validation.dart | 3 +- test/data/data.dart | 1 + test/data/mocks/cache_storage_spy.dart | 3 +- test/data/mocks/http_client_spy.dart | 2 +- test/data/mocks/load_survey_result_spy.dart | 4 +- test/data/mocks/load_surveys_spy.dart | 4 +- .../mocks/local_load_survey_result_spy.dart | 5 +- test/data/mocks/local_load_surveys_spy.dart | 5 +- .../mocks/remote_load_survey_result_spy.dart | 5 +- test/data/mocks/remote_load_surveys_spy.dart | 5 +- test/data/mocks/secure_cache_storage_spy.dart | 2 +- .../add_account/remote_add_account_test.dart | 18 +-- .../remote_authentication_test.dart | 18 +-- .../local_load_current_account_test.dart | 11 +- .../local_load_survey_result_test.dart | 24 +-- .../remote_load_survey_result_test.dart | 21 +-- .../load_surveys/local_load_surveys_test.dart | 19 ++- .../remote_load_surveys_test.dart | 16 +- .../local_save_current_account_test.dart | 7 +- .../remote_save_survey_result_test.dart | 16 +- .../save_survey_result.dart | 1 + test/domain/domain.dart | 1 + test/domain/mocks/add_account_spy.dart | 4 +- test/domain/mocks/authentication_spy.dart | 4 +- test/domain/mocks/entity_factory.dart | 2 +- .../mocks/load_current_account_spy.dart | 3 +- test/domain/mocks/params_factory.dart | 2 +- .../mocks/save_current_account_spy.dart | 3 +- test/domain/mocks/save_survey_result_spy.dart | 5 +- .../cache/local_storage_adapter_test.dart | 10 +- .../cache/secure_storage_adapter_test.dart | 10 +- test/infra/http/http_adapter_test.dart | 48 +++--- .../mocks/flutter_secure_storage_spy.dart | 5 +- ...urvey_result_with_local_fallback_test.dart | 19 ++- ...load_surveys_with_local_fallback_test.dart | 13 +- .../composites/validation_composite_test.dart | 8 +- .../authorize_http_client_decorator_test.dart | 10 +- .../login/login_validation_factory_test.dart | 6 +- .../login/signup_validation_factory_test.dart | 6 +- test/presentation/mocks/validation_spy.dart | 2 +- .../presenters/getx_login_presenter_test.dart | 59 ++++---- .../getx_signup_presenter_test.dart | 137 ++++++++++-------- .../getx_splash_presenter_test.dart | 7 +- .../getx_survey_result_presenter_test.dart | 17 ++- .../getx_surveys_presenter_test.dart | 12 +- test/ui/helpers/helpers.dart | 2 +- test/ui/mocks/login_presenter_spy.dart | 19 ++- test/ui/mocks/signup_presenter_spy.dart | 25 ++-- test/ui/mocks/splash_presenter_spy.dart | 5 +- .../ui/mocks/survey_result_presenter_spy.dart | 10 +- test/ui/mocks/surveys_presenter_spy.dart | 13 +- test/ui/mocks/viewmodel_factory.dart | 2 +- test/ui/pages/login_page_test.dart | 17 ++- test/ui/pages/signup_page_test.dart | 19 +-- test/ui/pages/splash_page_test.dart | 2 +- test/ui/pages/survey_result_page_test.dart | 6 +- test/ui/pages/surveys_page_test.dart | 3 +- .../mocks/field_validation_spy.dart | 2 +- .../compare_fields_validation_test.dart | 14 +- .../validators/email_validation_test.dart | 4 +- .../min_length_validation_test.dart | 4 +- .../required_field_validation_test.dart | 4 +- 137 files changed, 594 insertions(+), 505 deletions(-) create mode 100644 lib/data/data.dart create mode 100644 lib/domain/domain.dart create mode 100644 lib/infra/infra.dart create mode 100644 lib/presentation/presentation.dart create mode 100644 lib/ui/ui.dart create mode 100644 lib/validation/validation.dart create mode 100644 test/data/data.dart create mode 100644 test/data/usecases/save_survey_result/save_survey_result.dart create mode 100644 test/domain/domain.dart diff --git a/analysis_options.yaml b/analysis_options.yaml index 35322863..84a55123 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -23,8 +23,8 @@ linter: # producing the lint. rules: require_trailing_commas: true - use_super_parameters: true always_put_required_named_parameters_first: true + use_super_parameters: true always_declare_return_types: true avoid_print: true curly_braces_in_flow_control_structures: true @@ -72,7 +72,7 @@ linter: avoid_return_types_on_setters: true parameter_assignments: true prefer_function_declarations_over_variables: false - # unawaited_futures: true # Error testing + unawaited_futures: false prefer_relative_imports: true annotate_overrides: false overridden_fields: false diff --git a/lib/data/data.dart b/lib/data/data.dart new file mode 100644 index 00000000..123def11 --- /dev/null +++ b/lib/data/data.dart @@ -0,0 +1,4 @@ +export './cache/cache.dart'; +export './http/http.dart'; +export './models/models.dart'; +export './usecases/usecases.dart'; diff --git a/lib/data/models/local_survey_answer_model.dart b/lib/data/models/local_survey_answer_model.dart index 433a420e..912eda3c 100644 --- a/lib/data/models/local_survey_answer_model.dart +++ b/lib/data/models/local_survey_answer_model.dart @@ -1,4 +1,4 @@ -import '../../domain/entities/entities.dart'; +import '../../domain/domain.dart'; class LocalSurveyAnswerModel { final String? image; @@ -16,7 +16,7 @@ class LocalSurveyAnswerModel { factory LocalSurveyAnswerModel.fromJson(Map json) { if (!json.keys .toSet() - .containsAll(['answer', 'isCurrentAnswer', 'percent'])) { + .containsAll(['answer', 'isCurrentAnswer', 'percent'])) { throw Exception(); } return LocalSurveyAnswerModel( diff --git a/lib/data/models/local_survey_model.dart b/lib/data/models/local_survey_model.dart index 77baa09a..5ac624dc 100644 --- a/lib/data/models/local_survey_model.dart +++ b/lib/data/models/local_survey_model.dart @@ -1,4 +1,4 @@ -import '../../domain/entities/entities.dart'; +import '../../domain/domain.dart'; class LocalSurveyModel { final String id; diff --git a/lib/data/models/local_survey_result_model.dart b/lib/data/models/local_survey_result_model.dart index 1159c515..2c70e958 100644 --- a/lib/data/models/local_survey_result_model.dart +++ b/lib/data/models/local_survey_result_model.dart @@ -1,5 +1,5 @@ import './models.dart'; -import '../../domain/entities/entities.dart'; +import '../../domain/domain.dart'; class LocalSurveyResultModel { final String surveyId; @@ -33,7 +33,8 @@ class LocalSurveyResultModel { question: entity.question, answers: entity.answers .map( - (answer) => LocalSurveyAnswerModel.fromEntity(answer), + (SurveyAnswerEntity answer) => + LocalSurveyAnswerModel.fromEntity(answer), ) .toList(), ); @@ -42,13 +43,17 @@ class LocalSurveyResultModel { surveyId: surveyId, question: question, answers: answers - .map((answer) => answer.toEntity()) + .map( + (LocalSurveyAnswerModel answer) => answer.toEntity(), + ) .toList(), ); Map toJson() => { 'surveyId': surveyId, 'question': question, - 'answers': answers.map((answer) => answer.toJson()).toList() + 'answers': answers + .map((LocalSurveyAnswerModel answer) => answer.toJson()) + .toList() }; } diff --git a/lib/data/models/remote_account_model.dart b/lib/data/models/remote_account_model.dart index a2fd0a6b..ef3b2bf8 100644 --- a/lib/data/models/remote_account_model.dart +++ b/lib/data/models/remote_account_model.dart @@ -1,4 +1,4 @@ -import '../../domain/entities/entities.dart'; +import '../../domain/domain.dart'; import '../http/http.dart'; class RemoteAccountModel { diff --git a/lib/data/models/remote_survey_answer_model.dart b/lib/data/models/remote_survey_answer_model.dart index a258f29c..f82d51e7 100644 --- a/lib/data/models/remote_survey_answer_model.dart +++ b/lib/data/models/remote_survey_answer_model.dart @@ -1,4 +1,4 @@ -import '../../domain/entities/entities.dart'; +import '../../domain/domain.dart'; import '../http/http.dart'; class RemoteSurveyAnswerModel { diff --git a/lib/data/models/remote_survey_model.dart b/lib/data/models/remote_survey_model.dart index 4b23e576..db71b286 100644 --- a/lib/data/models/remote_survey_model.dart +++ b/lib/data/models/remote_survey_model.dart @@ -1,5 +1,5 @@ import '../../data/http/http.dart'; -import '../../domain/entities/entities.dart'; +import '../../domain/domain.dart'; class RemoteSurveyModel { final String id; diff --git a/lib/data/models/remote_survey_result_model.dart b/lib/data/models/remote_survey_result_model.dart index 466455d7..1fb9605e 100644 --- a/lib/data/models/remote_survey_result_model.dart +++ b/lib/data/models/remote_survey_result_model.dart @@ -1,5 +1,5 @@ import './models.dart'; -import '../../domain/entities/entities.dart'; +import '../../domain/domain.dart'; import '../http/http.dart'; class RemoteSurveyResultModel { @@ -14,7 +14,9 @@ class RemoteSurveyResultModel { }); factory RemoteSurveyResultModel.fromJson(Map json) { - if (!json.keys.toSet().containsAll(['surveyId', 'question', 'answers'])) { + if (!json.keys + .toSet() + .containsAll(['surveyId', 'question', 'answers'])) { throw HttpError.invalidData; } return RemoteSurveyResultModel( @@ -32,7 +34,9 @@ class RemoteSurveyResultModel { surveyId: surveyId, question: question, answers: answers - .map((answer) => answer.toEntity()) + .map( + (RemoteSurveyAnswerModel answer) => answer.toEntity(), + ) .toList(), ); } diff --git a/lib/data/usecases/add_account/remote_add_account.dart b/lib/data/usecases/add_account/remote_add_account.dart index 80cd183d..70078b93 100644 --- a/lib/data/usecases/add_account/remote_add_account.dart +++ b/lib/data/usecases/add_account/remote_add_account.dart @@ -12,7 +12,7 @@ class RemoteAddAccount implements AddAccount { @override Future add(AddAccountParams params) async { - final body = RemoteAddAccountParams.fromDomain(params).toJson(); + final Map body = RemoteAddAccountParams.fromDomain(params).toJson(); try { final httpResponse = await httpClient.request(url: url, method: 'post', body: body); diff --git a/lib/data/usecases/authentication/remote_authentication.dart b/lib/data/usecases/authentication/remote_authentication.dart index 07e66009..d62447d2 100644 --- a/lib/data/usecases/authentication/remote_authentication.dart +++ b/lib/data/usecases/authentication/remote_authentication.dart @@ -12,7 +12,7 @@ class RemoteAuthentication implements Authentication { @override Future auth(AuthenticationParams params) async { - final body = RemoteAuthenticationParams.fromDomain(params).toJson(); + final Map body = RemoteAuthenticationParams.fromDomain(params).toJson(); try { final httpResponse = await httpClient.request(url: url, method: 'post', body: body); diff --git a/lib/data/usecases/load_current_account/local_load_current_account.dart b/lib/data/usecases/load_current_account/local_load_current_account.dart index 3aeda99b..7b3f4b19 100644 --- a/lib/data/usecases/load_current_account/local_load_current_account.dart +++ b/lib/data/usecases/load_current_account/local_load_current_account.dart @@ -11,7 +11,7 @@ class LocalLoadCurrentAccount implements LoadCurrentAccount { @override Future load() async { try { - final token = await fetchSecureCacheStorage.fetch('token'); + final String? token = await fetchSecureCacheStorage.fetch('token'); if (token == null) throw Error(); return AccountEntity(token: token); } catch (error) { diff --git a/lib/data/usecases/load_survey_result/local_load_survey_result.dart b/lib/data/usecases/load_survey_result/local_load_survey_result.dart index 28e8978e..ae4534e6 100644 --- a/lib/data/usecases/load_survey_result/local_load_survey_result.dart +++ b/lib/data/usecases/load_survey_result/local_load_survey_result.dart @@ -33,7 +33,7 @@ class LocalLoadSurveyResult implements LoadSurveyResult { Future save(SurveyResultEntity surveyResult) async { try { - final json = LocalSurveyResultModel.fromEntity(surveyResult).toJson(); + final Map json = LocalSurveyResultModel.fromEntity(surveyResult).toJson(); await cacheStorage.save( key: 'survey_result/${surveyResult.surveyId}', value: json, diff --git a/lib/data/usecases/load_surveys/local_load_surveys.dart b/lib/data/usecases/load_surveys/local_load_surveys.dart index e4385da7..e0619a0e 100644 --- a/lib/data/usecases/load_surveys/local_load_surveys.dart +++ b/lib/data/usecases/load_surveys/local_load_surveys.dart @@ -33,7 +33,7 @@ class LocalLoadSurveys implements LoadSurveys { Future save(List surveys) async { try { - final json = _mapToJson(surveys); + final List json = _mapToJson(surveys); await cacheStorage.save(key: 'surveys', value: json); } catch (error) { throw DomainError.unexpected; @@ -45,6 +45,8 @@ class LocalLoadSurveys implements LoadSurveys { .toList(); List _mapToJson(List list) => list - .map((entity) => LocalSurveyModel.fromEntity(entity).toJson()) + .map( + (SurveyEntity entity) => LocalSurveyModel.fromEntity(entity).toJson(), + ) .toList(); } diff --git a/lib/domain/domain.dart b/lib/domain/domain.dart new file mode 100644 index 00000000..de868b11 --- /dev/null +++ b/lib/domain/domain.dart @@ -0,0 +1,3 @@ +export './entities/entities.dart'; +export './helpers/helpers.dart'; +export './usecases/usecases.dart'; diff --git a/lib/domain/entities/account_entity.dart b/lib/domain/entities/account_entity.dart index d13dd4dd..8b907b7c 100644 --- a/lib/domain/entities/account_entity.dart +++ b/lib/domain/entities/account_entity.dart @@ -4,7 +4,7 @@ class AccountEntity extends Equatable { final String token; @override - List get props => [token]; + List get props => [token]; const AccountEntity({required this.token}); } diff --git a/lib/domain/entities/survey_answer_entity.dart b/lib/domain/entities/survey_answer_entity.dart index bf1e8534..4e8f25e0 100644 --- a/lib/domain/entities/survey_answer_entity.dart +++ b/lib/domain/entities/survey_answer_entity.dart @@ -7,12 +7,12 @@ class SurveyAnswerEntity extends Equatable { final int percent; @override - List get props => [image, answer, isCurrentAnswer, percent]; + List get props => [image, answer, isCurrentAnswer, percent]; const SurveyAnswerEntity({ required this.answer, - required this.isCurrentAnswer, required this.percent, + required this.isCurrentAnswer, this.image, }); } diff --git a/lib/domain/entities/survey_entity.dart b/lib/domain/entities/survey_entity.dart index 719fde7a..ea4187ed 100644 --- a/lib/domain/entities/survey_entity.dart +++ b/lib/domain/entities/survey_entity.dart @@ -7,7 +7,7 @@ class SurveyEntity extends Equatable { final bool didAnswer; @override - List get props => [id, question, dateTime, didAnswer]; + List get props => [id, question, dateTime, didAnswer]; const SurveyEntity({ required this.id, diff --git a/lib/domain/entities/survey_result_entity.dart b/lib/domain/entities/survey_result_entity.dart index 873686e0..d91cd23c 100644 --- a/lib/domain/entities/survey_result_entity.dart +++ b/lib/domain/entities/survey_result_entity.dart @@ -8,7 +8,7 @@ class SurveyResultEntity extends Equatable { final List answers; @override - List get props => [surveyId, question, answers]; + List get props => [surveyId, question, answers]; const SurveyResultEntity({ required this.surveyId, diff --git a/lib/domain/usecases/add_account.dart b/lib/domain/usecases/add_account.dart index d3d62f42..a916fe04 100644 --- a/lib/domain/usecases/add_account.dart +++ b/lib/domain/usecases/add_account.dart @@ -13,7 +13,8 @@ class AddAccountParams extends Equatable { final String passwordConfirmation; @override - List get props => [name, email, password, passwordConfirmation]; + List get props => + [name, email, password, passwordConfirmation]; const AddAccountParams({ required this.name, diff --git a/lib/domain/usecases/authentication.dart b/lib/domain/usecases/authentication.dart index 860a9329..57fe80a3 100644 --- a/lib/domain/usecases/authentication.dart +++ b/lib/domain/usecases/authentication.dart @@ -11,7 +11,7 @@ class AuthenticationParams extends Equatable { final String secret; @override - List get props => [email, secret]; + List get props => [email, secret]; const AuthenticationParams({required this.email, required this.secret}); } diff --git a/lib/infra/http/http_adapter.dart b/lib/infra/http/http_adapter.dart index a945a3b8..0d3798ec 100644 --- a/lib/infra/http/http_adapter.dart +++ b/lib/infra/http/http_adapter.dart @@ -16,12 +16,13 @@ class HttpAdapter implements HttpClient { Map? body, Map? headers, }) async { - final defaultHeaders = headers?.cast() ?? {} - ..addAll( - {'content-type': 'application/json', 'accept': 'application/json'}, - ); - final jsonBody = body != null ? jsonEncode(body) : null; - var response = Response('', 500); + final Map defaultHeaders = + headers?.cast() ?? {} + ..addAll( + {'content-type': 'application/json', 'accept': 'application/json'}, + ); + final String? jsonBody = body != null ? jsonEncode(body) : null; + Response response = Response('', 500); Future? futureResponse; try { if (method == 'post') { diff --git a/lib/infra/infra.dart b/lib/infra/infra.dart new file mode 100644 index 00000000..260166f3 --- /dev/null +++ b/lib/infra/infra.dart @@ -0,0 +1,2 @@ +export './cache/cache.dart'; +export './http/http.dart'; diff --git a/lib/main/composites/remote_load_survey_result_with_local_fallback.dart b/lib/main/composites/remote_load_survey_result_with_local_fallback.dart index 2947f9dd..2a6fa95c 100644 --- a/lib/main/composites/remote_load_survey_result_with_local_fallback.dart +++ b/lib/main/composites/remote_load_survey_result_with_local_fallback.dart @@ -1,7 +1,5 @@ -import '../../data/usecases/usecases.dart'; -import '../../domain/entities/entities.dart'; -import '../../domain/helpers/helpers.dart'; -import '../../domain/usecases/usecases.dart'; +import '../../data/data.dart'; +import '../../domain/domain.dart'; class RemoteLoadSurveyResultWithLocalFallback implements LoadSurveyResult { final RemoteLoadSurveyResult remote; @@ -15,7 +13,8 @@ class RemoteLoadSurveyResultWithLocalFallback implements LoadSurveyResult { @override Future loadBySurvey({required String surveyId}) async { try { - final surveyResult = await remote.loadBySurvey(surveyId: surveyId); + final SurveyResultEntity surveyResult = + await remote.loadBySurvey(surveyId: surveyId); await local.save(surveyResult); return surveyResult; } catch (error) { diff --git a/lib/main/composites/remote_load_surveys_with_local_fallback.dart b/lib/main/composites/remote_load_surveys_with_local_fallback.dart index c951b62c..3b33954d 100644 --- a/lib/main/composites/remote_load_surveys_with_local_fallback.dart +++ b/lib/main/composites/remote_load_surveys_with_local_fallback.dart @@ -1,7 +1,5 @@ import '../../data/usecases/usecases.dart'; -import '../../domain/entities/entities.dart'; -import '../../domain/helpers/helpers.dart'; -import '../../domain/usecases/usecases.dart'; +import '../../domain/domain.dart'; class RemoteLoadSurveysWithLocalFallback implements LoadSurveys { final RemoteLoadSurveys remote; @@ -15,7 +13,7 @@ class RemoteLoadSurveysWithLocalFallback implements LoadSurveys { @override Future> load() async { try { - final surveys = await remote.load(); + final List surveys = await remote.load(); await local.save(surveys); return surveys; } catch (error) { diff --git a/lib/main/composites/validation_composite.dart b/lib/main/composites/validation_composite.dart index 562b208a..a26ef831 100644 --- a/lib/main/composites/validation_composite.dart +++ b/lib/main/composites/validation_composite.dart @@ -9,7 +9,8 @@ class ValidationComposite implements Validation { @override ValidationError? validate({required String field, required Map input}) { ValidationError? error; - for (final validation in validations.where((v) => v.field == field)) { + for (final FieldValidation validation + in validations.where((FieldValidation v) => v.field == field)) { error = validation.validate(input); if (error != null) { return error; diff --git a/lib/main/decorators/authorize_http_client_decorator.dart b/lib/main/decorators/authorize_http_client_decorator.dart index 0a33c03a..ac80e420 100644 --- a/lib/main/decorators/authorize_http_client_decorator.dart +++ b/lib/main/decorators/authorize_http_client_decorator.dart @@ -20,8 +20,8 @@ class AuthorizeHttpClientDecorator implements HttpClient { Map? headers, }) async { try { - final token = await fetchSecureCacheStorage.fetch('token'); - final authorizedHeaders = headers ?? {} + final String? token = await fetchSecureCacheStorage.fetch('token'); + final Map authorizedHeaders = headers ?? {} ..addAll({'x-access-token': token}); return await decoratee.request( url: url, diff --git a/lib/main/main.dart b/lib/main/main.dart index 70f0de76..89a22085 100644 --- a/lib/main/main.dart +++ b/lib/main/main.dart @@ -5,6 +5,11 @@ import 'package:get/get.dart'; import './factories/factories.dart'; import '../ui/components/components.dart'; +export './builders/builders.dart'; +export './composites/composites.dart'; +export './decorators/decorators.dart'; +export './factories/factories.dart'; + void main() { runApp(const App()); } @@ -15,7 +20,8 @@ class App extends StatelessWidget { @override Widget build(BuildContext context) { SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light); - final routeObserver = Get.put(RouteObserver()); + final RouteObserver routeObserver = + Get.put(RouteObserver()); return GetMaterialApp( title: '4Dev', @@ -24,19 +30,29 @@ class App extends StatelessWidget { navigatorObservers: [routeObserver], initialRoute: '/', getPages: [ - GetPage(name: '/', page: makeSplashPage, transition: Transition.fade), + GetPage( + name: '/', + page: makeSplashPage, + transition: Transition.fade, + ), GetPage( name: '/login', page: makeLoginPage, transition: Transition.fadeIn, ), - GetPage(name: '/signup', page: makeSignUpPage), + GetPage( + name: '/signup', + page: makeSignUpPage, + ), GetPage( name: '/surveys', page: makeSurveysPage, transition: Transition.fadeIn, ), - GetPage(name: '/survey_result/:survey_id', page: makeSurveyResultPage), + GetPage( + name: '/survey_result/:survey_id', + page: makeSurveyResultPage, + ), ], ); } diff --git a/lib/presentation/helpers/survey_result_entity_extensions.dart b/lib/presentation/helpers/survey_result_entity_extensions.dart index f9635da4..8db4d62d 100644 --- a/lib/presentation/helpers/survey_result_entity_extensions.dart +++ b/lib/presentation/helpers/survey_result_entity_extensions.dart @@ -1,11 +1,13 @@ -import '../../domain/entities/entities.dart'; +import '../../domain/domain.dart'; import '../../ui/pages/pages.dart'; extension SurveyResultEntityExtensions on SurveyResultEntity { SurveyResultViewModel toViewModel() => SurveyResultViewModel( surveyId: surveyId, question: question, - answers: answers.map((answer) => answer.toViewModel()).toList(), + answers: answers + .map((SurveyAnswerEntity answer) => answer.toViewModel()) + .toList(), ); } diff --git a/lib/presentation/mixins/form_manager.dart b/lib/presentation/mixins/form_manager.dart index 550915aa..b79cc25b 100644 --- a/lib/presentation/mixins/form_manager.dart +++ b/lib/presentation/mixins/form_manager.dart @@ -1,7 +1,7 @@ import 'package:get/get.dart'; mixin FormManager on GetxController { - final _isFormValid = false.obs; + final RxBool _isFormValid = false.obs; Stream get isFormValidStream => _isFormValid.stream; set isFormValid(bool value) => _isFormValid.value = value; } diff --git a/lib/presentation/mixins/loading_manager.dart b/lib/presentation/mixins/loading_manager.dart index c853b743..2b6aac30 100644 --- a/lib/presentation/mixins/loading_manager.dart +++ b/lib/presentation/mixins/loading_manager.dart @@ -1,7 +1,7 @@ import 'package:get/get.dart'; mixin LoadingManager on GetxController { - final _isLoading = false.obs; + final RxBool _isLoading = false.obs; Stream get isLoadingStream => _isLoading.stream; set isLoading(bool value) => _isLoading.value = value; } diff --git a/lib/presentation/mixins/navigation_manager.dart b/lib/presentation/mixins/navigation_manager.dart index 7883338e..ee6f37d2 100644 --- a/lib/presentation/mixins/navigation_manager.dart +++ b/lib/presentation/mixins/navigation_manager.dart @@ -1,7 +1,7 @@ import 'package:get/get.dart'; mixin NavigationManager on GetxController { - final _navigateTo = Rx(null); + final Rx _navigateTo = Rx(null); Stream get navigateToStream => _navigateTo.stream; set navigateTo(String value) => _navigateTo.subject.add(value); } diff --git a/lib/presentation/mixins/session_manager.dart b/lib/presentation/mixins/session_manager.dart index 22960c50..26d236e1 100644 --- a/lib/presentation/mixins/session_manager.dart +++ b/lib/presentation/mixins/session_manager.dart @@ -1,7 +1,7 @@ import 'package:get/get.dart'; mixin SessionManager on GetxController { - final _isSessionExpired = false.obs; + final RxBool _isSessionExpired = false.obs; Stream get isSessionExpiredStream => _isSessionExpired.stream; set isSessionExpired(bool value) => _isSessionExpired.value = value; } diff --git a/lib/presentation/mixins/ui_error_manager.dart b/lib/presentation/mixins/ui_error_manager.dart index 3909621d..e4b200ef 100644 --- a/lib/presentation/mixins/ui_error_manager.dart +++ b/lib/presentation/mixins/ui_error_manager.dart @@ -3,7 +3,7 @@ import 'package:get/get.dart'; import '../../ui/helpers/helpers.dart'; mixin UIErrorManager on GetxController { - final _mainError = Rx(null); + final Rx _mainError = Rx(null); Stream get mainErrorStream => _mainError.stream; set mainError(UIError? value) => _mainError.value = value; } diff --git a/lib/presentation/presentation.dart b/lib/presentation/presentation.dart new file mode 100644 index 00000000..d0b7e6df --- /dev/null +++ b/lib/presentation/presentation.dart @@ -0,0 +1,4 @@ +export './helpers/helpers.dart'; +export './mixins/mixins.dart'; +export './presenters/presenters.dart'; +export './protocols/protocols.dart'; diff --git a/lib/presentation/presenters/getx_login_presenter.dart b/lib/presentation/presenters/getx_login_presenter.dart index db1974e3..76dd757b 100644 --- a/lib/presentation/presenters/getx_login_presenter.dart +++ b/lib/presentation/presenters/getx_login_presenter.dart @@ -1,7 +1,6 @@ import 'package:get/get.dart'; -import '../../domain/helpers/helpers.dart'; -import '../../domain/usecases/usecases.dart'; +import '../../domain/domain.dart'; import '../../ui/helpers/helpers.dart'; import '../../ui/pages/pages.dart'; import '../mixins/mixins.dart'; @@ -14,8 +13,8 @@ class GetxLoginPresenter extends GetxController final Authentication authentication; final SaveCurrentAccount saveCurrentAccount; - final _emailError = Rx(null); - final _passwordError = Rx(null); + final Rx _emailError = Rx(null); + final Rx _passwordError = Rx(null); String? _email; String? _password; @@ -46,11 +45,12 @@ class GetxLoginPresenter extends GetxController } UIError? _validateField(String field) { - final formData = { + final Map formData = { 'email': _email, 'password': _password, }; - final error = validation.validate(field: field, input: formData); + final ValidationError? error = + validation.validate(field: field, input: formData); switch (error) { case ValidationError.invalidField: return UIError.invalidField; @@ -73,7 +73,7 @@ class GetxLoginPresenter extends GetxController try { mainError = null; isLoading = true; - final account = await authentication + final AccountEntity account = await authentication .auth(AuthenticationParams(email: _email!, secret: _password!)); await saveCurrentAccount.save(account); navigateTo = '/surveys'; diff --git a/lib/presentation/presenters/getx_signup_presenter.dart b/lib/presentation/presenters/getx_signup_presenter.dart index dc62b7c4..f2aa2b00 100644 --- a/lib/presentation/presenters/getx_signup_presenter.dart +++ b/lib/presentation/presenters/getx_signup_presenter.dart @@ -1,7 +1,6 @@ import 'package:get/get.dart'; -import '../../domain/helpers/helpers.dart'; -import '../../domain/usecases/usecases.dart'; +import '../../domain/domain.dart'; import '../../ui/helpers/helpers.dart'; import '../../ui/pages/pages.dart'; import '../mixins/mixins.dart'; @@ -14,10 +13,10 @@ class GetxSignUpPresenter extends GetxController final AddAccount addAccount; final SaveCurrentAccount saveCurrentAccount; - final _emailError = Rx(null); - final _nameError = Rx(null); - final _passwordError = Rx(null); - final _passwordConfirmationError = Rx(null); + final Rx _emailError = Rx(null); + final Rx _nameError = Rx(null); + final Rx _passwordError = Rx(null); + final Rx _passwordConfirmationError = Rx(null); String? _name; String? _email; @@ -69,13 +68,14 @@ class GetxSignUpPresenter extends GetxController } UIError? _validateField(String field) { - final formData = { + final Map formData = { 'name': _name, 'email': _email, 'password': _password, 'passwordConfirmation': _passwordConfirmation }; - final error = validation.validate(field: field, input: formData); + final ValidationError? error = + validation.validate(field: field, input: formData); switch (error) { case ValidationError.invalidField: return UIError.invalidField; @@ -102,7 +102,7 @@ class GetxSignUpPresenter extends GetxController try { mainError = null; isLoading = true; - final account = await addAccount.add( + final AccountEntity account = await addAccount.add( AddAccountParams( name: _name!, email: _email!, diff --git a/lib/presentation/presenters/getx_splash_presenter.dart b/lib/presentation/presenters/getx_splash_presenter.dart index 4b15fb40..c73bf3f0 100644 --- a/lib/presentation/presenters/getx_splash_presenter.dart +++ b/lib/presentation/presenters/getx_splash_presenter.dart @@ -1,6 +1,6 @@ import 'package:get/get.dart'; -import '../../domain/usecases/usecases.dart'; +import '../../domain/domain.dart'; import '../../ui/pages/pages.dart'; import '../mixins/mixins.dart'; diff --git a/lib/presentation/presenters/getx_survey_result_presenter.dart b/lib/presentation/presenters/getx_survey_result_presenter.dart index d4dcacdb..7335122a 100644 --- a/lib/presentation/presenters/getx_survey_result_presenter.dart +++ b/lib/presentation/presenters/getx_survey_result_presenter.dart @@ -1,8 +1,6 @@ import 'package:get/get.dart'; -import '../../domain/entities/entities.dart'; -import '../../domain/helpers/helpers.dart'; -import '../../domain/usecases/usecases.dart'; +import '../../domain/domain.dart'; import '../../ui/helpers/helpers.dart'; import '../../ui/pages/pages.dart'; import '../helpers/helpers.dart'; @@ -14,7 +12,8 @@ class GetxSurveyResultPresenter extends GetxController final LoadSurveyResult loadSurveyResult; final SaveSurveyResult saveSurveyResult; final String surveyId; - final _surveyResult = Rx(null); + final Rx _surveyResult = + Rx(null); @override Stream get surveyResultStream => _surveyResult.stream; @@ -42,7 +41,7 @@ class GetxSurveyResultPresenter extends GetxController ) async { try { isLoading = true; - final surveyResult = await action(); + final SurveyResultEntity surveyResult = await action(); _surveyResult.subject.add(surveyResult.toViewModel()); } on DomainError catch (error) { if (error == DomainError.accessDenied) { diff --git a/lib/presentation/presenters/getx_surveys_presenter.dart b/lib/presentation/presenters/getx_surveys_presenter.dart index 5c3b4cdf..e653b754 100644 --- a/lib/presentation/presenters/getx_surveys_presenter.dart +++ b/lib/presentation/presenters/getx_surveys_presenter.dart @@ -1,8 +1,7 @@ import 'package:get/get.dart'; import 'package:intl/intl.dart'; -import '../../domain/helpers/helpers.dart'; -import '../../domain/usecases/usecases.dart'; +import '../../domain/domain.dart'; import '../../ui/helpers/helpers.dart'; import '../../ui/pages/pages.dart'; import '../mixins/mixins.dart'; @@ -11,7 +10,7 @@ class GetxSurveysPresenter extends GetxController with SessionManager, LoadingManager, NavigationManager implements SurveysPresenter { final LoadSurveys loadSurveys; - final _surveys = Rx>([]); + final Rx> _surveys = Rx>([]); @override Stream> get surveysStream => _surveys.stream; @@ -22,10 +21,10 @@ class GetxSurveysPresenter extends GetxController Future loadData() async { try { isLoading = true; - final surveys = await loadSurveys.load(); + final List surveys = await loadSurveys.load(); _surveys.value = surveys .map( - (survey) => SurveyViewModel( + (SurveyEntity survey) => SurveyViewModel( id: survey.id, question: survey.question, date: DateFormat('dd MMM yyyy').format(survey.dateTime), diff --git a/lib/ui/components/app_theme.dart b/lib/ui/components/app_theme.dart index 4333aefa..cd89e849 100644 --- a/lib/ui/components/app_theme.dart +++ b/lib/ui/components/app_theme.dart @@ -1,35 +1,38 @@ import 'package:flutter/material.dart'; ThemeData makeAppTheme() { - const primaryColor = Color.fromRGBO(136, 14, 79, 1); - const primaryColorDark = Color.fromRGBO(96, 0, 39, 1); - const primaryColorLight = Color.fromRGBO(188, 71, 123, 1); - const secondaryColor = Color.fromRGBO(0, 77, 64, 1); - const secondaryColorDark = Color.fromRGBO(0, 37, 26, 1); - final disabledColor = Colors.grey[400]; - const dividerColor = Colors.grey; - const textTheme = TextTheme( + const Color primaryColor = Color.fromRGBO(136, 14, 79, 1); + const Color primaryColorDark = Color.fromRGBO(96, 0, 39, 1); + const Color primaryColorLight = Color.fromRGBO(188, 71, 123, 1); + const Color secondaryColor = Color.fromRGBO(0, 77, 64, 1); + const Color secondaryColorDark = Color.fromRGBO(0, 37, 26, 1); + final Color? disabledColor = Colors.grey[400]; + const MaterialColor dividerColor = Colors.grey; + const TextTheme textTheme = TextTheme( headline1: TextStyle( fontSize: 30, fontWeight: FontWeight.bold, color: primaryColorDark, ), ); - const inputDecorationTheme = InputDecorationTheme( + const InputDecorationTheme inputDecorationTheme = InputDecorationTheme( enabledBorder: UnderlineInputBorder( borderSide: BorderSide(color: primaryColorLight), ), - focusedBorder: - UnderlineInputBorder(borderSide: BorderSide(color: primaryColor)), + focusedBorder: UnderlineInputBorder( + borderSide: BorderSide(color: primaryColor), + ), alignLabelWithHint: true, ); - final buttonTheme = ButtonThemeData( + final ButtonThemeData buttonTheme = ButtonThemeData( colorScheme: const ColorScheme.light(primary: primaryColor), buttonColor: primaryColor, splashColor: primaryColorLight, padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 20), textTheme: ButtonTextTheme.primary, - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(20), + ), ); return ThemeData( diff --git a/lib/ui/components/login_header.dart b/lib/ui/components/login_header.dart index 6f8216ef..9927f4d7 100644 --- a/lib/ui/components/login_header.dart +++ b/lib/ui/components/login_header.dart @@ -12,12 +12,12 @@ class LoginHeader extends StatelessWidget { gradient: LinearGradient( begin: Alignment.topRight, end: Alignment.bottomLeft, - colors: [ + colors: [ Theme.of(context).primaryColorLight, Theme.of(context).primaryColorDark ], ), - boxShadow: const [ + boxShadow: const [ BoxShadow( offset: Offset(0, 0), spreadRadius: 0, diff --git a/lib/ui/components/reload_screen.dart b/lib/ui/components/reload_screen.dart index f6a2fc6e..3562325a 100644 --- a/lib/ui/components/reload_screen.dart +++ b/lib/ui/components/reload_screen.dart @@ -14,7 +14,7 @@ class ReloadScreen extends StatelessWidget { padding: const EdgeInsets.all(40), child: Column( mainAxisAlignment: MainAxisAlignment.center, - children: [ + children: [ Text( error, style: const TextStyle(fontSize: 16), diff --git a/lib/ui/components/spinner_dialog.dart b/lib/ui/components/spinner_dialog.dart index 2162e006..a05f1508 100644 --- a/lib/ui/components/spinner_dialog.dart +++ b/lib/ui/components/spinner_dialog.dart @@ -7,7 +7,7 @@ Future showLoading(BuildContext context) async { await showDialog( context: context, barrierDismissible: false, - builder: (context) { + builder: (BuildContext context) { return SimpleDialog( children: [ Column( diff --git a/lib/ui/mixins/keyboard_manager.dart b/lib/ui/mixins/keyboard_manager.dart index c28cde13..d4afd530 100644 --- a/lib/ui/mixins/keyboard_manager.dart +++ b/lib/ui/mixins/keyboard_manager.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; mixin KeyboardManager { void hideKeyboard(BuildContext context) { - final currectFocus = FocusScope.of(context); + final FocusScopeNode currectFocus = FocusScope.of(context); if (!currectFocus.hasPrimaryFocus) { currectFocus.unfocus(); } diff --git a/lib/ui/mixins/loading_manager.dart b/lib/ui/mixins/loading_manager.dart index 3a65597a..eb38de63 100644 --- a/lib/ui/mixins/loading_manager.dart +++ b/lib/ui/mixins/loading_manager.dart @@ -4,7 +4,7 @@ import '../components/components.dart'; mixin LoadingManager { void handleLoading(BuildContext context, Stream stream) { - stream.listen((isLoading) async { + stream.listen((bool isLoading) async { if (isLoading == true) { await showLoading(context); } else { diff --git a/lib/ui/mixins/navigation_manager.dart b/lib/ui/mixins/navigation_manager.dart index 49fbdc03..fa8d066c 100644 --- a/lib/ui/mixins/navigation_manager.dart +++ b/lib/ui/mixins/navigation_manager.dart @@ -2,7 +2,7 @@ import 'package:get/get.dart'; mixin NavigationManager { void handleNavigation(Stream stream, {bool clear = false}) { - stream.listen((page) { + stream.listen((String? page) { if (page != null && page.isNotEmpty) { if (clear == true) { Get.offAllNamed(page); diff --git a/lib/ui/mixins/session_manager.dart b/lib/ui/mixins/session_manager.dart index 16249865..3d0543fa 100644 --- a/lib/ui/mixins/session_manager.dart +++ b/lib/ui/mixins/session_manager.dart @@ -2,7 +2,7 @@ import 'package:get/get.dart'; mixin SessionManager { void handleSessionExpired(Stream stream) { - stream.listen((isExpired) { + stream.listen((bool isExpired) { if (isExpired == true) { Get.offAllNamed('/login'); } diff --git a/lib/ui/mixins/ui_error_manager.dart b/lib/ui/mixins/ui_error_manager.dart index 5ea6b75f..9fcfab4d 100644 --- a/lib/ui/mixins/ui_error_manager.dart +++ b/lib/ui/mixins/ui_error_manager.dart @@ -5,7 +5,7 @@ import '../helpers/errors/errors.dart'; mixin UIErrorManager { void handleMainError(BuildContext context, Stream stream) { - stream.listen((error) { + stream.listen((UIError? error) { if (error != null) { showErrorMessage(context, error.description); } diff --git a/lib/ui/pages/login/components/email_input.dart b/lib/ui/pages/login/components/email_input.dart index d5870147..e79a0588 100644 --- a/lib/ui/pages/login/components/email_input.dart +++ b/lib/ui/pages/login/components/email_input.dart @@ -9,10 +9,10 @@ class EmailInput extends StatelessWidget { @override Widget build(BuildContext context) { - final presenter = Provider.of(context); + final LoginPresenter presenter = Provider.of(context); return StreamBuilder( stream: presenter.emailErrorStream, - builder: (context, snapshot) { + builder: (BuildContext context, AsyncSnapshot snapshot) { return TextFormField( decoration: InputDecoration( labelText: R.string.email, diff --git a/lib/ui/pages/login/components/login_button.dart b/lib/ui/pages/login/components/login_button.dart index 6956fb8e..3395c4c9 100644 --- a/lib/ui/pages/login/components/login_button.dart +++ b/lib/ui/pages/login/components/login_button.dart @@ -9,10 +9,10 @@ class LoginButton extends StatelessWidget { @override Widget build(BuildContext context) { - final presenter = Provider.of(context); + final LoginPresenter presenter = Provider.of(context); return StreamBuilder( stream: presenter.isFormValidStream, - builder: (context, snapshot) { + builder: (BuildContext context, AsyncSnapshot snapshot) { return ElevatedButton( onPressed: snapshot.data == true ? presenter.auth : null, child: Text(R.string.enter.toUpperCase()), diff --git a/lib/ui/pages/login/components/password_input.dart b/lib/ui/pages/login/components/password_input.dart index c430a36e..a4952f6e 100644 --- a/lib/ui/pages/login/components/password_input.dart +++ b/lib/ui/pages/login/components/password_input.dart @@ -9,10 +9,10 @@ class PasswordInput extends StatelessWidget { @override Widget build(BuildContext context) { - final presenter = Provider.of(context); + final LoginPresenter presenter = Provider.of(context); return StreamBuilder( stream: presenter.passwordErrorStream, - builder: (context, snapshot) { + builder: (BuildContext context, AsyncSnapshot snapshot) { return TextFormField( decoration: InputDecoration( labelText: R.string.password, diff --git a/lib/ui/pages/login/login_page.dart b/lib/ui/pages/login/login_page.dart index 89bdf946..b47bcd63 100644 --- a/lib/ui/pages/login/login_page.dart +++ b/lib/ui/pages/login/login_page.dart @@ -17,7 +17,7 @@ class LoginPage extends StatelessWidget Widget build(BuildContext context) { return Scaffold( body: Builder( - builder: (context) { + builder: (BuildContext context) { handleLoading(context, presenter.isLoadingStream); handleMainError(context, presenter.mainErrorStream); handleNavigation(presenter.navigateToStream, clear: true); @@ -32,7 +32,7 @@ class LoginPage extends StatelessWidget Headline1(text: R.string.login), Padding( padding: const EdgeInsets.all(32), - child: ListenableProvider( + child: ListenableProvider( create: (_) => presenter, child: Form( child: Column( diff --git a/lib/ui/pages/signup/components/email_input.dart b/lib/ui/pages/signup/components/email_input.dart index 2831d2a3..c235af9b 100644 --- a/lib/ui/pages/signup/components/email_input.dart +++ b/lib/ui/pages/signup/components/email_input.dart @@ -9,10 +9,10 @@ class EmailInput extends StatelessWidget { @override Widget build(BuildContext context) { - final presenter = Provider.of(context); + final SignUpPresenter presenter = Provider.of(context); return StreamBuilder( stream: presenter.emailErrorStream, - builder: (context, snapshot) { + builder: (BuildContext context, AsyncSnapshot snapshot) { return TextFormField( decoration: InputDecoration( labelText: R.string.email, diff --git a/lib/ui/pages/signup/components/name_input.dart b/lib/ui/pages/signup/components/name_input.dart index b8fcee9c..dfe0aaaa 100644 --- a/lib/ui/pages/signup/components/name_input.dart +++ b/lib/ui/pages/signup/components/name_input.dart @@ -9,10 +9,10 @@ class NameInput extends StatelessWidget { @override Widget build(BuildContext context) { - final presenter = Provider.of(context); + final SignUpPresenter presenter = Provider.of(context); return StreamBuilder( stream: presenter.nameErrorStream, - builder: (context, snapshot) { + builder: (BuildContext context, AsyncSnapshot snapshot) { return TextFormField( decoration: InputDecoration( labelText: R.string.name, diff --git a/lib/ui/pages/signup/components/password_confirmation_input.dart b/lib/ui/pages/signup/components/password_confirmation_input.dart index adbe5209..adb26b6f 100644 --- a/lib/ui/pages/signup/components/password_confirmation_input.dart +++ b/lib/ui/pages/signup/components/password_confirmation_input.dart @@ -9,10 +9,10 @@ class PasswordConfirmationInput extends StatelessWidget { @override Widget build(BuildContext context) { - final presenter = Provider.of(context); + final SignUpPresenter presenter = Provider.of(context); return StreamBuilder( stream: presenter.passwordConfirmationErrorStream, - builder: (context, snapshot) { + builder: (BuildContext context, AsyncSnapshot snapshot) { return TextFormField( decoration: InputDecoration( labelText: R.string.confirmPassword, diff --git a/lib/ui/pages/signup/components/password_input.dart b/lib/ui/pages/signup/components/password_input.dart index 21db1292..235f26e5 100644 --- a/lib/ui/pages/signup/components/password_input.dart +++ b/lib/ui/pages/signup/components/password_input.dart @@ -9,10 +9,10 @@ class PasswordInput extends StatelessWidget { @override Widget build(BuildContext context) { - final presenter = Provider.of(context); + final SignUpPresenter presenter = Provider.of(context); return StreamBuilder( stream: presenter.passwordErrorStream, - builder: (context, snapshot) { + builder: (BuildContext context, AsyncSnapshot snapshot) { return TextFormField( decoration: InputDecoration( labelText: R.string.password, diff --git a/lib/ui/pages/signup/components/signup_button.dart b/lib/ui/pages/signup/components/signup_button.dart index 1815866b..d3393325 100644 --- a/lib/ui/pages/signup/components/signup_button.dart +++ b/lib/ui/pages/signup/components/signup_button.dart @@ -9,10 +9,10 @@ class SignUpButton extends StatelessWidget { @override Widget build(BuildContext context) { - final presenter = Provider.of(context); + final SignUpPresenter presenter = Provider.of(context); return StreamBuilder( stream: presenter.isFormValidStream, - builder: (context, snapshot) { + builder: (BuildContext context, AsyncSnapshot snapshot) { return ElevatedButton( onPressed: snapshot.data == true ? presenter.signUp : null, child: Text(R.string.addAccount.toUpperCase()), diff --git a/lib/ui/pages/signup/signup_page.dart b/lib/ui/pages/signup/signup_page.dart index 78c7c582..2f187ea6 100644 --- a/lib/ui/pages/signup/signup_page.dart +++ b/lib/ui/pages/signup/signup_page.dart @@ -17,7 +17,7 @@ class SignUpPage extends StatelessWidget Widget build(BuildContext context) { return Scaffold( body: Builder( - builder: (context) { + builder: (BuildContext context) { handleLoading(context, presenter.isLoadingStream); handleMainError(context, presenter.mainErrorStream); handleNavigation(presenter.navigateToStream, clear: true); @@ -32,7 +32,7 @@ class SignUpPage extends StatelessWidget Headline1(text: R.string.addAccount), Padding( padding: const EdgeInsets.all(32), - child: ListenableProvider( + child: ListenableProvider( create: (_) => presenter, child: Form( child: Column( diff --git a/lib/ui/pages/splash/splash_page.dart b/lib/ui/pages/splash/splash_page.dart index 1ac006ed..69faa77e 100644 --- a/lib/ui/pages/splash/splash_page.dart +++ b/lib/ui/pages/splash/splash_page.dart @@ -15,7 +15,7 @@ class SplashPage extends StatelessWidget with NavigationManager { return Scaffold( appBar: AppBar(title: const Text('4Dev')), body: Builder( - builder: (context) { + builder: (BuildContext context) { handleNavigation(presenter.navigateToStream, clear: true); return const Center( diff --git a/lib/ui/pages/survey_result/components/survey_answer.dart b/lib/ui/pages/survey_result/components/survey_answer.dart index aed51473..51e2f908 100644 --- a/lib/ui/pages/survey_result/components/survey_answer.dart +++ b/lib/ui/pages/survey_result/components/survey_answer.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; -import './components.dart'; import '../survey_result.dart'; class SurveyAnswer extends StatelessWidget { diff --git a/lib/ui/pages/survey_result/components/survey_result.dart b/lib/ui/pages/survey_result/components/survey_result.dart index 98d82c60..f732d1b7 100644 --- a/lib/ui/pages/survey_result/components/survey_result.dart +++ b/lib/ui/pages/survey_result/components/survey_result.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; -import './components.dart'; import '../survey_result.dart'; class SurveyResult extends StatelessWidget { @@ -16,11 +15,11 @@ class SurveyResult extends StatelessWidget { @override Widget build(BuildContext context) { return ListView.builder( - itemBuilder: (context, index) { + itemBuilder: (BuildContext context, int index) { if (index == 0) { return SurveyHeader(viewModel.question); } - final answer = viewModel.answers[index - 1]; + final SurveyAnswerViewModel answer = viewModel.answers[index - 1]; return GestureDetector( onTap: () => answer.isCurrentAnswer ? null : onSave(answer: answer.answer), diff --git a/lib/ui/pages/survey_result/survey_answer_viewmodel.dart b/lib/ui/pages/survey_result/survey_answer_viewmodel.dart index c3d011a0..9676a47f 100644 --- a/lib/ui/pages/survey_result/survey_answer_viewmodel.dart +++ b/lib/ui/pages/survey_result/survey_answer_viewmodel.dart @@ -7,7 +7,7 @@ class SurveyAnswerViewModel extends Equatable { final String percent; @override - List get props => [image, answer, isCurrentAnswer, percent]; + List get props => [image, answer, isCurrentAnswer, percent]; const SurveyAnswerViewModel({ required this.answer, diff --git a/lib/ui/pages/survey_result/survey_result.dart b/lib/ui/pages/survey_result/survey_result.dart index aa7642d6..e31f0eef 100644 --- a/lib/ui/pages/survey_result/survey_result.dart +++ b/lib/ui/pages/survey_result/survey_result.dart @@ -1,3 +1,4 @@ +export './components/components.dart'; export './survey_answer_viewmodel.dart'; export './survey_result_page.dart'; export './survey_result_presenter.dart'; diff --git a/lib/ui/pages/survey_result/survey_result_page.dart b/lib/ui/pages/survey_result/survey_result_page.dart index 2cd36745..b3dfa450 100644 --- a/lib/ui/pages/survey_result/survey_result_page.dart +++ b/lib/ui/pages/survey_result/survey_result_page.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; -import './components/components.dart'; import './survey_result.dart'; import '../../components/components.dart'; import '../../helpers/helpers.dart'; @@ -17,14 +16,17 @@ class SurveyResultPage extends StatelessWidget return Scaffold( appBar: AppBar(title: Text(R.string.surveyResult)), body: Builder( - builder: (context) { + builder: (BuildContext context) { handleLoading(context, presenter.isLoadingStream); handleSessionExpired(presenter.isSessionExpiredStream); presenter.loadData(); return StreamBuilder( stream: presenter.surveyResultStream, - builder: (context, snapshot) { + builder: ( + BuildContext context, + AsyncSnapshot snapshot, + ) { if (snapshot.hasError) { return ReloadScreen( error: '${snapshot.error}', diff --git a/lib/ui/pages/survey_result/survey_result_viewmodel.dart b/lib/ui/pages/survey_result/survey_result_viewmodel.dart index 00064048..e2dd4831 100644 --- a/lib/ui/pages/survey_result/survey_result_viewmodel.dart +++ b/lib/ui/pages/survey_result/survey_result_viewmodel.dart @@ -8,7 +8,7 @@ class SurveyResultViewModel extends Equatable { final List answers; @override - List get props => [surveyId, question, answers]; + List get props => [surveyId, question, answers]; const SurveyResultViewModel({ required this.surveyId, diff --git a/lib/ui/pages/surveys/components/survey_item.dart b/lib/ui/pages/surveys/components/survey_item.dart index 2d7ff976..43b8583d 100644 --- a/lib/ui/pages/surveys/components/survey_item.dart +++ b/lib/ui/pages/surveys/components/survey_item.dart @@ -10,7 +10,7 @@ class SurveyItem extends StatelessWidget { @override Widget build(BuildContext context) { - final presenter = Provider.of(context); + final SurveysPresenter presenter = Provider.of(context); return GestureDetector( onTap: () => presenter.goToSurveyResult(viewModel.id), child: Padding( @@ -29,7 +29,9 @@ class SurveyItem extends StatelessWidget { color: Colors.black, ) ], - borderRadius: const BorderRadius.all(Radius.circular(10)), + borderRadius: const BorderRadius.all( + Radius.circular(10), + ), ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, diff --git a/lib/ui/pages/surveys/components/survey_items.dart b/lib/ui/pages/surveys/components/survey_items.dart index 61d689c3..ef2ecba5 100644 --- a/lib/ui/pages/surveys/components/survey_items.dart +++ b/lib/ui/pages/surveys/components/survey_items.dart @@ -15,7 +15,9 @@ class SurveyItems extends StatelessWidget { padding: const EdgeInsets.symmetric(vertical: 20), child: CarouselSlider( options: CarouselOptions(enlargeCenterPage: true, aspectRatio: 1), - items: viewModels.map((viewModel) => SurveyItem(viewModel)).toList(), + items: viewModels + .map((SurveyViewModel viewModel) => SurveyItem(viewModel)) + .toList(), ), ); } diff --git a/lib/ui/pages/surveys/survey_viewmodel.dart b/lib/ui/pages/surveys/survey_viewmodel.dart index d49f7de1..a41e015e 100644 --- a/lib/ui/pages/surveys/survey_viewmodel.dart +++ b/lib/ui/pages/surveys/survey_viewmodel.dart @@ -7,7 +7,7 @@ class SurveyViewModel extends Equatable { final bool didAnswer; @override - List get props => [id, question, date, didAnswer]; + List get props => [id, question, date, didAnswer]; const SurveyViewModel({ required this.id, diff --git a/lib/ui/pages/surveys/surveys_page.dart b/lib/ui/pages/surveys/surveys_page.dart index 1b01db40..10445c26 100644 --- a/lib/ui/pages/surveys/surveys_page.dart +++ b/lib/ui/pages/surveys/surveys_page.dart @@ -26,7 +26,7 @@ class _SurveysPageState extends State return Scaffold( appBar: AppBar(title: Text(R.string.surveys)), body: Builder( - builder: (context) { + builder: (BuildContext context) { handleLoading(context, widget.presenter.isLoadingStream); handleSessionExpired(widget.presenter.isSessionExpiredStream); handleNavigation(widget.presenter.navigateToStream); @@ -34,7 +34,10 @@ class _SurveysPageState extends State return StreamBuilder>( stream: widget.presenter.surveysStream, - builder: (context, snapshot) { + builder: ( + BuildContext context, + AsyncSnapshot> snapshot, + ) { if (snapshot.hasError) { return ReloadScreen( error: '${snapshot.error}', @@ -47,7 +50,7 @@ class _SurveysPageState extends State child: SurveyItems(snapshot.data!), ); } - return const SizedBox(height: 0); + return const SizedBox.shrink(); }, ); }, diff --git a/lib/ui/ui.dart b/lib/ui/ui.dart new file mode 100644 index 00000000..3720d0e4 --- /dev/null +++ b/lib/ui/ui.dart @@ -0,0 +1,4 @@ +export './components/components.dart'; +export './helpers/helpers.dart'; +export './mixins/mixins.dart'; +export './pages/pages.dart'; diff --git a/lib/validation/validation.dart b/lib/validation/validation.dart new file mode 100644 index 00000000..79e8b2eb --- /dev/null +++ b/lib/validation/validation.dart @@ -0,0 +1,2 @@ +export './protocols/protocols.dart'; +export './validators/validators.dart'; diff --git a/lib/validation/validators/compare_fields_validation.dart b/lib/validation/validators/compare_fields_validation.dart index adbb4f60..ee3a49bc 100644 --- a/lib/validation/validators/compare_fields_validation.dart +++ b/lib/validation/validators/compare_fields_validation.dart @@ -9,7 +9,7 @@ class CompareFieldsValidation extends Equatable implements FieldValidation { final String fieldToCompare; @override - List get props => [field, fieldToCompare]; + List get props => [field, fieldToCompare]; const CompareFieldsValidation({ required this.field, @@ -17,9 +17,11 @@ class CompareFieldsValidation extends Equatable implements FieldValidation { }); @override - ValidationError? validate(Map input) => input[field] != null && - input[fieldToCompare] != null && - input[field] != input[fieldToCompare] - ? ValidationError.invalidField - : null; + ValidationError? validate(Map input) { + return input[field] != null && + input[fieldToCompare] != null && + input[field] != input[fieldToCompare] + ? ValidationError.invalidField + : null; + } } diff --git a/lib/validation/validators/email_validation.dart b/lib/validation/validators/email_validation.dart index 88fddcbf..413dfe6b 100644 --- a/lib/validation/validators/email_validation.dart +++ b/lib/validation/validators/email_validation.dart @@ -8,16 +8,16 @@ class EmailValidation extends Equatable implements FieldValidation { final String field; @override - List get props => [field]; + List get props => [field]; const EmailValidation(this.field); @override ValidationError? validate(Map input) { - final regex = RegExp( + final RegExp regex = RegExp( r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+", ); - final isValid = + final bool isValid = input[field]?.isNotEmpty != true || regex.hasMatch(input[field]); return isValid ? null : ValidationError.invalidField; } diff --git a/lib/validation/validators/min_length_validation.dart b/lib/validation/validators/min_length_validation.dart index 4f275012..fd63f7b6 100644 --- a/lib/validation/validators/min_length_validation.dart +++ b/lib/validation/validators/min_length_validation.dart @@ -9,7 +9,7 @@ class MinLengthValidation extends Equatable implements FieldValidation { final int size; @override - List get props => [field, size]; + List get props => [field, size]; const MinLengthValidation({required this.field, required this.size}); diff --git a/lib/validation/validators/required_field_validation.dart b/lib/validation/validators/required_field_validation.dart index cd779b3c..43060b0b 100644 --- a/lib/validation/validators/required_field_validation.dart +++ b/lib/validation/validators/required_field_validation.dart @@ -8,8 +8,9 @@ class RequiredFieldValidation extends Equatable implements FieldValidation { final String field; @override - List get props => [field]; + List get props => [field]; + @override const RequiredFieldValidation(this.field); @override diff --git a/test/data/data.dart b/test/data/data.dart new file mode 100644 index 00000000..e739a823 --- /dev/null +++ b/test/data/data.dart @@ -0,0 +1 @@ +export './mocks/mocks.dart'; diff --git a/test/data/mocks/cache_storage_spy.dart b/test/data/mocks/cache_storage_spy.dart index 24ffb9ae..200ddbe9 100644 --- a/test/data/mocks/cache_storage_spy.dart +++ b/test/data/mocks/cache_storage_spy.dart @@ -1,5 +1,4 @@ -import 'package:fordev/data/cache/cache.dart'; - +import 'package:fordev/data/data.dart'; import 'package:mocktail/mocktail.dart'; class CacheStorageSpy extends Mock implements CacheStorage { diff --git a/test/data/mocks/http_client_spy.dart b/test/data/mocks/http_client_spy.dart index c0034d4c..9775ab82 100644 --- a/test/data/mocks/http_client_spy.dart +++ b/test/data/mocks/http_client_spy.dart @@ -1,4 +1,4 @@ -import 'package:fordev/data/http/http.dart'; +import 'package:fordev/data/data.dart'; import 'package:mocktail/mocktail.dart'; diff --git a/test/data/mocks/load_survey_result_spy.dart b/test/data/mocks/load_survey_result_spy.dart index 7e3866ed..c2d5eb71 100644 --- a/test/data/mocks/load_survey_result_spy.dart +++ b/test/data/mocks/load_survey_result_spy.dart @@ -1,6 +1,4 @@ -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; -import 'package:fordev/domain/usecases/usecases.dart'; +import 'package:fordev/domain/domain.dart'; import 'package:mocktail/mocktail.dart'; diff --git a/test/data/mocks/load_surveys_spy.dart b/test/data/mocks/load_surveys_spy.dart index 02fdbbe5..1bf9745a 100644 --- a/test/data/mocks/load_surveys_spy.dart +++ b/test/data/mocks/load_surveys_spy.dart @@ -1,6 +1,4 @@ -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; -import 'package:fordev/domain/usecases/usecases.dart'; +import 'package:fordev/domain/domain.dart'; import 'package:mocktail/mocktail.dart'; diff --git a/test/data/mocks/local_load_survey_result_spy.dart b/test/data/mocks/local_load_survey_result_spy.dart index 1cde0bba..db784f35 100644 --- a/test/data/mocks/local_load_survey_result_spy.dart +++ b/test/data/mocks/local_load_survey_result_spy.dart @@ -1,6 +1,5 @@ -import 'package:fordev/data/usecases/usecases.dart'; -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; +import 'package:fordev/data/data.dart'; +import 'package:fordev/domain/domain.dart'; import 'package:mocktail/mocktail.dart'; diff --git a/test/data/mocks/local_load_surveys_spy.dart b/test/data/mocks/local_load_surveys_spy.dart index d39ae46d..00a43912 100644 --- a/test/data/mocks/local_load_surveys_spy.dart +++ b/test/data/mocks/local_load_surveys_spy.dart @@ -1,6 +1,5 @@ -import 'package:fordev/data/usecases/usecases.dart'; -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; +import 'package:fordev/data/data.dart'; +import 'package:fordev/domain/domain.dart'; import 'package:mocktail/mocktail.dart'; diff --git a/test/data/mocks/remote_load_survey_result_spy.dart b/test/data/mocks/remote_load_survey_result_spy.dart index efda827f..71a2aa0f 100644 --- a/test/data/mocks/remote_load_survey_result_spy.dart +++ b/test/data/mocks/remote_load_survey_result_spy.dart @@ -1,6 +1,5 @@ -import 'package:fordev/data/usecases/usecases.dart'; -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; +import 'package:fordev/data/data.dart'; +import 'package:fordev/domain/domain.dart'; import 'package:mocktail/mocktail.dart'; diff --git a/test/data/mocks/remote_load_surveys_spy.dart b/test/data/mocks/remote_load_surveys_spy.dart index e4f79dd5..bedf0657 100644 --- a/test/data/mocks/remote_load_surveys_spy.dart +++ b/test/data/mocks/remote_load_surveys_spy.dart @@ -1,6 +1,5 @@ -import 'package:fordev/data/usecases/usecases.dart'; -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; +import 'package:fordev/data/data.dart'; +import 'package:fordev/domain/domain.dart'; import 'package:mocktail/mocktail.dart'; diff --git a/test/data/mocks/secure_cache_storage_spy.dart b/test/data/mocks/secure_cache_storage_spy.dart index 5f02d555..fd2abd35 100644 --- a/test/data/mocks/secure_cache_storage_spy.dart +++ b/test/data/mocks/secure_cache_storage_spy.dart @@ -1,4 +1,4 @@ -import 'package:fordev/data/cache/cache.dart'; +import 'package:fordev/data/data.dart'; import 'package:mocktail/mocktail.dart'; diff --git a/test/data/usecases/add_account/remote_add_account_test.dart b/test/data/usecases/add_account/remote_add_account_test.dart index 27921a1f..3e9e0d05 100644 --- a/test/data/usecases/add_account/remote_add_account_test.dart +++ b/test/data/usecases/add_account/remote_add_account_test.dart @@ -1,8 +1,6 @@ import 'package:faker/faker.dart'; -import 'package:fordev/data/http/http.dart'; -import 'package:fordev/data/usecases/usecases.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; -import 'package:fordev/domain/usecases/usecases.dart'; +import 'package:fordev/data/data.dart'; +import 'package:fordev/domain/domain.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; @@ -46,7 +44,7 @@ void main() { test('Should throw UnexpectedError if HttpClient returns 400', () async { httpClient.mockRequestError(HttpError.badRequest); - final future = sut.add(params); + final Future future = sut.add(params); expect(future, throwsA(DomainError.unexpected)); }); @@ -54,7 +52,7 @@ void main() { test('Should throw UnexpectedError if HttpClient returns 404', () async { httpClient.mockRequestError(HttpError.notFound); - final future = sut.add(params); + final Future future = sut.add(params); expect(future, throwsA(DomainError.unexpected)); }); @@ -62,7 +60,7 @@ void main() { test('Should throw UnexpectedError if HttpClient returns 500', () async { httpClient.mockRequestError(HttpError.serverError); - final future = sut.add(params); + final Future future = sut.add(params); expect(future, throwsA(DomainError.unexpected)); }); @@ -71,13 +69,13 @@ void main() { () async { httpClient.mockRequestError(HttpError.forbidden); - final future = sut.add(params); + final Future future = sut.add(params); expect(future, throwsA(DomainError.emailInUse)); }); test('Should return an Account if HttpClient returns 200', () async { - final account = await sut.add(params); + final AccountEntity account = await sut.add(params); expect(account.token, apiResult['accessToken']); }); @@ -87,7 +85,7 @@ void main() { () async { httpClient.mockRequest({'invalid_key': 'invalid_value'}); - final future = sut.add(params); + final Future future = sut.add(params); expect(future, throwsA(DomainError.unexpected)); }); diff --git a/test/data/usecases/authentication/remote_authentication_test.dart b/test/data/usecases/authentication/remote_authentication_test.dart index c867d6b6..2da060b6 100644 --- a/test/data/usecases/authentication/remote_authentication_test.dart +++ b/test/data/usecases/authentication/remote_authentication_test.dart @@ -1,8 +1,6 @@ import 'package:faker/faker.dart'; -import 'package:fordev/data/http/http.dart'; -import 'package:fordev/data/usecases/usecases.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; -import 'package:fordev/domain/usecases/usecases.dart'; +import 'package:fordev/data/data.dart'; +import 'package:fordev/domain/domain.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; @@ -41,7 +39,7 @@ void main() { test('Should throw UnexpectedError if HttpClient returns 400', () async { httpClient.mockRequestError(HttpError.badRequest); - final future = sut.auth(params); + final Future future = sut.auth(params); expect(future, throwsA(DomainError.unexpected)); }); @@ -49,7 +47,7 @@ void main() { test('Should throw UnexpectedError if HttpClient returns 404', () async { httpClient.mockRequestError(HttpError.notFound); - final future = sut.auth(params); + final Future future = sut.auth(params); expect(future, throwsA(DomainError.unexpected)); }); @@ -57,7 +55,7 @@ void main() { test('Should throw UnexpectedError if HttpClient returns 500', () async { httpClient.mockRequestError(HttpError.serverError); - final future = sut.auth(params); + final Future future = sut.auth(params); expect(future, throwsA(DomainError.unexpected)); }); @@ -66,13 +64,13 @@ void main() { () async { httpClient.mockRequestError(HttpError.unauthorized); - final future = sut.auth(params); + final Future future = sut.auth(params); expect(future, throwsA(DomainError.invalidCredentials)); }); test('Should return an Account if HttpClient returns 200', () async { - final account = await sut.auth(params); + final AccountEntity account = await sut.auth(params); expect(account.token, apiResult['accessToken']); }); @@ -82,7 +80,7 @@ void main() { () async { httpClient.mockRequest({'invalid_key': 'invalid_value'}); - final future = sut.auth(params); + final Future future = sut.auth(params); expect(future, throwsA(DomainError.unexpected)); }); diff --git a/test/data/usecases/load_current_account/local_load_current_account_test.dart b/test/data/usecases/load_current_account/local_load_current_account_test.dart index 12ee4e9e..8c916879 100644 --- a/test/data/usecases/load_current_account/local_load_current_account_test.dart +++ b/test/data/usecases/load_current_account/local_load_current_account_test.dart @@ -1,7 +1,6 @@ import 'package:faker/faker.dart'; -import 'package:fordev/data/usecases/usecases.dart'; -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; +import 'package:fordev/data/data.dart'; +import 'package:fordev/domain/domain.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; @@ -26,7 +25,7 @@ void main() { }); test('Should return an AccountEntity', () async { - final account = await sut.load(); + final AccountEntity account = await sut.load(); expect(account, AccountEntity(token: token)); }); @@ -35,7 +34,7 @@ void main() { () async { secureCacheStorage.mockFetchError(); - final future = sut.load(); + final Future future = sut.load(); expect(future, throwsA(DomainError.unexpected)); }); @@ -44,7 +43,7 @@ void main() { () async { secureCacheStorage.mockFetch(null); - final future = sut.load(); + final Future future = sut.load(); expect(future, throwsA(DomainError.unexpected)); }); diff --git a/test/data/usecases/load_survey_result/local_load_survey_result_test.dart b/test/data/usecases/load_survey_result/local_load_survey_result_test.dart index b8f66aa1..d6a87723 100644 --- a/test/data/usecases/load_survey_result/local_load_survey_result_test.dart +++ b/test/data/usecases/load_survey_result/local_load_survey_result_test.dart @@ -1,11 +1,10 @@ import 'package:faker/faker.dart'; -import 'package:fordev/data/usecases/usecases.dart'; -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; +import 'package:fordev/data/data.dart'; +import 'package:fordev/domain/domain.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; -import '../../../domain/mocks/mocks.dart'; +import '../../../domain/domain.dart'; import '../../../infra/mocks/mocks.dart'; import '../../mocks/mocks.dart'; @@ -33,7 +32,8 @@ void main() { }); test('Should return surveyResult on success', () async { - final surveyResult = await sut.loadBySurvey(surveyId: surveyId); + final SurveyResultEntity surveyResult = + await sut.loadBySurvey(surveyId: surveyId); expect( surveyResult, @@ -60,7 +60,8 @@ void main() { test('Should throw UnexpectedError if cache is empty', () async { cacheStorage.mockFetch({}); - final future = sut.loadBySurvey(surveyId: surveyId); + final Future future = + sut.loadBySurvey(surveyId: surveyId); expect(future, throwsA(DomainError.unexpected)); }); @@ -68,7 +69,8 @@ void main() { test('Should throw UnexpectedError if cache is isvalid', () async { cacheStorage.mockFetch(CacheFactory.makeInvalidSurveyResult()); - final future = sut.loadBySurvey(surveyId: surveyId); + final Future future = + sut.loadBySurvey(surveyId: surveyId); expect(future, throwsA(DomainError.unexpected)); }); @@ -76,7 +78,8 @@ void main() { test('Should throw UnexpectedError if cache is incomplete', () async { cacheStorage.mockFetch(CacheFactory.makeIncompleteSurveyResult()); - final future = sut.loadBySurvey(surveyId: surveyId); + final Future future = + sut.loadBySurvey(surveyId: surveyId); expect(future, throwsA(DomainError.unexpected)); }); @@ -84,7 +87,8 @@ void main() { test('Should throw UnexpectedError if cache throws', () async { cacheStorage.mockFetchError(); - final future = sut.loadBySurvey(surveyId: surveyId); + final Future future = + sut.loadBySurvey(surveyId: surveyId); expect(future, throwsA(DomainError.unexpected)); }); @@ -156,7 +160,7 @@ void main() { test('Should throw UnexpectedError if save throws', () async { cacheStorage.mockSaveError(); - final future = sut.save(surveyResult); + final Future future = sut.save(surveyResult); expect(future, throwsA(DomainError.unexpected)); }); diff --git a/test/data/usecases/load_survey_result/remote_load_survey_result_test.dart b/test/data/usecases/load_survey_result/remote_load_survey_result_test.dart index 0d0a63ec..93e9d33f 100644 --- a/test/data/usecases/load_survey_result/remote_load_survey_result_test.dart +++ b/test/data/usecases/load_survey_result/remote_load_survey_result_test.dart @@ -1,8 +1,6 @@ import 'package:faker/faker.dart'; -import 'package:fordev/data/http/http.dart'; -import 'package:fordev/data/usecases/usecases.dart'; -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; +import 'package:fordev/data/data.dart'; +import 'package:fordev/domain/domain.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; @@ -32,7 +30,8 @@ void main() { }); test('Should return surveyResult on 200', () async { - final result = await sut.loadBySurvey(surveyId: surveyId); + final SurveyResultEntity result = + await sut.loadBySurvey(surveyId: surveyId); expect( result, @@ -63,7 +62,8 @@ void main() { () async { httpClient.mockRequest(ApiFactory.makeInvalidJson()); - final future = sut.loadBySurvey(surveyId: surveyId); + final Future future = + sut.loadBySurvey(surveyId: surveyId); expect(future, throwsA(DomainError.unexpected)); }); @@ -71,7 +71,8 @@ void main() { test('Should throw UnexpectedError if HttpClient returns 404', () async { httpClient.mockRequestError(HttpError.notFound); - final future = sut.loadBySurvey(surveyId: surveyId); + final Future future = + sut.loadBySurvey(surveyId: surveyId); expect(future, throwsA(DomainError.unexpected)); }); @@ -79,7 +80,8 @@ void main() { test('Should throw UnexpectedError if HttpClient returns 500', () async { httpClient.mockRequestError(HttpError.serverError); - final future = sut.loadBySurvey(surveyId: surveyId); + final Future future = + sut.loadBySurvey(surveyId: surveyId); expect(future, throwsA(DomainError.unexpected)); }); @@ -87,7 +89,8 @@ void main() { test('Should throw AccessDeniedError if HttpClient returns 403', () async { httpClient.mockRequestError(HttpError.forbidden); - final future = sut.loadBySurvey(surveyId: surveyId); + final Future future = + sut.loadBySurvey(surveyId: surveyId); expect(future, throwsA(DomainError.accessDenied)); }); diff --git a/test/data/usecases/load_surveys/local_load_surveys_test.dart b/test/data/usecases/load_surveys/local_load_surveys_test.dart index 07df8b87..f8aa0b44 100644 --- a/test/data/usecases/load_surveys/local_load_surveys_test.dart +++ b/test/data/usecases/load_surveys/local_load_surveys_test.dart @@ -1,6 +1,5 @@ -import 'package:fordev/data/usecases/usecases.dart'; -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; +import 'package:fordev/data/data.dart'; +import 'package:fordev/domain/domain.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; @@ -30,7 +29,7 @@ void main() { }); test('Should return a list of surveys on success', () async { - final surveys = await sut.load(); + final List surveys = await sut.load(); expect(surveys, [ SurveyEntity( @@ -51,7 +50,7 @@ void main() { test('Should throw UnexpectedError if cache is empty', () async { cacheStorage.mockFetch([]); - final future = sut.load(); + final Future> future = sut.load(); expect(future, throwsA(DomainError.unexpected)); }); @@ -59,7 +58,7 @@ void main() { test('Should throw UnexpectedError if cache is isvalid', () async { cacheStorage.mockFetch(CacheFactory.makeInvalidSurveyList()); - final future = sut.load(); + final Future> future = sut.load(); expect(future, throwsA(DomainError.unexpected)); }); @@ -67,7 +66,7 @@ void main() { test('Should throw UnexpectedError if cache is incomplete', () async { cacheStorage.mockFetch(CacheFactory.makeIncompleteSurveyList()); - final future = sut.load(); + final Future> future = sut.load(); expect(future, throwsA(DomainError.unexpected)); }); @@ -75,7 +74,7 @@ void main() { test('Should throw UnexpectedError if cache throws', () async { cacheStorage.mockFetchError(); - final future = sut.load(); + final Future> future = sut.load(); expect(future, throwsA(DomainError.unexpected)); }); @@ -115,7 +114,7 @@ void main() { group('save', () { test('Should call cacheStorage with correct values', () async { - final list = [ + final List> list = [ { 'id': surveys[0].id, 'question': surveys[0].question, @@ -138,7 +137,7 @@ void main() { test('Should throw UnexpectedError if save throws', () async { cacheStorage.mockSaveError(); - final future = sut.save(surveys); + final Future future = sut.save(surveys); expect(future, throwsA(DomainError.unexpected)); }); diff --git a/test/data/usecases/load_surveys/remote_load_surveys_test.dart b/test/data/usecases/load_surveys/remote_load_surveys_test.dart index 41eca9fb..e5360b30 100644 --- a/test/data/usecases/load_surveys/remote_load_surveys_test.dart +++ b/test/data/usecases/load_surveys/remote_load_surveys_test.dart @@ -1,8 +1,6 @@ import 'package:faker/faker.dart'; -import 'package:fordev/data/http/http.dart'; -import 'package:fordev/data/usecases/usecases.dart'; -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; +import 'package:fordev/data/data.dart'; +import 'package:fordev/domain/domain.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; @@ -30,7 +28,7 @@ void main() { }); test('Should return surveys on 200', () async { - final surveys = await sut.load(); + final List surveys = await sut.load(); expect(surveys, [ SurveyEntity( @@ -53,7 +51,7 @@ void main() { () async { httpClient.mockRequest(ApiFactory.makeInvalidList()); - final future = sut.load(); + final Future> future = sut.load(); expect(future, throwsA(DomainError.unexpected)); }); @@ -61,7 +59,7 @@ void main() { test('Should throw UnexpectedError if HttpClient returns 404', () async { httpClient.mockRequestError(HttpError.notFound); - final future = sut.load(); + final Future> future = sut.load(); expect(future, throwsA(DomainError.unexpected)); }); @@ -69,7 +67,7 @@ void main() { test('Should throw UnexpectedError if HttpClient returns 500', () async { httpClient.mockRequestError(HttpError.serverError); - final future = sut.load(); + final Future> future = sut.load(); expect(future, throwsA(DomainError.unexpected)); }); @@ -77,7 +75,7 @@ void main() { test('Should throw AccessDeniedError if HttpClient returns 403', () async { httpClient.mockRequestError(HttpError.forbidden); - final future = sut.load(); + final Future> future = sut.load(); expect(future, throwsA(DomainError.accessDenied)); }); diff --git a/test/data/usecases/save_current_account/local_save_current_account_test.dart b/test/data/usecases/save_current_account/local_save_current_account_test.dart index dfa5f9b7..cf8da82d 100644 --- a/test/data/usecases/save_current_account/local_save_current_account_test.dart +++ b/test/data/usecases/save_current_account/local_save_current_account_test.dart @@ -1,7 +1,6 @@ import 'package:faker/faker.dart'; -import 'package:fordev/data/usecases/usecases.dart'; -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; +import 'package:fordev/data/data.dart'; +import 'package:fordev/domain/domain.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; @@ -28,7 +27,7 @@ void main() { () async { secureCacheStorage.mockSaveError(); - final future = sut.save(account); + final Future future = sut.save(account); expect(future, throwsA(DomainError.unexpected)); }); diff --git a/test/data/usecases/save_survey_result/remote_save_survey_result_test.dart b/test/data/usecases/save_survey_result/remote_save_survey_result_test.dart index 2ddefa6d..2dcde321 100644 --- a/test/data/usecases/save_survey_result/remote_save_survey_result_test.dart +++ b/test/data/usecases/save_survey_result/remote_save_survey_result_test.dart @@ -1,8 +1,6 @@ import 'package:faker/faker.dart'; -import 'package:fordev/data/http/http.dart'; -import 'package:fordev/data/usecases/usecases.dart'; -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; +import 'package:fordev/data/data.dart'; +import 'package:fordev/domain/domain.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; @@ -35,7 +33,7 @@ void main() { }); test('Should return surveyResult on 200', () async { - final result = await sut.save(answer: answer); + final SurveyResultEntity result = await sut.save(answer: answer); expect( result, @@ -66,7 +64,7 @@ void main() { () async { httpClient.mockRequest(ApiFactory.makeInvalidJson()); - final future = sut.save(answer: answer); + final Future future = sut.save(answer: answer); expect(future, throwsA(DomainError.unexpected)); }); @@ -74,7 +72,7 @@ void main() { test('Should throw UnexpectedError if HttpClient returns 404', () async { httpClient.mockRequestError(HttpError.notFound); - final future = sut.save(answer: answer); + final Future future = sut.save(answer: answer); expect(future, throwsA(DomainError.unexpected)); }); @@ -82,7 +80,7 @@ void main() { test('Should throw UnexpectedError if HttpClient returns 500', () async { httpClient.mockRequestError(HttpError.serverError); - final future = sut.save(answer: answer); + final Future future = sut.save(answer: answer); expect(future, throwsA(DomainError.unexpected)); }); @@ -90,7 +88,7 @@ void main() { test('Should throw AccessDeniedError if HttpClient returns 403', () async { httpClient.mockRequestError(HttpError.forbidden); - final future = sut.save(answer: answer); + final Future future = sut.save(answer: answer); expect(future, throwsA(DomainError.accessDenied)); }); diff --git a/test/data/usecases/save_survey_result/save_survey_result.dart b/test/data/usecases/save_survey_result/save_survey_result.dart new file mode 100644 index 00000000..e39a15f6 --- /dev/null +++ b/test/data/usecases/save_survey_result/save_survey_result.dart @@ -0,0 +1 @@ +export 'remote_save_survey_result_test.dart'; diff --git a/test/domain/domain.dart b/test/domain/domain.dart new file mode 100644 index 00000000..e739a823 --- /dev/null +++ b/test/domain/domain.dart @@ -0,0 +1 @@ +export './mocks/mocks.dart'; diff --git a/test/domain/mocks/add_account_spy.dart b/test/domain/mocks/add_account_spy.dart index 7731737d..6efb8bdc 100644 --- a/test/domain/mocks/add_account_spy.dart +++ b/test/domain/mocks/add_account_spy.dart @@ -1,6 +1,4 @@ -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; -import 'package:fordev/domain/usecases/usecases.dart'; +import 'package:fordev/domain/domain.dart'; import 'package:mocktail/mocktail.dart'; diff --git a/test/domain/mocks/authentication_spy.dart b/test/domain/mocks/authentication_spy.dart index cf669d09..86b31d9c 100644 --- a/test/domain/mocks/authentication_spy.dart +++ b/test/domain/mocks/authentication_spy.dart @@ -1,6 +1,4 @@ -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; -import 'package:fordev/domain/usecases/usecases.dart'; +import 'package:fordev/domain/domain.dart'; import 'package:mocktail/mocktail.dart'; diff --git a/test/domain/mocks/entity_factory.dart b/test/domain/mocks/entity_factory.dart index fb2268c7..8c58695e 100644 --- a/test/domain/mocks/entity_factory.dart +++ b/test/domain/mocks/entity_factory.dart @@ -1,5 +1,5 @@ import 'package:faker/faker.dart'; -import 'package:fordev/domain/entities/entities.dart'; +import 'package:fordev/domain/domain.dart'; class EntityFactory { static AccountEntity makeAccount() => AccountEntity(token: faker.guid.guid()); diff --git a/test/domain/mocks/load_current_account_spy.dart b/test/domain/mocks/load_current_account_spy.dart index de7961bc..8c1efe52 100644 --- a/test/domain/mocks/load_current_account_spy.dart +++ b/test/domain/mocks/load_current_account_spy.dart @@ -1,5 +1,4 @@ -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/usecases/usecases.dart'; +import 'package:fordev/domain/domain.dart'; import 'package:mocktail/mocktail.dart'; diff --git a/test/domain/mocks/params_factory.dart b/test/domain/mocks/params_factory.dart index cc3469a0..f1cd84bb 100644 --- a/test/domain/mocks/params_factory.dart +++ b/test/domain/mocks/params_factory.dart @@ -1,5 +1,5 @@ import 'package:faker/faker.dart'; -import 'package:fordev/domain/usecases/usecases.dart'; +import 'package:fordev/domain/domain.dart'; class ParamsFactory { static AddAccountParams makeAddAccount() => AddAccountParams( diff --git a/test/domain/mocks/save_current_account_spy.dart b/test/domain/mocks/save_current_account_spy.dart index 07eaefd2..db887ec7 100644 --- a/test/domain/mocks/save_current_account_spy.dart +++ b/test/domain/mocks/save_current_account_spy.dart @@ -1,5 +1,4 @@ -import 'package:fordev/domain/helpers/helpers.dart'; -import 'package:fordev/domain/usecases/usecases.dart'; +import 'package:fordev/domain/domain.dart'; import 'package:mocktail/mocktail.dart'; diff --git a/test/domain/mocks/save_survey_result_spy.dart b/test/domain/mocks/save_survey_result_spy.dart index e812546a..1aea4684 100644 --- a/test/domain/mocks/save_survey_result_spy.dart +++ b/test/domain/mocks/save_survey_result_spy.dart @@ -1,6 +1,5 @@ -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; -import 'package:fordev/domain/usecases/usecases.dart'; +import 'package:fordev/domain/domain.dart'; + import 'package:mocktail/mocktail.dart'; class SaveSurveyResultSpy extends Mock implements SaveSurveyResult { diff --git a/test/infra/cache/local_storage_adapter_test.dart b/test/infra/cache/local_storage_adapter_test.dart index 2cf4db55..d4c4dfa0 100644 --- a/test/infra/cache/local_storage_adapter_test.dart +++ b/test/infra/cache/local_storage_adapter_test.dart @@ -1,5 +1,5 @@ import 'package:faker/faker.dart'; -import 'package:fordev/infra/cache/cache.dart'; +import 'package:fordev/infra/infra.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; @@ -32,7 +32,7 @@ void main() { test('Should throw if deleteItem throws', () async { localStorage.mockDeleteError(); - final future = sut.save(key: key, value: value); + final Future future = sut.save(key: key, value: value); expect(future, throwsA(const TypeMatcher())); }); @@ -40,7 +40,7 @@ void main() { test('Should throw if deleteItem throws', () async { localStorage.mockSaveError(); - final future = sut.save(key: key, value: value); + final Future future = sut.save(key: key, value: value); expect(future, throwsA(const TypeMatcher())); }); @@ -56,7 +56,7 @@ void main() { test('Should throw if deleteItem throws', () async { localStorage.mockDeleteError(); - final future = sut.delete(key); + final Future future = sut.delete(key); expect(future, throwsA(const TypeMatcher())); }); @@ -78,7 +78,7 @@ void main() { test('Should throw if getItem throws', () async { localStorage.mockFetchError(); - final future = sut.fetch(key); + final Future future = sut.fetch(key); expect(future, throwsA(const TypeMatcher())); }); diff --git a/test/infra/cache/secure_storage_adapter_test.dart b/test/infra/cache/secure_storage_adapter_test.dart index bf3389bf..264644e3 100644 --- a/test/infra/cache/secure_storage_adapter_test.dart +++ b/test/infra/cache/secure_storage_adapter_test.dart @@ -1,5 +1,5 @@ import 'package:faker/faker.dart'; -import 'package:fordev/infra/cache/cache.dart'; +import 'package:fordev/infra/infra.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; @@ -29,7 +29,7 @@ void main() { test('Should throw if save secure throws', () async { secureStorage.mockSaveError(); - final future = sut.save(key: key, value: value); + final Future future = sut.save(key: key, value: value); expect(future, throwsA(const TypeMatcher())); }); @@ -43,7 +43,7 @@ void main() { }); test('Should return correct value on success', () async { - final fetchedValue = await sut.fetch(key); + final String? fetchedValue = await sut.fetch(key); expect(fetchedValue, value); }); @@ -51,7 +51,7 @@ void main() { test('Should throw if fetch secure throws', () async { secureStorage.mockFetchError(); - final future = sut.fetch(key); + final Future future = sut.fetch(key); expect(future, throwsA(const TypeMatcher())); }); @@ -67,7 +67,7 @@ void main() { test('Should throw if delete throws', () async { secureStorage.mockDeleteError(); - final future = sut.delete(key); + final Future future = sut.delete(key); expect(future, throwsA(const TypeMatcher())); }); diff --git a/test/infra/http/http_adapter_test.dart b/test/infra/http/http_adapter_test.dart index d567d85f..1fd3b48f 100644 --- a/test/infra/http/http_adapter_test.dart +++ b/test/infra/http/http_adapter_test.dart @@ -1,6 +1,6 @@ import 'package:faker/faker.dart'; -import 'package:fordev/data/http/http.dart'; -import 'package:fordev/infra/http/http.dart'; +import 'package:fordev/data/data.dart'; +import 'package:fordev/infra/infra.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; @@ -23,7 +23,7 @@ void main() { group('shared', () { test('Should throw ServerError if invalid method is provided', () async { - final future = sut.request(url: url, method: 'invalid_method'); + final Future future = sut.request(url: url, method: 'invalid_method'); expect(future, throwsA(HttpError.serverError)); }); @@ -102,7 +102,7 @@ void main() { test('Should return BadRequestError if post returns 400', () async { client.mockPost(400, body: ''); - final future = sut.request(url: url, method: 'post'); + final Future future = sut.request(url: url, method: 'post'); expect(future, throwsA(HttpError.badRequest)); }); @@ -110,7 +110,7 @@ void main() { test('Should return BadRequestError if post returns 400', () async { client.mockPost(400); - final future = sut.request(url: url, method: 'post'); + final Future future = sut.request(url: url, method: 'post'); expect(future, throwsA(HttpError.badRequest)); }); @@ -118,7 +118,7 @@ void main() { test('Should return UnauthorizedError if post returns 401', () async { client.mockPost(401); - final future = sut.request(url: url, method: 'post'); + final Future future = sut.request(url: url, method: 'post'); expect(future, throwsA(HttpError.unauthorized)); }); @@ -126,7 +126,7 @@ void main() { test('Should return ForbiddenError if post returns 403', () async { client.mockPost(403); - final future = sut.request(url: url, method: 'post'); + final Future future = sut.request(url: url, method: 'post'); expect(future, throwsA(HttpError.forbidden)); }); @@ -134,7 +134,7 @@ void main() { test('Should return NotFoundError if post returns 404', () async { client.mockPost(404); - final future = sut.request(url: url, method: 'post'); + final Future future = sut.request(url: url, method: 'post'); expect(future, throwsA(HttpError.notFound)); }); @@ -142,7 +142,7 @@ void main() { test('Should return ServerError if post returns 500', () async { client.mockPost(500); - final future = sut.request(url: url, method: 'post'); + final Future future = sut.request(url: url, method: 'post'); expect(future, throwsA(HttpError.serverError)); }); @@ -150,7 +150,7 @@ void main() { test('Should return ServerError if post throws', () async { client.mockPostError(); - final future = sut.request(url: url, method: 'post'); + final Future future = sut.request(url: url, method: 'post'); expect(future, throwsA(HttpError.serverError)); }); @@ -219,7 +219,7 @@ void main() { test('Should return BadRequestError if get returns 400', () async { client.mockGet(400, body: ''); - final future = sut.request(url: url, method: 'get'); + final Future future = sut.request(url: url, method: 'get'); expect(future, throwsA(HttpError.badRequest)); }); @@ -227,7 +227,7 @@ void main() { test('Should return BadRequestError if get returns 400', () async { client.mockGet(400); - final future = sut.request(url: url, method: 'get'); + final Future future = sut.request(url: url, method: 'get'); expect(future, throwsA(HttpError.badRequest)); }); @@ -235,7 +235,7 @@ void main() { test('Should return UnauthorizedError if get returns 401', () async { client.mockGet(401); - final future = sut.request(url: url, method: 'get'); + final Future future = sut.request(url: url, method: 'get'); expect(future, throwsA(HttpError.unauthorized)); }); @@ -243,7 +243,7 @@ void main() { test('Should return ForbiddenError if get returns 403', () async { client.mockGet(403); - final future = sut.request(url: url, method: 'get'); + final Future future = sut.request(url: url, method: 'get'); expect(future, throwsA(HttpError.forbidden)); }); @@ -251,7 +251,7 @@ void main() { test('Should return NotFoundError if get returns 404', () async { client.mockGet(404); - final future = sut.request(url: url, method: 'get'); + final Future future = sut.request(url: url, method: 'get'); expect(future, throwsA(HttpError.notFound)); }); @@ -259,7 +259,7 @@ void main() { test('Should return ServerError if get returns 500', () async { client.mockGet(500); - final future = sut.request(url: url, method: 'get'); + final Future future = sut.request(url: url, method: 'get'); expect(future, throwsA(HttpError.serverError)); }); @@ -267,7 +267,7 @@ void main() { test('Should return ServerError if get throws', () async { client.mockGetError(); - final future = sut.request(url: url, method: 'get'); + final Future future = sut.request(url: url, method: 'get'); expect(future, throwsA(HttpError.serverError)); }); @@ -346,7 +346,7 @@ void main() { test('Should return BadRequestError if put returns 400', () async { client.mockPut(400, body: ''); - final future = sut.request(url: url, method: 'put'); + final Future future = sut.request(url: url, method: 'put'); expect(future, throwsA(HttpError.badRequest)); }); @@ -354,7 +354,7 @@ void main() { test('Should return BadRequestError if put returns 400', () async { client.mockPut(400); - final future = sut.request(url: url, method: 'put'); + final Future future = sut.request(url: url, method: 'put'); expect(future, throwsA(HttpError.badRequest)); }); @@ -362,7 +362,7 @@ void main() { test('Should return UnauthorizedError if put returns 401', () async { client.mockPut(401); - final future = sut.request(url: url, method: 'put'); + final Future future = sut.request(url: url, method: 'put'); expect(future, throwsA(HttpError.unauthorized)); }); @@ -370,7 +370,7 @@ void main() { test('Should return ForbiddenError if put returns 403', () async { client.mockPut(403); - final future = sut.request(url: url, method: 'put'); + final Future future = sut.request(url: url, method: 'put'); expect(future, throwsA(HttpError.forbidden)); }); @@ -378,7 +378,7 @@ void main() { test('Should return NotFoundError if put returns 404', () async { client.mockPut(404); - final future = sut.request(url: url, method: 'put'); + final Future future = sut.request(url: url, method: 'put'); expect(future, throwsA(HttpError.notFound)); }); @@ -386,7 +386,7 @@ void main() { test('Should return ServerError if put returns 500', () async { client.mockPut(500); - final future = sut.request(url: url, method: 'put'); + final Future future = sut.request(url: url, method: 'put'); expect(future, throwsA(HttpError.serverError)); }); @@ -394,7 +394,7 @@ void main() { test('Should return ServerError if put throws', () async { client.mockPutError(); - final future = sut.request(url: url, method: 'put'); + final Future future = sut.request(url: url, method: 'put'); expect(future, throwsA(HttpError.serverError)); }); diff --git a/test/infra/mocks/flutter_secure_storage_spy.dart b/test/infra/mocks/flutter_secure_storage_spy.dart index cbd6343d..c0581c2a 100644 --- a/test/infra/mocks/flutter_secure_storage_spy.dart +++ b/test/infra/mocks/flutter_secure_storage_spy.dart @@ -11,9 +11,8 @@ class FlutterSecureStorageSpy extends Mock implements FlutterSecureStorage { void mockDelete() => mockDeleteCall().thenAnswer((_) async => _); void mockDeleteError() => when(() => mockDeleteCall().thenThrow(Exception())); - When mockSaveCall() => when( - () => write(key: any(named: 'key'), value: any(named: 'value')), - ); + When mockSaveCall() => + when(() => write(key: any(named: 'key'), value: any(named: 'value'))); void mockSave() => mockSaveCall().thenAnswer((_) async => _); void mockSaveError() => when(() => mockSaveCall().thenThrow(Exception())); diff --git a/test/main/composites/remote_load_survey_result_with_local_fallback_test.dart b/test/main/composites/remote_load_survey_result_with_local_fallback_test.dart index 8d8158ce..1983e185 100644 --- a/test/main/composites/remote_load_survey_result_with_local_fallback_test.dart +++ b/test/main/composites/remote_load_survey_result_with_local_fallback_test.dart @@ -1,12 +1,11 @@ import 'package:faker/faker.dart'; -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; -import 'package:fordev/main/composites/composites.dart'; +import 'package:fordev/domain/domain.dart'; +import 'package:fordev/main/main.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; import '../../data/mocks/mocks.dart'; -import '../../domain/mocks/mocks.dart'; +import '../../domain/domain.dart'; void main() { late RemoteLoadSurveyResultWithLocalFallback sut; @@ -44,7 +43,8 @@ void main() { }); test('Should return remote surveyResult', () async { - final response = await sut.loadBySurvey(surveyId: surveyId); + final SurveyResultEntity response = + await sut.loadBySurvey(surveyId: surveyId); expect(response, remoteSurveyResult); }); @@ -53,7 +53,8 @@ void main() { () async { remote.mockLoadError(DomainError.accessDenied); - final future = sut.loadBySurvey(surveyId: surveyId); + final Future future = + sut.loadBySurvey(surveyId: surveyId); expect(future, throwsA(DomainError.accessDenied)); }); @@ -70,7 +71,8 @@ void main() { test('Should return local surveyResult', () async { remote.mockLoadError(DomainError.unexpected); - final response = await sut.loadBySurvey(surveyId: surveyId); + final SurveyResultEntity response = + await sut.loadBySurvey(surveyId: surveyId); expect(response, localSurveyResult); }); @@ -80,7 +82,8 @@ void main() { remote.mockLoadError(DomainError.unexpected); local.mockLoadError(); - final future = sut.loadBySurvey(surveyId: surveyId); + final Future future = + sut.loadBySurvey(surveyId: surveyId); expect(future, throwsA(DomainError.unexpected)); }); diff --git a/test/main/composites/remote_load_surveys_with_local_fallback_test.dart b/test/main/composites/remote_load_surveys_with_local_fallback_test.dart index c7330954..7b287378 100644 --- a/test/main/composites/remote_load_surveys_with_local_fallback_test.dart +++ b/test/main/composites/remote_load_surveys_with_local_fallback_test.dart @@ -1,6 +1,5 @@ -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; -import 'package:fordev/main/composites/composites.dart'; +import 'package:fordev/domain/domain.dart'; +import 'package:fordev/main/main.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; @@ -37,7 +36,7 @@ void main() { }); test('Should return remote surveys', () async { - final surveys = await sut.load(); + final List surveys = await sut.load(); expect(surveys, remoteSurveys); }); @@ -45,7 +44,7 @@ void main() { test('Should rethrow if remote load throws AccessDeniedError', () async { remote.mockLoadError(DomainError.accessDenied); - final future = sut.load(); + final Future> future = sut.load(); expect(future, throwsA(DomainError.accessDenied)); }); @@ -62,7 +61,7 @@ void main() { test('Should return local surveys', () async { remote.mockLoadError(DomainError.unexpected); - final surveys = await sut.load(); + final List surveys = await sut.load(); expect(surveys, localSurveys); }); @@ -71,7 +70,7 @@ void main() { remote.mockLoadError(DomainError.unexpected); local.mockLoadError(); - final future = sut.load(); + final Future> future = sut.load(); expect(future, throwsA(DomainError.unexpected)); }); diff --git a/test/main/composites/validation_composite_test.dart b/test/main/composites/validation_composite_test.dart index 74460565..805f7dce 100644 --- a/test/main/composites/validation_composite_test.dart +++ b/test/main/composites/validation_composite_test.dart @@ -1,5 +1,5 @@ -import 'package:fordev/main/composites/composites.dart'; -import 'package:fordev/presentation/protocols/protocols.dart'; +import 'package:fordev/main/main.dart'; +import 'package:fordev/presentation/presentation.dart'; import 'package:test/test.dart'; import '../../validation/mocks/mocks.dart'; @@ -19,7 +19,7 @@ void main() { }); test('Should return null if all validations returns null or empty', () { - final error = + final ValidationError? error = sut.validate(field: 'any_field', input: {'any_field': 'any_value'}); expect(error, null); @@ -30,7 +30,7 @@ void main() { validation2.mockValidationError(ValidationError.requiredField); validation3.mockValidationError(ValidationError.invalidField); - final error = + final ValidationError? error = sut.validate(field: 'any_field', input: {'any_field': 'any_value'}); expect(error, ValidationError.requiredField); diff --git a/test/main/decorators/authorize_http_client_decorator_test.dart b/test/main/decorators/authorize_http_client_decorator_test.dart index 15061ce1..3389d1a9 100644 --- a/test/main/decorators/authorize_http_client_decorator_test.dart +++ b/test/main/decorators/authorize_http_client_decorator_test.dart @@ -1,6 +1,6 @@ import 'package:faker/faker.dart'; -import 'package:fordev/data/http/http.dart'; -import 'package:fordev/main/decorators/decorators.dart'; +import 'package:fordev/data/data.dart'; +import 'package:fordev/main/main.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; @@ -76,7 +76,7 @@ void main() { () async { secureCacheStorage.mockFetchError(); - final future = sut.request(url: url, method: method, body: body); + final Future future = sut.request(url: url, method: method, body: body); expect(future, throwsA(HttpError.forbidden)); verify(() => secureCacheStorage.delete('token')).called(1); @@ -85,7 +85,7 @@ void main() { test('Should rethrow if decoratee throws', () async { httpClient.mockRequestError(HttpError.badRequest); - final future = sut.request(url: url, method: method, body: body); + final Future future = sut.request(url: url, method: method, body: body); expect(future, throwsA(HttpError.badRequest)); }); @@ -93,7 +93,7 @@ void main() { test('Should delete cache if request throws ForbiddenError', () async { httpClient.mockRequestError(HttpError.forbidden); - final future = sut.request(url: url, method: method, body: body); + final Future future = sut.request(url: url, method: method, body: body); await untilCalled(() => secureCacheStorage.delete('token')); expect(future, throwsA(HttpError.forbidden)); diff --git a/test/main/factories/pages/login/login_validation_factory_test.dart b/test/main/factories/pages/login/login_validation_factory_test.dart index 11887096..b1fffedd 100644 --- a/test/main/factories/pages/login/login_validation_factory_test.dart +++ b/test/main/factories/pages/login/login_validation_factory_test.dart @@ -1,10 +1,10 @@ -import 'package:fordev/main/factories/factories.dart'; -import 'package:fordev/validation/validators/validators.dart'; +import 'package:fordev/main/main.dart'; +import 'package:fordev/validation/validation.dart'; import 'package:test/test.dart'; void main() { test('Should return the correct validations', () { - final validations = makeLoginValidations(); + final List validations = makeLoginValidations(); expect(validations, [ const RequiredFieldValidation('email'), diff --git a/test/main/factories/pages/login/signup_validation_factory_test.dart b/test/main/factories/pages/login/signup_validation_factory_test.dart index 0246c1dd..dcda9089 100644 --- a/test/main/factories/pages/login/signup_validation_factory_test.dart +++ b/test/main/factories/pages/login/signup_validation_factory_test.dart @@ -1,10 +1,10 @@ -import 'package:fordev/main/factories/factories.dart'; -import 'package:fordev/validation/validators/validators.dart'; +import 'package:fordev/main/main.dart'; +import 'package:fordev/validation/validation.dart'; import 'package:test/test.dart'; void main() { test('Should return the correct validations', () { - final validations = makeSignUpValidations(); + final List validations = makeSignUpValidations(); expect(validations, [ const RequiredFieldValidation('name'), diff --git a/test/presentation/mocks/validation_spy.dart b/test/presentation/mocks/validation_spy.dart index 154e139c..75109d25 100644 --- a/test/presentation/mocks/validation_spy.dart +++ b/test/presentation/mocks/validation_spy.dart @@ -1,4 +1,4 @@ -import 'package:fordev/presentation/protocols/protocols.dart'; +import 'package:fordev/presentation/presentation.dart'; import 'package:mocktail/mocktail.dart'; diff --git a/test/presentation/presenters/getx_login_presenter_test.dart b/test/presentation/presenters/getx_login_presenter_test.dart index b8f8e0d7..fc1ae018 100644 --- a/test/presentation/presenters/getx_login_presenter_test.dart +++ b/test/presentation/presenters/getx_login_presenter_test.dart @@ -1,10 +1,7 @@ import 'package:faker/faker.dart'; -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; -import 'package:fordev/domain/usecases/usecases.dart'; -import 'package:fordev/presentation/presenters/presenters.dart'; -import 'package:fordev/presentation/protocols/protocols.dart'; -import 'package:fordev/ui/helpers/helpers.dart'; +import 'package:fordev/domain/domain.dart'; +import 'package:fordev/presentation/presentation.dart'; +import 'package:fordev/ui/ui.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; @@ -41,7 +38,7 @@ void main() { }); test('Should call Validation with correct email', () { - final formData = {'email': email, 'password': null}; + final Map formData = {'email': email, 'password': null}; sut.validateEmail(email); @@ -52,10 +49,11 @@ void main() { test('Should emit invalidFieldError if email is invalid', () { validation.mockValidationError(value: ValidationError.invalidField); - sut.emailErrorStream - .listen(expectAsync1((error) => expect(error, UIError.invalidField))); + sut.emailErrorStream.listen( + expectAsync1((UIError? error) => expect(error, UIError.invalidField)), + ); sut.isFormValidStream - .listen(expectAsync1((isValid) => expect(isValid, false))); + .listen(expectAsync1((bool isValid) => expect(isValid, false))); sut.validateEmail(email); sut.validateEmail(email); @@ -64,26 +62,28 @@ void main() { test('Should emit requiredFieldError if email is empty', () { validation.mockValidationError(value: ValidationError.requiredField); - sut.emailErrorStream - .listen(expectAsync1((error) => expect(error, UIError.requiredField))); + sut.emailErrorStream.listen( + expectAsync1((UIError? error) => expect(error, UIError.requiredField)), + ); sut.isFormValidStream - .listen(expectAsync1((isValid) => expect(isValid, false))); + .listen(expectAsync1((bool isValid) => expect(isValid, false))); sut.validateEmail(email); sut.validateEmail(email); }); test('Should emit null if validation succeeds', () { - sut.emailErrorStream.listen(expectAsync1((error) => expect(error, null))); + sut.emailErrorStream + .listen(expectAsync1((UIError? error) => expect(error, null))); sut.isFormValidStream - .listen(expectAsync1((isValid) => expect(isValid, false))); + .listen(expectAsync1((bool isValid) => expect(isValid, false))); sut.validateEmail(email); sut.validateEmail(email); }); test('Should call Validation with correct password', () { - final formData = {'email': null, 'password': password}; + final Map formData = {'email': null, 'password': password}; sut.validatePassword(password); @@ -94,10 +94,11 @@ void main() { test('Should emit requiredFieldError if password is empty', () { validation.mockValidationError(value: ValidationError.requiredField); - sut.passwordErrorStream - .listen(expectAsync1((error) => expect(error, UIError.requiredField))); + sut.passwordErrorStream.listen( + expectAsync1((UIError? error) => expect(error, UIError.requiredField)), + ); sut.isFormValidStream - .listen(expectAsync1((isValid) => expect(isValid, false))); + .listen(expectAsync1((bool isValid) => expect(isValid, false))); sut.validatePassword(password); sut.validatePassword(password); @@ -105,9 +106,9 @@ void main() { test('Should emit null if validation succeeds', () { sut.passwordErrorStream - .listen(expectAsync1((error) => expect(error, null))); + .listen(expectAsync1((UIError? error) => expect(error, null))); sut.isFormValidStream - .listen(expectAsync1((isValid) => expect(isValid, false))); + .listen(expectAsync1((bool isValid) => expect(isValid, false))); sut.validatePassword(password); sut.validatePassword(password); @@ -120,7 +121,7 @@ void main() { ); sut.isFormValidStream - .listen(expectAsync1((isValid) => expect(isValid, false))); + .listen(expectAsync1((bool isValid) => expect(isValid, false))); sut.validateEmail(email); sut.validatePassword(password); @@ -161,7 +162,10 @@ void main() { sut.validatePassword(password); expectLater(sut.isLoadingStream, emitsInOrder([true, false])); - expectLater(sut.mainErrorStream, emitsInOrder([null, UIError.unexpected])); + expectLater( + sut.mainErrorStream, + emitsInOrder([null, UIError.unexpected]), + ); await sut.auth(); }); @@ -181,7 +185,7 @@ void main() { sut.validatePassword(password); sut.navigateToStream - .listen(expectAsync1((page) => expect(page, '/surveys'))); + .listen(expectAsync1((String? page) => expect(page, '/surveys'))); await sut.auth(); }); @@ -206,14 +210,17 @@ void main() { sut.validatePassword(password); expectLater(sut.isLoadingStream, emitsInOrder([true, false])); - expectLater(sut.mainErrorStream, emitsInOrder([null, UIError.unexpected])); + expectLater( + sut.mainErrorStream, + emitsInOrder([null, UIError.unexpected]), + ); await sut.auth(); }); test('Should go to SignUpPage on link click', () async { sut.navigateToStream - .listen(expectAsync1((page) => expect(page, '/signup'))); + .listen(expectAsync1((String? page) => expect(page, '/signup'))); sut.goToSignUp(); }); diff --git a/test/presentation/presenters/getx_signup_presenter_test.dart b/test/presentation/presenters/getx_signup_presenter_test.dart index f26c0710..8c020216 100644 --- a/test/presentation/presenters/getx_signup_presenter_test.dart +++ b/test/presentation/presenters/getx_signup_presenter_test.dart @@ -1,10 +1,7 @@ import 'package:faker/faker.dart'; -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; -import 'package:fordev/domain/usecases/usecases.dart'; -import 'package:fordev/presentation/presenters/presenters.dart'; -import 'package:fordev/presentation/protocols/protocols.dart'; -import 'package:fordev/ui/helpers/helpers.dart'; +import 'package:fordev/domain/domain.dart'; +import 'package:fordev/presentation/presentation.dart'; +import 'package:fordev/ui/ui.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; @@ -45,7 +42,7 @@ void main() { }); test('Should call Validation with correct email', () { - final formData = { + final Map formData = { 'name': null, 'email': email, 'password': null, @@ -61,10 +58,11 @@ void main() { test('Should emit invalidFieldError if email is invalid', () { validation.mockValidationError(value: ValidationError.invalidField); - sut.emailErrorStream - .listen(expectAsync1((error) => expect(error, UIError.invalidField))); + sut.emailErrorStream.listen( + expectAsync1((UIError? error) => expect(error, UIError.invalidField)), + ); sut.isFormValidStream - .listen(expectAsync1((isValid) => expect(isValid, false))); + .listen(expectAsync1((bool isValid) => expect(isValid, false))); sut.validateEmail(email); sut.validateEmail(email); @@ -73,26 +71,28 @@ void main() { test('Should emit requiredFieldError if email is empty', () { validation.mockValidationError(value: ValidationError.requiredField); - sut.emailErrorStream - .listen(expectAsync1((error) => expect(error, UIError.requiredField))); + sut.emailErrorStream.listen( + expectAsync1((UIError? error) => expect(error, UIError.requiredField)), + ); sut.isFormValidStream - .listen(expectAsync1((isValid) => expect(isValid, false))); + .listen(expectAsync1((bool isValid) => expect(isValid, false))); sut.validateEmail(email); sut.validateEmail(email); }); test('Should emit null if validation succeeds', () { - sut.emailErrorStream.listen(expectAsync1((error) => expect(error, null))); + sut.emailErrorStream + .listen(expectAsync1((UIError? error) => expect(error, null))); sut.isFormValidStream - .listen(expectAsync1((isValid) => expect(isValid, false))); + .listen(expectAsync1((bool isValid) => expect(isValid, false))); sut.validateEmail(email); sut.validateEmail(email); }); test('Should call Validation with correct name', () { - final formData = { + final Map formData = { 'name': name, 'email': null, 'password': null, @@ -107,10 +107,11 @@ void main() { test('Should emit invalidFieldError if name is invalid', () { validation.mockValidationError(value: ValidationError.invalidField); - sut.nameErrorStream - .listen(expectAsync1((error) => expect(error, UIError.invalidField))); + sut.nameErrorStream.listen( + expectAsync1((UIError? error) => expect(error, UIError.invalidField)), + ); sut.isFormValidStream - .listen(expectAsync1((isValid) => expect(isValid, false))); + .listen(expectAsync1((bool isValid) => expect(isValid, false))); sut.validateName(name); sut.validateName(name); @@ -119,26 +120,28 @@ void main() { test('Should emit requiredFieldError if name is empty', () { validation.mockValidationError(value: ValidationError.requiredField); - sut.nameErrorStream - .listen(expectAsync1((error) => expect(error, UIError.requiredField))); + sut.nameErrorStream.listen( + expectAsync1((UIError? error) => expect(error, UIError.requiredField)), + ); sut.isFormValidStream - .listen(expectAsync1((isValid) => expect(isValid, false))); + .listen(expectAsync1((bool isValid) => expect(isValid, false))); sut.validateName(name); sut.validateName(name); }); test('Should emit null if validation succeeds', () { - sut.nameErrorStream.listen(expectAsync1((error) => expect(error, null))); + sut.nameErrorStream + .listen(expectAsync1((UIError? error) => expect(error, null))); sut.isFormValidStream - .listen(expectAsync1((isValid) => expect(isValid, false))); + .listen(expectAsync1((bool isValid) => expect(isValid, false))); sut.validateName(name); sut.validateName(name); }); test('Should call Validation with correct password', () { - final formData = { + final Map formData = { 'name': null, 'email': null, 'password': password, @@ -154,10 +157,11 @@ void main() { test('Should emit invalidFieldError if password is invalid', () { validation.mockValidationError(value: ValidationError.invalidField); - sut.passwordErrorStream - .listen(expectAsync1((error) => expect(error, UIError.invalidField))); + sut.passwordErrorStream.listen( + expectAsync1((UIError? error) => expect(error, UIError.invalidField)), + ); sut.isFormValidStream - .listen(expectAsync1((isValid) => expect(isValid, false))); + .listen(expectAsync1((bool isValid) => expect(isValid, false))); sut.validatePassword(password); sut.validatePassword(password); @@ -166,10 +170,11 @@ void main() { test('Should emit requiredFieldError if password is empty', () { validation.mockValidationError(value: ValidationError.requiredField); - sut.passwordErrorStream - .listen(expectAsync1((error) => expect(error, UIError.requiredField))); + sut.passwordErrorStream.listen( + expectAsync1((UIError? error) => expect(error, UIError.requiredField)), + ); sut.isFormValidStream - .listen(expectAsync1((isValid) => expect(isValid, false))); + .listen(expectAsync1((bool isValid) => expect(isValid, false))); sut.validatePassword(password); sut.validatePassword(password); @@ -177,16 +182,16 @@ void main() { test('Should emit null if validation succeeds', () { sut.passwordErrorStream - .listen(expectAsync1((error) => expect(error, null))); + .listen(expectAsync1((UIError? error) => expect(error, null))); sut.isFormValidStream - .listen(expectAsync1((isValid) => expect(isValid, false))); + .listen(expectAsync1((bool isValid) => expect(isValid, false))); sut.validatePassword(password); sut.validatePassword(password); }); test('Should call Validation with correct passwordConfirmation', () { - final formData = { + final Map formData = { 'name': null, 'email': null, 'password': null, @@ -203,10 +208,11 @@ void main() { test('Should emit invalidFieldError if passwordConfirmation is invalid', () { validation.mockValidationError(value: ValidationError.invalidField); - sut.passwordConfirmationErrorStream - .listen(expectAsync1((error) => expect(error, UIError.invalidField))); + sut.passwordConfirmationErrorStream.listen( + expectAsync1((UIError? error) => expect(error, UIError.invalidField)), + ); sut.isFormValidStream - .listen(expectAsync1((isValid) => expect(isValid, false))); + .listen(expectAsync1((bool isValid) => expect(isValid, false))); sut.validatePasswordConfirmation(passwordConfirmation); sut.validatePasswordConfirmation(passwordConfirmation); @@ -215,10 +221,11 @@ void main() { test('Should emit requiredFieldError if passwordConfirmation is empty', () { validation.mockValidationError(value: ValidationError.requiredField); - sut.passwordConfirmationErrorStream - .listen(expectAsync1((error) => expect(error, UIError.requiredField))); + sut.passwordConfirmationErrorStream.listen( + expectAsync1((UIError? error) => expect(error, UIError.requiredField)), + ); sut.isFormValidStream - .listen(expectAsync1((isValid) => expect(isValid, false))); + .listen(expectAsync1((bool isValid) => expect(isValid, false))); sut.validatePasswordConfirmation(passwordConfirmation); sut.validatePasswordConfirmation(passwordConfirmation); @@ -226,26 +233,28 @@ void main() { test('Should emit null if validation succeeds', () { sut.passwordConfirmationErrorStream - .listen(expectAsync1((error) => expect(error, null))); + .listen(expectAsync1((UIError? error) => expect(error, null))); sut.isFormValidStream - .listen(expectAsync1((isValid) => expect(isValid, false))); + .listen(expectAsync1((bool isValid) => expect(isValid, false))); sut.validatePasswordConfirmation(passwordConfirmation); sut.validatePasswordConfirmation(passwordConfirmation); }); - test('Should enable form button if all fields are valid', () async { - expectLater(sut.isFormValidStream, emitsInOrder([false, true])); - - sut.validateName(name); - await Future.delayed(Duration.zero); - sut.validateEmail(email); - await Future.delayed(Duration.zero); - sut.validatePassword(password); - await Future.delayed(Duration.zero); - sut.validatePasswordConfirmation(passwordConfirmation); - await Future.delayed(Duration.zero); - }); + test( + 'Should enable form button if all fields are valid', + () async { + expectLater(sut.isFormValidStream, emitsInOrder([false, true])); + sut.validateName(name); + await Future.delayed(Duration.zero); + sut.validateEmail(email); + await Future.delayed(Duration.zero); + sut.validatePassword(password); + await Future.delayed(Duration.zero); + sut.validatePasswordConfirmation(passwordConfirmation); + await Future.delayed(Duration.zero); + }, + ); test('Should call AddAccount with correct values', () async { sut.validateName(name); @@ -285,7 +294,10 @@ void main() { sut.validatePassword(password); sut.validatePasswordConfirmation(passwordConfirmation); - expectLater(sut.mainErrorStream, emitsInOrder([null, UIError.unexpected])); + expectLater( + sut.mainErrorStream, + emitsInOrder([null, UIError.unexpected]), + ); expectLater(sut.isLoadingStream, emitsInOrder([true, false])); await sut.signUp(); @@ -311,7 +323,10 @@ void main() { sut.validatePasswordConfirmation(passwordConfirmation); expectLater(sut.isLoadingStream, emitsInOrder([true, false])); - expectLater(sut.mainErrorStream, emitsInOrder([null, UIError.emailInUse])); + expectLater( + sut.mainErrorStream, + emitsInOrder([null, UIError.emailInUse]), + ); await sut.signUp(); }); @@ -324,7 +339,10 @@ void main() { sut.validatePasswordConfirmation(passwordConfirmation); expectLater(sut.isLoadingStream, emitsInOrder([true, false])); - expectLater(sut.mainErrorStream, emitsInOrder([null, UIError.unexpected])); + expectLater( + sut.mainErrorStream, + emitsInOrder([null, UIError.unexpected]), + ); await sut.signUp(); }); @@ -336,13 +354,14 @@ void main() { sut.validatePasswordConfirmation(passwordConfirmation); sut.navigateToStream - .listen(expectAsync1((page) => expect(page, '/surveys'))); + .listen(expectAsync1((String? page) => expect(page, '/surveys'))); await sut.signUp(); }); test('Should go to LoginPage on link click', () async { - sut.navigateToStream.listen(expectAsync1((page) => expect(page, '/login'))); + sut.navigateToStream + .listen(expectAsync1((String? page) => expect(page, '/login'))); sut.goToLogin(); }); diff --git a/test/presentation/presenters/getx_splash_presenter_test.dart b/test/presentation/presenters/getx_splash_presenter_test.dart index 9dbf10ff..8e1d202e 100644 --- a/test/presentation/presenters/getx_splash_presenter_test.dart +++ b/test/presentation/presenters/getx_splash_presenter_test.dart @@ -1,4 +1,4 @@ -import 'package:fordev/presentation/presenters/presenters.dart'; +import 'package:fordev/presentation/presentation.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; @@ -26,7 +26,7 @@ void main() { test('Should go to surveys page on success', () async { sut.navigateToStream - .listen(expectAsync1((page) => expect(page, '/surveys'))); + .listen(expectAsync1((String? page) => expect(page, '/surveys'))); await sut.checkAccount(durationInSeconds: 0); }); @@ -34,7 +34,8 @@ void main() { test('Should go to login page on error', () async { loadCurrentAccount.mockLoadError(); - sut.navigateToStream.listen(expectAsync1((page) => expect(page, '/login'))); + sut.navigateToStream + .listen(expectAsync1((String? page) => expect(page, '/login'))); await sut.checkAccount(durationInSeconds: 0); }); diff --git a/test/presentation/presenters/getx_survey_result_presenter_test.dart b/test/presentation/presenters/getx_survey_result_presenter_test.dart index 98d43483..204ed787 100644 --- a/test/presentation/presenters/getx_survey_result_presenter_test.dart +++ b/test/presentation/presenters/getx_survey_result_presenter_test.dart @@ -1,9 +1,7 @@ import 'package:faker/faker.dart'; -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; -import 'package:fordev/presentation/presenters/presenters.dart'; -import 'package:fordev/ui/helpers/helpers.dart'; -import 'package:fordev/ui/pages/pages.dart'; +import 'package:fordev/domain/domain.dart'; +import 'package:fordev/presentation/presentation.dart'; +import 'package:fordev/ui/ui.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; @@ -64,7 +62,10 @@ void main() { test('Should emit correct events on success', () async { expectLater(sut.isLoadingStream, emitsInOrder([true, false])); sut.surveyResultStream.listen( - expectAsync1((result) => expect(result, mapToViewModel(loadResult))), + expectAsync1( + (SurveyResultViewModel? result) => + expect(result, mapToViewModel(loadResult)), + ), ); await sut.loadData(); @@ -77,7 +78,7 @@ void main() { sut.surveyResultStream.listen( null, onError: expectAsync1( - (error) => expect(error, UIError.unexpected.description), + (Object? error) => expect(error, UIError.unexpected.description), ), ); @@ -122,7 +123,7 @@ void main() { sut.surveyResultStream.listen( null, onError: expectAsync1( - (error) => expect(error, UIError.unexpected.description), + (Object? error) => expect(error, UIError.unexpected.description), ), ); diff --git a/test/presentation/presenters/getx_surveys_presenter_test.dart b/test/presentation/presenters/getx_surveys_presenter_test.dart index f92c84fa..4c39b872 100644 --- a/test/presentation/presenters/getx_surveys_presenter_test.dart +++ b/test/presentation/presenters/getx_surveys_presenter_test.dart @@ -1,8 +1,6 @@ -import 'package:fordev/domain/entities/entities.dart'; -import 'package:fordev/domain/helpers/helpers.dart'; -import 'package:fordev/presentation/presenters/presenters.dart'; -import 'package:fordev/ui/helpers/helpers.dart'; -import 'package:fordev/ui/pages/pages.dart'; +import 'package:fordev/domain/domain.dart'; +import 'package:fordev/presentation/presentation.dart'; +import 'package:fordev/ui/ui.dart'; import 'package:mocktail/mocktail.dart'; import 'package:test/test.dart'; @@ -31,7 +29,7 @@ void main() { expectLater(sut.isLoadingStream, emitsInOrder([true, false])); sut.surveysStream.listen( expectAsync1( - (surveys) => expect(surveys, [ + (List surveys) => expect(surveys, [ SurveyViewModel( id: surveys[0].id, question: surveys[0].question, @@ -58,7 +56,7 @@ void main() { sut.surveysStream.listen( null, onError: expectAsync1( - (error) => expect(error, UIError.unexpected.description), + (Object? error) => expect(error, UIError.unexpected.description), ), ); diff --git a/test/ui/helpers/helpers.dart b/test/ui/helpers/helpers.dart index 7ae00bcc..8cdadf4e 100644 --- a/test/ui/helpers/helpers.dart +++ b/test/ui/helpers/helpers.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; Widget makePage({required String path, required Widget Function() page}) { - final getPages = [ + final List getPages = [ GetPage(name: path, page: page), GetPage( name: '/any_route', diff --git a/test/ui/mocks/login_presenter_spy.dart b/test/ui/mocks/login_presenter_spy.dart index 3b3df11d..579c42db 100644 --- a/test/ui/mocks/login_presenter_spy.dart +++ b/test/ui/mocks/login_presenter_spy.dart @@ -1,16 +1,19 @@ import 'dart:async'; -import 'package:fordev/ui/helpers/helpers.dart'; -import 'package:fordev/ui/pages/pages.dart'; +import 'package:fordev/ui/ui.dart'; import 'package:mocktail/mocktail.dart'; class LoginPresenterSpy extends Mock implements LoginPresenter { - final emailErrorController = StreamController(); - final passwordErrorController = StreamController(); - final mainErrorController = StreamController(); - final navigateToController = StreamController(); - final isFormValidController = StreamController(); - final isLoadingController = StreamController(); + final StreamController emailErrorController = + StreamController(); + final StreamController passwordErrorController = + StreamController(); + final StreamController mainErrorController = + StreamController(); + final StreamController navigateToController = + StreamController(); + final StreamController isFormValidController = StreamController(); + final StreamController isLoadingController = StreamController(); LoginPresenterSpy() { when(() => auth()).thenAnswer((_) async => _); diff --git a/test/ui/mocks/signup_presenter_spy.dart b/test/ui/mocks/signup_presenter_spy.dart index 383cdf8e..04b983f7 100644 --- a/test/ui/mocks/signup_presenter_spy.dart +++ b/test/ui/mocks/signup_presenter_spy.dart @@ -1,18 +1,23 @@ import 'dart:async'; -import 'package:fordev/ui/helpers/helpers.dart'; -import 'package:fordev/ui/pages/pages.dart'; +import 'package:fordev/ui/ui.dart'; import 'package:mocktail/mocktail.dart'; class SignUpPresenterSpy extends Mock implements SignUpPresenter { - final nameErrorController = StreamController(); - final emailErrorController = StreamController(); - final passwordErrorController = StreamController(); - final passwordConfirmationErrorController = StreamController(); - final mainErrorController = StreamController(); - final navigateToController = StreamController(); - final isFormValidController = StreamController(); - final isLoadingController = StreamController(); + final StreamController nameErrorController = + StreamController(); + final StreamController emailErrorController = + StreamController(); + final StreamController passwordErrorController = + StreamController(); + final StreamController passwordConfirmationErrorController = + StreamController(); + final StreamController mainErrorController = + StreamController(); + final StreamController navigateToController = + StreamController(); + final StreamController isFormValidController = StreamController(); + final StreamController isLoadingController = StreamController(); SignUpPresenterSpy() { when(() => signUp()).thenAnswer((_) async => _); diff --git a/test/ui/mocks/splash_presenter_spy.dart b/test/ui/mocks/splash_presenter_spy.dart index b05ffa9f..22c5925e 100644 --- a/test/ui/mocks/splash_presenter_spy.dart +++ b/test/ui/mocks/splash_presenter_spy.dart @@ -1,10 +1,11 @@ import 'dart:async'; -import 'package:fordev/ui/pages/pages.dart'; +import 'package:fordev/ui/ui.dart'; import 'package:mocktail/mocktail.dart'; class SplashPresenterSpy extends Mock implements SplashPresenter { - final navigateToController = StreamController(); + final StreamController navigateToController = + StreamController(); SplashPresenterSpy() { when(() => checkAccount(durationInSeconds: any(named: 'durationInSeconds'))) diff --git a/test/ui/mocks/survey_result_presenter_spy.dart b/test/ui/mocks/survey_result_presenter_spy.dart index c498a5f2..1c65353a 100644 --- a/test/ui/mocks/survey_result_presenter_spy.dart +++ b/test/ui/mocks/survey_result_presenter_spy.dart @@ -1,12 +1,14 @@ import 'dart:async'; -import 'package:fordev/ui/pages/pages.dart'; +import 'package:fordev/ui/ui.dart'; import 'package:mocktail/mocktail.dart'; class SurveyResultPresenterSpy extends Mock implements SurveyResultPresenter { - final surveyResultController = StreamController(); - final isSessionExpiredController = StreamController(); - final isLoadingController = StreamController(); + final StreamController surveyResultController = + StreamController(); + final StreamController isSessionExpiredController = + StreamController(); + final StreamController isLoadingController = StreamController(); SurveyResultPresenterSpy() { when(() => loadData()).thenAnswer((_) async => _); diff --git a/test/ui/mocks/surveys_presenter_spy.dart b/test/ui/mocks/surveys_presenter_spy.dart index 0e7f3ee0..cbaffbf1 100644 --- a/test/ui/mocks/surveys_presenter_spy.dart +++ b/test/ui/mocks/surveys_presenter_spy.dart @@ -1,13 +1,16 @@ import 'dart:async'; -import 'package:fordev/ui/pages/pages.dart'; +import 'package:fordev/ui/ui.dart'; import 'package:mocktail/mocktail.dart'; class SurveysPresenterSpy extends Mock implements SurveysPresenter { - final surveysController = StreamController>(); - final isSessionExpiredController = StreamController(); - final isLoadingController = StreamController(); - final navigateToController = StreamController(); + final StreamController> surveysController = + StreamController>(); + final StreamController isSessionExpiredController = + StreamController(); + final StreamController isLoadingController = StreamController(); + final StreamController navigateToController = + StreamController(); SurveysPresenterSpy() { when(() => loadData()).thenAnswer((_) async => _); diff --git a/test/ui/mocks/viewmodel_factory.dart b/test/ui/mocks/viewmodel_factory.dart index afaff237..773c82b4 100644 --- a/test/ui/mocks/viewmodel_factory.dart +++ b/test/ui/mocks/viewmodel_factory.dart @@ -1,4 +1,4 @@ -import 'package:fordev/ui/pages/pages.dart'; +import 'package:fordev/ui/ui.dart'; class ViewModelFactory { static SurveyResultViewModel makeSurveyResult() => diff --git a/test/ui/pages/login_page_test.dart b/test/ui/pages/login_page_test.dart index a6e72b80..9c8c0118 100644 --- a/test/ui/pages/login_page_test.dart +++ b/test/ui/pages/login_page_test.dart @@ -1,8 +1,7 @@ import 'package:faker/faker.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:fordev/ui/helpers/helpers.dart'; -import 'package:fordev/ui/pages/pages.dart'; +import 'package:fordev/ui/ui.dart'; import 'package:mocktail/mocktail.dart'; import '../helpers/helpers.dart'; @@ -25,11 +24,11 @@ void main() { (WidgetTester tester) async { await loadPage(tester); - final email = faker.internet.email(); + final String email = faker.internet.email(); await tester.enterText(find.bySemanticsLabel('Email'), email); verify(() => presenter.validateEmail(email)); - final password = faker.internet.password(); + final String password = faker.internet.password(); await tester.enterText(find.bySemanticsLabel('Senha'), password); verify(() => presenter.validatePassword(password)); }); @@ -103,7 +102,8 @@ void main() { presenter.emitFormValid(); await tester.pump(); - final button = tester.widget(find.byType(ElevatedButton)); + final ElevatedButton button = + tester.widget(find.byType(ElevatedButton)); expect(button.onPressed, isNotNull); }); @@ -114,7 +114,8 @@ void main() { presenter.emitFormError(); await tester.pump(); - final button = tester.widget(find.byType(ElevatedButton)); + final ElevatedButton button = + tester.widget(find.byType(ElevatedButton)); expect(button.onPressed, null); }); @@ -124,7 +125,7 @@ void main() { presenter.emitFormValid(); await tester.pump(); - final button = find.byType(ElevatedButton); + final Finder button = find.byType(ElevatedButton); await tester.ensureVisible(button); await tester.tap(button); await tester.pump(); @@ -193,7 +194,7 @@ void main() { (WidgetTester tester) async { await loadPage(tester); - final button = find.text('Criar conta'); + final Finder button = find.text('Criar conta'); await tester.ensureVisible(button); await tester.tap(button); await tester.pump(); diff --git a/test/ui/pages/signup_page_test.dart b/test/ui/pages/signup_page_test.dart index b93b3140..ca476af5 100644 --- a/test/ui/pages/signup_page_test.dart +++ b/test/ui/pages/signup_page_test.dart @@ -1,8 +1,7 @@ import 'package:faker/faker.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:fordev/ui/helpers/helpers.dart'; -import 'package:fordev/ui/pages/pages.dart'; +import 'package:fordev/ui/ui.dart'; import 'package:mocktail/mocktail.dart'; import '../helpers/helpers.dart'; @@ -26,15 +25,15 @@ void main() { (WidgetTester tester) async { await loadPage(tester); - final name = faker.person.name(); + final String name = faker.person.name(); await tester.enterText(find.bySemanticsLabel('Nome'), name); verify(() => presenter.validateName(name)); - final email = faker.internet.email(); + final String email = faker.internet.email(); await tester.enterText(find.bySemanticsLabel('Email'), email); verify(() => presenter.validateEmail(email)); - final password = faker.internet.password(); + final String password = faker.internet.password(); await tester.enterText(find.bySemanticsLabel('Senha'), password); verify(() => presenter.validatePassword(password)); @@ -138,7 +137,8 @@ void main() { presenter.emitFormValid(); await tester.pump(); - final button = tester.widget(find.byType(ElevatedButton)); + final ElevatedButton button = + tester.widget(find.byType(ElevatedButton)); expect(button.onPressed, isNotNull); }); @@ -149,7 +149,8 @@ void main() { presenter.emitFormError(); await tester.pump(); - final button = tester.widget(find.byType(ElevatedButton)); + final ElevatedButton button = + tester.widget(find.byType(ElevatedButton)); expect(button.onPressed, null); }); @@ -158,7 +159,7 @@ void main() { presenter.emitFormValid(); await tester.pump(); - final button = find.byType(ElevatedButton); + final Finder button = find.byType(ElevatedButton); await tester.ensureVisible(button); await tester.tap(button); await tester.pump(); @@ -227,7 +228,7 @@ void main() { (WidgetTester tester) async { await loadPage(tester); - final button = find.text('Login'); + final Finder button = find.text('Login'); await tester.ensureVisible(button); await tester.tap(button); await tester.pump(); diff --git a/test/ui/pages/splash_page_test.dart b/test/ui/pages/splash_page_test.dart index 65b3385f..de7d0065 100644 --- a/test/ui/pages/splash_page_test.dart +++ b/test/ui/pages/splash_page_test.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:fordev/ui/pages/pages.dart'; +import 'package:fordev/ui/ui.dart'; import 'package:mocktail/mocktail.dart'; import '../helpers/helpers.dart'; diff --git a/test/ui/pages/survey_result_page_test.dart b/test/ui/pages/survey_result_page_test.dart index ded62553..65514eb0 100644 --- a/test/ui/pages/survey_result_page_test.dart +++ b/test/ui/pages/survey_result_page_test.dart @@ -1,8 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:fordev/ui/helpers/helpers.dart'; -import 'package:fordev/ui/pages/pages.dart'; -import 'package:fordev/ui/pages/survey_result/components/components.dart'; +import 'package:fordev/ui/ui.dart'; import 'package:mocktail/mocktail.dart'; import 'package:network_image_mock/network_image_mock.dart'; @@ -98,7 +96,7 @@ void main() { expect(find.text('40%'), findsOneWidget); expect(find.byType(ActiveIcon), findsOneWidget); expect(find.byType(DisabledIcon), findsOneWidget); - final image = + final NetworkImage image = tester.widget(find.byType(Image)).image as NetworkImage; expect(image.url, 'Image 0'); }); diff --git a/test/ui/pages/surveys_page_test.dart b/test/ui/pages/surveys_page_test.dart index 08c6e72a..5fc50af5 100644 --- a/test/ui/pages/surveys_page_test.dart +++ b/test/ui/pages/surveys_page_test.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:fordev/ui/helpers/helpers.dart'; -import 'package:fordev/ui/pages/pages.dart'; +import 'package:fordev/ui/ui.dart'; import 'package:mocktail/mocktail.dart'; import '../helpers/helpers.dart'; diff --git a/test/validation/mocks/field_validation_spy.dart b/test/validation/mocks/field_validation_spy.dart index cf2bdf58..8f7e5827 100644 --- a/test/validation/mocks/field_validation_spy.dart +++ b/test/validation/mocks/field_validation_spy.dart @@ -1,4 +1,4 @@ -import 'package:fordev/presentation/protocols/protocols.dart'; +import 'package:fordev/presentation/presentation.dart'; import 'package:fordev/validation/protocols/protocols.dart'; import 'package:mocktail/mocktail.dart'; diff --git a/test/validation/validators/compare_fields_validation_test.dart b/test/validation/validators/compare_fields_validation_test.dart index cdbf44ca..9a7774e1 100644 --- a/test/validation/validators/compare_fields_validation_test.dart +++ b/test/validation/validators/compare_fields_validation_test.dart @@ -1,5 +1,5 @@ -import 'package:fordev/presentation/protocols/protocols.dart'; -import 'package:fordev/validation/validators/validators.dart'; +import 'package:fordev/presentation/presentation.dart'; +import 'package:fordev/validation/validation.dart'; import 'package:test/test.dart'; @@ -23,12 +23,18 @@ void main() { }); test('Should return error if values are not equal', () { - final formData = {'any_field': 'any_value', 'other_field': 'other_value'}; + final Map formData = { + 'any_field': 'any_value', + 'other_field': 'other_value' + }; expect(sut.validate(formData), ValidationError.invalidField); }); test('Should return null if values are equal', () { - final formData = {'any_field': 'any_value', 'other_field': 'any_value'}; + final Map formData = { + 'any_field': 'any_value', + 'other_field': 'any_value' + }; expect(sut.validate(formData), null); }); } diff --git a/test/validation/validators/email_validation_test.dart b/test/validation/validators/email_validation_test.dart index 8ba5c1b7..d943008a 100644 --- a/test/validation/validators/email_validation_test.dart +++ b/test/validation/validators/email_validation_test.dart @@ -1,5 +1,5 @@ -import 'package:fordev/presentation/protocols/protocols.dart'; -import 'package:fordev/validation/validators/validators.dart'; +import 'package:fordev/presentation/presentation.dart'; +import 'package:fordev/validation/validation.dart'; import 'package:test/test.dart'; diff --git a/test/validation/validators/min_length_validation_test.dart b/test/validation/validators/min_length_validation_test.dart index 707354b2..d7ee5237 100644 --- a/test/validation/validators/min_length_validation_test.dart +++ b/test/validation/validators/min_length_validation_test.dart @@ -1,6 +1,6 @@ import 'package:faker/faker.dart'; -import 'package:fordev/presentation/protocols/protocols.dart'; -import 'package:fordev/validation/validators/validators.dart'; +import 'package:fordev/presentation/presentation.dart'; +import 'package:fordev/validation/validation.dart'; import 'package:test/test.dart'; void main() { diff --git a/test/validation/validators/required_field_validation_test.dart b/test/validation/validators/required_field_validation_test.dart index 8e8ba933..c24e71a7 100644 --- a/test/validation/validators/required_field_validation_test.dart +++ b/test/validation/validators/required_field_validation_test.dart @@ -1,5 +1,5 @@ -import 'package:fordev/presentation/protocols/protocols.dart'; -import 'package:fordev/validation/validators/validators.dart'; +import 'package:fordev/presentation/presentation.dart'; +import 'package:fordev/validation/validation.dart'; import 'package:test/test.dart'; From 2b4eab09d6e84a36f48a6a95deaba6dac146afe2 Mon Sep 17 00:00:00 2001 From: Andres Garcia Date: Mon, 30 May 2022 12:43:07 -0500 Subject: [PATCH 21/21] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0274a08f..f18cb823 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![GPLv3 License](https://img.shields.io/badge/License-GPL%20v3-yellow.svg)](https://opensource.org/licenses/) [![Open Source](https://badges.frapsoft.com/os/v1/open-source.svg?v=103)](https://opensource.org/) -![Dart Version](https://img.shields.io/static/v1?label=dart&message=2.14.2&color=00579d) -![Flutter Version](https://img.shields.io/static/v1?label=flutter&message=2.5.1&color=42a5f5) +![Dart Version](https://img.shields.io/static/v1?label=dart&message=2.17.1&color=00579d) +![Flutter Version](https://img.shields.io/static/v1?label=flutter&message=3.0.1&color=42a5f5) ![Null Safety](https://img.shields.io/static/v1?label=null-safety&message=done&color=success) # **4Dev Flutter - Enquetes para Programadores** @@ -114,4 +114,4 @@ O objetivo do treinamento é mostrar como criar um aplicativo com Flutter usando * Test Doubles * Mocks * Stubs -* Spies \ No newline at end of file +* Spies