From 5f524c8f692cbb5ce9084817e9b1435f12b68449 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Fri, 16 Feb 2024 22:02:10 -0300 Subject: [PATCH 01/89] feat: setup injection --- ios/Flutter/AppFrameworkInfo.plist | 2 +- ios/Runner.xcodeproj/project.pbxproj | 6 ++--- lib/core/inject.dart | 25 ++++++++++++++++++ lib/main.dart | 4 ++- lib/models/restaurant.dart | 37 +++++++-------------------- lib/repositories/yelp_repository.dart | 18 ++----------- pubspec.lock | 8 ++++++ pubspec.yaml | 1 + 8 files changed, 52 insertions(+), 49 deletions(-) create mode 100644 lib/core/inject.dart diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist index 9625e105..7c569640 100644 --- a/ios/Flutter/AppFrameworkInfo.plist +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 11.0 + 12.0 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 73cf3f6d..0f3b6b00 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -275,7 +275,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -352,7 +352,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -401,7 +401,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/lib/core/inject.dart b/lib/core/inject.dart new file mode 100644 index 00000000..9e0267fd --- /dev/null +++ b/lib/core/inject.dart @@ -0,0 +1,25 @@ +import 'package:dio/dio.dart'; +import 'package:get_it/get_it.dart'; +import 'package:restaurantour/repositories/yelp_repository.dart'; + +GetIt inject = GetIt.instance; + +Future setupInjection() async { + const _apiKey = 'AO8TkgbRdw0-6gxWaLeDx6s6OYsJaAhoN8_PuNREHCvccZWmqO1w1KiO63ted9E7lE6EHoAvslqtyl_fXcet39TiPkmnKVNzpUV51cyC0Tr5XxSQ1_BT4n0NN-XPZXYx'; + + await inject.reset(); + + inject.registerLazySingleton( + () => Dio( + BaseOptions( + baseUrl: 'https://api.yelp.com', + headers: { + 'Authorization': 'Bearer $_apiKey', + 'Content-Type': 'application/graphql', + }, + ), + ), + ); + + inject.registerLazySingleton(() => YelpRepository(dio: inject())); +} diff --git a/lib/main.dart b/lib/main.dart index c6ce7473..19d73e6a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,7 +1,9 @@ import 'package:flutter/material.dart'; +import 'package:restaurantour/core/inject.dart'; import 'package:restaurantour/repositories/yelp_repository.dart'; void main() { + setupInjection(); runApp(const Restaurantour()); } @@ -35,7 +37,7 @@ class HomePage extends StatelessWidget { ElevatedButton( child: const Text('Fetch Restaurants'), onPressed: () async { - final yelpRepo = YelpRepository(); + final yelpRepo = inject(); try { final result = await yelpRepo.getRestaurants(); diff --git a/lib/models/restaurant.dart b/lib/models/restaurant.dart index 87c7aab5..33968561 100644 --- a/lib/models/restaurant.dart +++ b/lib/models/restaurant.dart @@ -12,8 +12,7 @@ class Category { this.title, }); - factory Category.fromJson(Map json) => - _$CategoryFromJson(json); + factory Category.fromJson(Map json) => _$CategoryFromJson(json); Map toJson() => _$CategoryToJson(this); } @@ -23,9 +22,7 @@ class Hours { @JsonKey(name: 'is_open_now') final bool? isOpenNow; - const Hours({ - this.isOpenNow, - }); + const Hours({this.isOpenNow}); factory Hours.fromJson(Map json) => _$HoursFromJson(json); @@ -39,11 +36,7 @@ class User { final String? imageUrl; final String? name; - const User({ - this.id, - this.imageUrl, - this.name, - }); + const User({this.id, this.imageUrl, this.name}); factory User.fromJson(Map json) => _$UserFromJson(json); @@ -56,11 +49,7 @@ class Review { final int? rating; final User? user; - const Review({ - this.id, - this.rating, - this.user, - }); + const Review({this.id, this.rating, this.user}); factory Review.fromJson(Map json) => _$ReviewFromJson(json); @@ -72,12 +61,9 @@ class Location { @JsonKey(name: 'formatted_address') final String? formattedAddress; - Location({ - this.formattedAddress, - }); + Location({this.formattedAddress}); - factory Location.fromJson(Map json) => - _$LocationFromJson(json); + factory Location.fromJson(Map json) => _$LocationFromJson(json); Map toJson() => _$LocationToJson(this); } @@ -106,8 +92,7 @@ class Restaurant { this.location, }); - factory Restaurant.fromJson(Map json) => - _$RestaurantFromJson(json); + factory Restaurant.fromJson(Map json) => _$RestaurantFromJson(json); Map toJson() => _$RestaurantToJson(this); @@ -143,13 +128,9 @@ class RestaurantQueryResult { @JsonKey(name: 'business') final List? restaurants; - const RestaurantQueryResult({ - this.total, - this.restaurants, - }); + const RestaurantQueryResult({this.total, this.restaurants}); - factory RestaurantQueryResult.fromJson(Map json) => - _$RestaurantQueryResultFromJson(json); + factory RestaurantQueryResult.fromJson(Map json) => _$RestaurantQueryResultFromJson(json); Map toJson() => _$RestaurantQueryResultToJson(this); } diff --git a/lib/repositories/yelp_repository.dart b/lib/repositories/yelp_repository.dart index f251d7b4..20282af5 100644 --- a/lib/repositories/yelp_repository.dart +++ b/lib/repositories/yelp_repository.dart @@ -1,24 +1,10 @@ import 'package:dio/dio.dart'; -import 'package:flutter/foundation.dart'; import 'package:restaurantour/models/restaurant.dart'; -const _apiKey = ''; - class YelpRepository { - late Dio dio; + final Dio dio; - YelpRepository({ - @visibleForTesting Dio? dio, - }) : dio = dio ?? - Dio( - BaseOptions( - baseUrl: 'https://api.yelp.com', - headers: { - 'Authorization': 'Bearer $_apiKey', - 'Content-Type': 'application/graphql', - }, - ), - ); + YelpRepository({required this.dio}); /// Returns a response in this shape /// { diff --git a/pubspec.lock b/pubspec.lock index 0b052c68..84f058bc 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -251,6 +251,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.2.0" + get_it: + dependency: "direct main" + description: + name: get_it + sha256: e6017ce7fdeaf218dc51a100344d8cb70134b80e28b760f8bb23c242437bafd7 + url: "https://pub.dev" + source: hosted + version: "7.6.7" glob: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index be3055e0..0de00ddf 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,6 +16,7 @@ dependencies: dio: ^5.4.0 json_annotation: ^4.8.1 flutter_svg: ^2.0.9 + get_it: ^7.6.7 dev_dependencies: flutter_test: From 41264d6710f6ff5de826739f867e377ce58af10c Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Fri, 16 Feb 2024 22:04:18 -0300 Subject: [PATCH 02/89] feat: update flutter and add colours, graphics, and add locales --- .fvm/fvm_config.json | 2 +- arb.yaml | 3 + assets/svg/star.svg | 3 + lib/core/app_colors.dart | 15 ++++ lib/l10n/app_en.arb | 17 ++++ lib/main.dart | 18 +++-- pubspec.lock | 165 ++++++++++++++++++++------------------- pubspec.yaml | 16 ++-- 8 files changed, 147 insertions(+), 92 deletions(-) create mode 100644 arb.yaml create mode 100644 assets/svg/star.svg create mode 100644 lib/core/app_colors.dart create mode 100644 lib/l10n/app_en.arb diff --git a/.fvm/fvm_config.json b/.fvm/fvm_config.json index d8abe1b9..9bdedb8b 100644 --- a/.fvm/fvm_config.json +++ b/.fvm/fvm_config.json @@ -1,4 +1,4 @@ { - "flutterSdkVersion": "3.13.9", + "flutterSdkVersion": "3.16.8", "flavors": {} } \ No newline at end of file diff --git a/arb.yaml b/arb.yaml new file mode 100644 index 00000000..15338f2d --- /dev/null +++ b/arb.yaml @@ -0,0 +1,3 @@ +arb-dir: lib/l10n +template-arb-file: app_en.arb +output-localization-file: app_localizations.dart diff --git a/assets/svg/star.svg b/assets/svg/star.svg new file mode 100644 index 00000000..fec08c60 --- /dev/null +++ b/assets/svg/star.svg @@ -0,0 +1,3 @@ + + + diff --git a/lib/core/app_colors.dart b/lib/core/app_colors.dart new file mode 100644 index 00000000..1a571717 --- /dev/null +++ b/lib/core/app_colors.dart @@ -0,0 +1,15 @@ +import 'package:flutter/material.dart'; + +class AppColors { + AppColors._(); + + static const open = Color(0xff5cd512); + static const star = Color(0xfffeba00); + static const closed = Color(0xffd96762); + static const background = Color(0xfffafafa); + static const placeholder = Color(0xffeeeeee); + static const dividerLine = Color(0xffeeeeee); + static const primaryFill = Color(0xff000000); + static const defaultText = Color(0xff000000); + static const secondaryText = Color(0xff606060); +} diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb new file mode 100644 index 00000000..1d4183e0 --- /dev/null +++ b/lib/l10n/app_en.arb @@ -0,0 +1,17 @@ +{ + "restaurantDetailAddress": "Address", + "restaurantDetailOverallRating": "Overall Rating", + "restaurantDetailReviews": "{count,plural, =1{{count} Review} other{{count} Reviews}}", + "@restaurantDetailReviews": { + "placeholders": { + "count": { + "type": "num" + } + } + }, + "restaurantListAllRestaurantsTab": "All Restaurants", + "restaurantListAllRestaurantsTabClosed": "Closed", + "restaurantListAllRestaurantsTabOpenNow": "Open Now", + "restaurantListMyFavoritesTab": "My Favorites", + "restaurantListRestauranTour": "RestauranTour" +} \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index 19d73e6a..64d8cf46 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,9 @@ import 'package:flutter/material.dart'; import 'package:restaurantour/core/inject.dart'; +import 'package:restaurantour/features/restaurant_list/restaurant_list_screen.dart'; import 'package:restaurantour/repositories/yelp_repository.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; void main() { setupInjection(); @@ -9,22 +12,27 @@ void main() { class Restaurantour extends StatelessWidget { // This widget is the root of your application. - const Restaurantour({Key? key}) : super(key: key); + const Restaurantour({super.key}); @override Widget build(BuildContext context) { return MaterialApp( title: 'RestauranTour', - theme: ThemeData( - visualDensity: VisualDensity.adaptivePlatformDensity, - ), + debugShowCheckedModeBanner: false, + localizationsDelegates: const [ + AppLocalizations.delegate, + GlobalMaterialLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + ], + theme: ThemeData(visualDensity: VisualDensity.adaptivePlatformDensity), home: const HomePage(), ); } } class HomePage extends StatelessWidget { - const HomePage({Key? key}) : super(key: key); + const HomePage({super.key}); @override Widget build(BuildContext context) { diff --git a/pubspec.lock b/pubspec.lock index 84f058bc..1ac426b0 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,26 +5,26 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a + sha256: eb376e9acf6938204f90eb3b1f00b578640d3188b4c8a8ec054f9f479af8d051 url: "https://pub.dev" source: hosted - version: "61.0.0" + version: "64.0.0" analyzer: dependency: transitive description: name: analyzer - sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562 + sha256: "69f54f967773f6c26c7dcb13e93d7ccee8b17a641689da39e878d5cf13b06893" url: "https://pub.dev" source: hosted - version: "5.13.0" + version: "6.2.0" args: dependency: transitive description: name: args - sha256: "0bd9a99b6eb96f07af141f0eb53eace8983e8e5aa5de59777aca31684680ef22" + sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.4.2" async: dependency: transitive description: @@ -45,10 +45,10 @@ packages: dependency: transitive description: name: build - sha256: "3fbda25365741f8251b39f3917fb3c8e286a96fd068a5a242e11c2012d495777" + sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.4.1" build_config: dependency: transitive description: @@ -61,18 +61,18 @@ packages: dependency: transitive description: name: build_daemon - sha256: "5f02d73eb2ba16483e693f80bee4f088563a820e47d1027d4cdfe62b5bb43e65" + sha256: "0343061a33da9c5810b2d6cee51945127d8f4c060b7fbdd9d54917f0a3feaaa1" url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "4.0.1" build_resolvers: dependency: transitive description: name: build_resolvers - sha256: "6c4dd11d05d056e76320b828a1db0fc01ccd376922526f8e9d6c796a5adbac20" + sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a" url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.4.2" build_runner: dependency: "direct dev" description: @@ -85,10 +85,10 @@ packages: dependency: transitive description: name: build_runner_core - sha256: f4d6244cc071ba842c296cb1c4ee1b31596b9f924300647ac7a1445493471a3f + sha256: "4ae8ffe5ac758da294ecf1802f2aff01558d8b1b00616aa7538ea9a8a5d50799" url: "https://pub.dev" source: hosted - version: "7.2.3" + version: "7.3.0" built_collection: dependency: transitive description: @@ -101,10 +101,10 @@ packages: dependency: transitive description: name: built_value - sha256: b6c9911b2d670376918d5b8779bc27e0e612a94ec3ff0343689e991d8d0a3b8a + sha256: a3ec2e0f967bc47f69f95009bb93db936288d61d5343b9436e378b28a2f830c6 url: "https://pub.dev" source: hosted - version: "8.1.4" + version: "8.9.0" characters: dependency: transitive description: @@ -113,22 +113,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.0" - charcode: - dependency: transitive - description: - name: charcode - sha256: fb98c0f6d12c920a02ee2d998da788bca066ca5f148492b7085ee23372b12306 - url: "https://pub.dev" - source: hosted - version: "1.3.1" checked_yaml: dependency: transitive description: name: checked_yaml - sha256: dd007e4fb8270916820a0d66e24f619266b60773cddd082c6439341645af2659 + sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.0.3" clock: dependency: transitive description: @@ -157,18 +149,18 @@ packages: dependency: transitive description: name: convert - sha256: f08428ad63615f96a27e34221c65e1a451439b5f26030f78d790f461c686d65d + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.1.1" crypto: dependency: transitive description: name: crypto - sha256: cf75650c66c0316274e21d7c43d3dea246273af5955bd94e8184837cd577575c + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.3" cupertino_icons: dependency: "direct main" description: @@ -181,10 +173,10 @@ packages: dependency: transitive description: name: dart_style - sha256: "1efa911ca7086affd35f463ca2fc1799584fb6aa89883cf0af8e3664d6a02d55" + sha256: "40ae61a5d43feea6d24bd22c0537a6629db858963b99b4bc1c3db80676f32368" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.3.4" dio: dependency: "direct main" description: @@ -205,18 +197,18 @@ packages: dependency: transitive description: name: file - sha256: b69516f2c26a5bcac4eee2e32512e1a5205ab312b3536c1c1227b2b942b5f9ad + sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" url: "https://pub.dev" source: hosted - version: "6.1.2" + version: "7.0.0" fixnum: dependency: transitive description: name: fixnum - sha256: "6a2ef17156f4dc49684f9d99aaf4a93aba8ac49f5eac861755f5730ddf6e2e4e" + sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.1.0" flutter: dependency: "direct main" description: flutter @@ -230,6 +222,11 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.4" + flutter_localizations: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" flutter_svg: dependency: "direct main" description: @@ -263,10 +260,10 @@ packages: dependency: transitive description: name: glob - sha256: "8321dd2c0ab0683a91a51307fa844c6db4aa8e3981219b78961672aaab434658" + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "2.1.2" graphs: dependency: transitive description: @@ -279,34 +276,42 @@ packages: dependency: transitive description: name: http_multi_server - sha256: bfb651625e251a88804ad6d596af01ea903544757906addcb2dcdf088b5ea185 + sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.2.1" http_parser: dependency: transitive description: name: http_parser - sha256: e362d639ba3bc07d5a71faebb98cde68c05bfbcfbbb444b60b6f60bb67719185 + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" + source: hosted + version: "4.0.2" + intl: + dependency: "direct main" + description: + name: intl + sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "0.18.1" io: dependency: transitive description: name: io - sha256: "0d4c73c3653ab85bf696d51a9657604c900a370549196a91f33e4c39af760852" + sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" url: "https://pub.dev" source: hosted - version: "1.0.3" + version: "1.0.4" js: dependency: transitive description: name: js - sha256: d9bdfd70d828eeb352390f81b18d6a354ef2044aa28ef25682079797fa7cd174 + sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf url: "https://pub.dev" source: hosted - version: "0.6.3" + version: "0.7.1" json_annotation: dependency: "direct main" description: @@ -335,10 +340,10 @@ packages: dependency: transitive description: name: logging - sha256: "293ae2d49fd79d4c04944c3a26dfd313382d5f52e821ec57119230ae16031ad4" + sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.2.0" matcher: dependency: transitive description: @@ -367,18 +372,18 @@ packages: dependency: transitive description: name: mime - sha256: fd5f81041e6a9fc9b9d7fa2cb8a01123f9f5d5d49136e06cb9dc7d33689529f4 + sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.0.5" package_config: dependency: transitive description: name: package_config - sha256: a4d5ede5ca9c3d88a2fef1147a078570c861714c806485c596b109819135bc12 + sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "2.1.0" path: dependency: transitive description: @@ -407,42 +412,42 @@ packages: dependency: transitive description: name: pool - sha256: "05955e3de2683e1746222efd14b775df7131139e07695dc8e24650f6b4204504" + sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" url: "https://pub.dev" source: hosted - version: "1.5.0" + version: "1.5.1" pub_semver: dependency: transitive description: name: pub_semver - sha256: b5a5fcc6425ea43704852ba4453ba94b08c2226c63418a260240c3a054579014 + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.4" pubspec_parse: dependency: transitive description: name: pubspec_parse - sha256: "3686efe4a4613a4449b1a4ae08670aadbd3376f2e78d93e3f8f0919db02a7256" + sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367 url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.3" shelf: dependency: transitive description: name: shelf - sha256: c240984c924796e055e831a0a36db23be8cb04f170b26df572931ab36418421d + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.4.1" shelf_web_socket: dependency: transitive description: name: shelf_web_socket - sha256: fd84910bf7d58db109082edf7326b75322b8f186162028482f53dc892f00332d + sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.0.4" sky_engine: dependency: transitive description: flutter @@ -492,10 +497,10 @@ packages: dependency: transitive description: name: stream_transform - sha256: ed464977cb26a1f41537e177e190c67223dbd9f4f683489b6ab2e5d211ec564e + sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.1.0" string_scanner: dependency: transitive description: @@ -524,42 +529,42 @@ packages: dependency: transitive description: name: timing - sha256: c386d07d7f5efc613479a7c4d9d64b03710b03cfaa7e8ad5f2bfb295a1f0dfad + sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32" url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.0.1" typed_data: dependency: transitive description: name: typed_data - sha256: "53bdf7e979cfbf3e28987552fd72f637e63f3c8724c9e56d9246942dc2fa36ee" + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.3.2" vector_graphics: dependency: transitive description: name: vector_graphics - sha256: "18f6690295af52d081f6808f2f7c69f0eed6d7e23a71539d75f4aeb8f0062172" + sha256: "4ac59808bbfca6da38c99f415ff2d3a5d7ca0a6b4809c71d9cf30fba5daf9752" url: "https://pub.dev" source: hosted - version: "1.1.9+2" + version: "1.1.10+1" vector_graphics_codec: dependency: transitive description: name: vector_graphics_codec - sha256: "531d20465c10dfac7f5cd90b60bbe4dd9921f1ec4ca54c83ebb176dbacb7bb2d" + sha256: f3247e7ab0ec77dc759263e68394990edc608fb2b480b80db8aa86ed09279e33 url: "https://pub.dev" source: hosted - version: "1.1.9+2" + version: "1.1.10+1" vector_graphics_compiler: dependency: transitive description: name: vector_graphics_compiler - sha256: "03012b0a33775c5530576b70240308080e1d5050f0faf000118c20e6463bc0ad" + sha256: "18489bdd8850de3dd7ca8a34e0c446f719ec63e2bab2e7a8cc66a9028dd76c5a" url: "https://pub.dev" source: hosted - version: "1.1.9+2" + version: "1.1.10+1" vector_math: dependency: transitive description: @@ -572,10 +577,10 @@ packages: dependency: transitive description: name: watcher - sha256: e42dfcc48f67618344da967b10f62de57e04bae01d9d3af4c2596f3712a88c99 + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.1.0" web: dependency: transitive description: @@ -588,10 +593,10 @@ packages: dependency: transitive description: name: web_socket_channel - sha256: "0c2ada1b1aeb2ad031ca81872add6be049b8cb479262c6ad3c4b0f9c24eaab2f" + sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.4.0" xml: dependency: transitive description: @@ -604,10 +609,10 @@ packages: dependency: transitive description: name: yaml - sha256: "3cee79b1715110341012d27756d9bae38e650588acd38d3f3c610822e1337ace" + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.2" sdks: dart: ">=3.2.0 <4.0.0" flutter: ">=3.7.0-0" diff --git a/pubspec.yaml b/pubspec.yaml index 0de00ddf..fade3b7e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -7,16 +7,19 @@ version: 1.0.0+1 environment: - sdk: ">=2.12.0 <3.0.0" + sdk: ">=2.17.0 <3.0.0" dependencies: - flutter: - sdk: flutter cupertino_icons: ^1.0.6 dio: ^5.4.0 - json_annotation: ^4.8.1 + flutter: + sdk: flutter + flutter_localizations: + sdk: flutter flutter_svg: ^2.0.9 get_it: ^7.6.7 + intl: any + json_annotation: ^4.8.1 dev_dependencies: flutter_test: @@ -26,6 +29,7 @@ dev_dependencies: json_serializable: ^6.7.1 flutter: + generate: true uses-material-design: true -# assets: -# - assets/svg/ \ No newline at end of file + assets: + - assets/svg/ \ No newline at end of file From 4d1fb5430f41edad808a0748a72771ae61052e65 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 11:13:21 -0300 Subject: [PATCH 03/89] feat: add fixtures to dtos --- lib/models/restaurant.dart | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/lib/models/restaurant.dart b/lib/models/restaurant.dart index 33968561..1f62eb52 100644 --- a/lib/models/restaurant.dart +++ b/lib/models/restaurant.dart @@ -13,6 +13,7 @@ class Category { }); factory Category.fromJson(Map json) => _$CategoryFromJson(json); + factory Category.fixture() => Category(alias: 'newamerican', title: 'New American'); Map toJson() => _$CategoryToJson(this); } @@ -25,6 +26,7 @@ class Hours { const Hours({this.isOpenNow}); factory Hours.fromJson(Map json) => _$HoursFromJson(json); + factory Hours.fixture() => const Hours(isOpenNow: true); Map toJson() => _$HoursToJson(this); } @@ -39,6 +41,11 @@ class User { const User({this.id, this.imageUrl, this.name}); factory User.fromJson(Map json) => _$UserFromJson(json); + factory User.fixture() => const User( + id: 'userId', + name: 'George M.', + imageUrl: 'https://cloudflare-ipfs.com/ipfs/Qmd3W5DuhgHirLHGVixi6V76LhCkZUz6pnFt5AJBiyvHye/avatar/400.jpg', + ); Map toJson() => _$UserToJson(this); } @@ -52,6 +59,7 @@ class Review { const Review({this.id, this.rating, this.user}); factory Review.fromJson(Map json) => _$ReviewFromJson(json); + factory Review.fixture() => Review(id: 'reviewId', rating: 3, user: User.fixture()); Map toJson() => _$ReviewToJson(this); } @@ -64,6 +72,7 @@ class Location { Location({this.formattedAddress}); factory Location.fromJson(Map json) => _$LocationFromJson(json); + factory Location.fixture() => Location(formattedAddress: 'address'); Map toJson() => _$LocationToJson(this); } @@ -93,6 +102,17 @@ class Restaurant { }); factory Restaurant.fromJson(Map json) => _$RestaurantFromJson(json); + factory Restaurant.fixture() => Restaurant( + id: 'restaurantId', + name: 'Restaurant Name', + price: '\$\$', + rating: 3.5, + photos: ['http://placeimg.com/640/480/business'], + categories: [Category.fixture()], + hours: [Hours.fixture()], + reviews: [Review.fixture()], + location: Location.fixture(), + ); Map toJson() => _$RestaurantToJson(this); @@ -131,6 +151,7 @@ class RestaurantQueryResult { const RestaurantQueryResult({this.total, this.restaurants}); factory RestaurantQueryResult.fromJson(Map json) => _$RestaurantQueryResultFromJson(json); + factory RestaurantQueryResult.fixture() => RestaurantQueryResult(restaurants: [Restaurant.fixture()]); Map toJson() => _$RestaurantQueryResultToJson(this); } From 3b9e5f4deebeb4bb1825c0725458340a449c8e65 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 13:46:10 -0300 Subject: [PATCH 04/89] feat: add font and test styles --- assets/fonts/Lora-Bold.ttf | Bin 0 -> 133828 bytes assets/fonts/Lora-Medium.ttf | Bin 0 -> 134004 bytes assets/fonts/OpenSans-Regular.ttf | Bin 0 -> 130832 bytes assets/fonts/OpenSans-SemiBold.ttf | Bin 0 -> 130760 bytes lib/core/text_style.dart | 12 ++++++++++++ pubspec.yaml | 13 +++++++++++-- 6 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 assets/fonts/Lora-Bold.ttf create mode 100644 assets/fonts/Lora-Medium.ttf create mode 100644 assets/fonts/OpenSans-Regular.ttf create mode 100644 assets/fonts/OpenSans-SemiBold.ttf create mode 100644 lib/core/text_style.dart diff --git a/assets/fonts/Lora-Bold.ttf b/assets/fonts/Lora-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..530c9e11ba35de8402dd192222b4e73f9169ac30 GIT binary patch literal 133828 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�}>9+3MOQyTU9Gpv=R@qRZ7dt_WVOcbN+XrA%oXae$2R5`FH;LNfWeuT5=%qnyhK}UoyT2Yn$(({DF{tO55b}^oFV=G1DL$Qd4y` zk8lSGsvTEd+#pLCwdM{2rE=6-<`9$(5_#NNkniJfENF?SdxTX9SeoPQN3d_f)zC$e zC&yYuGFM^7*4RTTKP1b4X13D1C^@cg@%cs#URz9!>^{73qMB%qh>pT&yc|o7Xt&6E zjqa0o8>pAXJgZdlQ`YLQ+M%dGZMDZtel`2pM)?ZbMm@QBO&xirFRrCcw2$sMQQbPf zv-h&mpL{`;xPa7Q^Y`&zX9l@7&g2*wZ~BPJYcalQ_y%JrnqDCZMwL2Ql;Yp$Xr{{|N(wV3;#*P* z;PS7sHq2XbxlxCh%Rg)=!ZJ@GFA zqp0qi^?IY^n~@Bi8h_u!MaMZirFh(!^pRh3V`h78t#Wz+cW4#GlazbJNFR3#i3#yZ zkv>oUtUP2=PST&oS#RwkWfQQ7lFiIpl)Ql-l;0jz${G>-Sqa!8_?>bjN;xsB{LcQ< zOg}Zs(LwGwR6Z*(;;r^qme1I~S(L&hC@w0(t^dgPl@l9dK{tMbs20P;P zpncThqcD(KxM_$SB77PI3AAJ5c*7~o(sKSmh7qSsL3B8>_j2)d9k1!HWmZ(t0>pTBEfEO0DL0(~m-X z*MwS&@orf@uGQL@FB3d2{Ci|APIP=^ZE9q1RMjSUyu}<@E9vd!y@h{m4)%z-!_v^5 zOg$}lCoUO}1n#fp92x)TjXg#yHM5l_$46F{3YR$?=bwOKSIrQ2&h&l}%T`R$zA^E$ ze||OBxTf>4s4k}$XxW@gcIvzBi1^-LQGSh*L&;U6;FViQE;}XhD?2)tLnI;z0 zi$F>xpdPb2cnd^F%Y-E@#iRe5-CCc!qEO~l3Ts#Ah`f~*1!ZX#A>x9nBQl>6PVy~5 z9hz8DG&z0h*>f$GD;tcY@r2^y33E%Q&CJQ4J-s-nQ^F?I z2q@^KRBOw?C+Mfrq;4AnKiN?X?&KLkkde2n;-MJ#Y?(`L{`Nu=nq-(u;u0!q>_#p* zzHCeyWbwxcpOX_C%qhoP&oPXTXcBd&1=7m)ycyGH%*eAQs9d*Dx$X%n+xq!BAD8hy zL5-QmYL@+$PPxUQpb$$FCW6WVmzHeWrF zqw2{3@d>)Bs#8b^GOoK?kJT2(_fM5SAN7vwqpG&NJF-vuaG?F>kL#8O`anCV(Ujx* zK&sD7mwH@2gKl#u#0~e0%1Ybf5N}rHlyrA(Qf{Wb+-xt)lQCqlrxf%T_PDqP2Xrl+ zlw9CUFD#gxc3i({htjgC0WCwr4G$}JC=V;k$qK1)-$J50>WzIcN@tNW61=PKpkP(z z;QT(9yR;^kl}B)(5Hn&LCgHn!^4u73F!HM+dE#=HwkWF2Tt2JZmgmT-DamW8%Xe1H zt;(96zNpPo+*Fh?A-}P(W=TcuiWH|U_tD(yoH&;)E!~-vkXhVNmNRuqw#}Ba-d&xQ zp5w|&O|Vt8O{tw#DDOhmOx@iKbr+5O;Zhkr7^TzH7+NVK5ZpzeRE|L0u3F;wb2Qo2 zIcSOS-o&|Q%a&kNjJFmXGA&UShzY5s#)MQEEHZROqCw6ymQQ*GV{b!i$eT%#tEsHk z62ncaq!n4ZSreOO1GPraY;{f)^;0J-m^^J(M(M<~+^NM#dt&_P5GpipLCnId=Qvts z&nOXEM)iaYS4Ck>$HeNTs>v!^GShSNohcU9g5sQZduCdKZOTm5nBj~dPd5g7Xw;fpI$>@wm=~N#)#lItTuPAS770OR zd&uqbFsAXVEe`S2^RWzM2^RzALWX8z)9ik67p*%e=Wb!|dK7wxk@d{H&f3L8wP zJz+ZYQ;0`qn{H7|x54RfIh-a47p7!5y`20&jck3gd%@sW*(#e|HUDvCfgY5~v-+pc zFW_0siScpG^Wqu`i!?xE4ts_sFRt4LIq6Nz3C-dk$CQ9A9KaH-5h7^O|;he}nX zXq47nV3fAWRtW4XN7!EsUoWB_4ddz|V>9C{t!m6d*6tA%@ySvvGc2KC;BFoXorPFU zma9myHSl{|#Bt%@BWrP@<0EVHh>8^Db%VzfDMr*vMvCKqZB`?*MoY^`(YTYT;kHwe zqH!lJrdy4gvVPdv5$!Zb%naS(ax?P<)LE?N8G-f540#2wO+M>F$vMl|XPS!@`OwIf zW|`tqleu{2oiIpE@gi3!%g6?q_x>h6)@&~R*pU=vt&K^E5i!ZuiA-W_e!*3g8FPzS zoSA_g(-yS~r`vu@TAAHZ?zk=^HzkTZ&%`?W=q9cgGxnLejO#Hb7;!yyIj+meQDn*r_krb1_d> zd~3EjG0_rjPmOAzPMMjhs!kPo*Ey@w9o5B0M?Y~?+3l5SH)pw1sas~TJ8tx^@5eK- zAbZ~Q_;s*E)l#tpXQSBh2i3O6mp7T-2$w4+8~fL>zK&$u@%uLf=6^ddhiS9|ny%(R zF*`txm8iz2?SpqO?^z0>!Qo~OR%t0S2&@f`GJBDIWlBN5EuqAk_0Mc;YDH;6dScaI z?C#v;nO7yH#}$5(Z%&;)B|0y*qBW+_wKlD^BrUlrRSKrSQD2dioyc9Ym`vL8AEe~T zVlB(w(r7KTMlC`@(e%{aM%^N^ly)l%wAIW1(t7R8e)1InsN-pOI$UF)eudvtU1Ji)V1QJVYzBkeul zr|?>Xl^Z+YG}ocO|2 z>+c+4lZwU15?{tj_~-I<-z={iSY-P-Nn3gj+mU;m{N3DdliuAR%m&m!t7G!ruPC3b zV^>Jng%(zlMh^8+^avqG^xx}>5^(E@lutVlDH$A^JMKJiy2QefU{YYJfx+RLdA)RS zk^%{x5YAsqVM)abdGOAB)8R&dDdATe)#||Da@MQTD2j*P^(m+$b*m*CCKBZjf^yix z$n@cckgODY!b?)7(#681wZr4-(VEX0Feye7Mw3CoTRG`J zG4^XCmB7+g5mfZ;V`tedsF|wr&OBY2R|H=2;9Z7;{zN?-G~h$roRSKvq?{`x$DsRy z+x@cAP_#ZBQT5v}F-j$R0v=y-Dmy;S)FxD~JNt_+S4w4R7;){LNnn^}b~c|5<%0df zfZ1nb8lBpvv7}hgU&DV zY`B5^M8<}j*|7-mD4BlLM^gh1Br6aY1Fr%~k{844fasFAT+N2$rzB$3n?k|vV;%<9 z?Cu4b#_*u@NMHt)fa52gKjT5u$JQSs-I&+E2zGVr3xd$y1d{!4vx&$iT2#J95Tj!& z`Pn0--r~A1w%&{0CQRHuIy8*jBG4?+_&Lz*<2Q$XrXFL^lD)lDy83LAqXE~Vs|{4A zmF6WIit$cGl$fpTP67F`amoj{?00n~FSm;hyZV_)UwdaKPj=I~mEN6g3c3?!Nn-GI zi{lrrn_NyvGCH^m*F6;&PS0w-g9F-X-HvACi#Uw-ck=JqSmyhi1V?Pz(xxrZKrERz z^iY^WNNbcPrGjw#40ELXf7a%J$J_PFt^0iyi_rS*+*-1C;ow4WJO4(JqBj@z(b_}= zook4lYrRYPmJ2qS4X&=Vp6LCWE<%)IE8_o+04DZ54xAHm80Z;gK|vBgw@TR_T4+=* zA}m6x_a=0Dx+;6lUgNBJjHZO4Tn6Hln@f4e8~q;V_!B*`a1$<%=11aP+2JAZKTNNt2#QVl27R9R1Xp1R+?(a5a(RQjF$EFa*Lj4z?=o^wyUWHK!Yr=gbp2a^Yf`uPQ z^fjau72d%YxW>NnEjN`a`8#K`%ca;*=*5R~=*Zff-RYj$smhEt6HC`OR<>Pr4HDw5 zj_JAlXgxSy&W(l_qs{o__`dZY6`dZvP+Y5y?sJKjBa7ADBe=A@a$96LuK;pQ5Rkce zcQ|zq`qQmbwCGl`b?-R#(XBely}H~o*Dlq}t;42#o4fn9hRf$aQj_@)J&+!St@cvR zmqVzv>pTa)%Fp-k&Y&bGmc_F8C_JV8*ngz1$}*73FMu*CqCvTJjI2%EKv^Qg^O2Of zaw-yf!_~Wo8z36tQLDw^dK@C6^#icS4&I-!D1Zt-gAr&yhfeQoO*@gsoE zycy;W==4sb0snJ4bpbcac;h9Hd|RojnTEQWDL?ayNBqn^vU9vn#RWhA2jB+qD9?76 ztSf3VgiG4&mPs%huo@U-)m$ z@E;*OzW~TNnT;p3I^^B@Lwc*-8!JVOPV>(1c;dnSHwLHYPW{y4tw@Dr>-|~1)mIEf zhEhJG+bF6s=3s8((2Mp3%T{!6?ayUeFJ4~ueu&-f8MA`rsFv&vzDXO=&S~X0@Qt8d zBMv=}FTe3t{Pe_;_5I&Fe&Ep2#;jn^>UZ5aw{rhpgDt3|%U~Zc9=vzk zw!7Ah)}T(<`9=2e{yPsHzQt}lcI28D*+H*dSBSm-0O)0yLf0pJ1bdB)`)la>OId&! zI7Ete5?x^m2Oz4_e$+w0*&A@xGe?GwUC%%%?@byAn*`j*Qw|;07e@$Ed?8|z#{BkSWd<1RspYxjNa0KEQ z^ay?&eOQq>%2!oyx>!f-b!ob-d5FD;8AE|rvz)@Y=T~|b)aD`LojJ|_iZ|m#WSdfA z>$bL5Sf`hrh)Qsfa1E#oQ(TiQj*EG#B6z3US&eJCozXme+k}@K)h~BwgXw4Tc})|| z*k~FUkYrxKMU7AH%wi%zFW;R1H}0V>k5z}gf?@@|o>Nq%E{_*#jShu;k^=ad%r;C? zp!OeX#d?5D?pW;?^0z|wX`&S7n?x$M?Q~}y%D(p!%s08SnnfnW$1_Cy%;B-r-YwqS z79&zGkAK73q7pvJui_9H(!Bh%XZJTviJ-N89HjASGwq-T zA{P)VN*hhI;`Cu-h`$6qO}cqqRt8`l?zpwhjLx1*f=@CuQdNRZCuDLbcJ@30#L*%&dH(8K4;kG74G&Q?oH`!?jdWR4tQ z(rOs{XrL_dvPzBBO!lp9$v3^dt~V{I)9w1gRrQL-?*7+33zJ)5vqL@0+JYlqLp`wN zE1Jk{THv3mXnq51mc^dsL2Jsri=Z{h&X(tC0O3mToCJ#gb*6PB;NcO5;Z$Oq(k;QA zzzb+)bWdk=M^@Z9gV7!fM~a=v9_Y6AF@SG^u+!Q-!~+99Rv*~Wp6_u!pVG5c^iDeu zYA6cxI#843wgyb}j#mZr64#M@DO^NKqoG2IdJWHFE>0z@=1yE+Dd%pVTs~fQm9`Hp z9J9>s6tdS858SsWTRwdMH+F&+X8u^95U{%D<_e?ZD=*vMxNfb?R(5{3#YaTQzyt51?W^7WK} zlZ1b8EzzuLRP5ia&K-~=_xh{81=k0#J zS{w_rUrDA(9K$FsFipS}#OE8oP>pju7J8rhWoFu6-DQ@@;?Gr^6x(~gsl(d;zwe&4 zoca~qpq70krLp@fHG_Na-i6Md*?|KuSykGs4Nj+Rj)5iX@bSAQ1i5wl7X1BtV|N@I zzEsyw9D?&m5fq)1Vs1qgJ$}tRtJ`iWAh};1=Le9lh6N=8ghcpG zKl6T11ZyP{E{=Nfq$^>`xhrmu$1~~Sa$?LS2>+;vbcI#?)06HU2Q#TXR-JjqynA6~ z+^l;vP%*RZ(msE0=k6bZO+r7>8`Yy%)hExu?Gm}~@-^Y#xE7yyE_xgQb%OVkA{>ia zRIyK!xJDNx|D~1sm%-ORm)lnfe?WG}pKem{kI6Fb{Aaj=UmB~9pxFO(w#-wLcmMFC z@LK*G_A4PCOLX^6V()n4jcTKUm?3wi5`;tHzFi>_1$(fGm3RyslCmaCA(j3*o2x9m zO0;_ezC(6@G4E8sr;OzS@F{BM;1j#=sMhP#|1=p5NH~-`>JZo+&YD%c;h5N;h~I08 zg|_Tw&JU>#HL)8XLX!`J$ifI*aa&6r!D_GTyH$}b-QJ7~iibwNaj>In;aEJCDWrMV z!Gw|l$8UNYgX7sOBD==sL5=gv)!0_gx;<8m8c&2KA`ffh zDdQ2F-w0%+zpQONPag~xA~skdK6}JzonLMJc=`%D9ZNl+ev1{5FHTqi zh=+-qrmi!h2b@cSS_-G(MQ{e>3fNy{-CdxrG8wfdG|Y&2U4_A_KQZ7e4EQ5DwW!fp z9Uk)=dfPz#FdTA5Vv${E*X9pZouL6&qNWxT0libL@)TzWS~OQr3*QSUGp6~FmvY67 z_S}KwX459Ngis+;ulg^zc{1$#$nSt9y9cU~^v8CcbQIHFa|L>Dq5>zI-*IU;*@-&6 zZa6twps*RYw!(-E5N0eAN-ZImqh`zct3g2k#sQP=?r<;WFlNR7{Z%O6{F;h>YTaQ z=Cf#b!RPXUrbA$+9__U<9RmGLRq|fLauaP>$rRo6Ej+*)iMmZxZxyJ>*lM<3@%P3{ zPqVm%i#Ff%7830W=UMz6OSJw~miFkoO;ZuD2E^gC>;l)+b*1a5Vy<6{nmBbZqYHO` zi?JN+KUR0OHZ_%PZ~qkx=OE;Z?BQjs1BOQXBxD1J%(N?B16jo)tCG#Y{nsm6fOHNI z1nOqkJzG%zi0L9@MTl~WGdMvxEKGhMxN+9;^R}>+dp$&oMdB*_14Use4lnz6o325( zJ17V@w!;SP*+$YDdbMNkOqct8WeaQlR^}S<8=#rTP}}=0X$snHluauNzShG}Tf}vH zIiJn9{(^J&OWS;O=`cRu?%!KcMl|&<n6?By$s04oMR87|Vfz}#5&v~WVC#oM8)ZfY;&E18i#!v-?%1*z>I zMu(GR!cTtk+C5u+ZSUU8RLV@laR9^(zmB@s70}eSf7~9eoHpbn^Qc*u4I?R-32(*C z4JIlCL6VLFqe++nd(-h(A1;)SzUpx8#+ch)ui0nLOna*96K-d2I+@?LC$sZpB|1@z z&ieapqmjf!Fg$-#Jgn`Hhx~DyHPxQC;Id5XOxm$~PY&LAbPTO;)~_ngA0G*@(d*|* zCyt~riLt?@@VU#YF{ z<3E(T?Mlbg4kmI(pU?;qOQb$`8s48y?)V435=ma2gJH;_%;(&n@FDh4>-`|&ihC4( zb#>)$IDh>PeG1Vb5-9h7_Q+Uih&3b@-DS$|Y@)v&u^1V-qzb5@)zh0 zNeDfi@~ZeZpdA^zTt7$`w;S%^eVkM6h)GXeM|^jNP0ieh7@+p6mdqhlSdrNr-~ zd5AE&w4|G!YZPzyG`mt-5dnUT46VmF=UySba=3|PIPTuxVsBx|&u}B=a-iO(U=0s_ zTpZN{bzP$UaW1cA8n=Y?WGGmfg^Na|T+c}Hqu%rHff_eaC0X>HrGNw8M?Cr`*i{8^ z>>-Uu`r6Cr1i*G~j)it8>s&+e7lQo-pSIxw9-v=%H^&fe7e%&qrU zhce-qCGJt_)kwrUwTJx^S2#2G-!#*>>eewJeFtB+S75dE6Xn6vhlfMMX&Oh(j+B-% zxlwP@7K{r_t8$xm^ogK;7pGoCULxVC+_U@L*T8SAhCLHa3^JiyD2(Uq z(j>qR<8$unwes!x@!Vv#xa+4Qwt69R&)E1xSeXOJFY<*xV#i5&L>m}wti7r_xIBW} z;ezZYBo?vNYnx)C(Xqs!Xe=r)mBe8#=N1_=!dq`SyzI4_9Hgz=$uNnFq|NM5w>H*x zxFrHR$uJj9oq=IUzDEF6e2@15jqS>WtlQew`-N5_4Bu`z5C(^a{n$BG!T1%czZ|~2 z_fa_Tq{=*{660&zSZr&vonPNg16li4?%pQJ8_^4jVSV)M=yP+Jgb#FW?d3@px;OW^ zcuWC#mshzQCl9YqChT)mIRqej*sU}z_KH*_r03s;A}02+p9{>8&ORr-Q(POuE)Rll zKZjjLhHUpPXGAd};u4}mA0oZHO$e37U`4#vqF!_0&QaBpgE~^v7(;RY4H6H(ou&|4 zpE&vo8eoX@7n)$WqRcPc(V1TO$bXdm0!9~h?>M{v{J*ee8e5neohX>f&02pxVV0vH z{4$C=+d~W4J7-z8)VkkK^(rc8(1%I3U`;&Zh);`57Wx&BKP zsO%gbT&?S8cZz|P9sZLqUrXlqJup|C%s7PBA9zdi)`?U1O!Pun%_;&U&7b3 z`yTRNq%2d)=S02h40pRMLWWQ|*)68fQD=M!71L-F?D^|w>eYQ`#=Hw_Yl%w!g%gE^ z{Mh(`TSFQ5=cIPjpL#QUmu}=lgQkx#eR#Zv3{z=d$%Co9Q_Xu*|EILe$jih`13CY4 zs_$QUXKX^(7+)R5k!f}Rz*n*51UdL4a!w!q#V4Y*>sxuWc}tZ2)9fwZyd0K3jI{DU zqwQBFHC=2(AXd_*jQxKy#ecym<}qi!l6T9`@8{2@d^lS98~O98zW4BzOV2;qeqQf; zW!Lk+Y(L*CSGjS!R;2g8m48mX?``cJd_8~ud(v~JN6w~*4h#XFdv5_cKy`p!Iq-;f zXXrk+73&s&4TFdDd$Pp$6(Zt8+7q3$n$2KM>$B{fB=1A>qu1Vd+3a@8<0s8zf%bnN zBoO-5koE@;W=bk@&o1S%k&6cDLr$Co6e}hGEPz5T7PZD=DBE)v z!tLz!Jhxtkhdfp4%A>qp-ibqk`TS@8Undr@N$~mS_jZ*`2DEsQXpKNQ}_Q!%7+#8$TneccIFo9tUkwo=l<-z~O&O#H!lcUkPi`Ew7VyA+EA;pIJu z8#&xZVSz1pw>R$|v71h%*5w@tALX*CfPH=%_ua*N`PL=V&q4BwNRtpw}UTLn`#5KBWiH&o}L?1(ErLq(~#mATUXuT#( zJOT#s;bD>T!jw#O3FbvuoD>v`BNhF?3wEWldtR`I=b{G_ntk`IrZc-=06%}n6BGF7 z>X#;Wr4Jl=)vRF48kbMsJu-3kwc8A4C$G=wkDKOCJ#S?6?i;t8tN}_&7j|0K&&|)j z=!nC*`>t)bzsD!rrKpC4j6n7mx8Mpq=Ii8{$?YOnk7UBZ1O8oNz>A5ZC#co+Yt*rF zcwcF{X}jWx@IR*gp$Mjw2hu^kKDein9r*GU2Z#wzFK|5FNvngrhI!3%+1jhQJih*- z&9uM$GHCmS6bm1{B=}C&9{fhC%t#Y2!ahCG_e(Cp<+&v|olo-9$syy=BMQjtlk&0n zg5U*`r2?1c1OSjGhM+OFtta(i~4rH=+vUp z@GiIBWUMfoK)*ZiejbdJVE+YuQz9&vx+2K^PZAg#Pz4G`0X?4gp-FVIekq|DFHk}h zrx_YOABbVBL|(_Lr%qM(@5@zYMl1W9clRe_hFq!PC( zjD3cUjc3Pg=GkItD!L8Dl+j|09kqx5h6(PpFAy?85a9lUPWDYy_y^?suMk<6hVv#k z7T$DGaXbnGQbzV})r=z(o)v_Bys%yBp#O<{(boDcdRB=mI7$AQyt@B?_(=|-PO#U$v06)dQlz;lh zDql$$Tn_XRE*5<%Ig^ky-0W5s!x~7j_kWEqX}YtZ*HKJC`37;Ny(Yk&$a9tV2|ewU zIF0i0JdeNU3;Nmi*57ZjWB)Ka^)2NKF!Q1P4dM#EA->@j{5Xj)>HcoJ3cL%;P74l_ zuv4m|z4&*tBN$L(b$A`2jLVjZ`x>6$jzPqse3ix4JGP+d$6CX*N|o5NG`yU$n6?`o zGdE5(Ppl05_#%XYQa5504}j7ruTrxC;6)M>m*8HS@Vn`*c@k!$ zqu+pbFTWs)gwwM^BHMa@Cc&N{>cRKH?N7ef6 z>gm&~OpVS8AF>R(Y`%&8(*Y~5&PNYN-aB7I9reMB{Ac1txqp9?YQL4|)JsF|ykB1; z9T4zlmAxN+sunKL8$)B<5rI@QrqDlChM90X=~7Ji(7Spr1REDh4&p! zFrofSuS*>=#MAajB{~y`8M5O!{gO5AQ%$evoR;-0E~ChIX%O9r^-O9HVF-gr3 z3v~A*ruXIi+nJ@(^yX2TkK4KNbM`Yqs$1c%Mq5V7>8{<0PCTz0Nzu(lmmFi_{57>i zJQmXHjiceg#!z(UXe?nK3OUMY&GbrWCbI8DVQ_MC@M=qZ|IrRCdhPzc5r?NRTCwfi%6HOQ{I2kyZFiapBss6*rw~VK4DID{@i7 zd)>8#jONYd)(-)5nt5i z)$S&)<4=hj`BUo2f}l^I8r|lWh1Uu{Mb%IO@0sg6NiqxuUz5sSPTpx3WwYK_Hbv-#1V2z}E$q2M8k zCobz+&j>eexi^>Ex3%F~Ai+FAo!((I>GdX~L$3>ZSRznE$d2^^MHHsN1whxkyAo4; zwsRlBrSLi~+v*#dMT3^mSJ>)XK64U4bhYG0-*mIKYV=Jf&1vN)t;GpbUt$OttU5s!cX*wGCQ_NV zRI{-}+-Wwe#lwGemm)SvH%lUY&}H?Vdh>}gs0re786;|W-zEiih9tw?R#0c?W0GQ- z4A5$@4-_<6SWQ6<5D>yUwZAm^3&3WhAUFYQ*NxqG8Rz%U5qP^y^e=CsT{F zGXlCOsVyG8xYGKWqvW(jZ7em+{DD?06eh}|Pqp5KOxv8>SB~6gavFsd*^0Ui^m&l| zi{4T*TkQ?@OntHENT*Kdi|Oj1woB2`-?=^X)W8|ZfA24b`q zl8tLbLPWbpH#A)kR&C!z3v(T3ss+|hhCC9yYZB1J?P9602q>mx4`Iz_F3A^4Q)z0{ zG}HR|(4R^_30yf}3|egS=0vwnfv z(~C5a>)8*(*brBKPF=0dTr7pR_{D>y71=p7tCQVE*37TV^3Y$UV39Q4dXph3!F1E3%gB75V?Eoz%= zJ=|*()+n*0C7I@!{K7d@=2QL?6RsoS-^;U{Q{(PW_Yk8-+9SU);&D(j)6J7@>k3Qn zBBZk)TRv1gl3Z%^V0A5||QIPT68+75T*fBpGc)Qb7>Y z^ZCX?98U2-rdVLN+2JyBk6o;ADhi~lyFGT94iBdTfF;oZxS7@>=+dC=|&GkgmLD}2y0%Kpb1yz*~6~9 zJ(>YeM4hpIRhNx4{NM{lwS4M4SxsYtgvM$r4 z2aupP$DE1e<)mP$2)8Iq3=V1iT>#Uh$IrLEf`@`I%#9V8FKk04xCZTMuy-ZnNcXp1 z&Frn8ZFLSE8K+nc(jDwQnyH-vX>Pd_H?$S3Yn&GO%{2d0Bzxu@YIwC=Jx@|AFYfYb zNLgPn1@y%~X6u)m1Nsm1Q$M<*QJ_QzV!)t-ZYT66xQ4z}c1*c#0F(??OsCA4h_g_c zvFE?0j@6|>q^5AhGBPna9vexkr&n0?U}p66Ol11RpZ-{5O^-(-g@Q}(HJZ($aP`46 zR|QLRM>K2v3H$7Q{W#)Zg} zUj)Neh44c#qlQi5C_^I3S1{lD(pM)fBW7hvNW4G->5hTAd(2oQajgy<4@7qlZI4gyo) zy>@3Pn~ap*{UPsA$gWBWE^{KCFgcQeY|OF=pGyLt`*+}TVHuxe>j$(J{kK#Wi#;`C zuavV5vtBI@_#$?;f7zEzn=m8TlXP4RncE=&bIf&v&S6rSViso(u{zl8s;jV45Agcq zeK#qZ2fCyiEx?ksDVN%V#1knlvc*R5Ob!XF?A&izLm?Nwvk`m-CL88TsOu`9CWeNDX4@$FNXf`gFYS+S@l!U7^Bo&7ZLzf&)NzZkB zOCCLHOEos{3K$J8n<-}2>cT0T)on0(thTUDZ%b~w*w~uCG-%X1oypxFaU0Ycy~XN| zl)iPzAvS~*Q77{iPz?L6tFt&jXbGHADu-cxN@=fDIIQVvYTmEXHFZ|4T93ZsW}PLH zNIM6rp|me$R0&#}*SW8&zqu#we3>Kdbfq0Gyk~GUVno~PQXpcst5l6`t&bBucKAOJ zgZHkM{U6c`7lXMuBN6XCNAMiA!UxF52qe*06T|j4gWk73C-~f*EG5Yuv80miIeZe2 zD7g1?1<`{+HG&Uhm*h7NbF`e#-#k!nda%-tX~MaQWcy_?^B*r7N3Ik#f9$>Nv9~-Y z|60)I&J*(Hl9vImvIlkTo_<)l_ki@#ApQ0WvBK(H+9-+2}`r$iO}YqVZPH=z(w0 zAWAQb4|_W74kandAPA-is2PuN!&u!QvdPb4+wd=fi3#q2Imnow*uQXHE7JD3HY3A| z6TYl4jkt1tA9#Nm7!3PYcv{$5M8QQ1sOFu9h#w@tPuW%aiF39TQAW=jUW2GyRM}LN z;_;G6{n75gycKET!oJp%p!uU9x zRcP4+8#Z0S5(U=Z&G$J|gW5@N74y{Mq&QO7ZS3DRp zsbSo?xn+`wXEd-)C6@sypKN8{E7!K)zqh#~Xz}mx6qoa{iJT>B9ctE(O*D=U&o$k3 zgyx1K)rskqd>|8b55{e?cdqPs;dX;|9P^=6)%9j=cf+U>S!#c2cz2N{7lxYGWmQ`9 zsKM&-oC+No$To6?Cc@!F`QZ*Cz%?GHzU}|X^A=z#flrW-is=xPkMrwAW94#)04cV& zUKu1nQ-xM}BqJuLmc^4ex$uYjn^ui2oSY9uz_q3vb`9eA_MG0ny6Q& zG7S=T8meT);%ZIqCdlHC4yoySExzWZn?}lnI|F4-;Xd+7Z;!C}rol3MyT;1=<`1}k zh8UI~hQLp77nLLWTArJMwQ zD}fKul1g;5levP#0Q*+K571`7PVNS6h--G|D?#?dH{qi7Qb8dU{}5>p`+NppBP2(L zP$i!&NRgqRa3EQV8CbK4a3?w>L`$Xe=ID?dBcK@79?(=GjPn`^)V@N3Tq&4WYzKBF zzLf5cRE0{;PNb^!C2mh$K3H{}Y$#xC$jBkw4B3B_OUAtr;l;42pzW`1k5V8ln&CiT z8!MBs6s}B_Fe4XL9^6&ICzb6}J`|HNl+JV)1w!HA+6og$d4mB-!t(*dKg9i%4cH!N z?K{f2V$iwq-^fzD5po_{eqGb;8fZ`y&-3+TyiEiDCjluCl{k1g0*ZpLe_J_PwU^UT z1oF{PTkQ_w4WtU%f~F3E40V2k{k>~6W%mE3&^#=NxG z(`C?d-K$~m3?&*XP#nDr>J-@qW%azC%O@o# zq_B1B$Pq4DCCZevkgc*u%vF!3^$d@aAxrTrs0%=D5rtA%o(Bn~h`vM#rS*5R6np4% zWk4-E$3e`XHIxFFBT3PL_10ZPw2Tzv@e7%qLzi0L!W`Qt1#O*SOY1GmH;=dT6D6Ej zvc$i=x)VD{e!*j)akzH}dr;O3jqV;IMZraz_(9M^X0&3(atNCq$noyG+WV*2(8?)G zRB?k_A+YMfoB)zxB>5>50QDy{YlK{YD;2Wbiv77dP>Xe>e#*E>>d$=8pR#}QSJq54 z(xkDBR=4kOzheT&|089!W^y&W^`=8%>NpD1jGV)E_XmtV*WZ0VEsppk7K`oh%L zOb(qecJ1u)nNh5aXEV|yN5tny`cCz|j;}#_PHT{IAM3Z%2}$`3MRuX|hxPg@O261W$Eee9{H?!Fk%%HrbGFD?nJcGDpol6IKSbC=?bL^J#f+IK$L zSDLs-Q_Ydzgr`$SX(boT;hSwg6*KMkj;zyDp7ld{#sczz=yUhbQ^Ei${AmDBwPL;R z%lKP_z3S#U?EQ$k5boP0U2Bl28Ob8!Mh(&oB!oc52U3u#uT+F;+WFeT-bc7F?akS5 z{WaSziB$jM-24q4DcYNkjzo1x1sAla4^jcP);taYZub>i`rteS@Y&5FUjZ(*FLK`% znEGhkZ)L?@zaBS+lP=dt=Aq#$vi2Vijg15bmr#r-C^=WyN$4i2n-Z?Xsv@?U4CzJCS&$mXe(QDj^HDA7PCbgX(lza`<*y(sj?>14i9A4p6v$L{$dy1~&Y%h@g6yM@R)4=W&aFFZ!8kaT(pJz3Au%5r zKT?}KyCX1w$!XTK!Bna_-Q|ogZ!u<%|1kaiuaafL-e)iJM$Cw)8bbQ8ck+2V*IvA2 z)Lt$5G;EaB_g6}LYK(cDk%{q%iHOz&Z{~6E#ckjV+^TMw)NS#(_*VBAQ3_5-hL@(& z#Tl}N*JVga$+#a?m?F45$5thKPk}8JD@p;@ri5>RFF4Px3V$fk*6l}2PW~0x%P!#v zVMJu=U4~@^;cORZBxeV0WiDeg0V9DYE684XMtBAYHF^2*bQ1~IO44c~jLJvIbh7`r z0*@oKF8#o*JPgQY<}&EZM46?nIfCbyL6Po{daNOP(0cpr z%>LlZGs{D{rGhq6+fkdld3rgvI6Sl?x0)V{6|&aiKs=nZ2x|qM$ z>Tl%Yjat}JPKA=DLiuCieh0&-tYBhz(BmrvGNEv3V051LCkne}15$86s_KyBAh&Gf zas}Bkmfd1bM~wuH2>VPndo+kmG28a52jekc&}7i-s{W})bUs1X;kF&aGY*|g(-^&J z+*dUF61GAWvol?#*3SIfFc>tkwTfW{FbaG&Vp&L18EXZlJ&zw<$zV+^2i- z0gM}02^cqy$b7-zFldY>jQPg6aXw9)O|{6kdX{-H6eTP&-v|!rcwz((wKC_V;%PRXTSV! zr-4s1CK=ob7hzB0py>u)1A$B|>1Xj}{AaRu!7F&Z3Yw9((t{?ZyYibPAErIxt3y5y z$w_JN41ECxxUK`aX$j(#$(N}HqPS<9y`m_$N66Q$ZKfU+0TC9?fg+fTlD5D(apybD zabal#`3`bnBSqu7Hq|CH2zTAhR6=;MJibin$1-K{l)sMPTbnKpzMB1Je;!Fyw|926 z^~B6n$noV~;s}5x>V6^K0qT&)1j&2>MILMpWMqdZ5b8jJ4i|=9TS^f_k}e5(ap1&f zcJJ#@T8ev$Ry0y;lg?6c&mc0~l%-%58N+AMQYx}ozAELcj#-c1eqYxLzBE%2f)0Dm z-My^O&y-nbU9d2e3D|rOw%MW%Y5&EyV}*M*?LSB)V5?_o(16cn#Yi4GD4k7*?&xz| zcIV89-rsrAbeeoN4*OrMHNZRBZeE>B>gU020FsPw;i>l9&5Czj+c^o7$Aql*=2gRq zC}V?Z1mCCrNof%F31BB$HIO?3o2HQWGoAH6O& zb<^zl&D*AGrLt{cxfC3oj0ZyIu%$AXT%M13gWHe#lTLHEnhL-}vuD|_BKxi$T)BOw zc4~RyY}7Y2o+vIC49H8c&P|)mZl`;&mCY=aGmUi6>^xo{T1sIRKme)N7_5-HIrY@f z=w0Z-D)wn$m9iQ`%a#zc?PBpqzw}Ar>*t3S*i$Vx>1O&(%w)xH0;Pi_Ccxwe_)Ylw zw`brhHruVjVH*Bd- zUF)v~whub;OO3|%L04mU_C0woa-ePNcg~O9dG$#1s^^VWj;@XNZ-hp-25miJo0l^-&nkfHEItWQ`XLtu0%{$W37rIhj zd)o0rCKyawyD4U!ONUDOU^x;U^Jq}3q6xH~9xVxvw7wh}#5^%}U+Wz@uR~|Zd&?ew z#F?$Ar}m8%TtSYwdVv)07W92{k|rkZ_DrgP(`z$541tVn1(hN0;0!a=7(&qJu5(}pnmam@<$F^NRohbPXdf#9sSq_=h z{lP)&%uV-AO+9e)+${c{#NUgBou`@;w;dWP>^e1^Ke&4uN(NaI_|I8y#{o`M-SzD1Y{p*RzpXi>{<0_LnAQ#LnH>&n zyQL8w&oH0O7&aOsZXqA?)GHBZVX5wG&g>m7Zg--VJrsNot%-UN>Oj*%+gDb67|xXB z-w=UyH(I)IEl%P=rWZbdB0jh)Ev@3&9aopQ*Q3)JYr&~$|MaLfsn=Pwg~=FWj$AxY z(CM}2urCrV9b1^Zb}Tg8y!y!e^Q~R3kI(3EtqjMvQJn!gKMki6^|0S+4Cze~Sit#E zc&QfOHRGRYm~E%0w;hN1E%d=_5d^G+a>x6wl`X`W9Dj<{SDkdg!Q`**FdbWip zuNn{SxXYTKiiS#X;lmc4$6&PS^Rsc!=x|bNwZzyiPyXGSKQUO6Q@e{hZvYG^^p$Xa zPOO?woP(Ys4pIg#k--TaPl;D5E%BQq{3S$2CKwgSEOO|^k|jQQ^|q1ZSs(&%&v zAF|SIdS=WGd571Ad{bv<6PbRsJsELjB6@=-V_kpv`oyW5j*aFgB7wqyQ|C9B5b2E7 zXBVPopN$Ezsr|L78>SXAQ*qDONXj0zC-&~FVlVrF41XRS%KVDtL3b743~6qUQ8xQ#k=!aSYkZsD7x>z8&IzNyZkIgo7+g39}$HtS* zU~M)!f7^7qIlMiaLdDuzbbtwsbZEdcW3^}JD(QtWNA6U%vNY()tTf}3ReNOHa(ZSx zyTC?r>D{TwYG`nl-RhkSRvW&&KeH^$FPm~|GDZb0j9Y}O)tr+7nt08!tU5gw&e>(c^FeqZYw^6TH< z;`PVaEBWh5cspAD`g`Ty|8xHPkFk%mzJZf;v0~q^@ZC08GDwX>`I({*t2NiO(>djQ zV}db#0JXMhbmRK>ROWc=bNxXbgXzQi23U#hz;BZsq$tC-ZsDp>GDNs)Ayr5QX-!*V z!Js+ z4QArQjhG2Wg4$|5M^q$Pl2Mm`)UA;<265StuOZ~RjP4;@fDE*ToPx#GTu1jwm)7If z{L#c>&>eI_dIoi&xIGcjx-@#b&WBcHexKO^YF$BhAT&NWva1jsED6FoOOB`9C>)B} z)gG-uoesHTc4R@hBmIG}PNi`Y;TZkt7>EqjgF`yQP`XK-v{I~y8J=Iqe0h(u^O-s< z5yX~B?P2pXP3@bUuDAVDVr+~bz$;aUr86+I(GB5seTYrI_`uSgsI?}jE&lw&SQ43lKg2AYt3M>5cL;X3fzSIJ?5>XJIwz)~$K6^H zWmE0N98Zg>bS@^Q5}^TFRpFo5??uPPqODU;wwEVhb=kfz0Q={kvyR^8SX|SArhQ-- zX`K(#=VasU&ndD<>lA$u`@PNw(Rt&Je+?AXh)d6LLcpd9cW!BoSrB_6o^8UF=qCNA z(WW^OOO*OkackJ4HEJzkZ#2?4HokT=o1dJ_J6xK6eZQ}vmsj>@(UdJb5KAnLL@FVJ zMP~>ZO&F(&mhQ=I1vJ>r&yNn~9cI9SHM9OJU8~P-WZB z$z;TKV0R~JP4{g!~?_+++6=`VQFAs zsZdzP|DVV&77B}b>A%F=Sr%kZIz@j}pp9CxukKGU<*r5bo zb<@9qop5+lYY`r>sZ9p+V0v)MX$_e*#hy^=KgfUVT%VfhLqPei8tY` zYP&7sH<*1WTr?Z}VU{&VA{N_#AD?f->`awT3!`n)Ws70-n$0y?2t>3Rp&vsvbsB9T zZ?ivsvIBdw=v;x~|@(evsI15m#A{8x?$2z7~H9euWf(;GzO z>hr>D>1Kl@$rL15(eokpChQF+D5JmGmF~^Kah%DXao&))KKc4s z?R5ih*kW&pCamr$X>}!ObtU9hvA!BpvG=fB`JN$1rp9h%sxvpxehuN3jm|4W>~FeW z5q({+2v71?@GbJEp?ZQcc39t;jcbK}*r55K$mLVJ&Is2(a)S!VLg-co*D1_nzkTZ- ziwZWWh|z4k{q1j3kwVC-)mmYfCR1y3`TX3f@Ju3i#KP$b;Kdbfh#XoD~JU;6Nd=}iJ8TrPNT;Y|9 z_y@niHCI}aMYwb5KY(;(3HoWe*v^$}t7>(2*y9<_8miZ>1oL&Ds20?@)uGyIUL~ki zzIwj(bouIq(84x5$PO~Xd&56^?h7ilKqn)Dpbhq%dggkR&)4x5mW?0sv*}z z5kgL_u3p=EdXd?NN37+hud%y=_muZET)A}rNZl+f7LF_y_GN0x#azw54WwVqQJ~2U z#_q>`gW^2kz?=rr2;H6rX*!NVJ2A7}fdVT{B{=-gIQ@Y#VER9&ZzV z^{i!46px9E;2l|?gLgj6qh z)bR76Wbw_f9b?28*_V^x%4CU%iv#mzL00*;o;p!_zpe61_M=kkSKhx)J z#3!r_X*cHP_t;bP&KTZ#z4T7ydk!`~@re;;wl<$)-)pvh?sz2#1rWg*E10P z`13{GHTv)24}0nd_#ZwikB@vKe;0qxkl{3c4IK4)eE0jX)5y%1Gd{`8BI96El)A0f z+HN};P6SH>Z-kz~e=RDOue#&Ga9o4(Z>!UcNzsC+RttNN8uGiQQ4hEMj0Gnwtra?jLqf$5d$G445dK@fhas+&+EdN^WrP%@er;d!p{<>tF9kM_q!} zrT1rp{f?8u@TvQkreF5Fg^{bzO->vh@e9lptfuEi=2t4mR*D8=e9!tehb3ssPR#m` zylAF*^xVwK9jiIdU?MO%^~>QyCkK#}CFG~KClYDO?DRkbz6U2gg0=6*+9jlz0t_94 zi4rJe!G~;#47Z|i+lq-!QJH%8M_UbELcx)^b|^wDuQ7$_3V#H{Y(LS^oH zUuJqZuyP0{TW)#GtwI}Clg}KC_Ot07qA6kzHGHC0jOAy;fp})o=Qetb_2mR=RQiik zQFdeKKqOfz6~YK(Q_ndDRQGYZ*#{hS;#hD@OgOaSV?uN^Rai)~q;OU^h8BTu&_pLH zL$k4G=f%6&vj9@aO9&!r^Gx4v-V;^QS3L+UHUL;V|6IN`?OP!?a^N=uN(|bU!+Y3J zQk#6|phY=YBr;=jeJ~pI2F+@XF6)kDoQe8~CpnwXCp}hxje{#qyde_eZ_uVZfQuN5 z4~_X!Q`v#IIp8j@G+{GV$41;*{@4G>PDO)x#+*T;!EHc0=9Dv1$;JA;Bik$4wRmVE z7@8eRWhZ07oZtu=jV`^_;Y&H=wOrih8Qosa?1?*vQbD|jowOvZ!ND9HlK!ZT|AY9c zwDBqNTId`Hvape-BJmTgougr!F@6EYHF*$7(CHc*!qq1bbW$hmZ?1aVE#s57K78o# zTW=nly7evVyY4+WSU&W^T`Mm-QYjz4Z+-sEWN7^GM7ZH+D|6bJY+^K?m@6fhLgm=5 z<;97!Z#}gCt5<_R_bn~me{y8xYry4;#F98&=zLFpOPQJq8|)`wffGatYf@QR={ zT}@Xf%MLZnkmi?L?L8hJ1_?%|rXmM#5YU7qW47zVVYlrDliwWnYgGoDkqrl8MNc$u zaXEFS%dh{X1;Ls-?~Lh$AvUuX9LgBgUQ4NHVFi8ET`l#ix7ibT?I-ShD3j2;V&`DI zg8yfjPvyhy8SPt#bpbxlINe$gU<@hIs19uavxtrr;tu!$ zx!I?db_Jgxd~v_p+OH81%xA^dJ5i^He-__5oq(k5r#OYI``SJw&ao}Vc(FX(^wl{|+oRlF0`BAvsiJ-|zdim?TSmJ>&449y@rJ zeLui*q`~kSdzYAmCHC*!68m@3WB8qk*3*4|1?fY-Bi6(z;XzgFX_fZ3zX6?dcxPD6^PZ%>6ciGHG=4zu!+s@IqWCG5FtDZ|tdxMUHt*^Ll7p(PCbe$c%^~SOC z@NE3#Oz{toRCB(`;nwlB$;lPX(ut2aZ_i>KL0A(%5q?P(QR`r#2IUG#paR!E9?8@u z>zc^vXe7XlP(u(8+9%b5MwE z!|3~i3C~8XSR2Fq&k9+TD zK6iljJPTT%5&nxL0Qn~r{OBcis|Da0d9_%vpdR%g=1@bJ%a7Ro z6G^o}M{jRE9U5>3rl0vQ4?JeHnI#@DqM7zASus;|bgs#3qEl;uBN$a(nOiMi5yE&j26z0TP|zb8nmz z%);}KQ-QitN#{3V|4J4O_hDf9fYk`@;tB`{gywalN1H>(rr062YnRlyPa6#B%agv* zN`5U^DjX}ZSKX_hx@mdtd8_8<-Ktv~3?YNJ=+gTP{T4M75AUlU7#3JQS)8b9? z)fZsTu>Zs~9b`M4%QVS*YT{z??ef68Ad0jeZH9ALrr8@A7hbV660lmvm#WTcFjR3> zmnQoA1EWi2S1lB(IZrtQRv46irz6m>)%2rf;B2`WZ20C!r_BBR=E;$HUn4kLoE;rE zna!petZIiPo$z=PX^W$nLwJwog$m0_OO>I$4gG70 zR_Y2ULM}_0?CFfQ=}8aO0dq;#IzTS8ktSPIqg89w8mC81ZDF`HgL(0-^_L!Up0+Qu z!}fjly{|l$IhYl8dS_!(gU$7ZiLDN{z6B)|sQ!!lhLx#%^X1B!>#ftbF0obCAGYjT zdch8lKmXmzwp8PAgYCexe*AaOzL`;)@Jsek9QJh`)HSh}K!N33(S+uczyrijd1`w{ zHfX7F4L75S#u{h@ev`rDP{6J&J)q@GIr(U(stwhGF z+s~M1)x$Tp9u*wte=0bvrQOZwkV};wbq8yW@F4ngrgsegDChMKEabCeUeTQl8j=%Z zv7!9Fy;HYrWAPE8etMXJF{M1&0cd&N69)cHU0ZMRKVVnT4cH2V!i+)n3jRa#P6y96SYTs|e65ZkGVXNWp*ge!(Z zQS#NuJSV1b!8c8~&}pZ8G}*4_&nMs*Pf!xgrE_pNVb zr&|w8VbbR?n(W^fn)4j{16Me}6+5B#_;zs>K_mh`CRrdcEX0rpo-<)xk|5NP%J zFtmJ9XR+xmK9;J*-JzPR%L1z!7f(?rzZsnKQ&a`0 z!_b0jnJdI9S=o)5Y*MYivEt^%ef#&f-e!`_Ry~QhBX#DoMzm^7I#O@Q)x?=Y-|kbE(WWQ)Oq~nZ251cBJ4m??xW_A^L99MOdcB*9J};ESlcYkoF-lP-ZGLW z%ZR~l!5Q{4q~r*sV3r<$RD4_Un(yJ9G(g?}{2wvqXDfsIck@dC|0h&kGVwO3^`Y4u zHadgDsy81g9M+k1r+0A(D>h<8UieFBpUTU$vpKLvlLL>DaE;ft6}A#WgTGzR4) z`w08|A(JU6bkj%s#t%XzkWxPUZcK;Bui0lN7;SH|r9psX;*E))kOTBJU{x??21s|g zHAFABU=_x=qc{!Ik7vvZ@LT;v2nsRsyxd2$gXH)i(c-V?87;?1iM&CMvszd=waoEB z)UlfTCOL(3$7&t8$0LjsHlHD#1^I{Mfc%4Y(nbC94-2G|C;&z##(f-EH^M{vGCehT%(xlfbdkn@NUfOIQ?(?d$BNw%1A&|Y9n zWX^BNN5Z+5xTmGy^c9*T*>J=e>a$xrqjP>s21L6k2^(;kY!kcjRoo!jPvfg5d?hJg z*~AgijuDG*<3(BZVYnkes-4%$4Z zEd+Y_H?kMGg^)*7!?c=Xy!d@mlz)lQV;6arUd39%JeH!hL4*#|1ONO_ca!`E zk|oc+`1eGV-(;FqD|ZL>cQVTD{LoW(!g^9AqvFX!6uT-inK~L~zS&fbBJM3VMEX_i zS~xc8aAq{^9?9qW6PCo_zeoPtx9=_LO}> zGJi*|JJB2MEk_n?Eq1kcba(FPUNG8u(BzfGps&dw#{8+gGwn?l0x54t7;E(^c-+_M zd+coE%y<@~Zr2iPg2c<9&Wt(2hfu8Y&{NkAwyny0ad?D}ZY# zHB@gUIub0)Z>M6;7C3fA9tn>!UV8h&5A{-O)a`7hq(#)$6XK1IAL`xHgAxA!8DUMC z)kyyrG2`e#R>|D*H_VP(ujmxj`sm~-BURgAnOqe?JEh;z7Zklt$mr#Nm3)HyI!+a} z>LwIrj^0tNeU9H%CI0ElHRDAUMhgNHl->*tAfmRQAo5Hf3qbZOw;w1sPl{F^Yqh}0 zEmylh^18(b&cLQOOK{0(`yxf>UpJU)AN#(>*6?4RVyL762ec%Dq?zn9yJ2;fPZbI{ z6bfg!{IXfTQx_44b7A`{SR)hT6EeS@-wJ7i*dHK{s;)LrId%i#1+$;f*U)gVlr1jnRDB0uk==h~4gR8y1QJAAE`S-Dom?!%!@+)4wfq3fNE!1}@#n(pLD{fna zHnKepmZ|df^tycKjU^#xz;!QcI_V$%@lYhzztQ1tb~KQhnt<1x^(M?XJh16g113Yb zTncFhObd>Db>rwgLy-ZJUa@ggqz;!a6h})VOTY&!arM}JJPJOjfnWYIzn#8-6)r-r zZ)2IknLM48pA{#2<$Q8QhiB2S6?r?~^Y1fxJN|n2a6GZDvu9mAyDo2sZfkOgcDG(@ zbdaB_kGj_-svofuiZGVHR~TtcZ|o+dV+>dr&Ub7`u|8W6byPJbYnT%Ae;YT@$1d(D4blD@EwAfh+Se{p zq9Jk|uwH@hgO(ywKi~%SIrnjtS9Oqc6&>Upc@gJm)$+Tzi+KMc${Q=?_oDnq0h@4S zh;U=v0FBJhBgSUy5okrF6y6e)TE?)HqI5gpM#WRb;0WCUSX8l004sU{X%8$++IPuM zp`IJLPa_}ed6ctO>N$bT0eb;Uy=*nqLRb9+{jstdLWqr6qUu9)Q~RXVINxfRe!h7D z6?)`!dPz9GG>+Z0=7G4yR$nh!1xa56nX-~S>5pCe#FM9c+T}}`aw0RBCM2;klUki! z>Pgsa*|00+FoXg&xp2LwObf)G_&It7Yr=rFjo8H;IAt_fK(3VY-+jLAnZJ_AzMIH? zf$R;F!}9$>`PgHxT>!5F-=~YoN05)uJ1IpKp$R6dI&{DZ*)Co?3-dasBm%VSu1y3; z7hflxAH(r3d4m5_X5$U1YjU!7rdR+W(OD<%okn9yNK(S6(;>~EGrumI9nLxU zuMnHF4j1I<@Xvz4Z5xR;1ya!F15HuJb-U;Y&ZJyMye0IiQdN*5Y6c#~eWE3}l%Uz^ z4mY2zeA1DG*PBdwks74($wnnX%ZQ|Wo5gObx`q1okw7Bl^~K@O$^-%#_Jgty(>Ah& zH!;1o1eUI_9i*mAA2yf~S{wA~*3!1Uh9F{ci74F1YX1`6*rvWQ6on}(u_(8*skM4< z$ZW1L8EIR~eS$~~xMLF2Nx3BLBA@4@Ts@Occmrd`92kgsV1MD=^U)pl&PHRc-6UVl zm5|Cz&^9#CCFxt-g2f#4>URf@dIClr+Mx6;OFjwguwqJ}4+JVpVV!#nyq9l!FKL>)k%0YEVgHy z?JO?8;B~bl1UOJ=GFT+RV3lajkqrjheNCB2xZvp~O;W&35CRP%gDye0kb5wHR`gLN zEvE9LTFj%3wUFFnUF>nr7EnoLUhdiP0S8MtEM6w_e-s-%YNw`m@s6a4qq=j3C}<72ZeZ zCS+#=BV?t&QSuOfJKDrNi!(bZ&bdtgab|x%H}|5gZUgC0|Wy|eOhhPW>3`~O_=C$NW{>Rvig_eriKNxCR4Smr$>tb2BLSvouWJ;t%~EvtFEg*24-t6Z18*eh7Lx&ma6lsk(7qs*WlccU+IEarTOi zljr!;z|M3dw$=NK)821C=lBOY{$OhThUCMbjsWs7+{%BMMW)T*J4X6~Z&A@4vv#M` zUDlYn*vA{Cwxrb>2w1JjHYk#eOOJq){$w5rFvS68am-8=BdFGW9+_qbO5LNV`{(o2 zJvGy_>aLb9qgDKOrgRCT-S_g3{T|$Qmd-X0x2^6CNz5dM$}ZQMcLne}*5zv_ z9>+0)F zcbB!eE-Q>k|Bwwe_JZ%Hmf9{`iN;{upn1GB>tGiGZ*0Ft&~=Qj&c3 z-s8?c6CdHV>xYvMJ_tTnv9VxF!{Z6KVkZGc;1%GCEd;nwdEUmo#hU;Z|AalSSTcaI z|E;{Q*dl;&tOc;1c9JOl65xfuJOj95g#d;>S}CvC8-QW*1Fl#RfDt_nxT5z1hLHid zqP+t~qyU3e?G!Mqe!vyo67W(6Ph6lq+%f)c>_h#<#PjsG7`rU>aX;sGvJ-G~#pfTJ z9eU62yf)At*$d%ay$kowgxJ3SdVx_z4-4n3y3AV$w!`)2XE$$%c&;XkVfKWP2XWeP zh|{1KO**=byrtY>$es%eu+ zVrJy!nEW!XrVQruXe~hsVaIfW=G-NRZ8}>syJ&1WWpH(#9VPL3^%qFk?3dIp*zAGB zkayUb@9g6PQUU@*-{B(*j&Pl&{Kg^2iW$negYD;^v> zUI@9BSSAb~kw0Qb%EnOc@8rH{(yY?ieW!PxMgo0=2wOU}bk1y@8t$=N!=}!hKc&M@ zFOlA%jzT8)n^smjx%Gyv+i{KMi@e5cPkWSvjfn zXyTK<3Q=#65Z=SHO6SeCR*4h%Z-W2SiqctSi#~d7D4EkZJ-c#F^@01&t`;KmDj}Ly z&8{k&JjANsQNEqlgu9k)XIe4-&&Va*eli%_v#gy_4VpGW(`{lM7+LWIQl zR-ZoZIaJ4w4y{93Dspd0^RLD?>~Tz3)-D~(_UmF^H`jX?f9+d+_K@e0r;>ZGP}-KC zjy=rW#Tv7vP;;kFtJcw#SC`I|nx9xo&El%0*9oJ;>A*@J<>FD}xQ0-ctJNjk545jx zoXC_NwLkywKB0U=Me0ERec|X~#bSe~e@fZ;^SmfqrwVb0c9%!hYg|(8l*I(-2B4GS zHj&cR{9G=pxFRE2>|A?uweZ&(!~^Y5S_R}ySvgidLh5goiu&5ORcIAi#nwdJ`f;BC zl0{d{ZsJPJMPe1^8u1|J!{Twwzl%>XH;HdCw}`!%`^5pwgW?$G?`WHp@v<>yQ<;sK zCkr%Z@-ocvauQ~loQiw9`2pr<@^j2DWG&_{ zxeN0UQst|B%wko7d7&DNIaH0n9HmMzr>d!#m#b>bxoR%vBDDl_nOcUqLao63 zQT>Q{K>db!LY<@(Jr>$XDNZycoG4ps-SE_-l=rDU4lPBz+U(FuG*It5v?V&KyByjR zj~zNfw3LrHbYu`+U#5wrj(r1>D+W7s z6uMjD(2YbSdS>&V6tJgSMWW-zUdjOfQU&}=3$0FZ{CEf(@6aLm33q5Oln}#2rI;m3 zMTO`us=3Y-pXEQX6RT+7}2i@7fsQ^hp=UI;yzyBd59!haQ^wSBdiE#|;^ zXZ~}Ds|r7}v7H0gbD(E()xM|VK7`y35+ev#j$0~sm2grGH5_UR)Lde%BBfNvhs|FZ zzUG+pQ%S!9KFaWwivMZG?{IQ6i2EU=to;VZJcyVk8CxAgN8Cnntunmn)Kf(U9BQNn zadvLHer`&|74WC?R4OK7YCh+3ulY#DPN$nME;4jAGD-a(N~o?}CyDt+D!RP<(i{Rk z)ucHPvx=P8kS8tK3hs42^9_gd;If>%QP@@xPpRuGRkRg_CT5)@JIC!Dn=<^(bjvxA ze=T!e^11}H9#x4M#I4IN^_-BM+^`p%qd9eDpGAJs`F9losyi`_MpKJL_kR=1FjAjN zeswuixqed5NvRO7W;?mFH8@pdl2QhLyQFpL`87FJ3?-&YF`bwvkw-1P8dI)XceSpz z{g<+w>Xdv9y3mPGx@L9e8Yru3XswZ*-E=NEkHmFZ1++-#O>1fux~6Mfur3cKzq7DS z6=`maX{0SgjJQ}lC0-Wqim${!>4|=)C$2A(WLudn`^Z7^VmV1x$OUq_yjk8OAE)yh zt8Sr1-K~yU(yDI_wJxXo&}y&p4&Y4d!F*V;(5>Wh37}lZqKn0 z84?*18`31CO-Omj%OUTEYzo;LvMc1Mx4-vq-V>oAp^ZX&g$@W^8G1|TJ)w_>z7V=0 z^pntULw^oE5PC8!GpuLWona4#JstLAy{7dh)SFpvUcGhUEy63qKMnsrd`I}9hzSvQ zMf@6ZIO1$%cw};9>&VQ=UXcSLM@3GItcY9?xjOQ$$R{G#M}8dnO=NBTR`nOuUtWJ# zgS-Z-8fGp=c0}xi*qO24#&wFj zBkqB?b#d$C-jDk-Zd-hKe82eN@#EuPi~k`0%lIGT_r?F7pc3jQBqp>-=#T>+OZZRTRht`wB^v2x3_$t ze=eaR=Zm#wjSL2=GK2}{aEXxZA6=hHt}tmx9QlXYn!4r zL)u*0W=5MU+pKAGSDVM%Jm2QcHlMWlwoPr@uwciVm5?uYhy?N_(o*&(q*YKN*03pzaA;dsaP9Vd3Y_X2rA$pwQi z7<0jt3l4Sa)#)#t9`5vy&Ye4V>0H?PhR%0%zPIzEo%eS>*7;0&Nc!0Hsp-$9znT%A zF(Tuo%x0N$GGEPVmsORuCA)w2McIGJ{yBSZ_VMhqIYV-u$&Jh%llxMaPF+6j+NtaO zyzsos^4{u})@@n0+V0)D|D{J{kC8pz>f!5|(KD~-9X*ftD(ZDdul>Dy^}eb1kv^C9 znbfDU&!+s;{CWAC3fdN|DY(7h{({E~o-a627*g1%uu0*#!s&%q6fQ1&yYREZErq`p z9xgmv6kZfxG_7cJao^(Gihn8ISA4XjpyaP5NBS1@y{hjMeb4su_N(moPQTClecQiX z|AqY@@Bc#oUk1bsC?4?F0Xql$HsI7i@4#gPzZ}$YP?tf4gTB7-f(!F5y!OH`1~(hr zX7JR(m4oLFeqitugI^fZX-Mvnc|$e~O&)sH(2p;Qyr}x3*M_AITQ%&aVP6f8AKrX; z$KhRuUqAfk5nV^zGGgb*u_I568aC>#i<@6ubMbeVyCA&r!jJ|2~cVmji+&AXu zOXDsbed&Xjo*X-1?9F4hjIF(_%Vn!BtG#T`Wyi;j828|~D{GACia_n^Th2FcTYSt zspq5zCLNsId-CeZpOv*Ldwhy#O5~J;DJ`aSm@;X~Q&V1;^7>To)R9v^oYs5V)ze-n zk1a1QUpL)5J$ici^vkC&pML%HEi;^APd`|QE9C(m9!`{vpA%w9M9 z%h|tQKJ4;!m%nuRS5>{MF0Wctbz{}tRS#D^RrNyETUDP{`Q}8-Nu1MaPUf6$bNbGi zHRqN&+p61D_oyCPeM$A?>IbWzss5^ZYxS9$rZt&0#Wk1Il-0ae^IpvtR}8=6iz|Mc zyI^kZyvlid=Eu)(IX``VulXb9-#UN)g5?WdTJXVw&lh}qW#X07u6*sPh^xx4dgbc4 zs~2DW%GJjfj$C-z!m@?47QVjly@j7H{CeS!3wJEszwp??v)ANZ)AyQ7ubFnuwb$Hq z%|q9`dCiyC?6}6aC}B~HMKc!Nyy(G2FJ0T<+L71Zf9;Fc{;{~r;>#A_v-puE(M#4X zd2z`bOWt4d&5~_PeqC~6sa#rbX``i0m$q7Z!P488KEL$WWl76=FB`dR*0N>Go?Q0k zvM-nYwmfBd(ejIyFI#^1@~4--w|wgg&x&>{a#s|txO~OED|WAJwX*-pSu3AfxowrT zs`09%r0l|z)D84}_w#J@5>GvwSpzt`apf8e&mTF z(u%ekTP>`%R<3ocb)WUP^_sQ8lk92X>E>%5H7YeWH90jUH7&JuYI#-5g*?w%sgM9*|jm1lKG zR7i42%aBec2aCwTedHh}H8HhGYO2XWW@_G_@8<)Uk^BzokbgRo+6^p9zMJC>_5+bdiG->&M;4L<}){# zOZ=UB)rP^n0>)JK7M{1w1y{Gol+81jxYx~s>s?F!$qqf`jZ?}K9{q60? z2=V6jl%g&yUl#yc4s)%X2w#y#cn!iE@Ejt7EoeE#?rc zcq`FLwpv=P(GorS(k|^SW;U#jXiYEM=3LXt#g!Q;>t^di>tkz^^^IqP=Y7vc&o|ni zXEWHUsgTtn*N5D!sXzaPRQugSDhLJaUkGXVf9g^7tomNPqK;T;>Yr*0`th-P*$P+d z)Vt~_wO&1~p0OHP4Xh~jyxK;7lbG*F6)mYX-5CECGX@{QxbiYFj&bPK;u`AJQszHy z6b~`~@dUFUz|2|A3)yg^QYb!zhY|U0XtXTDs zdf1v~HCI2W7p=?HgR)wEqwZJtsRz^xBAT`!ocWq4o_rHUQ%3l$7_WEYd7v*(h66+k zM(CA{o2N35Gs}u(RDOrJN!%)K6HkhTvQT`;$aw>EIq!>&;xk6jJH-!ToA`z2>NCQJ z8hkGsGm=h`sf?yuTlHn8yhsj|gXIu8g|=lHEs&l8ctymCPefz!1)95AG!tKoCgMxc zoY|o?@g2`MyP1R9N}IGpWQ#p$_>ZEeIKnf|A<>)pqF&;tC=w@m_Wna$BtyjzX4?9R zvtlT7Yy-t2yi5?KGFePu)SoCOF%vmY zW{4@WnV2in#Z@v#Tr0bYCCq3pmfgiN*-NaH`C^6aBbLkF;(FOnTqpaAwX#G!$o$lO za*ViH4iXQ@vEp7iTHG%$6_3hN@syk@)`{n3g?N#fs~2RYEE1Q?_Tn#cxTq)I6t~C= zX?c%}9^$YVDeLoGcR(zVSz?te5I0c&3&jbm+L~icw`N+itSMH7Rb^FLvcEDv_NaVJ9+k)Bab~y9&~i$pl%+f>RK=)R z70;|z0Rg=(pq(%QCCVJbvLt0eh^YA64$+RGgHBf%42B~8CnYvJZt_I6ZYKZ(o4V7Q2i{w{onB1&} z%dgc4`HdPWzg45;cj{vKy}CqhQKRJ#YK+{fE|ov3v2vTbO#YLZ+@I8Vd8Irlx2p-V zR+Y-1)kOJ=nk09q$?{iKCU>eSa+jJaUsk#D9aSLrs_Al{njs#Slf)x(f_O|$6ph3O zJfnUjBE(ztYVR;}`!4g`?=e61HnX+s>91cCq2hJsuHInY_*HtnUwK;JC31L{ZO0RB z2eF+wjaqSm_*t|UKZ(K8BL*=CRw3Jn*|MFOCYy`tvW1u-TZ);ol_+P%tx9$f)$#&S zBRh#JB(qbpqqtoT6?e*E;x0Kt+$~3mzsZZmJ@OLqS23jl$JJJPFJIZRa7!)ge;geziOsD~F5cK;I#L8SY zElLP-i9}WnY1tZ`$1VI%+(OTB({q11PLGMxALEU}Q_y!mezf98Rwn?RP%EWh* zCe4~HHX8GdDOIJD#LF|wr{TE z+TkTGejhgF_n{a;Jk4zU2DO2({M8zDEBCjldrVx~eFM1-BfN%AL-Q9Yyi%`tG?bTf zcM4m{m_f&CyLS??nt$seYnU~h+>W%yFh4cHDzzqBmsw-2@zyx&Vr!H&+PZ}BUc-ej zTIwCRdXre* zQg5rR>YzHU&Zx7>$B0^5%Chuo17qu!Rx8GRZ5a8rW6alq5#I$?C#$oSZe_qrxRHQh z6X5w-WDDlsn@#V*P>G4l!anqK>L#>bUxy@e}JJ>J%|Y@ElX0kzGS8 ziVDgu*v1ndsi+579liYq;HkV`Zge2~?$!>m(Xs}|$prLTX6m9|r?g9ZD{ z7721c&uYJ^nQE4*P?c&n>s(c8j;dBQ>Izo7=BfE=fx1#%rLI;B)iuPGz<6dgqZl(* zaYrg4j8*EX2vuK2FbgLEW)_OZ%4RDp}MI$j*@)*zSa?>VD>EySe zzBi`1ck@nZvfg=vEMU~8OLGNd#6FA?{n8=F{B>NXh}*9vNQ@D#OPq-hDHX$hoh3ADyZ zQlIFC)-6&lT%Q)FWw;F2=6}SUB+M!1*}bwJy_Jed?57_HZ`>Snn2_X|?INM>r}5%D7HpDP);>)N6H`D=&nKkWR8 zp#0S{`O~#b%c2i{Vo60yNY_QLRlxdou~lOAwfZ@JnwU6kA6hDAJzV<@&KIHWa+5~> z9jO%_#s~3?Ny4o`w6(pgftY=)0jAyUkJ&ZI$57*Ai19)B!S98}2jzgIdN`cu-XWg8 zVFYRP;~A(2oTr->F-+GywM7AQ4gXhov`6czI`TjF`{Rg#FHDZLY$am)d z3f42egX&6=qh1p2&x-@NY3vsX29?nN8#pQQ)a9a;K}X{JoqYZqFgD2n?VW25&v7}t zd10>5i69O%)AkPhbbIICD{t`mG?<~uaWN43U(wlmOkAMOirn*oC$0AXm!N^`pvvKk zyjU^NE1-js4`1iQdeNCyCiY)&L^M_Zo4A*G!#$#2UGV-&gj$B4{uw5qW5Ea&&DH-A ztWc4v3K^3%6s^yTk)nS)VJ+?yH$6>#P}ZbLv<91elV6zI0x&v&l7Rh3ef@`Yv~|0h;E5Y zS|YdB|Cg|8h<_Ba=_5i^Z_!4+MIM6jjYya0f%*WsB2&3m#MXrx%llFPoA5A7X(>YM zLM4(;B6{^_;0-?&jD_TNHGJPhzHXxq==NNvo}vG=bHJdtFyQ7ESPz=czApJPnAmzUZxH zalMl;KZ;oEOA+Y_f!1x!D};GbBspzqGu@6_*&^0cfIIe9J>vgJgjgGV$34#y2kEOV zv=aw;3es)-Yxw&Ve2W{;(}u@wq#Mq?01fc(=hNSQJj~PbBg6}zgl)n#hmlr}HOzNJ zL-S%}avk>D$h+<%nnC}}RkzL~f0>tgUF@JKA2|kF2jo)?>(*E?X@FfB&l6yEfQ25gp`5qNBmb z&h;Y^t-?&bj1O*$tP4bh+)lWw=?{X@Q8Xj|W@`r!-PT zyww7~{o%8p(>~6kt*rK)(9pbSnW${SPr?6HT$cl#FD(bBPceOfZqu9L2K;i=ZL=%K z;I@u@`ekLV#HVEr%f!Mmbf6)Sqn*C;32 zcXT~M{)&8p+a=vTGmS&~t#!L=+TuR&T|=I)0e6rNZwIRd$TXAoTI+}|dw)OH(b1{( zrvBzw4bkf|aj6=t^;Trd1-zG;NPat^qp9d(Gm!x=IdT*7%n{w7J5dHb!CFub#(-Qf z5nK$az<5o|?|u8NSjz7-?M@5Yt|ZY)E)-o^ZAs_t_O`4H2^aT6&!!!p&Aj+wR_#u+ znsie1Vx_1z<(-GWLROc$%3nm9+{!A{VbM*lfzL?d9wgFe$Ko{zqt|P?$zs-xip4np z6@J1D{j=z$ibYSJ@Ony3pArKk?@NM)tPOcUI6U+RVVVc|Jh&76t>Ov!C!XTgBY!XL ziC1LEt7((3#%(w=mLG{Oa-459>GalZht(LlJRvg)M;GhTB3jli(#4ym?xo_)SwR;PPW^aP;J?Pz_2-~BKyA@~&{Bb2i4+lD|KfOZe5%NZK zbTj3Du~`wlK;BH9zl-};)OTGk=0gt@J>=i059QFEL2u%C-**C?>`A?k*KIHLG?SST z^Yh(p(zS1bOluxDEyYL7?O4(yLzv+SrA~dodUm*skdd;!n8+&ZQ_NpS$ws{KxsEmQ zR>+#wVrDa=S&?lcV`UuDYb(lF{Z0@c%0$*>lUYY@B0lCBJ4JjVo5@t!T&BquvL(4_ zM?LvNww7&JX>KRm(^GYj9a+8VNG;n)Za!sY`Xnp4pUVu^pR;5(`O6WVSXb{NI-9li zZmjFpGHa3{d$7*li?!e0ratWhih4g* z0#`}uv0Nk9%IoCy@&?xYZe#>_Id9I~VpfH3XI=PC^G?7C)`st5W%zD1W}sPBzK?fm zzh%Yne%`#D%Zl-XtQ_hU=STF~vAB?R=qG4%{w|+nZT=~_jyG|hVKs6ntM&ho&$8d* zc~;zCpk~dNFN!O9OXp?z3iH9QviANOYv8ZTH{_dggM3TAE#Hyv%J*1Pf1kH1{(-(9 zpl*zmAIJ~sc}B6DU}_x z{9bO6Kgg}}N4ZV@Q~pH#8zZ;NTKO~W{-t89*e7?0_3~G_lRX~0#bt7j*eUml4Xnie zjkV8x&g_?&&6Y>pHS#}Ly*{b;fauk7vli}OF%MB*W}?HGiw_g?N#(vdUaj3Rqa%J)j@Ss7pP9m9Hpxam8r5+w#ret zywlW`S-)<2?}+NDda2&3kIGjCs!$c_JtV5H>Zkgv0cs#C-Rve&L)cAnks79ks}X9X z8l^5)m+)TK7!&!NIo?k6tj&PY; z&W@CoY8AVh&NuIOzIm^Ec~j+n-c@-}zsI5;VP^0#^*D23e^*bsD?0z+ZJp zB5TbrGe5STw`*Qw_Asz6^$u_DyvLhfAE*z_+dQABjl6^N8SB)W%u2Ohv;LYlW4=}2 z@#fDKGqd)i+Q!>IKQY5rtA19$s2%E8wUhU5cB?&RU3q;rSJ>+30RhoD}yu;jM zede5_8MWwDs(99^60IcOuxiX4^RwbPs|hp05v<{j6BFot`ta_+d*XTV0`ufAu@CDB z-WhmPgfK7th}G0ep%1Ia4Eu84RARg(matZzD#nXlR&%jfyv<5m3%!QNn@q3sr0J~W ziDh~%Puw27nrCHNSync4;<@&`zG%QI#zFD2NM)s{IlbC#yg_t}cvO_~K2*NAS=_B> z{>5G5FT5RfCo|h&;(fCU(3`pOd^7v5cbA#@cfBqkUI|_q2%4)M#oFd2tZnKw&#|m` zj$^%Zf?4~VWKFiptSQ!1-h?XW9hw=e1<&Fgno4W7bvbX+%(1Gi8tV#ct~Jk^Z!NH{ zw60=ScPpd7>v)IaJL_t(oj03)6yJ+2yx;Vbwa~hT_2g@<#oqjhRb^L{h1OJ*XB6ib z+t-3z=bG+ZGo5R;zNTjs7TNdt=ALkc&b<>ZzpHbf?_8aD@-sv8XO&K>s;mgjubf(0 zQ8pu@a8h~Iq?%b%W|qwhFPvOiT{>w}Sw*$CXi_P@xKve^R(p#LkKSTqX-8S$uv+LO zS?DBD=&)Lt9bW84=LB)MD##BlcDN|Exp3S~F48l)mgxKRjDjxqwYb>Z*Q6ZLH^8jz zl$jac_ncJHGm5i4{U(-H8TZVL;)s5MFslCmZ~q{17dql8>>AqNVW_{&khgzz`OL{> z5d#8&9bQZx(lfGhy@N_8)l`>x2f0GQw!kw8cD#dar@=u^**R8m#Z>Q*pyZ1jkrg>| zDRM+t>krByYvW|r1e zhYqo`7%^nd%+fj2Yz~Jxmmo%Sa=pWiZN%_8na|8{7|kp8j6lTR5kbLn4IAm18TsCk zZXVM!in45Oi=8|b=Z1_7u|H2vUW$wBk31(2Bb{OzX%|z-$f|OLI?@!D z_hOsvivw)eyLfVWSykDb@;Tm%r&g6-Q5G>e;Ak^elI&veB^ ztu6G-gh6kGtv?l|de?YWwY|tG>>|J5okA}x z38@Tdf02`?Vy8HY9A8CFu@z_3uRKTlEA5;|R0h>xUcb_LTk{W)@SQe0BM z=A0bVIAvGk)ZZFYe{1aeJJ)7h(vC=9rqioXr27SwB zl~0~Lvus*ru}J;aqr@!kmtml=fs%j_|J3v=Q%mgcO;ab=`F74OL^KwoNouu@e9TtL8WKsJJHx9 zEbg6X3Y=&P95xCZHtdmGdUk=s24fxF4dnO*Ti~!`51-Pr?O_vFr@-u{nR`cocGJzh zBVfB7I0~QRSMaWm|E`XIM56cD9plwv%qQleuhv<{bao4!_wBzu697*$$uC4u9Ex{`~Pf z>1R9qWc&H_`}5!X<={`p;Wx*LKgUTg$4Murz%ySr9P{0VBgf&~>Cm!sofLDOn7TMQ z>f)r7=fs%jaFXZv&vX3eIXTF8B$J=zWf9ByAD6ub@F*?wW*;Z~V>cr>2&v)`u=bl#7k!OYp&sK+!zNNEfl^QM2 z%F9+m%WcxBKw0#Z3(Bf0J5^8dGEt!~)pPY-SoO53GJPL9rLv~VT+6R8?sLlLY408-Kk*dPS2fgSH#S8XCRTDpRNjrh0U2=I>{tLCCuz%_kvvW z!Y5TSfbOLCLB!84t17RYtfxzO#++=j#eS1|wzXzpQY9I*2_2|rRNrrH;?}HYre~zrn=-SKAu{g9CL^=JJFC1x5BTSlO{%PzY};mJ)uWf; zxv09#Z)2Lv%#6(Za6DF*o76qUHC2^%%=U04GuF}vlWys28WM&Xe@*-SYdR~^j=!ssP6JmO_N^-tbL)652)@ZQ zH&J#ZCZW0(8FekP>RRL(3n%u%;G5iFuUZ7@buG?`UHdpEc5QJ^?D-~q1GnIU63gsj zZt6K%=~UjpPw6(Nlif&WI*$XH&f`R;JzB^p>}q;tuBJCFE-BF~$Sl_}LqC`~bF)`Y zWShNmEuFn`9=-g^?k|gr#mYe7Ue>u+=00RbSyhGTWz1Y-rq3#^njzZHnlVeCNMy&N z_s{8+b*$2?`s!Uu`lqi_gf7f(y)|_*yC)B`HW`I)eL9@p!yrWy{`#GCy>p27=jFpH zA4)XaiYcuE*DrVSZr*Z`QtxYO%qs1N>}hhXYvq>}B?D9ku>O%#T=aVm@cxg}K|%hb&HW6B{gj?pugegc)NE$L4@_ z8FUM)6nY!`prm-unu+EL zEuGJ;yp15mW4xm#dCNfi{D}QZinq-CC*@rv>RThNk*uY&Iw2DDx&$jhyk*dgeQ(W> zwqESlNI40Pf&*X|s0HkBPhr1%$|mqJxC`9sT(9T45-bK+fhz!~IiySnlfgK^TL>w< zxsWmllz={<8^{Jao=!lg#TyMNX`l(bpL@!mzk~&O>%(8NOFWYDb@nrG|JSp>W8Uej zhk5H+y&GtruSDx(Q@C#m_f6rxsoupDI4@9ZtJ!Un5}wTd)g~iEr2HZINjB9zl6)U# zfFj4|wY#;Bzd(opg@l~2$mw5V(RTkyEXX$~Y~2t@-f>0#LH_J~1UR5%99POGnexF5 zP?S}Woql&jBvWpV-5{5u42@f#WJ=MY0(Jq4@=flPOsOUZD9YEdYvNMzE*0>n?V{?0 z4Y&rVa5pTa8I)R`ut{hAu1SCRsQ_0=hy8X*`|KPEk@PG0N#7-HajDHvpBcLkUFvO@ zdd;P@zZZ?aXU?%RVYS4Qo&XO8QOMr0L*h1-bPv>>NjK|w{8Yd$X{~Fw+@%(|)B=~% zu~h3=g2Gm~uG3t~O)V)9cA`mIr#{xDMsYV(-z5!jDQ#Dz?V65C>Xp>>PpQm*=bF@! zSXyh>q*Rbxhl)MNu7Pn4JIBrrp%PCg9#1@&xF^Y_5`XdAC2sRmL9W{FyK_SXTmw|% zm*<476C!bAkn8(42Z^SdTK!1=m& zYiR^gx1VEoqj6o0-O@VL!gK8A8P}?F>}DFfDcDT_V-f?@h;!@)yRQ8-MLr4=dnD#k zJ}#A*?zc;9?^4@b>PtUmLbR+CcH=p&JrYw$WrMMUazdPAhjcXu+HSp{3gYGYI`P42 zVxr&938C$xb^i4)h>Emru=Bc9z#mo#C$)W|OC=oj+a({3^`)D<8|JzWa;ZQ*0vwdMu6>}o={zT7yHqEa(yncdYnp4<#7}XJ zH*Qe@Dj^)&6MvT1i2rb@!!EVYrG9m(pIi#N_$?;vX4mdBm-^79-gc?i{FF}D2^&cF zMZatOGkz+FKR0ar6NG(8=Oq3fm%3Bm>tFoM_7!TaOD%V)MJ~0#rK<5;0j9+VsEMxK zSeF_FH8g$zW|2$va;dH^mFZF)T`CY(Q>{%bfv~BrKiY67jdMeobZw4J*jW5E(D(6S zE~Wfb+-V`=j%(MrgD$1*_87Zg;Fd16^-sK;C? zVE4c|c6S?px4U*X#;uN98n-ZRUR;$+&2*_LE;YfWwA~mJVuWiq*rocpRDnzBH0%(8 zGR-4K4e9@yEOrn^*oHIZhT7#)wJxPyw;I=P&avC1?XdYcmKG!SjekqM?7BXysn{oDABnwBkK1GK za;aNg>Ux)2=~9bbN{79wPS`7gTxYv6`>7{mXS*T%c2{6$b1>bdCcCkWbEyEQ0j{RI zu9ukXYY7Z__9HkZ8N89VtvZ>f^E|u-4jK5BG{I&JF#-{nHI7-m|#ZkTv z^%NhV$O0H#UJ`E=CEsb9x7=RV}zl` z-#$O3N1OIfkHYmY=^@4k&e$>VRHR2d`jZTi%qYnxHw)PRk3wL^K5%U@aXej8PAo;~?iFwhXo(ZHD>&hxn z3NcT(<>5*<@Z1ygkR1y#-s4hta%bcmcq)py*>zp(r|OK5%_uxz7qi^&FJ_TTEpVxT zbgOMUa#Z1W4d_c?92SsOKthJPM2Cu*hJ?&`D8`j@%vgVXL3Zed{fj|E?6E-10GBFq zsa~$XuEd_H?_yjX3Zh!O{sOM4{x&h85Ajjw2%GG$M?qAq9X6&xOqfmK=O{3(V^CP- zca4X8r@tgMhawicZ;Wv{jXsUmnGy@c;*TTxcz_BT0g!V$zL-GHU71E7BpLrM9`$cYdiwf9cw7bgB3K5{gUlQ?c28Dtd$KZ@ph?(a*coI+uFP_7~G2`T>84 zKuO0Mz0meSeL$d%b$f%L(F1ANy?r2-fJ_6DG*nv?bG$#@=)3*3EGZS)Q`(r6mfa2o zJx5KUwV0sW7d;;leLJ`@KrvTX!cGnST@2=`WTACG=3Hj?q>M9WhMxPA4GrDU%oUzA zbW>yYc1%5oxZlvX88gH--e=5t#_VOx8`&>H42J&;CFje?M-9D9y{6+a<|oGN#=abU8oHk`Ct06hbCd0A zLggBIpD_oT_y-y~+L+;bc2%YsGfB_S$~nw3Y8zc5X?ix6{V`gSw;P+=jm_;Q*SDMe zcGhJihniCBtm9#4K|VIEO>CV^Y@JQm&L(VUJp5T9*~HUH$Ip3$T6&$0B#-F% zP8n|IK3`#1pg!9NKVp~kVIN{tdpjPJVz_qYy>p$H zaFbS=@tfCKt_3F7!zYQYM;QG&lTbnpyABde&QJTcwz3CU-TwV=rZM!%uUQ zujY2lnsfH_az2zyGwHr%r)A8(M&{iNhkXr)eNCtW(s?3ZA{ofCR7{4=P89$#VPi- zOL5pDPH1N6Wh6T&X=ki*%m&t6V}AyEh&4>p?5EUbvN84Q$Qf&~p)2uY8JV9_Um2Tu z#?&Q#ie1=Jeq%Vd*Njdntwq`FZr7%kZMLbuLyb*e>m_UojWmXuIzCjd*2qGqENC~B zSKDJ^&%P<$k}T0$#5rSHKJ!i3B_`&1)?L^fvF&vX>;TgK^Ne;4HBu@tJ_}4so^Mhq zFn&51KS?I_0^>8u_|*F@rA#t@E;fFOjQx0HU*z!fH~g$LaW1jeLN777TcX=E^#Ugi zNV&k|bcxC1Du-vC)A@$yRXQvu1!!5VGMx9ZV>aeWy|N{*HmR>PsV_6BuQaZk4ZYdW z`NmIwV^b>sL8z;Y%_I|Qsj;7=eTp4sRcwc$pVd5z$2EuIAEsoV)%=TRHMf}XDIPU^ zw$U-L<4&8;niN-?T(2=PuQIuQ*rd41NOF})ccBUUlSgTnj7=|NGtZbMCZ{Dv zhCPkMN=%$3MsA~w+)7N$B_@XMI%bt&N}L{@{Faz_#v9kUhPUy?X0?fDwF&#UUZIk! zjh_i7)N13Whe^GMNj=M?-ovEZ!-VQ#{P!_DWSDgOn6S3lgBTS1gzVEO^;fSFg#PMP zuFzk-nrFUxwb*?1>aXnF`c&K}^jELmVIR?6&OFv%z50>8QOCqT%~!8>u;;ZgduRFT z6?XmG+zk0=vR=#@0E>ymH#qLwScg4O^zIVmmQoeV^-cr7I#qQFT?Bblr9?t97 zOUhTT*h|V+uh>P(_paDUdLRE;?9O~xR_O0tv5%DRU2&Qh-@D>GFTQj|tbFN;{iJ%Q z||^#A7vk7OZk}o(iNxu@}(=z_2nB^ob1a!Mb7rkSNWXm%l<^p_GMQh zC;Re^E6&B`8&{m>%Qvn#sh4kD$&d9nt~j4}ky;`@*Wb9}TwcCz#mT(v#N%vUPH~jq z>hmV$_pDC}_L&Oyo(lPpgL}B%2^fcSCX3)JVL~nf3qUofKtHB&`q@M<7H~c-yL&xy z04Tzpak%X2T( z@o>tu;e*q&g?JxuE*pFPrP;}?*PnHbeZ-hQn>PJzc415LhOyag%;QqG@|@3%`MIID z8uO5Gy}_8{jQP4THyHD%iR}ktZj}dhSVapiwkb|F6mJ{*ceKeq-d@-o)+Qr6*hQ4T^r$hThqQzb$E8a(~J4O)i(O4!}~sT?pf8>J5OQoUA~E?*g?7(oA2mnBh1&; z8o+s^@gdbe6m7BVZxi$v>I=@s`BHsJn6KzZJ?uNx;lJg)nNYp+l+!kjsbeC{#O2je zFyZZxmI>)GAuSWqL(1QAl7|kdOc>qMPcZW85EAD3)$_9F0ncpD6wgp=52xopVBN?* z$D!<|OlJ>g80YIfY5vPOO|yVAwNJ7i`VCI}UQDf@BKycR8HEP#Ti9#i(1k;3wca)Q z+2OqVckeYja`i6Um(31bd&jLlJKx@I8@$(6@3GapYj==aYOOhy4#}ytoSJg8Z#NQI z>-$Yz=lfM%?>m6ahw2vJ8Kkw=cLdx0*dD=lDw^^<8EmrG&e^sAz-Q>GcZS(C_|MVT=j2!Lyly3z- zR;Yh~^}d_&wE|x&Twfth_y@81C*cmNpM8H&!s~oXiQ(MP4+ez}_(hM1&!2`9KfJB+ z9a1+LIc!&7;Nwg1y>9`WFZj2vi*a4dX)0@c+mO*AWb_*{+DA^lA+BvmC=3bys&4h| zQXlzts85jLG2b3_0{fHHG)sL<4mSD@tIvGWUz+xuSeoH_;wP0Z&29%ggr=D#&S+MZ^!3uO7vZP zo#qspHNH=9*+)M1;IfT4zE(H-wi3@Ke7%LQZ{gz`Wb+Uu`w;TE2?_j_ICoI)&r$Br z8Ce}6<2B{oW_hS1L*LC0@V7>2SN z)8|s%O1Kx%i1ohj@$s7@3l{z^*IvXM3^r)vFIysh@75)rvyGmKm0mE z&BNb%TE$2xOWh0BqhYU-E8E{ma%u)DFU)!0jaEt7Fvp{RW>0oc#WZRBUZI zL|h?ozaJkv;rchY{td2mzEA5o;pz~2doOzWBKo-=9emgK2fqHm*B|)!9Umufy-v%U z9Gy?nuM+BGEeX>3j2i5hw&{1GXX}0^;tAc3HvFmn6ncc_^Z~m}Z{VW^(Y?ZMW1cYP zCZB%d=jVG9oZ!EY>jB@-zFode#@_hD?yT{qeM0$uH>R=ko%NmMf0q9N-GgaYzhC>R zzis0?NIR(A&YC+j<7cPs`^MPAhv@_L^$&2wx7)Yh@20~d89~i+e!jydl+6MD`O(9| z*BReQb7vb$$A!Jaz3;S1ze`y-+N0z0 z9d+Dne>w+&7;60`fi0sJOr64e#9+(z6!Q8N+1qX=2JH(!=pClk4YXI^8{1R9KPbPm ze!a1Mm;gZrZImqwJIv02Q;?p$Yunl~GV*pM7v#T=#yeqj9<}BgZ3y_TOPN{|#W@*B z#4cg&!)H=9;h&|XxAW9UY`%5AXM9iFZvJ>EAD#14gw|5~!`vOwI)g48Me>?D0;MJ8 z)($5}+HJqT)|k3U3*i6h)&Tc2{2AxNi+(!LHb>Ad$DiTwTzw!;{Mb@88erme>!!Xl zK5RGJpOGp&?js*Qqk+bkk5b`YYqF0Xo}X`zt<&Vq&5ManyZzymxgDo%p3P3=TUlWi<7+*{ZGqpSo8=g{(W?7jeGL zv?HHjw-L#o^{wa0sUbSDfmZn=(E+!wO-P-~=H#RyZT2qwQFok_&iH;cDcbsF=VgP* zzve@0^&h_PecQC3x<6BPI%axP{F$(}ADcturJuZ*g{0SYe&p+vm@y-qeuSs!FDt0IFViEkM)0YB~N38y7uJNWcf0 zN(&A}4YS7%+S&d2euQj5o1p92d-TYpVr#NnbMzR15u^@c_ndBEL-@WoF6V8dY@b>W zbsJ^;`P(Sl$(W{%YGt&fJ0%!~WiQZ1_fGr@88@9Vw&N)8FwTrh!>xlD0##_F7UI`1 z<6nn&C1`A1!HmUCCfKKO{r?z0IC0Sm{11QZz@Y8W zJ6ytfp3~nO@}IV4&e}5PW~I`urE$hpOP;^laK2zC(OG10YF{?&nI z{pGuXoVGZGeI~=0iyOg?lZ!b;j`QKzeKL+Su_kbK)kLAci^(w_&X2Rw(#=J`C zZ~a}%d09)uQn8GkD=RorYZbG=*KwZI4V-p(6FXXNITa^D2=%ti;1m(Vl)6cG>RQ-g9fbQl(^^kC!h&0V7`Pdc+rLpnD6uVq7@%ve#}lOulSt5 z2hG@w{Judal+g;sYQi>Xtr-g4*omq2Lw`r+H`=0uyeSZ6^d!n?iU(aegVgo68pF{R z>W|hK%zCmO-ztcZ5txz8YkSa{#v;_5z^TxdROV(|%hs4}Wn0X2)=?F!7JNer&FO;w zuFRCDqC-6h)swFnMskj3A?Mx}^Cm?jw1~5qIY)DlsAo>mtcM<51U;I0_j+2B_)5Yw z=Hlbfr`aM}pL@xCjQ+(L{R=hv7i#n`)aYNR(Z6J)f5}GwQjPwl8vP41 z`p0>E{KJg?g`t0+LVw0z8U2ew|GuGZ{g%J}Ugvkvx`q04U2JP~F~R6!0=oD+C2*2| zxY0<ZAy_;Xfsw2X$1MPC~keGR82(;BI@ zFwxOMt$$6>zrLIh%UQ0_f2M^^jTSaFT9||uUJegc=wc(Ii}6Ma8yhW*H(J=rXklxk zg{_Phwl-SW&S+tKqlGPv7IrXN*oGNnt$P$-5g&y9m;bc-Deyie44H2K5@$^Q`~h{b2X??!UTwoqy4^yy!0Ty0p&S=ltK!4gBZj+W$_u z|MJfY>%66txL}z1XJ3%r@$7m28#+$!m~H<%9PY4@f2WQc>i*krZhw#SAKN~;-9Gbw zquq@TwXfZ%cIo`X^}p@Lws*D1SK#0FlDhwn8`>Oh^H{69T1{~Nxvg?rMYhUq`3=Z! zan}6bZSgPv=7UqdYdW}TqW(A8!~eA=d*C6w$@NVJHA!g_*0{FueaZJEuS_mUZkyaT zsWx$F!UJ);V&0FcjvA)_^$$jj3VS*1uH?31)nQ`{28CsYiO}Pr{X$j9t$d+ysHeo! z(bItM8c15<^N(VjGeiH2aSUe$|F=dmm;D!G8QrV>_s28-Zyf)3Mm67=lQs1ToBy*> z4JSwc$DT;dY4c}STr`YQ64Enz^sK3zkoH>W~+!e4- zIBWKNBcLD58kjy?c9*>l#*=U&&)g5uS3kk{K|fFX=u2~b$K_<6bG+gqo(dlJox$b= zC%~VO%W)gD4OUVnG~;2MHh%B*9%OXb#dq3(yj@0&PHB&b0cuIVjC&VY9|IYLLlYrG2PJfo10Iq-q!a)>>2C*Ox#DfHo$Z7DyIDvdPxQq~M zd_Rfn!1dq;a3jxEH-VeMt>89r2e=p92kr+CfQNiPz{wBDzX_cD04G1d$q)3%9{OVs zy|LoyKrtp%^vR0;SkWIVdSk_tg5p_0(Jw30D}T-i;&<=|H~~%q{jI^%K+in-&=!`j z>06Zy0jx69pElrhcHN`$oB*OgBM=Q@KrG|8IQ+!}z5^)}K@vy?jX@Xu-Ws7}@CGap4x&Ibhy`&V9wdN7@DQ_L4>SMp z1oYq0;wQm6(1E9f=8V#sn|~T+3(yj@0&PHB&)P8jRl%q92B8y$L0;kZ{M6}h`YSs<$ z_XssRoSN-Hvpj@8CUcqTU~ErZ4>8_+7|pg@n!~sp=FO>4Ii9kf%or~eZGMs1o2eg6H0Y6=Qm6AQvnNvgD4OUVnG~;2MHjNRxFtrlg6M4XbMt5H_#pQ1iip8 zW?F`W$;OB#Zm`$qQRnhy#

L-w_I)k;f_|Vs7~uO<4g`b1U@!z+1V)1~;8HLaj3eIhV6yL9 zIg4urs06dY<-}Ws%pO5Ie@8oiM>~1808ti#y zy}&T$>xYBM&}CpMm<1}qTrdyJ2Umitz%^hg^?Mmu4pxAbU=>(HDP9Mz2RDEl>1l5Q ztmLDeA!ug^+8Kg&hM=7xXlDr88G?33qn-88&U$EPEZP~1cE+NeyU@;EXy-1pa~ImV z3+>#6cJ4wuccGoT(9T_G=PtCK`LMl*M#nY+=<-Du`s zG;^;Wk)fG;(M-PE0cL~CiMI-Q-HB%Mb_uXRIEVt#AQr@dc#r@RnV(KZ%8fx2K#tMO zS~PPvnpulx)}ooUL7G{MX4ayawP7M#DCvVVlvg&1l$WG;A{(wiyj$w#)Yu8ny=w+k=MfLBsZ- zVLQ>VooLujG;Ajtwi6B8iH03P!}g(J`_Qm`XxKh9Y$qDF6AjymhV4YdcA{ZB(XgFp z*iJNTCmOahNW%`FN5hVwVMplg5?SBBOpog6eIMp6xhH&^=-H#u%~R;+X=V*2ny7#U z!a)>>2C*Ox#DfH&M_fs)rzG=K(ik)WO+gAs#lAU611&&H&TadJsgaH9tAE2mw?e=3>XV8qlFvCbv&2= zO2I@hnRLp)R4@xvg1KNGm=CT5SAnbXyAWLS|JZx;__nGu|6k|ImTV`sLgd`*(5E%Bdw3O1aLupG{+UX24oi4N`onb9ohb>H7n$iT^8nQrGN+1qO zBH6)7EX#^4`TIWSO0pdSB+R^ifBgazAtxqax|K6Gv$I=9cz zOH}+Ob4qW4onRN(4c-RtfW6?|v0dm~FFMzY&h?^mz35yoI@gQN^`djV=v*&4_ld#F z`9^>boB)1&>L>_+F?eVIMi325Al9%6o!ca)V(H>R0!RcFkOY!J3P=UkF(*3bMCY97 zoD-dMqH|7k&WXjMCY97+yQj% z06KR7ojZWe9YE&}pmU#~b34$v9q8N+bZ!Saw;i3^j?QgI=eDDB+tIo0=-hU6ZaX@+ z9i7{b&OL|bJdfrKpmPVY>Ibpv2eIl0vFe|ob8rET+JQ#xK%;h`Q9IBmo{$Jqffd+* z9i)vthc*qMO#^7t0NONwHVvQ^18BtnS}}lD3`E$@RblP`%pHKa12A_0<_^Hz0hl`g za|dAV0E`_VuF!}pG~x=4xI)94$70P*#0w_kg{i~~Q;8R*!mM2|YZuJg1+#X+tX(i` z7tGoPvv$F(T`+4G%-RL3dSF!#tm=VPJ+P_=R`tND9$3`_qk3Re4~*)8Q9UrK2S)Y4 zs2&*A1EYEjgRI*)3XX#z;3wu81pzRI_0}!884GU4f}3GT9}MY(A$>5U4~F!?kUkjF z2Sa*bNDmC@fgwFGqz8udz>ppo(gQMlvl#nyvh%4NM0!Ks!-m2j~P{pc~8t za~S>11M|TGu#hp;B5)R10+xbhU=3Ic)`9cD2CVr;j^E5k_oA^OM!7?ba))5b$1vq% znDQ}9`Iz17gj}x-j35qJKr%=LR$v2mkj7f{bRyF{kPiw#At(aHpcIsW8c++SfdPtOnL_jRf3Cz>NglNWhH*+(^KU1l&l#jRf3Cz|DM72EHQ`WPxmu1N4~jFxKTT*5xq% z@Gw^8FjnO-R^>2O2O{RzkP^*`w;*3A^z<{ z{M(24w-51eAL8FW#J~L&|F#|9wgca`1K+j-K6v1R2R?Y$NK28ee~EqdTbxHZ>08(SV}z`^8`n{Olde9vzP1bM$=9| zqC3HL{G7$lbw;_)DA$qk^uzo;xwMP(o^Cez4-ubr4^jHPK;E}=KX?FN^ds#9w9NuQFl65KI_?2}3Yp2qp}{gdvzP1QUi}!4NDM zf(1jcU_q(6l8hmigd(jP+l(r%Apw@0zt zqu6b7k@NsrQ(y#fzygv%DzE|@u!A(9_o2*82I$!UJuAn-tp6uM93?^=B|?-rOqq9< zQJ;^ad>rLd{r_31$osLl4+w*Fz_`z_!x#te^xCjr;P z;%mSN;(!GtgH&JzHed&7U<&?Wgx0*xd3F)U2H}5@_4o(43t&I1>s_p_ceA>FwgagReVB6(a&9;0cB1b?>i&ioSPAgb*sEOQIM;B8uCY_wM_Hw@wpgLuOr-Y|$BjGzZ2=mAen z1!bTPOat|x5j24oHNzyO>7%Cyv~AqK@fYwKczx^yz3xM@?`e2!?u7|x@9_Bm_gnbJ z#<<60jAvvD?tIXI5ySxtNCv6E3T(g*(!l>09(FmS;uYYFJgwy1nRwd=@KZkmKL$Sm z{{kKazXT6~Ux8nPhq3Nk@K=wLvwn5X56Lh^->*csN!CTyYvz3dtlujShok( z?SXZBVBH>Aw+GhkfpvRe-5yxC2iCcW>s-WjF5)^Dah;2}&P813BCc~0*SU!6T*P%Q z;yM>`or}26MO^11u5%IBxrpmr#C0y>Iu~)Bi@453T<0RLa}n3cyzx$0w-eU6i0@p) zcP`>P7xA5o_|8Rq=Teq#1Fsvw`Ct>c0Ney_2DgIS!0q4;aQdv1*0Vpvx=2j%6wK`z2kU$x)(x@RX9{b5ril4q0nj6SJ1mTYb$emm zURbvm*4bd)bFfa{P3DDlURdWniFL2Ty1lS22G+&Ex=~m+${0bPjoU?UZ>KlpEZGU- zvJ={K-2eE3x(Cn2ndSX%hq0W8v7CR$S{`SG@xx?ew-DHzWT0Che=o#owz`>DYpdSi&*7@{}i9dpv(%KH;P!tx*0utQk?qZ)RI zJN?w%wbXEgcCDv%50CAoZEw;x4_5Crtln!_z1KMN`U1hFMSY)KGX62z7Su_c4V6Mo_eKkir?8_kbWso?;PaNVW4)GI*_^~&G*qcG@%^>z> z5PLI-y&1&b3}SBvu{VR*n?dZ%Aa-UDJ2Qx#8N|*EVrK@iGlTTRAl_{dJ2Qx#8N|*E zVrK@4as0$MeqtOyF^-=Y$4`voC&uv;9LSiyP-3fPg!kwLDM}1^Ru_dgLISP)0A=Z_K=arfn!MC7+^c#5|KY1R%=mOnf zCSZMt_7Zm|zsz05uVVvxxC{92at$fEz7vnLi`U(}!T|0jmhp^-c*a8vxgN`V5BZsg z$&qehEc@u#PR`~>hrH;J)b%6i%_yAu8)ttLPVI(MeXx56x-r0Aumha+IO`Oo98NkD zZQMp1x6#IJp|hTta8`L2uRLq-q_e)o-Of9)CcAju%`4uYs|>2ESWdIPr#`c+=Ty!h z$BJ^4a2!iBhSmsLi?v{(+Qr}!rk?+M><`qbEhcg?@fh@uDk|93_Oa+E@=v0!9Q zzu@R}j?Ro6&2?Bcak}SLwffSdr38cUWH&9AjC)I$0Tvtm)qV`Sp2KpzfK`5p*O$ls z8nR+xdpf|_=hSBy;S3|Ebp~n2Wp5a`eh|y)SF`;a$dGMhRnKPb(|(5gzMnIs;yS8*R4u<;N6#!L1HFk~`^faRFjqGNPINH;)(WE%rN`qeR?d>lSrTZ? zKaff%QfWsj3+dCXeO>L9GzL&Q0P?;pWV z97pGd(7EI2+z>kFLFYWMPR@Mmae&mAV=4|%S`&%|UQ%OWnNg7X|1f@W3nS-885KN6 zEc!Tjl2s7cC+ZkL_vJnJ^aNlYpL+CDk2lqIq*NxI;k15b z(e`5@ODfwxz^~-42r_DtHb&+Kj*tu6g0*>9#Xl$bmDC8CftRDzgXC+|h%+*Xd)vS* z;9=H&ZDD24qge4jQq$MQ{)bW3ZbnnvI16{w@XEb%urn2Qa^Hhme~>~fxfPvz10S*# z|M4nU+QXH0bEO_l?g=4xrO@}5$kf=kLS-j@hsA%2y(C^B8hUB$_b}N4lcQm>6($$6 zTgZDv7@x9R2;KnubUl|XB4bg6-V_l56~T`p>RCj_qKNN{(551oUxaO{rB$b~QUy!5 z0-VW86{X?S;8DEOV_f}l@FaL1n@+xkb%%+pJ4|HVVIu1e6Ipkd$hyNs)*U9Y?l6&c zhl%v2pHYIJQG%aQf}c@>pHYIJQG%aQf}ft2V^cq)1V5t$KcfUcqXa*r1V5t$KcfUc zqXhqFG8VB|ohcw2lRZqGMq?R?msa~jJ%5& zc^5JAE=C1|?8zh7WeT{a0V9Y57LW{5ffd+*9i)vtf@F^nJ02l+JVNYvgxK*2{5?Vp zc!U`62r=Lh#*+F9Ice25^O;qZ#B4{1*^Usi9U*2rLdR5g)`E55Jg|XL+eWaNdB%&F zkGvRM08}@|uJN(U4 zSm~$vtVgt4uw&fq!no}(;5G0%yU+9(GO=kD_{PWZjW07U&enDkQ}5z+H?QxoW6xe} z-MhpHa%Za#xuzUl^~qczzxQxWVl{S~Nigg{TTXWd{kLe#>CB)Hk$D+HQ%-*d{Z7Vx zcY*JMyTSLs_rX2P;@k`F1NVc6i9~cwDMC|f(Ue*=r4~)ugQo03Q}&=K|3FjZnvFeZ z${sXj51O(EO>v?rdqSG>#k1@0k{vjm8Fsl&YLJ=squ@9g0-x2C0W@U*O&LH_a?zB0 zG$kKR89-A8&OlS-4E+H#K{Vwcn(`K!@)nx%7Mk)FnxfWGDNT{Pi~R_; z{@9Qo(vkpL@*rCBE3{+}TJkPh@?a>&`3+jaZm^X71-vGAYcdp}C0S@m6#90)O3`ZN>BANwJ}i}vpUn~-f4n$=;POBe*FhxatpuwZ`!7XejP(w zo=2OHqs{XE(TDlFg}R({SBl0O6n-i9tdjdS1*C_;gQ+_%h;qmm@e4U;6pDBm2fTzu z(&u$XiTLDrZa)#<5V4SK_j=;}dsMu5l(T#)qfO%1W5mwKh@Fp-6NshVK58xZj&gIR zBS^qRtuttI9WNtiUZajGRx3O1m zlfm(j!SRs6@sPpskiqeg!SRs6@z4VvGB_SGI36-M9>XSZ0k{d=3~mLtf!o0y-~l3q zAAui(pMZY>4}xEUhrqAEuYo?#Cg&&qNRRHPNB7gC`x$LK{9?M z<3}=nB;!Xiek9{ZGJeHPvO!43k7WEv#*buV&diTwWWLOgWc*0Rk7VRbZ;;;heoii4 zu826*4A2Q;t1q4lf0x|ZY0QV?Er#$GLwJiJyahW4FwP$VKEOU?NcjX(K7o`^AmtNC z`2f)oS!|4h&kAiLV2qIy%iwl2oQ4wh&hId&WDL70>l#m z;)ww9M1XiAKs*s3o{;m5r^hng1A2%h0>lylVu=8;gvV~Wn^?k4Ea8T+K^Pl^u|XIcB$n_Ib^C}9WH!JBOOL?PBe3)cO!RZN zW*T^y`>eK*_to#Ok}G=N7uVr=?N!Vw2_~_1-wg~BgerTSm(NtTnqO?@#`bS|cRk*9i4>BL~XSf^%mraVxW~BkmD(Z0Y3zzHSpT=N{%;#> zzz*cyZKs-XIeF$}IaYQBAftv(efcbhoZWbg@%!W8N$@<8#|z*^@JFDJe)pnFd(ox6 z=+a(vX)n68mzbVi5m7dKe^zA0~z$CWap-h94$|A0~z$CWap-h94$| zA0~#EtQ>b<9_5}Q8DqZ0 zF0}g0q0G(78Qr&8>6XU3`?$_ajC`4`WmTIXBdGya%fse_u=yZtJ_wr+!sdgp`5K?mFPGR4C~d??un=1NVamU?Za@qD~)Cr;n)9N7U&f>huwH`iMGxM4i%e$v&0q z6At3N4&%KJSMI(gXun)?t|$*nC^q=KA7%<={}h5gXun)F6S!3vBY6K z%rQL7F+7aC>t|9-1oOQxU)oZ+8}IHAC*>@?9kz`UFtEiw#puQvX%XJr7{hyJlY zA3MpBmzUqDJx{5<`WJci$~|Q9VxfQRIq72OTxK6(r2NMmqx^^N%D?ObM>|9R*mW_y zi?5ueG^kyBL%a3rI|EXteK}E}`{XtGk=p6I zm}>gB`d@0rF2VH9hkPyt$zunoQIMU1gW(;4DP;{0b~fB1eHXbk&+{)rr~%H`*Y z|01>5_al^FF}KXxLnUc)()`n_;j4I$T@!NFMKN^*y~B;-bEH<$Kf(Z%nD|lgK}IwN$++3qq15Gs^fj^bcz-zxf|9 zzJsvZn@~R>!acZxoSf=tU8j_MLPs5E?cs!fw4VJ7_4=`Qro4Mo{(g+TKY3?R`>9fL zXuKYLdPD9eij_#jcX3a<+Bb9?T&^5@iQniuhX!GTzI&)-vA##8WVq}*O2Yp_x=rut z?F*Oduaa}2ciSf(!K_8(U$}2W#~p=V!_>vj@z@Qn9Id{Q_tHlGO?=NDki&8pNL_+T zXTsJbe!NdPlWtE!=a}4Yd@FlPvQF=}@KF(4qrTPI!{0EIB`>9oo7f|vpN1`umzv2L zZvJ6QxSN5`L+W>`PxYhK4zQDUEDfIpdmH&T-kXu4&>P)4$`4Y`_~Xbweb>kE$H_7Z z)#~)yBMeXQe3@Ist>QMGEpex~izn9Ht)5u(1Mx$iSaTmwmidwR3D2wfH}O-RSM!kg z70;^q4bLChBL0)-Q9L1@5zmPic}mU8>M1pU65GUI)H7;!h}Xp%qDMWc=1rbdvs3I6 zyTvPApUy5Jy{vq)YbK$=d zzv5e@K*<)dg&DHnir;d~fAWMsAs!Kr@cvQpDDNK^kMo!33UU0?;#uB5C!XWm-;3Y# z{sr*@e~}*FzARp*oF@%&chw)nA9(+&_%q+WCSK$3cCnqmNR+>S7jM#{x5Qh#-z9if zij*qv-xcrk{$sJ9_Xov6-X9h&-XmL%|5SWR$)J3yjg&L*<?{Cp=q5M|uR!ZO*$IHDHW7Xb@v1(U4 zo(-YBNr~KBF-h%em#lWROH#YqC97TSY-(3KyV}*xqIR`QQ@h$RqBLw)jEq%Wj6>&d zM-q36yO9ddsp9<)#1D8s&Q2rjypIyePP1ZXl47S(KE;aif8)tb0^1;;^~Mve_$xV@ zrZ{TGR{Wa%BF34Tt~hGMa>yspNnRSUAkT1J$;&9X_#!1d^@?jrMkXmnCiCp8KXE*^ zg>Q96{#E>y<9CQ2%6S?VGYnW6_=KI|nB9UAV}zI7+bOLLM}8tc;ml6qVD zz2s=D;;2!v)2!H;h%NGj*cmPD5b~DnG%0p!SR=;mik&fvoe7GaIwMmQBV({m`5aRK zBjXh#O%oVtQjFBFSJOCigVw;`7OjQjc?uVqp>D04Yhl4)hR#du7fix}QGyNQ$aA%I z{FPixz;?+M$|o}~MX_xPY`cN8Nrvg%iouHA$$QDLsft?`#jUA|TUNy_o8p#Lam%K- zm7%zmskoJ@xRs^2Wv3Ufl2Nna8Ee1Qss8)Gx-<0O2Uh+4<9z;w^=hkp)&JYTXZ=%` zdVQQDKj0llr4FYKbJXLieEeMfq4Ue~@LA=1{Vcywzu3t!{gnK|`is=vsn4W7p#Hlm zRsU~g>Pp_#P<|CiO*y9Csqa$urlzJolkz|Ezt9o#IQa{XRKMa}d>1~~Zq6^y{!Hi` z@|FKmj>-SjQSw*nN}N0VtCgHv{wF`n^U7=fEamo;8&a01)FuBS<%Z<%Bwv;Eb<1xP z>*BA9+a4Qdu8Uq3JtI29IB3+g545*go%GEA@43H{=RSFNz==Bp?%J{)R@Ba*#cM!}w2<9CG^A5DeM{9hv#wWOQOuPg3 zf{(#|z&+f;1qS&32pD8!w2;WAUi^q1R(=k)7%IeXd3^*t2VMqS$(O$Z{=oacb8Iho z6AXYOU9W zWgi!91CZXIyU}%T&-<_Q{+ql?pMDGP@#I85-ymzV6_&gLSdmR%kJ8tp^yeu3IZCwk zjj>nw<`uqqg>PQrn^*Ye6~py>^S-!u>|OBy_z~y&39mor^&#^5zvBHC@~*$-^CRF1 zK0n9ni@Y+!j|Yu`v3W2ykC-loE4%8!6gd4CKrHWjQ{ z5yPyY@`4fI11EqVjDjF@8Dp%aHvl6mL8Cx4Faa}&0aL(KzK`cMk=GQ!{$`pTu)mqc z{$^SR$OP;&qUCZQ4*Q#F1 zNvVjA-_N6b0ayqYGh4F+ECpwC+%m8ntm3=X;9TCX0c*keeBQ(g|BHFAqB=fb0a(SQ zT}9b7e0MFl4ycHZ*KhLu4d6!Je;a%U+yqo)NBQmi?hY~>QnFqo>q4?FBx^>pE+lJ4 zvO`GLg=9}4Su>I~BUu-cH6vLUl64_jGm=e3vZ+YcjAXq?){A7lNY;g9T}al2WL-$s zg=D=*){A6aNY;g9T}bv2l650lHZTE%yDyl1}#Bx};xuK~%rk*piZ?nkowRa7*S@8Fq~)`;p#$q_-dG?MHgYklrz*w;$>4M|%5_-X}=Uh4frV z&xQ0{NY91zTu9G_^mZe?-AHdY(sLm_7t(VfJr~k*Aw3t;b0NLmNY91zb|byrNY91z zTu9G_^jt{Kh4frV&xQ03BE8*6FB<7ZBfT|9FAC|okX{th+l};GNY91zqL7{o>A8@e z3+e4fdb^Qc6nYtj^rDfT3+cI#o(t)Hg7iK?dY>S@-AHdY(%X&nTu9G_^mZe?-AHdY z(sLobgGg^T(u+cRE~Mu|dIyo-Zlre*=^aFR2a#SB(mROsTu9G_^bR7ugGlcn(mROs zqL7{o>Fq{(yA6*Zy%TtGCtlo%7kA>top^C4UfhWncjCpJcyT9Q+=&-=;>DeKaVK8f zi5GX`#hrL@CtlnM3%23Oop^F5Y}kgsd=^G*!>c>->Q2166R+;Xt2^=PPJHRJcy=d@ z`2@yn!^1oA@J^WH!@oX@r+4CGpT*ld@%B#a!Ztj<6OZr2<2&)a&*Jr+czq`<+XlJ5|9_CoFZsQYS2R!cr$Jb;8mEu(TKNaS-ou z5SDJziqX#!zGF`qSlSCqov_rY)$^Gh&|s+(mO5c+FD&iVm<83C1=Z&8dv-sArA}Dt zgr)mn={{Jx50>`A(q35F3rn4_)Co&_VQDWc?S-XISh^jS_G+v`fTd1Y>V%~SU}-Nb z-408)!_w{A*ZKZ>UcbrrH-H;?|84Lca1&r316b;WrMVATNLLxWWV zcn=NM4Crj({UhKBK0n9ni@b8@2A)I1?o7pVOvQ6(NPP!V-+|P3An^etJ%FSKkn{i& z9ze1?kn9d5JAhONkm>+Z-Gx;9kZK=N?L(@4NVN~C_94|iq}qd2dyr}mQtd;keMq$r zsrDh&KBU@*RQr%>4^r(zsy#$=LrAs<$@U@HJ|x?RWc!e8ACm1uvVBPQ9VFX>{V`*I z$nH>9#pgO+r-4S$1eyW+o+8N}?2H)+_94MOB-n=pcOk)DNN^Vt>_LJ(NU#S9_94MO zB-n!ldyrrck=_uI-Vl-A5Yp^Jnum~P50dOdl6^?>9VFR_dV*NU+DS9tnPco$+F4yx18pcE*dH@nUDZ*cmT&#*3ZtVrRVA z883Fmi=FXeXS~=MFLuU@o$+F4yx15oHpUAREZ7z=w#AEW@nT!N*cLCg#S1$u*cLA~ z#fwex!V)L(g$0}9g(((niWi&W#h!SvCtmD{7v@;7CtmD{7v@-Cj0OAQ#eR6PA71Q- z7yIGGet2Qh2QcXanDhbm!;9_kVmrLp3orJ>ftE4(o30~o~pcO1;esc-n?rEeKKzaeB7eHzOq!vJG0qs0~yB^4#$i;lV z3fvCvVARq;kGtt{H$CpA$KCX}n;v)5<8FG~O^>_jaW_5grpMj%xSJk#)8lS>+)a2Wtb?xx4x^tPMccGKH#dfQEJyXkE=J?*Ba-So7Z9(L2aZhF^E@4D$-H@)koXWjIy zn;v!3qi%ZCO^>?iQ8zv6rWf7xqMKfH(~E9;(M>P9=|wla$4)3%fWugT!)hG%6JF(5 z>{q;o$6`kIQ!83wEe+*)Gc71@D3P!9l=mDw=*6O+So$$j5WP#u#gz zm}f*j{m7>uZ5>5E{m7>u`&xpG`jJsTGU`W09%SS}Mjm9;kBs_}Q9m;3M@Id~s2|N5 zMYBfHtWmVeg`E14Q$L#ILX%u*k_%0e-r9u*xzHdN8YI1RKXU9RbGH@G@(NbC$k52h zM*8fnaOo8=(T|1vlA(wr`p}Ljv>+;EAERJBnMd$4*lNhcCT7C$D9-Si(LKE|L@x}{ z3q$n65WOJn)et=}MC*rW{Sd7mqQyhBc!(Ac(c&RmJVc9!XyFho9HIq7v|vcpS&qyD z)LD+e1L#fw-I1g00Q$iWMM!lNiH;)8QM~>rk{m^XaxCfNS3V>tv*)39%Tc5p^pyDW@0OA$X)>xNBf}>JrOK<0_`Pw_~bip)?+Xy4$>$n>(Y`a#Pv_HNKUTB|KgRj8hxX$8Pp;x6$QUKL=O5M){uPlH7Awa z)%iC0A0z8u4A&*)Clxm&6;_JJf-fF8AclfdrwP_K%Gr1AZmpO7@XHN`3!Cbjn;j_) zDK?v#H`c<$K-gjO$p}Y za*Np6In@>`Vp8L)^Be_Qd7w9?+pY=Ws1n%~)@7#EsYOYAY!PvfgQCnbahu)Y05*v)gQ^TdDNSZzbp1qfAuJXC5nt~cChcvv1iHdnhla&)P27I%@J{Hu#1zdDa!Z4X}~>T8km zjXZNmUP?ea*Sj88>MH!qBoMwuh$Sk2S5UW?Q;eDrutC;qA; z@~c%m?LqxYGAJr5QohD8cS3ner2JgNe8XSEEi?XWsN7^+_8nCx*-Kh)YHqoCRp7|F;od#awd~m~Z`5cBB_&IuyVL8eMhDLeD?sa; zsPehm|DaLR44qg2S&5{^W(V4fS~t|&%n6#=YO_&MQ(7Q}^0Q-DHCtwxaYN_z-!+QDxs8`!)_M7yyOYX_W9Kigo?o6-Z5Lu@V|#|E=*Y>+ znOY^%>r2GHWmd)u`B*%0&f47e+9_J}Me{q>)YJ=c*6fzf3?crOSs`X=qGD!IePgPn zRBBWOE9)L&g=&$((2cbzNYJdQHd{k|v%{XC6&BQJO^qEI)wk2t+VUwEFK;}ztFY^u z`CT`a=T~2RQTd{q*G;Qhb;s(4P1VsI;vZ`_iJBGH%vyKvlJ=IYj+yr6O}8zY``s(M zva;(BkvCRX!|uo#h%djM7&kUwdgdFYI;2v_{oJS*$!-iN*SctTQW^WZg_A18xBp zhd%Qz3mzL*H04{xY1h~;z8(Bcn7Ut7YcbE!6l6GjI#rjOCCIwZ!VXWj7Z*Sg5AbgX!hV4Bws50;z9$c{9&~#QW&A z(zZs*RjnfDk-kkoe!1cM6V4;On_k|N&w8X-Kgi~=lqptXIvHHWRk{F@AEM17u z9B5r7HSNPQv=|I?3Q9^sen2^b!Wvvd#8Wgoni`v%q@!!F%2KQJX*BSbi+{SZa`hdn z^XJdWit4C|Ze7#dw7RRX{pv+&t*z{fP?q>{7DE5AkI`SLZ~i6dQQiBp{^?zslQ|Kcq#`Ek9nwxqW zW!$7Z&cxX13~F1U{VA|8Y~sJ9#==)q5j1}Fdc#0zK|fL+wOcW8ExSug=IG^;X?po) z!@u*rl830IotZ>FNMKTzhdo$>sFXb|`&4$X-r?E%^#SNY>O!=`!Up z^wQ0LlBKzn&QW6&y>!{JP(O-FqtrmvDq}Ox%M00e*^i-elW|r{_#Bl+Y2Ed6Ecc9` zL)v!z99?6-SLc9pqE*>;y}XlAraE_!-F+sUdv3lwi;1H*7$1(Dh39@?3rL-@{^VLD zioIX0tU$A)SqAuK0%)T9q{c?2Vfj`W&mr$`RYPP3#Zieg;yq)Bqip@e_YhwmbWRRz;b0?ZH4u&*n-mJ zYmy3+sy|QbANrlWF;NK7RHdcXH~xpE%=*ujb;(sZHTIv`tKwb@Ykf#do>tm}!;^mR zMkOz-F>RrzWvSUX+i-|iy^SrjG5b`uOllIXBpRG-ue3)xW>%X{q2s{|RIImj)q5c= z(OS@wY(v=>pMAn`V(0oZFF;n3R!Hz9caEg*B4$py%mfdVY1N=O2$) zvkB$e6Fd`}l}R!dm&aqZ^BL7N@f7SYsBNvdIQY;h>bUDH5wkE@_=R;t`qg8@#yhyy z5+V_3Tceexrdkt><_S*AkrJkPN{(hn`y}lNM@%Mr3b`sikX~bmZRE#9Dy-KnUtTsf zBV(%2jKn({iL^Jea;EU8Z*EmBOZ?rIscGqP+LWxg$~BcwrR68GK3j<7^2B4=xpA6B z{>W%Dz7w}$>&C2^3rjNUY`H7WTUU`*BU5c;-crl5#Z$JbBvhd}cztI3^o*SOSy$}6 zrYfnbJh&{igcwU6W~(g`g^A_WR&!!(;3HbflQFeDw6uXFqj`PklX}J#HX6tE z3udc6RhDLhV)k0YFBP+!VLW{eySa9Q5aC;)fgWURg$Lf9`pAt*WeC zef!F`a~v5t?Q5sEt!mE9YFlUNy8QO;&fBh-IrGX}J3DT>a%N-W>Ps8DzPZuSy!z6n z#;ODm8t&Yv%@i}uzyVWbz*>-94juvsx?o#8db482@N zc6#|{!;i!0Kt4;o$93kt!TV?pK(C?6i8X@cD zYuFJ?Kc6g@BV@h&Ty_YPBV@f^a)hjxFEeZl)r;$^v5j7?t{*vG#!7lQccq>sSjG9baZ!7!D(nklwJ$8La#;h z>D6O`Zk%S7QpfY9r(3&I>xs0KdOvQ0kJ3^yMmDmCtD(U#b7GFnZc{;8J_&F=t?VGJ zJSn5mfXi#JVn9`P0Y`3g81qTgPZ!z~rR}8ff*mCbaxVS173Hh%TAwv1NBlavs%VDF z9-m`OJWkw>1@%%ILX6b6E44#3N}= zN?%&ZiRs(vH+F8gW1bK>^S`}5E}i^*LSAls(DzhQdQ!`(y6lFT#W`6g=W#{#x;dpQ z=2Z!Cv&_ffr&~lTdHb^+b=}35w3;H>%d&=xh!slYyOT!vgg6XER4th)DGdb?#Fl#f z3d~71+jtCHo+(;3+&NzpISanMeoAtjiXaj;uF0I%U7DPgkeG3DfL2;AMA_;&rAxa@ z@itZUYH0taShujUt;iyR+ccqAP-3*g0+m6L86*O?!WyHVN7DTYNpG7y$Jk&kKFPso zM@yS)bE?`Mh3oHFQ4&_HypD}s8CBI;g*CYumf&}!ZYdqpea?F(dq&x;GSPkcZCzp4 z({$B^3zK5gGxI9brc?z#>x1-OyaPEmF^@L67n_^yRL^XqFC(KS8X*Tw1qFq=;2W$) znX(VboavoNr?!8mbHk18LKK`mH#IM*JteO!>z<5a>zw%PBug#<od|SK3KgbtFf@Wr7StQtZ`mlR!2*rEvw=qbVbz-$u-NI(HYln;>5z4RdjTG$a-dV z7D?lxAVSdVFC}rOE{QrRiRQ6b+2f&7vvCgledy&#Ld8Y;(VNRuDe?Hkqi6HvHYqor zS)u(9JBQq`BBhRqj7rT-a+D_}nUabS&4qG7MUzoZSmv9}QnCq}*iw6TLB6dmtGJ{1 zoHeC4q?BYlF>iq!5IvNW7AX)TUuFx16vSAvMWbFza z`F5>Sq&e#5bK#WgDf^S-2I$u+$+A({&`oKQB(2o=Uxa|saB{_(mlEa&y_MsMS`>q3CdC_!55SSQ<2rg z^4aWBD`l09tlrVbuibjm3nz|H923W?X0x31lz~+w2Q8AbbK+7e7d6jXRmo^v&V9d5 zzCeilS^qS5*;Uvfi+j|WtruQU8b^|@Xybxbc`YxwDe zaycr|%fq7!{dhSl(94$@{v0}fu9Q)ve3lRs&Lc+!`ti#{qaOV{GKZ>{hof)GjTuH6 z-RtEux!YPs-FmsydRZ=`cFHG=3bM!MPWavU_Y>;D_i|J)`S;;bfqwpQea3%3xn6Qq zF!}f4QGwnbIV#ZW9Uc|v<#JS@m#a~MYL8)3f6X-vsQEtq_;5ST#&%{uL+#hzQQ2bs zJnFjW2K%>YkD(hi*fApx##F$B8EHO}ee!>qvm%n@FP4m%H2x+;n??75R$bHLJX}G*+`!ux3R#szqI0+tuw2YYX#d zmCxS1B-dUk6I%|p3veWtJCc#_tJ}992e}qxtUO$erTfbEaoyIkJMA(0tW4G=Dx% zDEQyEZbBgRf7H-_A5T#H-?Ui^PV&fl`=wQomYJM`uqrLr%cWJ&%a`%YGHG=}{S_%+ zF357hktsN#pTk-e9YanB%ngw@-wJybcPFvJEXQp&dviUbq9z;JYy@ic4Mvmio#iKsY&?>iD?X!O48!u)8>?> z)uyEsq^49PSH-qX``z-(i=}UtIaFaUNXcGab8CK+PVuOcmb?e6SD%$>tFo#CZ23uf ztD6hv6lK=gr4rC8wWja~w2HZ1HF9!<6*AviLX(&xQTiz9AJInMq?$-Phur%ve7JbV znyyLCCzKUOB`=LhwZ>|(_Nfb_Eh%xyl}T?^P0!Eo%E9NSRwpUPekqHOnv+$v(yDWA zo|>1Rlv0^-Z(L4poT746YkTLn+AQ_;#nIuplF+KrAHd}{Ig9mG>pLMxJkzTGc2WdC zt?0~KF=@(!c`Ui6^9L#dd<>SEjGH&W!BDB>rYtoZmq|-3%gLi5tw{MSo(eL4y!2T5 z@yiYWJfU2A2)(?El_Xf^(D|ij(91gvx5;@tH3MA_8`5R(LQ?*Rt}<-13Z%|w40T1v ze_n3MP3ddxsxq;l_i0-}^1hB0)uxuULyx4_*o0WL@~yg{F|Qi&E?V)XjNK~uQ;*!z z>Cd*KIeiHyBK}euPvj6XH^fcT_m+!FO_quvee9+>JEB9Gw|Fv zag;mLr^$@XCZ(_piPTVCEmACzV_=wHs?y$aIir<`TUUh!YiWX!p|4ysSkg#HCzfm6 zslKFQ{(|OnFR7neT$<6C5EGr2otEBoUhArJi0_h$EdP}^t2tjQ&nj$YU7{r|zMybk zQ_bv3>-0QFp|GaKSYs0kMZT@5C2#GfqM0*`6H8bG(lm%GtjaCO%S@YMkB^;3i&V{x z8MNqm)y|d`wn(WVQaYn^y!6IM>4Fx$bS`b*6)KghnC?+$n$dYUa;9q|zggHiex}&RoI@d=D=#lw^9VE%oat>~=I zR=H|Pb!+`ROV(0H-Lh%Hx1;j9Ybs`E<>kzrUC?@NX2nIx#hqy)N)vhA&G|yB7=1ah zD6g>6W|^Zn-Im{4B+~6B)&Lig2u#asE2^w0tFFFirD^^pEtSQY)eY9#s>afJT5hJL zsxDb1W>w}EWQ)|2_QK+JX-T4JZI*VNIcipftq9Hg$#GRfQmAF2B!;=rA(!vUOsiZe z$wI98LQ5{TR5xdvi*pv0cU;&y=h}IB%knd-F3YLSsO`$n>8QiX`at%#BJ(InQj+4b~iLCOF_Rp@5T~*2fDX5@;WfjVF zmeTIV#-=2lO#~As+BZ77zP>QGHHGAINn&*q!r)y|;xCy<&RG(jJ3S?(A#>WSJfY=G zr!y8Wzj=OQ+_j0tEI^kM34C8Se+g+*^9ni(GUBr=!jh2KdO>INd89>*s+Nx#o70oQW-Wo&*~CAQN^O^1;PKyo!gSx?nueaS+eZs2dz~FO|vcC z-&{8L#zh&9)g7kUm$ju7rAtdD&MRpzniba96G~rMXruJ?nuxxh&|K)6EH@cvsI|wc zZjqzWVzqu&FO}M=AKP|T=*-$2V`rpv@uK&YeV8jw7{kX(KPksJXn6QHe7iaFnZ~U5 z<|x)Zow-!q+aV)6Nk~T_rmB3=i~=Ff&F!qOSe>1lvuJVttjjt&ubDS(=9ELiT5D0# zo^xp%ZmXu=+I`(wi*8;tZPx7Kjv}s~$@;n1xY5R>oum3deU>tnpOM6Lrul_j0V)1P z8xHw0jH#@ES$7_~?s997)qK+07m^~EtvNrZF)!VoVHZZTH8vw_>aDjBPFe~RJ|>yF zbg4G=+8a^|(`*d6@+{F)O);jNnzXMq8iRjKE=iHzP33S4wKi!p^I6Z)$&N_f#1H3V zGedR~O_gR6eJ#;L2h~NghvXzdIJA%-2o>Z&H@rkbdEC%oH`SJ+^joz?x&5X*(Zoi;4DJMCvJUV*e+{IsOuU>Rs z@v=2lOPey9?e=uBYI;Gno#~!w&FOW)qowTy*n+qz_}9Yeh2`_BmN=^B zs4TqRD^fQHb=_3s234wbQ!ky~Em^3SN`2Ey+oq3~=7vhm#%>X#xS*d|>WMsBjy-

REKNxeMZr%N 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/OpenSans-SemiBold.ttf b/assets/fonts/OpenSans-SemiBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e5ab464431a87f31075f743d1199081278996827 GIT binary patch literal 130760 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ⓈGz!6dGy@2~f3} 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 literal 0 HcmV?d00001 diff --git a/lib/core/text_style.dart b/lib/core/text_style.dart new file mode 100644 index 00000000..f426cd75 --- /dev/null +++ b/lib/core/text_style.dart @@ -0,0 +1,12 @@ +import 'package:flutter/material.dart'; + +class RTTextStyle { + static headingH4({Color? color}) => TextStyle(fontFamily: 'Lora', fontSize: 28.0, fontWeight: FontWeight.bold, color: color); + static headingH6({Color? color}) => TextStyle(fontFamily: 'Lora', fontSize: 18.0, fontWeight: FontWeight.bold, color: color); + static subtitle1({Color? color}) => TextStyle(fontFamily: 'Lora', fontSize: 16.0, fontWeight: FontWeight.w500, color: color); + static button({Color? color}) => TextStyle(fontFamily: 'OpenSans', fontSize: 14.0, fontWeight: FontWeight.w600, color: color); + static caption({Color? color}) => TextStyle(fontFamily: 'OpenSans', fontSize: 12.0, fontWeight: FontWeight.w400, color: color); + static overline({Color? color}) => TextStyle(fontFamily: 'OpenSans', fontSize: 12.0, fontWeight: FontWeight.w400, fontStyle: FontStyle.italic, color: color); + static body1({Color? color}) => TextStyle(fontFamily: 'OpenSans', fontSize: 16.0, fontWeight: FontWeight.w400, color: color); + static body2({Color? color}) => TextStyle(fontFamily: 'OpenSans', fontSize: 14.0, fontWeight: FontWeight.w400, color: color); +} diff --git a/pubspec.yaml b/pubspec.yaml index fade3b7e..cb7beed0 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -29,7 +29,16 @@ dev_dependencies: json_serializable: ^6.7.1 flutter: - generate: true uses-material-design: true + generate: true assets: - - assets/svg/ \ No newline at end of file + - assets/svg/ + fonts: + - family: Lora + fonts: + - asset: assets/fonts/Lora-Bold.ttf + - asset: assets/fonts/Lora-Medium.ttf + - family: OpenSans + fonts: + - asset: assets/fonts/OpenSans-Regular.ttf + - asset: assets/fonts/OpenSans-SemiBold.ttf From a7ae70cbd2d0f3c8d928eaf15cba319b62bbc5d4 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 13:53:22 -0300 Subject: [PATCH 05/89] feat: refactor AppColors to RTColors --- lib/core/{app_colors.dart => rt_colors.dart} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename lib/core/{app_colors.dart => rt_colors.dart} (92%) diff --git a/lib/core/app_colors.dart b/lib/core/rt_colors.dart similarity index 92% rename from lib/core/app_colors.dart rename to lib/core/rt_colors.dart index 1a571717..daac29fa 100644 --- a/lib/core/app_colors.dart +++ b/lib/core/rt_colors.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -class AppColors { - AppColors._(); +class RTColors { + RTColors._(); static const open = Color(0xff5cd512); static const star = Color(0xfffeba00); From da5fbf7c1067b6577002d4ceb9e0ecd9ba44b409 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 13:55:13 -0300 Subject: [PATCH 06/89] feat: create RTErrorWidget --- assets/svg/404.svg | 28 ++++++++++++++++++++++++++++ lib/components/rt_error_widget.dart | 25 +++++++++++++++++++++++++ lib/l10n/app_en.arb | 1 + 3 files changed, 54 insertions(+) create mode 100644 assets/svg/404.svg create mode 100644 lib/components/rt_error_widget.dart diff --git a/assets/svg/404.svg b/assets/svg/404.svg new file mode 100644 index 00000000..f86fd0f9 --- /dev/null +++ b/assets/svg/404.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/components/rt_error_widget.dart b/lib/components/rt_error_widget.dart new file mode 100644 index 00000000..60c798a5 --- /dev/null +++ b/lib/components/rt_error_widget.dart @@ -0,0 +1,25 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + +class RTErrorWidget extends StatelessWidget { + const RTErrorWidget({super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.all(18.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SizedBox(height: 100, child: SvgPicture.asset('assets/svg/404.svg')), + const SizedBox(height: 40), + Text( + AppLocalizations.of(context)!.errorMessage, + textAlign: TextAlign.center, + ), + ], + ), + ); + } +} diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 1d4183e0..d5ae63ec 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -1,5 +1,6 @@ { "restaurantDetailAddress": "Address", + "errorMessage": "Oops! Looks like we couldn't fetch the data. Please check your connection and try again later.", "restaurantDetailOverallRating": "Overall Rating", "restaurantDetailReviews": "{count,plural, =1{{count} Review} other{{count} Reviews}}", "@restaurantDetailReviews": { From ec81f4a542e797a2e50f63362e6495845df17c8b Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 13:57:59 -0300 Subject: [PATCH 07/89] feat: create RestaurantsListScreen and RestaurantsListViewModel --- .../restaurant_view_model.dart | 47 ++++++++++++ .../restaurants_list_screen.dart | 72 +++++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 lib/features/restaurants_list/restaurant_view_model.dart create mode 100644 lib/features/restaurants_list/restaurants_list_screen.dart diff --git a/lib/features/restaurants_list/restaurant_view_model.dart b/lib/features/restaurants_list/restaurant_view_model.dart new file mode 100644 index 00000000..c5f011b2 --- /dev/null +++ b/lib/features/restaurants_list/restaurant_view_model.dart @@ -0,0 +1,47 @@ +import 'package:flutter/material.dart'; +import 'package:restaurantour/models/restaurant.dart'; +import 'package:restaurantour/repositories/yelp_repository.dart'; + +enum RestaurantListStatus { loading, content, error } + +extension RestaurantListStatusExt on RestaurantListStatus { + bool get isLoading => this == RestaurantListStatus.loading; + bool get isError => this == RestaurantListStatus.error; +} + +class RestaurantListViewModel with ChangeNotifier { + final YelpRepository yelpRepo; + RestaurantListViewModel({required this.yelpRepo}); + + RestaurantListStatus status = RestaurantListStatus.loading; + RestaurantQueryResult? _restaurants; + List _favorites = [Restaurant.fixture()]; + + List get favorites => _favorites; + List get restaurants => _restaurants?.restaurants ?? []; + + Future load() async { + try { + _emitLoading(); + _restaurants = await yelpRepo.getRestaurants(); + _emitContent(); + } catch (e) { + _emitError(); + } + } + + void _emitContent() { + status = RestaurantListStatus.content; + notifyListeners(); + } + + void _emitLoading() { + status = RestaurantListStatus.loading; + notifyListeners(); + } + + void _emitError() { + status = RestaurantListStatus.error; + notifyListeners(); + } +} diff --git a/lib/features/restaurants_list/restaurants_list_screen.dart b/lib/features/restaurants_list/restaurants_list_screen.dart new file mode 100644 index 00000000..8a61e4d1 --- /dev/null +++ b/lib/features/restaurants_list/restaurants_list_screen.dart @@ -0,0 +1,72 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:provider/provider.dart'; +import 'package:restaurantour/core/rt_colors.dart'; +import 'package:restaurantour/core/inject.dart'; +import 'package:restaurantour/core/text_style.dart'; +import 'package:restaurantour/features/restaurants_list/pages/favorites/favorites_page.dart'; +import 'package:restaurantour/features/restaurants_list/pages/all_restaurants/all_restaurants_page.dart'; +import 'package:restaurantour/features/restaurants_list/restaurant_view_model.dart'; +import 'package:restaurantour/repositories/yelp_repository.dart'; + +class RestaurantsListScreen extends StatefulWidget { + const RestaurantsListScreen({super.key}); + + static Widget create() => ChangeNotifierProvider( + create: (context) => RestaurantListViewModel(yelpRepo: inject()), + child: const RestaurantsListScreen(), + ); + + @override + State createState() => _RestaurantsListScreenState(); +} + +class _RestaurantsListScreenState extends State { + RestaurantListViewModel? model; + + @override + void initState() { + super.initState(); + model = context.read(); + WidgetsBinding.instance.addPostFrameCallback((_) async => await model!.load()); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: DefaultTabController( + length: 2, + child: Scaffold( + appBar: AppBar( + title: Text( + AppLocalizations.of(context)!.restaurantListRestauranTour, + style: RTTextStyle.headingH6(color: RTColors.defaultText), + ), + bottom: TabBar( + tabs: [ + Tab( + child: Text( + AppLocalizations.of(context)!.restaurantListAllRestaurantsTab, + style: RTTextStyle.button(), + ), + ), + Tab( + child: Text( + AppLocalizations.of(context)!.restaurantListMyFavoritesTab, + style: RTTextStyle.button(), + ), + ), + ], + ), + ), + body: const TabBarView( + children: [ + Placeholder(), + Placeholder(), + ], + ), + ), + ), + ); + } +} From 6d75d4dc8c4eb22ee5ffb392da00d68eadf26f08 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 13:59:08 -0300 Subject: [PATCH 08/89] feat: create RestaurantItemWidget --- lib/components/restaurant_item_widget.dart | 100 +++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 lib/components/restaurant_item_widget.dart diff --git a/lib/components/restaurant_item_widget.dart b/lib/components/restaurant_item_widget.dart new file mode 100644 index 00000000..74dcea4d --- /dev/null +++ b/lib/components/restaurant_item_widget.dart @@ -0,0 +1,100 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:restaurantour/core/rt_colors.dart'; +import 'package:restaurantour/core/text_style.dart'; +import 'package:restaurantour/models/restaurant.dart'; + +class RestaurantItemWidget extends StatelessWidget { + const RestaurantItemWidget({super.key, required this.restaurant}); + final Restaurant restaurant; + double get rating => restaurant.rating ?? 0; + String get heroImage => restaurant.heroImage; + String get priceLabel => restaurant.price ?? ''; + List get starRate => List.generate(rating > 5 ? 5 : rating.toInt(), (_) => SvgPicture.asset('assets/svg/star.svg')); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.all(12.0).copyWith(top: 0), + child: Material( + borderRadius: const BorderRadius.all(Radius.circular(8)), + elevation: 2, + child: SizedBox( + height: 104, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + ClipRRect( + borderRadius: const BorderRadius.all(Radius.circular(8)), + child: SizedBox( + width: 88, + height: 88, + child: Image.network( + fit: BoxFit.cover, + heroImage, + errorBuilder: (_, __, ___) => Container( + color: RTColors.placeholder, + child: const Icon(Icons.error_outline), + ), + ), + ), + ), + const SizedBox(width: 12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: Text( + restaurant.name ?? '', + maxLines: 2, + style: RTTextStyle.subtitle1(color: RTColors.defaultText), + ), + ), + Text( + '$priceLabel ${restaurant.displayCategory}', + style: RTTextStyle.caption(color: RTColors.defaultText), + ), + Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row(children: starRate), + Row( + children: [ + Text( + restaurant.isOpen + ? AppLocalizations.of(context)!.restaurantListAllRestaurantsTabOpenNow + : AppLocalizations.of(context)!.restaurantListAllRestaurantsTabClosed, + style: RTTextStyle.overline(color: RTColors.defaultText), + ), + const SizedBox(width: 8), + Padding( + padding: const EdgeInsets.only(top: 3.0), + child: Container( + width: 8, + height: 8, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: restaurant.isOpen ? RTColors.open : RTColors.closed, + ), + ), + ), + ], + ), + ], + ), + ], + ), + ), + ], + ), + ), + ), + ), + ); + } +} From a981ef38e29e8f7584eb47a5ce21f8b79d4db51f Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 14:02:17 -0300 Subject: [PATCH 09/89] feat: add RestaurantsPage --- .../pages/restaurants/restaurants_page.dart | 39 +++++++++++++++++++ .../restaurants_list_screen.dart | 4 +- 2 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 lib/features/restaurants_list/pages/restaurants/restaurants_page.dart diff --git a/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart b/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart new file mode 100644 index 00000000..19bb89a5 --- /dev/null +++ b/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart @@ -0,0 +1,39 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:restaurantour/components/rt_error_widget.dart'; +import 'package:restaurantour/components/restaurant_item_widget.dart'; +import 'package:restaurantour/core/inject.dart'; +import 'package:restaurantour/features/restaurants_list/restaurant_view_model.dart'; +import 'package:restaurantour/repositories/yelp_repository.dart'; + +class RestaurantsPage extends StatefulWidget { + const RestaurantsPage({super.key}); + + @override + State createState() => _RestaurantsPageState(); +} + +class _RestaurantsPageState extends State { + RestaurantListViewModel? model; + + @override + void initState() { + super.initState(); + model = context.read(); + } + + @override + Widget build(BuildContext context) { + model = context.watch(); + if (model!.status.isLoading) return const Center(child: CircularProgressIndicator()); + + if (model!.status.isError) return const RTErrorWidget(); + + return ListView.builder( + itemCount: model!.restaurants.length, + itemBuilder: (context, index) => RestaurantItemWidget( + restaurant: model!.restaurants[index], + ), + ); + } +} diff --git a/lib/features/restaurants_list/restaurants_list_screen.dart b/lib/features/restaurants_list/restaurants_list_screen.dart index 8a61e4d1..416e3fb2 100644 --- a/lib/features/restaurants_list/restaurants_list_screen.dart +++ b/lib/features/restaurants_list/restaurants_list_screen.dart @@ -5,7 +5,7 @@ import 'package:restaurantour/core/rt_colors.dart'; import 'package:restaurantour/core/inject.dart'; import 'package:restaurantour/core/text_style.dart'; import 'package:restaurantour/features/restaurants_list/pages/favorites/favorites_page.dart'; -import 'package:restaurantour/features/restaurants_list/pages/all_restaurants/all_restaurants_page.dart'; +import 'package:restaurantour/features/restaurants_list/pages/restaurants/restaurants_page.dart'; import 'package:restaurantour/features/restaurants_list/restaurant_view_model.dart'; import 'package:restaurantour/repositories/yelp_repository.dart'; @@ -61,7 +61,7 @@ class _RestaurantsListScreenState extends State { ), body: const TabBarView( children: [ - Placeholder(), + RestaurantsPage(), Placeholder(), ], ), From c6e82a1eadd418b60f44b9a5cc7f8015f7a61ea4 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 14:03:21 -0300 Subject: [PATCH 10/89] feat: add FavoritesPage --- .../pages/favorites/favorites_page.dart | 36 +++++++++++++++++++ .../restaurants_list_screen.dart | 2 +- 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 lib/features/restaurants_list/pages/favorites/favorites_page.dart diff --git a/lib/features/restaurants_list/pages/favorites/favorites_page.dart b/lib/features/restaurants_list/pages/favorites/favorites_page.dart new file mode 100644 index 00000000..0ed3c005 --- /dev/null +++ b/lib/features/restaurants_list/pages/favorites/favorites_page.dart @@ -0,0 +1,36 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:restaurantour/components/rt_error_widget.dart'; +import 'package:restaurantour/components/restaurant_item_widget.dart'; +import 'package:restaurantour/features/restaurants_list/restaurant_view_model.dart'; + +class FavoritesPage extends StatefulWidget { + const FavoritesPage({super.key}); + + @override + State createState() => _FavoritesPageState(); +} + +class _FavoritesPageState extends State { + RestaurantListViewModel? model; + + @override + void initState() { + super.initState(); + model = context.read(); + } + + @override + Widget build(BuildContext context) { + model = context.watch(); + + if (model!.status.isError) return const RTErrorWidget(); + + return ListView.builder( + itemCount: model!.favorites.length, + itemBuilder: (context, index) => RestaurantItemWidget( + restaurant: model!.favorites[index], + ), + ); + } +} diff --git a/lib/features/restaurants_list/restaurants_list_screen.dart b/lib/features/restaurants_list/restaurants_list_screen.dart index 416e3fb2..926c3005 100644 --- a/lib/features/restaurants_list/restaurants_list_screen.dart +++ b/lib/features/restaurants_list/restaurants_list_screen.dart @@ -62,7 +62,7 @@ class _RestaurantsListScreenState extends State { body: const TabBarView( children: [ RestaurantsPage(), - Placeholder(), + FavoritesPage(), ], ), ), From acf70dffaf2e2138a0ddaeed0ac551f818d49e98 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 14:05:35 -0300 Subject: [PATCH 11/89] feat: add provider dependency to project --- pubspec.lock | 16 ++++++++++++++++ pubspec.yaml | 1 + 2 files changed, 17 insertions(+) diff --git a/pubspec.lock b/pubspec.lock index 1ac426b0..61bc7c29 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -376,6 +376,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.5" + nested: + dependency: transitive + description: + name: nested + sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" + url: "https://pub.dev" + source: hosted + version: "1.0.0" package_config: dependency: transitive description: @@ -416,6 +424,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.5.1" + provider: + dependency: "direct main" + description: + name: provider + sha256: "9a96a0a19b594dbc5bf0f1f27d2bc67d5f95957359b461cd9feb44ed6ae75096" + url: "https://pub.dev" + source: hosted + version: "6.1.1" pub_semver: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index cb7beed0..5b7e5cc7 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -20,6 +20,7 @@ dependencies: get_it: ^7.6.7 intl: any json_annotation: ^4.8.1 + provider: ^6.1.1 dev_dependencies: flutter_test: From 493c86b6724b019fab084c37956ff192caa12635 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 14:08:46 -0300 Subject: [PATCH 12/89] feat: refactor delegate error handling responsibility to the view model --- lib/repositories/yelp_repository.dart | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/lib/repositories/yelp_repository.dart b/lib/repositories/yelp_repository.dart index 20282af5..fa7533b8 100644 --- a/lib/repositories/yelp_repository.dart +++ b/lib/repositories/yelp_repository.dart @@ -45,15 +45,11 @@ class YelpRepository { /// } /// Future getRestaurants({int offset = 0}) async { - try { - final response = await dio.post>( - '/v3/graphql', - data: _getQuery(offset), - ); - return RestaurantQueryResult.fromJson(response.data!['data']['search']); - } catch (e) { - return null; - } + final response = await dio.post>( + '/v3/graphql', + data: _getQuery(offset), + ); + return RestaurantQueryResult.fromJson(response.data!['data']['search']); } String _getQuery(int offset) { From 93def46a5077a96400bc6837e92a9798fbe02a74 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 14:10:29 -0300 Subject: [PATCH 13/89] feat: await for setupInjection, setup theme, and remove unused code --- lib/main.dart | 58 +++++++++++++-------------------------------------- 1 file changed, 14 insertions(+), 44 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 64d8cf46..8f280884 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,23 +1,21 @@ import 'package:flutter/material.dart'; +import 'package:restaurantour/core/rt_colors.dart'; import 'package:restaurantour/core/inject.dart'; -import 'package:restaurantour/features/restaurant_list/restaurant_list_screen.dart'; -import 'package:restaurantour/repositories/yelp_repository.dart'; +import 'package:restaurantour/features/restaurants_list/restaurants_list_screen.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; -void main() { - setupInjection(); - runApp(const Restaurantour()); +void main() async { + await setupInjection(); + runApp(const RestauranTour()); } -class Restaurantour extends StatelessWidget { - // This widget is the root of your application. - const Restaurantour({super.key}); +class RestauranTour extends StatelessWidget { + const RestauranTour({super.key}); @override Widget build(BuildContext context) { return MaterialApp( - title: 'RestauranTour', debugShowCheckedModeBanner: false, localizationsDelegates: const [ AppLocalizations.delegate, @@ -25,43 +23,15 @@ class Restaurantour extends StatelessWidget { GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], - theme: ThemeData(visualDensity: VisualDensity.adaptivePlatformDensity), - home: const HomePage(), - ); - } -} - -class HomePage extends StatelessWidget { - const HomePage({super.key}); - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Center( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const Text('Restaurantour'), - ElevatedButton( - child: const Text('Fetch Restaurants'), - onPressed: () async { - final yelpRepo = inject(); - - try { - final result = await yelpRepo.getRestaurants(); - if (result != null) { - print('Fetched ${result.restaurants!.length} restaurants'); - } else { - print('No restaurants fetched'); - } - } catch (e) { - print('Failed to fetch restaurants: $e'); - } - }, - ), - ], + theme: ThemeData( + visualDensity: VisualDensity.adaptivePlatformDensity, + colorScheme: const ColorScheme.light( + primary: RTColors.primaryFill, + onSurface: RTColors.secondaryText, + background: RTColors.background, ), ), + home: RestaurantsListScreen.create(), ); } } From 27e6115343c2eb459a79319b17e31fac73d5125f Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 14:13:45 -0300 Subject: [PATCH 14/89] feat: remove unused import --- .../restaurants_list/pages/restaurants/restaurants_page.dart | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart b/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart index 19bb89a5..e86dad2a 100644 --- a/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart +++ b/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart @@ -2,9 +2,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:restaurantour/components/rt_error_widget.dart'; import 'package:restaurantour/components/restaurant_item_widget.dart'; -import 'package:restaurantour/core/inject.dart'; import 'package:restaurantour/features/restaurants_list/restaurant_view_model.dart'; -import 'package:restaurantour/repositories/yelp_repository.dart'; class RestaurantsPage extends StatefulWidget { const RestaurantsPage({super.key}); From 14c270bf390b0685e091d219e1dd688170089eef Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 14:41:01 -0300 Subject: [PATCH 15/89] feat: refactor add elevation to tabBar, and add padding to first item of list --- lib/components/restaurant_item_widget.dart | 6 ++++-- .../pages/favorites/favorites_page.dart | 11 ++++++++--- .../pages/restaurants/restaurants_page.dart | 11 ++++++++--- .../restaurants_list/restaurants_list_screen.dart | 3 +++ 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/lib/components/restaurant_item_widget.dart b/lib/components/restaurant_item_widget.dart index 74dcea4d..36f8b1c4 100644 --- a/lib/components/restaurant_item_widget.dart +++ b/lib/components/restaurant_item_widget.dart @@ -6,8 +6,10 @@ import 'package:restaurantour/core/text_style.dart'; import 'package:restaurantour/models/restaurant.dart'; class RestaurantItemWidget extends StatelessWidget { - const RestaurantItemWidget({super.key, required this.restaurant}); + const RestaurantItemWidget({super.key, required this.restaurant, required this.isFirstItem}); + final bool isFirstItem; final Restaurant restaurant; + double get rating => restaurant.rating ?? 0; String get heroImage => restaurant.heroImage; String get priceLabel => restaurant.price ?? ''; @@ -16,7 +18,7 @@ class RestaurantItemWidget extends StatelessWidget { @override Widget build(BuildContext context) { return Padding( - padding: const EdgeInsets.all(12.0).copyWith(top: 0), + padding: const EdgeInsets.all(12.0).copyWith(top: isFirstItem ? 16 : 0), child: Material( borderRadius: const BorderRadius.all(Radius.circular(8)), elevation: 2, diff --git a/lib/features/restaurants_list/pages/favorites/favorites_page.dart b/lib/features/restaurants_list/pages/favorites/favorites_page.dart index 0ed3c005..ef04c301 100644 --- a/lib/features/restaurants_list/pages/favorites/favorites_page.dart +++ b/lib/features/restaurants_list/pages/favorites/favorites_page.dart @@ -28,9 +28,14 @@ class _FavoritesPageState extends State { return ListView.builder( itemCount: model!.favorites.length, - itemBuilder: (context, index) => RestaurantItemWidget( - restaurant: model!.favorites[index], - ), + itemBuilder: (context, index) { + final isFirstItem = index == 0; + + return RestaurantItemWidget( + isFirstItem: isFirstItem, + restaurant: model!.restaurants[index], + ); + }, ); } } diff --git a/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart b/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart index e86dad2a..a5cfaee2 100644 --- a/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart +++ b/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart @@ -29,9 +29,14 @@ class _RestaurantsPageState extends State { return ListView.builder( itemCount: model!.restaurants.length, - itemBuilder: (context, index) => RestaurantItemWidget( - restaurant: model!.restaurants[index], - ), + itemBuilder: (context, index) { + final isFirstItem = index == 0; + + return RestaurantItemWidget( + isFirstItem: isFirstItem, + restaurant: model!.restaurants[index], + ); + }, ); } } diff --git a/lib/features/restaurants_list/restaurants_list_screen.dart b/lib/features/restaurants_list/restaurants_list_screen.dart index 926c3005..a2280963 100644 --- a/lib/features/restaurants_list/restaurants_list_screen.dart +++ b/lib/features/restaurants_list/restaurants_list_screen.dart @@ -38,6 +38,9 @@ class _RestaurantsListScreenState extends State { length: 2, child: Scaffold( appBar: AppBar( + elevation: 2, + surfaceTintColor: RTColors.background, + shadowColor: RTColors.primaryFill, title: Text( AppLocalizations.of(context)!.restaurantListRestauranTour, style: RTTextStyle.headingH6(color: RTColors.defaultText), From 0ae6b09318620d051bf5b8e443b1c0bcfd777705 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 16:37:51 -0300 Subject: [PATCH 16/89] feat: show restaurant details in another screen --- lib/components/restaurant_item_widget.dart | 141 +++++++++++---------- 1 file changed, 77 insertions(+), 64 deletions(-) diff --git a/lib/components/restaurant_item_widget.dart b/lib/components/restaurant_item_widget.dart index 36f8b1c4..1fd28297 100644 --- a/lib/components/restaurant_item_widget.dart +++ b/lib/components/restaurant_item_widget.dart @@ -3,6 +3,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_svg/svg.dart'; import 'package:restaurantour/core/rt_colors.dart'; import 'package:restaurantour/core/text_style.dart'; +import 'package:restaurantour/features/details/restaurant_details_screen.dart'; import 'package:restaurantour/models/restaurant.dart'; class RestaurantItemWidget extends StatelessWidget { @@ -20,79 +21,91 @@ class RestaurantItemWidget extends StatelessWidget { return Padding( padding: const EdgeInsets.all(12.0).copyWith(top: isFirstItem ? 16 : 0), child: Material( + color: Colors.white, borderRadius: const BorderRadius.all(Radius.circular(8)), elevation: 2, - child: SizedBox( - height: 104, - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - ClipRRect( - borderRadius: const BorderRadius.all(Radius.circular(8)), - child: SizedBox( - width: 88, - height: 88, - child: Image.network( - fit: BoxFit.cover, - heroImage, - errorBuilder: (_, __, ___) => Container( - color: RTColors.placeholder, - child: const Icon(Icons.error_outline), + child: InkWell( + onTap: () => Navigator.push( + context, + MaterialPageRoute( + builder: (BuildContext context) => RestaurantDetailsScreen.create(restaurant), + ), + ), + child: SizedBox( + height: 104, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + ClipRRect( + borderRadius: const BorderRadius.all(Radius.circular(8)), + child: SizedBox( + width: 88, + height: 88, + child: Hero( + tag: restaurant.name ?? '', + child: Image.network( + fit: BoxFit.cover, + heroImage, + errorBuilder: (_, __, ___) => Container( + color: RTColors.placeholder, + child: const Icon(Icons.error_outline), + ), + ), ), ), ), - ), - const SizedBox(width: 12), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Expanded( - child: Text( - restaurant.name ?? '', - maxLines: 2, - style: RTTextStyle.subtitle1(color: RTColors.defaultText), + const SizedBox(width: 12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: Text( + restaurant.name ?? '', + maxLines: 2, + style: RTTextStyle.subtitle1(color: RTColors.defaultText), + ), ), - ), - Text( - '$priceLabel ${restaurant.displayCategory}', - style: RTTextStyle.caption(color: RTColors.defaultText), - ), - Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row(children: starRate), - Row( - children: [ - Text( - restaurant.isOpen - ? AppLocalizations.of(context)!.restaurantListAllRestaurantsTabOpenNow - : AppLocalizations.of(context)!.restaurantListAllRestaurantsTabClosed, - style: RTTextStyle.overline(color: RTColors.defaultText), - ), - const SizedBox(width: 8), - Padding( - padding: const EdgeInsets.only(top: 3.0), - child: Container( - width: 8, - height: 8, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: restaurant.isOpen ? RTColors.open : RTColors.closed, + Text( + '$priceLabel ${restaurant.displayCategory}', + style: RTTextStyle.caption(color: RTColors.defaultText), + ), + Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row(children: starRate), + Row( + children: [ + Text( + restaurant.isOpen + ? AppLocalizations.of(context)!.restaurantListAllRestaurantsTabOpenNow + : AppLocalizations.of(context)!.restaurantListAllRestaurantsTabClosed, + style: RTTextStyle.overline(color: RTColors.defaultText), + ), + const SizedBox(width: 8), + Padding( + padding: const EdgeInsets.only(top: 3.0), + child: Container( + width: 8, + height: 8, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: restaurant.isOpen ? RTColors.open : RTColors.closed, + ), ), ), - ), - ], - ), - ], - ), - ], + ], + ), + ], + ), + ], + ), ), - ), - ], + ], + ), ), ), ), From 69edbaeebbc4ad56d995e8d9dedf10e9c246f0cc Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 17:43:42 -0300 Subject: [PATCH 17/89] feat: refactor colors, add color default --- lib/components/restaurant_item_widget.dart | 6 ++--- lib/core/text_style.dart | 23 ++++++++++++------- .../restaurants_list_screen.dart | 2 +- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/lib/components/restaurant_item_widget.dart b/lib/components/restaurant_item_widget.dart index 1fd28297..e5938064 100644 --- a/lib/components/restaurant_item_widget.dart +++ b/lib/components/restaurant_item_widget.dart @@ -65,12 +65,12 @@ class RestaurantItemWidget extends StatelessWidget { child: Text( restaurant.name ?? '', maxLines: 2, - style: RTTextStyle.subtitle1(color: RTColors.defaultText), + style: RTTextStyle.subtitle1(), ), ), Text( '$priceLabel ${restaurant.displayCategory}', - style: RTTextStyle.caption(color: RTColors.defaultText), + style: RTTextStyle.caption(), ), Row( crossAxisAlignment: CrossAxisAlignment.center, @@ -83,7 +83,7 @@ class RestaurantItemWidget extends StatelessWidget { restaurant.isOpen ? AppLocalizations.of(context)!.restaurantListAllRestaurantsTabOpenNow : AppLocalizations.of(context)!.restaurantListAllRestaurantsTabClosed, - style: RTTextStyle.overline(color: RTColors.defaultText), + style: RTTextStyle.overline(), ), const SizedBox(width: 8), Padding( diff --git a/lib/core/text_style.dart b/lib/core/text_style.dart index f426cd75..5017b081 100644 --- a/lib/core/text_style.dart +++ b/lib/core/text_style.dart @@ -1,12 +1,19 @@ import 'package:flutter/material.dart'; +import 'package:restaurantour/core/rt_colors.dart'; class RTTextStyle { - static headingH4({Color? color}) => TextStyle(fontFamily: 'Lora', fontSize: 28.0, fontWeight: FontWeight.bold, color: color); - static headingH6({Color? color}) => TextStyle(fontFamily: 'Lora', fontSize: 18.0, fontWeight: FontWeight.bold, color: color); - static subtitle1({Color? color}) => TextStyle(fontFamily: 'Lora', fontSize: 16.0, fontWeight: FontWeight.w500, color: color); - static button({Color? color}) => TextStyle(fontFamily: 'OpenSans', fontSize: 14.0, fontWeight: FontWeight.w600, color: color); - static caption({Color? color}) => TextStyle(fontFamily: 'OpenSans', fontSize: 12.0, fontWeight: FontWeight.w400, color: color); - static overline({Color? color}) => TextStyle(fontFamily: 'OpenSans', fontSize: 12.0, fontWeight: FontWeight.w400, fontStyle: FontStyle.italic, color: color); - static body1({Color? color}) => TextStyle(fontFamily: 'OpenSans', fontSize: 16.0, fontWeight: FontWeight.w400, color: color); - static body2({Color? color}) => TextStyle(fontFamily: 'OpenSans', fontSize: 14.0, fontWeight: FontWeight.w400, color: color); + static headingH4({Color color = RTColors.defaultText}) => TextStyle(fontFamily: 'Lora', fontSize: 28.0, fontWeight: FontWeight.bold, color: color); + static headingH6({Color color = RTColors.defaultText}) => TextStyle(fontFamily: 'Lora', fontSize: 18.0, fontWeight: FontWeight.bold, color: color); + static subtitle1({Color color = RTColors.defaultText}) => TextStyle(fontFamily: 'Lora', fontSize: 16.0, fontWeight: FontWeight.w500, color: color); + static button({Color color = RTColors.defaultText}) => TextStyle(fontFamily: 'OpenSans', fontSize: 14.0, fontWeight: FontWeight.w600, color: color); + static caption({Color color = RTColors.defaultText}) => TextStyle(fontFamily: 'OpenSans', fontSize: 12.0, fontWeight: FontWeight.w400, color: color); + static body1({Color color = RTColors.defaultText}) => TextStyle(fontFamily: 'OpenSans', fontSize: 16.0, fontWeight: FontWeight.w400, color: color); + static body2({Color color = RTColors.defaultText}) => TextStyle(fontFamily: 'OpenSans', fontSize: 14.0, fontWeight: FontWeight.w600, color: color); + static overline({Color color = RTColors.defaultText}) => TextStyle( + fontFamily: 'OpenSans', + fontSize: 12.0, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.italic, + color: color, + ); } diff --git a/lib/features/restaurants_list/restaurants_list_screen.dart b/lib/features/restaurants_list/restaurants_list_screen.dart index a2280963..f2a50de0 100644 --- a/lib/features/restaurants_list/restaurants_list_screen.dart +++ b/lib/features/restaurants_list/restaurants_list_screen.dart @@ -43,7 +43,7 @@ class _RestaurantsListScreenState extends State { shadowColor: RTColors.primaryFill, title: Text( AppLocalizations.of(context)!.restaurantListRestauranTour, - style: RTTextStyle.headingH6(color: RTColors.defaultText), + style: RTTextStyle.headingH6(), ), bottom: TabBar( tabs: [ From 022d4c4705af630c2bf874d008a813ac1dff4752 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 17:44:21 -0300 Subject: [PATCH 18/89] feat: create restaurant_review_widget --- lib/components/restaurant_review_widget.dart | 67 ++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 lib/components/restaurant_review_widget.dart diff --git a/lib/components/restaurant_review_widget.dart b/lib/components/restaurant_review_widget.dart new file mode 100644 index 00000000..d60827d6 --- /dev/null +++ b/lib/components/restaurant_review_widget.dart @@ -0,0 +1,67 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:restaurantour/core/rt_colors.dart'; +import 'package:restaurantour/core/text_style.dart'; + +import 'package:restaurantour/models/restaurant.dart'; + +class RestaurantReviewWidget extends StatelessWidget { + const RestaurantReviewWidget({super.key, required this.review, required this.isFirstItem}); + final bool isFirstItem; + final Review review; + final String reviewText = 'Review text goes here. Review text goes here. This is a review. This is a review that is 3 lines long.'; + + int get rating => review.rating ?? 0; + List get starRate => List.generate(rating > 5 ? 5 : rating.toInt(), (_) => SvgPicture.asset('assets/svg/star.svg')); + + @override + Widget build(BuildContext context) { + return Column( + children: [ + if (!isFirstItem) const Divider(color: RTColors.dividerLine), + Padding( + padding: const EdgeInsets.symmetric(vertical: 16.0), + child: SizedBox( + height: 140, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row(children: starRate), + const SizedBox(height: 8), + Text( + reviewText, + style: RTTextStyle.body1(), + ), + const SizedBox(height: 8), + Row( + children: [ + SizedBox( + width: 40, + height: 40, + child: ClipRRect( + borderRadius: BorderRadius.circular(300), + child: Image.network( + fit: BoxFit.cover, + review.user?.imageUrl ?? '', + errorBuilder: (_, __, ___) => Container( + color: RTColors.placeholder, + child: const Icon(Icons.person), + ), + ), + ), + ), + const SizedBox(width: 8), + Text( + review.user?.name ?? '', + style: RTTextStyle.caption(), + ), + ], + ), + ], + ), + ), + ), + ], + ); + } +} From db005eb6bdda736ffe91eb04f816fd47572e1aee Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 17:44:54 -0300 Subject: [PATCH 19/89] feat: create restaurant_details screen and restaurant_details_view_model --- .../details/restaurant_details_screen.dart | 190 ++++++++++++++++++ .../restaurant_details_view_model.dart | 55 +++++ 2 files changed, 245 insertions(+) create mode 100644 lib/features/details/restaurant_details_screen.dart create mode 100644 lib/features/details/restaurant_details_view_model.dart diff --git a/lib/features/details/restaurant_details_screen.dart b/lib/features/details/restaurant_details_screen.dart new file mode 100644 index 00000000..538b4e29 --- /dev/null +++ b/lib/features/details/restaurant_details_screen.dart @@ -0,0 +1,190 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:provider/provider.dart'; +import 'package:restaurantour/components/restaurant_review_widget.dart'; +import 'package:restaurantour/components/rt_error_widget.dart'; +import 'package:restaurantour/core/rt_colors.dart'; +import 'package:restaurantour/core/text_style.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:restaurantour/features/details/restaurant_details_view_model.dart'; +import 'package:restaurantour/models/restaurant.dart'; + +class RestaurantDetailsScreen extends StatefulWidget { + const RestaurantDetailsScreen({super.key, required this.restaurant}); + final Restaurant restaurant; + + static Widget create(Restaurant restaurant) => ChangeNotifierProvider( + create: (context) => RestaurantDetailsViewModel(), + child: RestaurantDetailsScreen(restaurant: restaurant), + ); + + @override + State createState() => _RestaurantDetailsScreenState(); +} + +class _RestaurantDetailsScreenState extends State { + int get reviewsCount => reviewsList.length; + List get reviewsList => widget.restaurant.reviews ?? []; + List get reviews => List.generate(reviewsCount, (index) { + final bool isFirstItem = index == 0; + return RestaurantReviewWidget(isFirstItem: isFirstItem, review: reviewsList[index]); + }); + + RestaurantDetailsViewModel? model; + + @override + void initState() { + super.initState(); + model = context.read(); + WidgetsBinding.instance.addPostFrameCallback((_) async => await model!.load()); + } + + @override + Widget build(BuildContext context) { + model = context.watch(); + + if (model!.status.isLoading) { + return Scaffold( + appBar: AppBar( + elevation: 2, + surfaceTintColor: RTColors.background, + shadowColor: RTColors.primaryFill, + ), + body: const Center(child: CircularProgressIndicator()), + ); + } + + if (model!.status.isError) { + return Scaffold( + appBar: AppBar( + elevation: 2, + surfaceTintColor: RTColors.background, + shadowColor: RTColors.primaryFill, + ), + body: const RTErrorWidget(), + ); + } + + return Scaffold( + appBar: AppBar( + elevation: 2, + surfaceTintColor: RTColors.background, + shadowColor: RTColors.primaryFill, + title: Text( + widget.restaurant.name ?? '', + style: RTTextStyle.headingH6(), + ), + actions: [ + model!.status.isAddingFavorite + ? const Padding( + padding: EdgeInsets.only(right: 14.0), + child: SizedBox(width: 18, height: 18, child: CircularProgressIndicator(strokeWidth: 2)), + ) + : IconButton( + icon: Icon( + (model!.isFavorite ?? false) ? Icons.favorite : Icons.favorite_border, + color: RTColors.primaryFill, + ), + onPressed: () => model!.toggleFavorite(), + ), + ], + ), + body: ListView( + children: [ + SizedBox( + height: 360, + child: Hero(tag: widget.restaurant.name ?? '', child: Image.network(fit: BoxFit.cover, widget.restaurant.heroImage)), + ), + Padding( + padding: const EdgeInsets.all(24.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + '${widget.restaurant.price} ${widget.restaurant.displayCategory}', + style: RTTextStyle.caption(), + ), + Row( + children: [ + Text( + widget.restaurant.isOpen + ? AppLocalizations.of(context)!.restaurantListAllRestaurantsTabOpenNow + : AppLocalizations.of(context)!.restaurantListAllRestaurantsTabClosed, + style: RTTextStyle.overline(), + ), + const SizedBox(width: 8), + Padding( + padding: const EdgeInsets.only(top: 3.0), + child: Container( + width: 8, + height: 8, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: widget.restaurant.isOpen ? RTColors.open : RTColors.closed, + ), + ), + ), + ], + ), + ], + ), + const _Divider(), + Text( + AppLocalizations.of(context)!.restaurantDetailAddress, + style: RTTextStyle.caption(), + ), + const SizedBox(height: 24), + Text( + widget.restaurant.location?.formattedAddress ?? '', + style: RTTextStyle.body2(), + ), + const _Divider(), + Text( + AppLocalizations.of(context)!.restaurantDetailOverallRating, + style: RTTextStyle.caption(), + ), + Padding( + padding: const EdgeInsets.only(top: 16.0), + child: Row( + children: [ + Text( + '${widget.restaurant.rating ?? 0.0}', + style: RTTextStyle.headingH4(), + ), + Padding( + padding: const EdgeInsets.only(top: 12.0), + child: SvgPicture.asset('assets/svg/star.svg'), + ), + ], + ), + ), + const _Divider(), + Text( + AppLocalizations.of(context)!.restaurantDetailReviews(reviewsCount), + style: RTTextStyle.caption(), + ), + ...reviews, + ], + ), + ), + ], + ), + ); + } +} + +class _Divider extends StatelessWidget { + const _Divider(); + + @override + Widget build(BuildContext context) { + return const Padding( + padding: EdgeInsets.symmetric(vertical: 24.0), + child: Divider(color: RTColors.dividerLine), + ); + } +} diff --git a/lib/features/details/restaurant_details_view_model.dart b/lib/features/details/restaurant_details_view_model.dart new file mode 100644 index 00000000..967edf66 --- /dev/null +++ b/lib/features/details/restaurant_details_view_model.dart @@ -0,0 +1,55 @@ +import 'package:flutter/material.dart'; + +enum RestaurantDetailsStatus { loading, content, error, addingFavorite } + +extension RestaurantDetailsStatusExt on RestaurantDetailsStatus { + bool get isLoading => this == RestaurantDetailsStatus.loading; + bool get isAddingFavorite => this == RestaurantDetailsStatus.addingFavorite; + bool get isError => this == RestaurantDetailsStatus.error; +} + +class RestaurantDetailsViewModel with ChangeNotifier { + RestaurantDetailsStatus status = RestaurantDetailsStatus.loading; + bool? isFavorite; + + RestaurantDetailsViewModel({this.isFavorite}); + void toggleFavorite() async { + _emitChangingFavorite(); + await Future.delayed(const Duration(milliseconds: 1500)); + + isFavorite = (isFavorite == null) ? true : !isFavorite!; + _emitContent(); + } + + Future load() async { + try { + _emitLoading(); + await Future.delayed(const Duration(milliseconds: 1500)); + + _emitContent(); + } catch (e) { + print(e); + _emitError(); + } + } + + void _emitContent() { + status = RestaurantDetailsStatus.content; + notifyListeners(); + } + + void _emitChangingFavorite() { + status = RestaurantDetailsStatus.addingFavorite; + notifyListeners(); + } + + void _emitLoading() { + status = RestaurantDetailsStatus.loading; + notifyListeners(); + } + + void _emitError() { + status = RestaurantDetailsStatus.error; + notifyListeners(); + } +} From 1dfa472f175eed92e7f9b44a98f615f36cee8a6d Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 18:37:01 -0300 Subject: [PATCH 20/89] feat: add shimmer load on restaurant list --- lib/components/rt_shimmer_loading.dart | 90 +++++++++++++++++++ .../pages/restaurants/restaurants_page.dart | 3 +- pubspec.lock | 8 ++ pubspec.yaml | 1 + 4 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 lib/components/rt_shimmer_loading.dart diff --git a/lib/components/rt_shimmer_loading.dart b/lib/components/rt_shimmer_loading.dart new file mode 100644 index 00000000..7bbc0554 --- /dev/null +++ b/lib/components/rt_shimmer_loading.dart @@ -0,0 +1,90 @@ +import 'package:flutter/material.dart'; +import 'package:restaurantour/core/rt_colors.dart'; +import 'package:shimmer/shimmer.dart'; + +class RTShimmerLoading extends StatelessWidget { + const RTShimmerLoading({super.key}); + + @override + Widget build(BuildContext context) { + return IgnorePointer( + child: Shimmer.fromColors( + baseColor: const Color(0xFFD8D8D8), + highlightColor: const Color(0xFFFFFFFF), + child: Padding( + padding: const EdgeInsets.only(top: 6.0), + child: ListView( + children: List.generate(15, (index) => const TileLoading()), + ), + ), + ), + ); + } +} + +class TileLoading extends StatelessWidget { + const TileLoading({super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.all(12.0), + child: Container( + decoration: BoxDecoration( + border: Border.all(strokeAlign: 1, color: RTColors.dividerLine), + borderRadius: const BorderRadius.all(Radius.circular(8)), + ), + height: 104, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: Container( + height: 88, + width: 88, + decoration: const BoxDecoration( + color: RTColors.placeholder, + borderRadius: BorderRadius.all(Radius.circular(8)), + ), + ), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.all(12.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + height: 18, + decoration: const BoxDecoration(borderRadius: BorderRadius.all(Radius.circular(8)), color: RTColors.placeholder), + ), + const SizedBox(height: 4), + Container( + height: 18, + decoration: const BoxDecoration(borderRadius: BorderRadius.all(Radius.circular(8)), color: RTColors.placeholder), + ), + const SizedBox(height: 4), + Expanded( + child: Container( + height: 18, + width: 40, + decoration: const BoxDecoration(borderRadius: BorderRadius.all(Radius.circular(8)), color: RTColors.placeholder), + ), + ), + const SizedBox(height: 4), + Container( + height: 12, + width: 80, + decoration: const BoxDecoration(borderRadius: BorderRadius.all(Radius.circular(8)), color: RTColors.placeholder), + ), + ], + ), + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart b/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart index a5cfaee2..bb3e1712 100644 --- a/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart +++ b/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:restaurantour/components/rt_error_widget.dart'; import 'package:restaurantour/components/restaurant_item_widget.dart'; +import 'package:restaurantour/components/rt_shimmer_loading.dart'; import 'package:restaurantour/features/restaurants_list/restaurant_view_model.dart'; class RestaurantsPage extends StatefulWidget { @@ -23,7 +24,7 @@ class _RestaurantsPageState extends State { @override Widget build(BuildContext context) { model = context.watch(); - if (model!.status.isLoading) return const Center(child: CircularProgressIndicator()); + if (model!.status.isLoading) return const RTShimmerLoading(); if (model!.status.isError) return const RTErrorWidget(); diff --git a/pubspec.lock b/pubspec.lock index 61bc7c29..392a6c88 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -464,6 +464,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.4" + shimmer: + dependency: "direct main" + description: + name: shimmer + sha256: "5f88c883a22e9f9f299e5ba0e4f7e6054857224976a5d9f839d4ebdc94a14ac9" + url: "https://pub.dev" + source: hosted + version: "3.0.0" sky_engine: dependency: transitive description: flutter diff --git a/pubspec.yaml b/pubspec.yaml index 5b7e5cc7..4760243c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -21,6 +21,7 @@ dependencies: intl: any json_annotation: ^4.8.1 provider: ^6.1.1 + shimmer: ^3.0.0 dev_dependencies: flutter_test: From 86be1a9d417eebf8cf1f700140639408bc2d8aa3 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 18:41:39 -0300 Subject: [PATCH 21/89] fix: remove default color on button, this was causing a issue on disabled color on tab view --- lib/core/text_style.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/core/text_style.dart b/lib/core/text_style.dart index 5017b081..20688841 100644 --- a/lib/core/text_style.dart +++ b/lib/core/text_style.dart @@ -5,7 +5,7 @@ class RTTextStyle { static headingH4({Color color = RTColors.defaultText}) => TextStyle(fontFamily: 'Lora', fontSize: 28.0, fontWeight: FontWeight.bold, color: color); static headingH6({Color color = RTColors.defaultText}) => TextStyle(fontFamily: 'Lora', fontSize: 18.0, fontWeight: FontWeight.bold, color: color); static subtitle1({Color color = RTColors.defaultText}) => TextStyle(fontFamily: 'Lora', fontSize: 16.0, fontWeight: FontWeight.w500, color: color); - static button({Color color = RTColors.defaultText}) => TextStyle(fontFamily: 'OpenSans', fontSize: 14.0, fontWeight: FontWeight.w600, color: color); + static button({Color? color}) => TextStyle(fontFamily: 'OpenSans', fontSize: 14.0, fontWeight: FontWeight.w600, color: color); static caption({Color color = RTColors.defaultText}) => TextStyle(fontFamily: 'OpenSans', fontSize: 12.0, fontWeight: FontWeight.w400, color: color); static body1({Color color = RTColors.defaultText}) => TextStyle(fontFamily: 'OpenSans', fontSize: 16.0, fontWeight: FontWeight.w400, color: color); static body2({Color color = RTColors.defaultText}) => TextStyle(fontFamily: 'OpenSans', fontSize: 14.0, fontWeight: FontWeight.w600, color: color); From 6a615193f8a4b2b2746e01c507266b670baa1373 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 22:41:04 -0300 Subject: [PATCH 22/89] feat: add shared_preferences to save favorites locally, and fix error [Unable to find a target named `RunnerTests` in project `Runner.xcodeproj`, did find `Runner`] --- ios/Flutter/Debug.xcconfig | 1 + ios/Flutter/Release.xcconfig | 1 + ios/Podfile | 44 ++++++ ios/Podfile.lock | 23 ++++ ios/Runner.xcodeproj/project.pbxproj | 68 ++++++++++ .../contents.xcworkspacedata | 3 + pubspec.lock | 127 +++++++++++++++++- pubspec.yaml | 1 + 8 files changed, 267 insertions(+), 1 deletion(-) create mode 100644 ios/Podfile create mode 100644 ios/Podfile.lock diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig index 592ceee8..ec97fc6f 100644 --- a/ios/Flutter/Debug.xcconfig +++ b/ios/Flutter/Debug.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "Generated.xcconfig" diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig index 592ceee8..c4855bfe 100644 --- a/ios/Flutter/Release.xcconfig +++ b/ios/Flutter/Release.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "Generated.xcconfig" diff --git a/ios/Podfile b/ios/Podfile new file mode 100644 index 00000000..1ac99b85 --- /dev/null +++ b/ios/Podfile @@ -0,0 +1,44 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '12.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + # target 'RunnerTests' do + # inherit! :search_paths + # end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/ios/Podfile.lock b/ios/Podfile.lock new file mode 100644 index 00000000..5c50a6c3 --- /dev/null +++ b/ios/Podfile.lock @@ -0,0 +1,23 @@ +PODS: + - Flutter (1.0.0) + - shared_preferences_foundation (0.0.1): + - Flutter + - FlutterMacOS + +DEPENDENCIES: + - Flutter (from `Flutter`) + - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) + +EXTERNAL SOURCES: + Flutter: + :path: Flutter + shared_preferences_foundation: + :path: ".symlinks/plugins/shared_preferences_foundation/darwin" + +SPEC CHECKSUMS: + Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 + shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695 + +PODFILE CHECKSUM: 075ddf6b19cdcced44581bd8fbdfb58404a78f8a + +COCOAPODS: 1.14.3 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 0f3b6b00..fda473ab 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -8,6 +8,7 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 2515EF51F3937ECFBA186785 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B9F3910B042FF5884DAAB51 /* Pods_Runner.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; @@ -32,8 +33,12 @@ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 5B9F3910B042FF5884DAAB51 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5F4D7F61268BBEDB2874F63F /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 609452AFA65DF558375F3C42 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 77BA09A735E2EF81A865356D /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; @@ -49,6 +54,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 2515EF51F3937ECFBA186785 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -72,6 +78,8 @@ 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, + C85482E760C77116C8325CEE /* Pods */, + CD8DC65D6CE479AFD01AC8A5 /* Frameworks */, ); sourceTree = ""; }; @@ -98,6 +106,25 @@ path = Runner; sourceTree = ""; }; + C85482E760C77116C8325CEE /* Pods */ = { + isa = PBXGroup; + children = ( + 5F4D7F61268BBEDB2874F63F /* Pods-Runner.debug.xcconfig */, + 609452AFA65DF558375F3C42 /* Pods-Runner.release.xcconfig */, + 77BA09A735E2EF81A865356D /* Pods-Runner.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + CD8DC65D6CE479AFD01AC8A5 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 5B9F3910B042FF5884DAAB51 /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -105,12 +132,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( + D03E5B4AA7E367F956112BE9 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + 1A59419E5B0870DF672461B0 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -169,6 +198,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 1A59419E5B0870DF672461B0 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -200,6 +246,28 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + D03E5B4AA7E367F956112BE9 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata index 1d526a16..21a3cc14 100644 --- a/ios/Runner.xcworkspace/contents.xcworkspacedata +++ b/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -4,4 +4,7 @@ + + diff --git a/pubspec.lock b/pubspec.lock index 392a6c88..68c7f754 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -193,6 +193,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" + url: "https://pub.dev" + source: hosted + version: "2.1.0" file: dependency: transitive description: @@ -240,6 +248,11 @@ packages: 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: @@ -408,6 +421,30 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.1" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 + url: "https://pub.dev" + source: hosted + version: "2.2.1" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" + url: "https://pub.dev" + source: hosted + version: "2.2.1" petitparser: dependency: transitive description: @@ -416,6 +453,22 @@ packages: url: "https://pub.dev" source: hosted version: "6.0.2" + platform: + dependency: transitive + description: + name: platform + sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" + url: "https://pub.dev" + source: hosted + version: "3.1.4" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" pool: dependency: transitive description: @@ -448,6 +501,62 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.3" + shared_preferences: + dependency: "direct main" + description: + name: shared_preferences + sha256: "81429e4481e1ccfb51ede496e916348668fd0921627779233bd24cc3ff6abd02" + url: "https://pub.dev" + source: hosted + version: "2.2.2" + shared_preferences_android: + dependency: transitive + description: + name: shared_preferences_android + sha256: "8568a389334b6e83415b6aae55378e158fbc2314e074983362d20c562780fb06" + url: "https://pub.dev" + source: hosted + version: "2.2.1" + shared_preferences_foundation: + dependency: transitive + description: + name: shared_preferences_foundation + sha256: "7708d83064f38060c7b39db12aefe449cb8cdc031d6062280087bc4cdb988f5c" + url: "https://pub.dev" + source: hosted + version: "2.3.5" + shared_preferences_linux: + dependency: transitive + description: + name: shared_preferences_linux + sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + shared_preferences_platform_interface: + dependency: transitive + description: + name: shared_preferences_platform_interface + sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + shared_preferences_web: + dependency: transitive + description: + name: shared_preferences_web + sha256: "7b15ffb9387ea3e237bb7a66b8a23d2147663d391cafc5c8f37b2e7b4bde5d21" + url: "https://pub.dev" + source: hosted + version: "2.2.2" + shared_preferences_windows: + dependency: transitive + description: + name: shared_preferences_windows + sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59" + url: "https://pub.dev" + source: hosted + version: "2.3.2" shelf: dependency: transitive description: @@ -621,6 +730,22 @@ packages: url: "https://pub.dev" source: hosted version: "2.4.0" + win32: + dependency: transitive + description: + name: win32 + sha256: "464f5674532865248444b4c3daca12bd9bf2d7c47f759ce2617986e7229494a8" + url: "https://pub.dev" + source: hosted + version: "5.2.0" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d + url: "https://pub.dev" + source: hosted + version: "1.0.4" xml: dependency: transitive description: @@ -639,4 +764,4 @@ packages: version: "3.1.2" sdks: dart: ">=3.2.0 <4.0.0" - flutter: ">=3.7.0-0" + flutter: ">=3.16.0" diff --git a/pubspec.yaml b/pubspec.yaml index 4760243c..15cbb84a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -21,6 +21,7 @@ dependencies: intl: any json_annotation: ^4.8.1 provider: ^6.1.1 + shared_preferences: ^2.2.2 shimmer: ^3.0.0 dev_dependencies: From b9fea076bce8512e030c2e30feffdf46137f6c50 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 22:43:43 -0300 Subject: [PATCH 23/89] feat: create favorite_service to manage data from shared_preferences, register shared_preferences and favorite_service on get_it, update api key --- lib/core/inject.dart | 9 ++++++++- lib/services/favorites_service.dart | 28 ++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 lib/services/favorites_service.dart diff --git a/lib/core/inject.dart b/lib/core/inject.dart index 9e0267fd..34cd4539 100644 --- a/lib/core/inject.dart +++ b/lib/core/inject.dart @@ -1,13 +1,16 @@ import 'package:dio/dio.dart'; import 'package:get_it/get_it.dart'; import 'package:restaurantour/repositories/yelp_repository.dart'; +import 'package:restaurantour/services/favorites_service.dart'; +import 'package:shared_preferences/shared_preferences.dart'; GetIt inject = GetIt.instance; Future setupInjection() async { - const _apiKey = 'AO8TkgbRdw0-6gxWaLeDx6s6OYsJaAhoN8_PuNREHCvccZWmqO1w1KiO63ted9E7lE6EHoAvslqtyl_fXcet39TiPkmnKVNzpUV51cyC0Tr5XxSQ1_BT4n0NN-XPZXYx'; + const _apiKey = 'vssWzyNh4aMaf2s8z8jOVuVkDI1OERKDaPXgMIn0qYDNB_1DseUsTytTzRmQzlADj4b_S5XfkaR1Kv4N4SGwOtu8lH-0yaNze1M-KhBL8EIGVkOT55vGIRjnwfHQZXYx'; await inject.reset(); + SharedPreferences sharedPref = await SharedPreferences.getInstance(); inject.registerLazySingleton( () => Dio( @@ -22,4 +25,8 @@ Future setupInjection() async { ); inject.registerLazySingleton(() => YelpRepository(dio: inject())); + + inject.registerLazySingleton(() => sharedPref); + + inject.registerLazySingleton(() => FavoritesService(sharedPreferences: inject())); } diff --git a/lib/services/favorites_service.dart b/lib/services/favorites_service.dart new file mode 100644 index 00000000..6230aed6 --- /dev/null +++ b/lib/services/favorites_service.dart @@ -0,0 +1,28 @@ +import 'package:shared_preferences/shared_preferences.dart'; + +class FavoritesService { + final SharedPreferences sharedPreferences; + final String favoritesKey = 'favorites'; + + FavoritesService({required this.sharedPreferences}); + + Future> loadFavorites() async { + List? favoriteItems = sharedPreferences.getStringList(favoritesKey); + favoriteItems ??= []; + return favoriteItems; + } + + Future addFavorite(String restaurantId) async { + List? favoriteItems = sharedPreferences.getStringList(favoritesKey); + favoriteItems ??= []; + favoriteItems.add(restaurantId); + await sharedPreferences.setStringList(favoritesKey, favoriteItems); + } + + Future removeFavorite(String restaurantId) async { + List? favoriteItems = sharedPreferences.getStringList(favoritesKey); + favoriteItems ??= []; + favoriteItems.remove(restaurantId); + await sharedPreferences.setStringList(favoritesKey, favoriteItems); + } +} From 13ea9cd8cb6df351fd377c7d4d11801c488b4704 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 22:57:53 -0300 Subject: [PATCH 24/89] feat: add shared_preferences to save favorites locally, and fix error [Unable to find a target named `RunnerTests` in project `Runner.xcodeproj`, did find `Runner`] --- lib/main.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/main.dart b/lib/main.dart index 8f280884..b7a58154 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -6,7 +6,9 @@ import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; void main() async { + WidgetsFlutterBinding.ensureInitialized(); await setupInjection(); + runApp(const RestauranTour()); } From f63f4c4713aa9f8a9fb4bd25fe6fe929528a9181 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 22:59:53 -0300 Subject: [PATCH 25/89] feat: add callback to restaurant_item, to refresh favorites page when finish navigation --- lib/components/restaurant_item_widget.dart | 20 +++++++++++-------- .../pages/favorites/favorites_page.dart | 10 ++++++++-- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/lib/components/restaurant_item_widget.dart b/lib/components/restaurant_item_widget.dart index e5938064..802651f9 100644 --- a/lib/components/restaurant_item_widget.dart +++ b/lib/components/restaurant_item_widget.dart @@ -7,7 +7,8 @@ import 'package:restaurantour/features/details/restaurant_details_screen.dart'; import 'package:restaurantour/models/restaurant.dart'; class RestaurantItemWidget extends StatelessWidget { - const RestaurantItemWidget({super.key, required this.restaurant, required this.isFirstItem}); + const RestaurantItemWidget({super.key, required this.restaurant, required this.isFirstItem, this.onFinishNavigation}); + final VoidCallback? onFinishNavigation; final bool isFirstItem; final Restaurant restaurant; @@ -25,12 +26,15 @@ class RestaurantItemWidget extends StatelessWidget { borderRadius: const BorderRadius.all(Radius.circular(8)), elevation: 2, child: InkWell( - onTap: () => Navigator.push( - context, - MaterialPageRoute( - builder: (BuildContext context) => RestaurantDetailsScreen.create(restaurant), - ), - ), + onTap: () async { + await Navigator.push( + context, + MaterialPageRoute( + builder: (BuildContext context) => RestaurantDetailsScreen.create(restaurant), + ), + ); + if (onFinishNavigation != null) onFinishNavigation!(); + }, child: SizedBox( height: 104, child: Padding( @@ -50,7 +54,7 @@ class RestaurantItemWidget extends StatelessWidget { heroImage, errorBuilder: (_, __, ___) => Container( color: RTColors.placeholder, - child: const Icon(Icons.error_outline), + child: const Icon(Icons.image_not_supported_rounded), ), ), ), diff --git a/lib/features/restaurants_list/pages/favorites/favorites_page.dart b/lib/features/restaurants_list/pages/favorites/favorites_page.dart index ef04c301..2c0d7dcc 100644 --- a/lib/features/restaurants_list/pages/favorites/favorites_page.dart +++ b/lib/features/restaurants_list/pages/favorites/favorites_page.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:restaurantour/components/rt_error_widget.dart'; import 'package:restaurantour/components/restaurant_item_widget.dart'; +import 'package:restaurantour/components/rt_shimmer_loading.dart'; import 'package:restaurantour/features/restaurants_list/restaurant_view_model.dart'; class FavoritesPage extends StatefulWidget { @@ -18,13 +19,16 @@ class _FavoritesPageState extends State { void initState() { super.initState(); model = context.read(); + WidgetsBinding.instance.addPostFrameCallback((_) async => await model!.loadFavorites()); } @override Widget build(BuildContext context) { model = context.watch(); - if (model!.status.isError) return const RTErrorWidget(); + if (model!.status.isLoading) return const RTShimmerLoading(); + + if (model!.status.isFavoriteError) return const RTErrorWidget(); return ListView.builder( itemCount: model!.favorites.length, @@ -32,8 +36,10 @@ class _FavoritesPageState extends State { final isFirstItem = index == 0; return RestaurantItemWidget( + key: Key('favorite-restaurant-$index'), isFirstItem: isFirstItem, - restaurant: model!.restaurants[index], + restaurant: model!.favorites[index], + onFinishNavigation: model!.loadFavorites, ); }, ); From b3fa4cc747e77806d8358b3014f55380077df9f0 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 23:03:08 -0300 Subject: [PATCH 26/89] feat: enable the addition and removal of restaurants from the favorites list and retrieve the favorites list from shared_preferences on favorites_page --- .../details/restaurant_details_screen.dart | 15 ++++++-- .../restaurant_details_view_model.dart | 34 +++++++++++++------ .../pages/restaurants/restaurants_page.dart | 1 + .../restaurant_view_model.dart | 31 +++++++++++++++-- .../restaurants_list_screen.dart | 3 +- 5 files changed, 67 insertions(+), 17 deletions(-) diff --git a/lib/features/details/restaurant_details_screen.dart b/lib/features/details/restaurant_details_screen.dart index 538b4e29..5ddc2c8c 100644 --- a/lib/features/details/restaurant_details_screen.dart +++ b/lib/features/details/restaurant_details_screen.dart @@ -3,18 +3,20 @@ import 'package:flutter_svg/svg.dart'; import 'package:provider/provider.dart'; import 'package:restaurantour/components/restaurant_review_widget.dart'; import 'package:restaurantour/components/rt_error_widget.dart'; +import 'package:restaurantour/core/inject.dart'; import 'package:restaurantour/core/rt_colors.dart'; import 'package:restaurantour/core/text_style.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:restaurantour/features/details/restaurant_details_view_model.dart'; import 'package:restaurantour/models/restaurant.dart'; +import 'package:restaurantour/services/favorites_service.dart'; class RestaurantDetailsScreen extends StatefulWidget { const RestaurantDetailsScreen({super.key, required this.restaurant}); final Restaurant restaurant; static Widget create(Restaurant restaurant) => ChangeNotifierProvider( - create: (context) => RestaurantDetailsViewModel(), + create: (context) => RestaurantDetailsViewModel(restaurantId: restaurant.id ?? '', favoriteService: inject()), child: RestaurantDetailsScreen(restaurant: restaurant), ); @@ -82,7 +84,7 @@ class _RestaurantDetailsScreenState extends State { ) : IconButton( icon: Icon( - (model!.isFavorite ?? false) ? Icons.favorite : Icons.favorite_border, + (model!.isFavorite) ? Icons.favorite : Icons.favorite_border, color: RTColors.primaryFill, ), onPressed: () => model!.toggleFavorite(), @@ -93,7 +95,14 @@ class _RestaurantDetailsScreenState extends State { children: [ SizedBox( height: 360, - child: Hero(tag: widget.restaurant.name ?? '', child: Image.network(fit: BoxFit.cover, widget.restaurant.heroImage)), + child: Hero( + tag: widget.restaurant.name ?? '', + child: Image.network( + fit: BoxFit.cover, + widget.restaurant.heroImage, + errorBuilder: (_, __, ___) => const Icon(Icons.image_not_supported_rounded, size: 120), + ), + ), ), Padding( padding: const EdgeInsets.all(24.0), diff --git a/lib/features/details/restaurant_details_view_model.dart b/lib/features/details/restaurant_details_view_model.dart index 967edf66..a0877909 100644 --- a/lib/features/details/restaurant_details_view_model.dart +++ b/lib/features/details/restaurant_details_view_model.dart @@ -1,30 +1,44 @@ import 'package:flutter/material.dart'; +import 'package:restaurantour/services/favorites_service.dart'; -enum RestaurantDetailsStatus { loading, content, error, addingFavorite } +enum RestaurantDetailsStatus { loading, content, error, updatingFavorite } extension RestaurantDetailsStatusExt on RestaurantDetailsStatus { bool get isLoading => this == RestaurantDetailsStatus.loading; - bool get isAddingFavorite => this == RestaurantDetailsStatus.addingFavorite; + bool get isAddingFavorite => this == RestaurantDetailsStatus.updatingFavorite; bool get isError => this == RestaurantDetailsStatus.error; } class RestaurantDetailsViewModel with ChangeNotifier { RestaurantDetailsStatus status = RestaurantDetailsStatus.loading; - bool? isFavorite; + final String restaurantId; + final FavoritesService favoriteService; + bool isFavorite = false; - RestaurantDetailsViewModel({this.isFavorite}); + List _favoriteList = []; + + RestaurantDetailsViewModel({required this.favoriteService, required this.restaurantId}); void toggleFavorite() async { - _emitChangingFavorite(); - await Future.delayed(const Duration(milliseconds: 1500)); + try { + _emitChangingFavorite(); + await Future.delayed(const Duration(milliseconds: 500)); + isFavorite ? await favoriteService.removeFavorite(restaurantId) : await favoriteService.addFavorite(restaurantId); - isFavorite = (isFavorite == null) ? true : !isFavorite!; - _emitContent(); + isFavorite = !isFavorite; + } catch (e) { + print(e); + } finally { + _emitContent(); + } } Future load() async { try { _emitLoading(); - await Future.delayed(const Duration(milliseconds: 1500)); + + _favoriteList = await favoriteService.loadFavorites(); + isFavorite = _favoriteList.contains(restaurantId); + await Future.delayed(const Duration(milliseconds: 300)); _emitContent(); } catch (e) { @@ -39,7 +53,7 @@ class RestaurantDetailsViewModel with ChangeNotifier { } void _emitChangingFavorite() { - status = RestaurantDetailsStatus.addingFavorite; + status = RestaurantDetailsStatus.updatingFavorite; notifyListeners(); } diff --git a/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart b/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart index bb3e1712..eea1ff9d 100644 --- a/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart +++ b/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart @@ -34,6 +34,7 @@ class _RestaurantsPageState extends State { final isFirstItem = index == 0; return RestaurantItemWidget( + key: Key('restaurant-$index'), isFirstItem: isFirstItem, restaurant: model!.restaurants[index], ); diff --git a/lib/features/restaurants_list/restaurant_view_model.dart b/lib/features/restaurants_list/restaurant_view_model.dart index c5f011b2..0b028a03 100644 --- a/lib/features/restaurants_list/restaurant_view_model.dart +++ b/lib/features/restaurants_list/restaurant_view_model.dart @@ -1,21 +1,24 @@ import 'package:flutter/material.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/yelp_repository.dart'; +import 'package:restaurantour/services/favorites_service.dart'; -enum RestaurantListStatus { loading, content, error } +enum RestaurantListStatus { loading, content, error, favoriteError } extension RestaurantListStatusExt on RestaurantListStatus { bool get isLoading => this == RestaurantListStatus.loading; bool get isError => this == RestaurantListStatus.error; + bool get isFavoriteError => this == RestaurantListStatus.favoriteError; } class RestaurantListViewModel with ChangeNotifier { final YelpRepository yelpRepo; - RestaurantListViewModel({required this.yelpRepo}); + final FavoritesService favoritesService; + RestaurantListViewModel({required this.favoritesService, required this.yelpRepo}); RestaurantListStatus status = RestaurantListStatus.loading; RestaurantQueryResult? _restaurants; - List _favorites = [Restaurant.fixture()]; + List _favorites = []; List get favorites => _favorites; List get restaurants => _restaurants?.restaurants ?? []; @@ -23,13 +26,30 @@ class RestaurantListViewModel with ChangeNotifier { Future load() async { try { _emitLoading(); + await Future.delayed(const Duration(milliseconds: 500)); _restaurants = await yelpRepo.getRestaurants(); _emitContent(); } catch (e) { + print(e); _emitError(); } } + Future loadFavorites() async { + try { + _emitLoading(); + await Future.delayed(const Duration(milliseconds: 200)); + _favorites = []; + final favoritesIds = await favoritesService.loadFavorites(); + _favorites = restaurants.where((restaurant) => favoritesIds.contains(restaurant.id)).toList(); + + _emitContent(); + } catch (e) { + print(e); + _emitFavoriteError(); + } + } + void _emitContent() { status = RestaurantListStatus.content; notifyListeners(); @@ -44,4 +64,9 @@ class RestaurantListViewModel with ChangeNotifier { status = RestaurantListStatus.error; notifyListeners(); } + + void _emitFavoriteError() { + status = RestaurantListStatus.favoriteError; + notifyListeners(); + } } diff --git a/lib/features/restaurants_list/restaurants_list_screen.dart b/lib/features/restaurants_list/restaurants_list_screen.dart index f2a50de0..4345716f 100644 --- a/lib/features/restaurants_list/restaurants_list_screen.dart +++ b/lib/features/restaurants_list/restaurants_list_screen.dart @@ -8,12 +8,13 @@ import 'package:restaurantour/features/restaurants_list/pages/favorites/favorite import 'package:restaurantour/features/restaurants_list/pages/restaurants/restaurants_page.dart'; import 'package:restaurantour/features/restaurants_list/restaurant_view_model.dart'; import 'package:restaurantour/repositories/yelp_repository.dart'; +import 'package:restaurantour/services/favorites_service.dart'; class RestaurantsListScreen extends StatefulWidget { const RestaurantsListScreen({super.key}); static Widget create() => ChangeNotifierProvider( - create: (context) => RestaurantListViewModel(yelpRepo: inject()), + create: (context) => RestaurantListViewModel(yelpRepo: inject(), favoritesService: inject()), child: const RestaurantsListScreen(), ); From 4b644607dee9b299681beea9de7f9069c07b2f13 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 23:22:07 -0300 Subject: [PATCH 27/89] feat: display an empty state to the user when there are no results available --- lib/components/rt_empty_widget.dart | 27 +++++++++++++++++++ .../pages/favorites/favorites_page.dart | 5 +++- .../pages/restaurants/restaurants_page.dart | 3 +++ .../restaurant_view_model.dart | 24 ++++++++++++----- lib/l10n/app_en.arb | 1 + 5 files changed, 53 insertions(+), 7 deletions(-) create mode 100644 lib/components/rt_empty_widget.dart diff --git a/lib/components/rt_empty_widget.dart b/lib/components/rt_empty_widget.dart new file mode 100644 index 00000000..fabafd75 --- /dev/null +++ b/lib/components/rt_empty_widget.dart @@ -0,0 +1,27 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + +class RTEmptyWidget extends StatelessWidget { + const RTEmptyWidget({super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.all(18.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const SizedBox( + height: 100, + child: Icon(Icons.search, size: 100), + ), + const SizedBox(height: 40), + Text( + AppLocalizations.of(context)!.emptyMessage, + textAlign: TextAlign.center, + ), + ], + ), + ); + } +} diff --git a/lib/features/restaurants_list/pages/favorites/favorites_page.dart b/lib/features/restaurants_list/pages/favorites/favorites_page.dart index 2c0d7dcc..70445444 100644 --- a/lib/features/restaurants_list/pages/favorites/favorites_page.dart +++ b/lib/features/restaurants_list/pages/favorites/favorites_page.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import 'package:restaurantour/components/rt_empty_widget.dart'; import 'package:restaurantour/components/rt_error_widget.dart'; import 'package:restaurantour/components/restaurant_item_widget.dart'; import 'package:restaurantour/components/rt_shimmer_loading.dart'; @@ -28,7 +29,9 @@ class _FavoritesPageState extends State { if (model!.status.isLoading) return const RTShimmerLoading(); - if (model!.status.isFavoriteError) return const RTErrorWidget(); + if (model!.status.isFavoritesError) return const RTErrorWidget(); + + if (model!.status.isFavoritesEmpty) return const RTEmptyWidget(); return ListView.builder( itemCount: model!.favorites.length, diff --git a/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart b/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart index eea1ff9d..1a3b6b44 100644 --- a/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart +++ b/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import 'package:restaurantour/components/rt_empty_widget.dart'; import 'package:restaurantour/components/rt_error_widget.dart'; import 'package:restaurantour/components/restaurant_item_widget.dart'; import 'package:restaurantour/components/rt_shimmer_loading.dart'; @@ -28,6 +29,8 @@ class _RestaurantsPageState extends State { if (model!.status.isError) return const RTErrorWidget(); + if (model!.status.isRestaurantsEmpty) return const RTEmptyWidget(); + return ListView.builder( itemCount: model!.restaurants.length, itemBuilder: (context, index) { diff --git a/lib/features/restaurants_list/restaurant_view_model.dart b/lib/features/restaurants_list/restaurant_view_model.dart index 0b028a03..f02d0cbb 100644 --- a/lib/features/restaurants_list/restaurant_view_model.dart +++ b/lib/features/restaurants_list/restaurant_view_model.dart @@ -3,12 +3,14 @@ import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/yelp_repository.dart'; import 'package:restaurantour/services/favorites_service.dart'; -enum RestaurantListStatus { loading, content, error, favoriteError } +enum RestaurantListStatus { loading, content, error, favoritesEmpty, restaurantsEmpty, favoritesError } extension RestaurantListStatusExt on RestaurantListStatus { bool get isLoading => this == RestaurantListStatus.loading; bool get isError => this == RestaurantListStatus.error; - bool get isFavoriteError => this == RestaurantListStatus.favoriteError; + bool get isFavoritesEmpty => this == RestaurantListStatus.favoritesEmpty; + bool get isRestaurantsEmpty => this == RestaurantListStatus.restaurantsEmpty; + bool get isFavoritesError => this == RestaurantListStatus.favoritesError; } class RestaurantListViewModel with ChangeNotifier { @@ -28,7 +30,8 @@ class RestaurantListViewModel with ChangeNotifier { _emitLoading(); await Future.delayed(const Duration(milliseconds: 500)); _restaurants = await yelpRepo.getRestaurants(); - _emitContent(); + + restaurants.isEmpty ? _emitRestaurantsEmpty() : _emitContent(); } catch (e) { print(e); _emitError(); @@ -42,8 +45,7 @@ class RestaurantListViewModel with ChangeNotifier { _favorites = []; final favoritesIds = await favoritesService.loadFavorites(); _favorites = restaurants.where((restaurant) => favoritesIds.contains(restaurant.id)).toList(); - - _emitContent(); + _favorites.isEmpty ? _emitFavoritesEmpty() : _emitContent(); } catch (e) { print(e); _emitFavoriteError(); @@ -66,7 +68,17 @@ class RestaurantListViewModel with ChangeNotifier { } void _emitFavoriteError() { - status = RestaurantListStatus.favoriteError; + status = RestaurantListStatus.favoritesError; + notifyListeners(); + } + + void _emitRestaurantsEmpty() { + status = RestaurantListStatus.restaurantsEmpty; + notifyListeners(); + } + + void _emitFavoritesEmpty() { + status = RestaurantListStatus.favoritesEmpty; notifyListeners(); } } diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index d5ae63ec..c0b314a5 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -1,6 +1,7 @@ { "restaurantDetailAddress": "Address", "errorMessage": "Oops! Looks like we couldn't fetch the data. Please check your connection and try again later.", + "emptyMessage": "Oops! It seems like there are no items to display at the moment. Check back later for updates or add some items to your list to get started!", "restaurantDetailOverallRating": "Overall Rating", "restaurantDetailReviews": "{count,plural, =1{{count} Review} other{{count} Reviews}}", "@restaurantDetailReviews": { From 466873a3bbdc8424a2192c7415d4173dd3c097c2 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 23:25:07 -0300 Subject: [PATCH 28/89] feat: add pull to refresh on restaurants list --- .../pages/restaurants/restaurants_page.dart | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart b/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart index 1a3b6b44..9a6b70e3 100644 --- a/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart +++ b/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart @@ -31,17 +31,20 @@ class _RestaurantsPageState extends State { if (model!.status.isRestaurantsEmpty) return const RTEmptyWidget(); - return ListView.builder( - itemCount: model!.restaurants.length, - itemBuilder: (context, index) { - final isFirstItem = index == 0; - - return RestaurantItemWidget( - key: Key('restaurant-$index'), - isFirstItem: isFirstItem, - restaurant: model!.restaurants[index], - ); - }, + return RefreshIndicator( + onRefresh: () => model!.load(), + child: ListView.builder( + itemCount: model!.restaurants.length, + itemBuilder: (context, index) { + final isFirstItem = index == 0; + + return RestaurantItemWidget( + key: Key('restaurant-$index'), + isFirstItem: isFirstItem, + restaurant: model!.restaurants[index], + ); + }, + ), ); } } From 87e8dd7a7cf9b1875ff3af985bc2036f4be3d866 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 17 Feb 2024 23:39:27 -0300 Subject: [PATCH 29/89] feat: refactor - rename yelp_repository to restaurant_repository --- lib/core/inject.dart | 4 +- .../restaurant_view_model.dart | 8 +- .../restaurants_list_screen.dart | 7 +- lib/repositories/restaurant_repository.dart | 52 +++++++++++ lib/repositories/yelp_repository.dart | 90 ------------------- 5 files changed, 63 insertions(+), 98 deletions(-) create mode 100644 lib/repositories/restaurant_repository.dart delete mode 100644 lib/repositories/yelp_repository.dart diff --git a/lib/core/inject.dart b/lib/core/inject.dart index 34cd4539..3972a57c 100644 --- a/lib/core/inject.dart +++ b/lib/core/inject.dart @@ -1,6 +1,6 @@ import 'package:dio/dio.dart'; import 'package:get_it/get_it.dart'; -import 'package:restaurantour/repositories/yelp_repository.dart'; +import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorites_service.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -24,7 +24,7 @@ Future setupInjection() async { ), ); - inject.registerLazySingleton(() => YelpRepository(dio: inject())); + inject.registerLazySingleton(() => RestaurantRepository(dio: inject())); inject.registerLazySingleton(() => sharedPref); diff --git a/lib/features/restaurants_list/restaurant_view_model.dart b/lib/features/restaurants_list/restaurant_view_model.dart index f02d0cbb..d2c283ac 100644 --- a/lib/features/restaurants_list/restaurant_view_model.dart +++ b/lib/features/restaurants_list/restaurant_view_model.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:restaurantour/models/restaurant.dart'; -import 'package:restaurantour/repositories/yelp_repository.dart'; +import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorites_service.dart'; enum RestaurantListStatus { loading, content, error, favoritesEmpty, restaurantsEmpty, favoritesError } @@ -14,9 +14,9 @@ extension RestaurantListStatusExt on RestaurantListStatus { } class RestaurantListViewModel with ChangeNotifier { - final YelpRepository yelpRepo; + final RestaurantRepository restaurantRepository; final FavoritesService favoritesService; - RestaurantListViewModel({required this.favoritesService, required this.yelpRepo}); + RestaurantListViewModel({required this.favoritesService, required this.restaurantRepository}); RestaurantListStatus status = RestaurantListStatus.loading; RestaurantQueryResult? _restaurants; @@ -29,7 +29,7 @@ class RestaurantListViewModel with ChangeNotifier { try { _emitLoading(); await Future.delayed(const Duration(milliseconds: 500)); - _restaurants = await yelpRepo.getRestaurants(); + _restaurants = await restaurantRepository.getRestaurants(); restaurants.isEmpty ? _emitRestaurantsEmpty() : _emitContent(); } catch (e) { diff --git a/lib/features/restaurants_list/restaurants_list_screen.dart b/lib/features/restaurants_list/restaurants_list_screen.dart index 4345716f..e1dd641b 100644 --- a/lib/features/restaurants_list/restaurants_list_screen.dart +++ b/lib/features/restaurants_list/restaurants_list_screen.dart @@ -7,14 +7,17 @@ import 'package:restaurantour/core/text_style.dart'; import 'package:restaurantour/features/restaurants_list/pages/favorites/favorites_page.dart'; import 'package:restaurantour/features/restaurants_list/pages/restaurants/restaurants_page.dart'; import 'package:restaurantour/features/restaurants_list/restaurant_view_model.dart'; -import 'package:restaurantour/repositories/yelp_repository.dart'; +import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorites_service.dart'; class RestaurantsListScreen extends StatefulWidget { const RestaurantsListScreen({super.key}); static Widget create() => ChangeNotifierProvider( - create: (context) => RestaurantListViewModel(yelpRepo: inject(), favoritesService: inject()), + create: (context) => RestaurantListViewModel( + favoritesService: inject(), + restaurantRepository: inject(), + ), child: const RestaurantsListScreen(), ); diff --git a/lib/repositories/restaurant_repository.dart b/lib/repositories/restaurant_repository.dart new file mode 100644 index 00000000..e0c24165 --- /dev/null +++ b/lib/repositories/restaurant_repository.dart @@ -0,0 +1,52 @@ +import 'package:dio/dio.dart'; +import 'package:restaurantour/models/restaurant.dart'; + +class RestaurantRepository { + final Dio dio; + + RestaurantRepository({required this.dio}); + + Future getRestaurants({int offset = 0}) async { + final response = await dio.post>( + '/v3/graphql', + data: _getQuery(offset), + ); + return RestaurantQueryResult.fromJson(response.data!['data']['search']); + } + + String _getQuery(int offset) { + return ''' +query getRestaurants { + search(location: "Las Vegas", limit: 20, offset: $offset) { + total + business { + id + name + price + rating + photos + reviews { + id + rating + user { + id + image_url + name + } + } + categories { + title + alias + } + hours { + is_open_now + } + location { + formatted_address + } + } + } +} +'''; + } +} diff --git a/lib/repositories/yelp_repository.dart b/lib/repositories/yelp_repository.dart deleted file mode 100644 index fa7533b8..00000000 --- a/lib/repositories/yelp_repository.dart +++ /dev/null @@ -1,90 +0,0 @@ -import 'package:dio/dio.dart'; -import 'package:restaurantour/models/restaurant.dart'; - -class YelpRepository { - final Dio dio; - - YelpRepository({required this.dio}); - - /// Returns a response in this shape - /// { - /// "data": { - /// "search": { - /// "total": 5056, - /// "business": [ - /// { - /// "id": "faPVqws-x-5k2CQKDNtHxw", - /// "name": "Yardbird Southern Table & Bar", - /// "price": "$$", - /// "rating": 4.5, - /// "photos": [ - /// "https:///s3-media4.fl.yelpcdn.com/bphoto/_zXRdYX4r1OBfF86xKMbDw/o.jpg" - /// ], - /// "reviews": [ - /// { - /// "id": "sjZoO8wcK1NeGJFDk5i82Q", - /// "rating": 5, - /// "user": { - /// "id": "BuBCkWFNT_O2dbSnBZvpoQ", - /// "image_url": "https:///s3-media2.fl.yelpcdn.com/photo/v8tbTjYaFvkzh1d7iE-pcQ/o.jpg", - /// "name": "Gina T." - /// } - /// }, - /// { - /// "id": "okpO9hfpxQXssbTZTKq9hA", - /// "rating": 5, - /// "user": { - /// "id": "0x9xu_b0Ct_6hG6jaxpztw", - /// "image_url": "https:///s3-media3.fl.yelpcdn.com/photo/gjz8X6tqE3e4praK4HfCiA/o.jpg", - /// "name": "Crystal L." - /// } - /// }, - /// ... - /// ] - /// } - /// } - /// - Future getRestaurants({int offset = 0}) async { - final response = await dio.post>( - '/v3/graphql', - data: _getQuery(offset), - ); - return RestaurantQueryResult.fromJson(response.data!['data']['search']); - } - - String _getQuery(int offset) { - return ''' -query getRestaurants { - search(location: "Las Vegas", limit: 20, offset: $offset) { - total - business { - id - name - price - rating - photos - reviews { - id - rating - user { - id - image_url - name - } - } - categories { - title - alias - } - hours { - is_open_now - } - location { - formatted_address - } - } - } -} -'''; - } -} From d8177dfedebcae2afd114b3e9fbdb92f0efbda3a Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sun, 18 Feb 2024 02:19:33 -0300 Subject: [PATCH 30/89] feat: create rt_image_network to be injected on tests to avois image_ntework try access web during tests --- lib/components/rt_image_network.dart | 7 +++++++ test/widget_test.dart | 20 -------------------- 2 files changed, 7 insertions(+), 20 deletions(-) create mode 100644 lib/components/rt_image_network.dart delete mode 100644 test/widget_test.dart diff --git a/lib/components/rt_image_network.dart b/lib/components/rt_image_network.dart new file mode 100644 index 00000000..a72180dc --- /dev/null +++ b/lib/components/rt_image_network.dart @@ -0,0 +1,7 @@ +import 'package:flutter/widgets.dart'; + +class RTImageNetwork { + Widget build({required String location, required Widget errorWidget}) { + return Image.network(fit: BoxFit.cover, location, errorBuilder: (_, __, ___) => errorWidget); + } +} diff --git a/test/widget_test.dart b/test/widget_test.dart deleted file mode 100644 index 83fbeae4..00000000 --- a/test/widget_test.dart +++ /dev/null @@ -1,20 +0,0 @@ -// This is a basic Flutter widget test. -// -// To perform an interaction with a widget in your test, use the WidgetTester -// utility that Flutter provides. For example, you can send tap and scroll -// gestures. You can also use WidgetTester to find child widgets in the widget -// tree, read text, and verify that the values of widget properties are correct. - -import 'package:flutter_test/flutter_test.dart'; - -import 'package:restaurantour/main.dart'; - -void main() { - testWidgets('Page loads', (WidgetTester tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(const Restaurantour()); - - // Verify that tests will run - expect(find.text('Fetch Restaurants'), findsOneWidget); - }); -} From 5ef0f537a9c8f3b8ceeca9f1ff738c350102b485 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sun, 18 Feb 2024 02:21:29 -0300 Subject: [PATCH 31/89] feat: register rt_image_network on get_it and replace image_network by rt_image_network --- lib/components/restaurant_item_widget.dart | 19 +++++++++----- lib/components/restaurant_review_widget.dart | 12 ++++----- lib/core/inject.dart | 3 +++ .../details/restaurant_details_screen.dart | 26 ++++++++++++------- .../pages/favorites/favorites_page.dart | 3 +++ .../pages/restaurants/restaurants_page.dart | 3 +++ 6 files changed, 43 insertions(+), 23 deletions(-) diff --git a/lib/components/restaurant_item_widget.dart b/lib/components/restaurant_item_widget.dart index 802651f9..0cfeec17 100644 --- a/lib/components/restaurant_item_widget.dart +++ b/lib/components/restaurant_item_widget.dart @@ -1,16 +1,19 @@ import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_svg/svg.dart'; +import 'package:restaurantour/components/rt_image_network.dart'; +import 'package:restaurantour/core/inject.dart'; import 'package:restaurantour/core/rt_colors.dart'; import 'package:restaurantour/core/text_style.dart'; import 'package:restaurantour/features/details/restaurant_details_screen.dart'; import 'package:restaurantour/models/restaurant.dart'; class RestaurantItemWidget extends StatelessWidget { - const RestaurantItemWidget({super.key, required this.restaurant, required this.isFirstItem, this.onFinishNavigation}); - final VoidCallback? onFinishNavigation; + const RestaurantItemWidget({super.key, required this.restaurant, required this.isFirstItem, this.onFinishNavigation, required this.imageNetwork}); final bool isFirstItem; final Restaurant restaurant; + final VoidCallback? onFinishNavigation; + final RTImageNetwork imageNetwork; double get rating => restaurant.rating ?? 0; String get heroImage => restaurant.heroImage; @@ -30,7 +33,10 @@ class RestaurantItemWidget extends StatelessWidget { await Navigator.push( context, MaterialPageRoute( - builder: (BuildContext context) => RestaurantDetailsScreen.create(restaurant), + builder: (BuildContext context) => RestaurantDetailsScreen.create( + restaurant: restaurant, + imageNetwork: inject(), + ), ), ); if (onFinishNavigation != null) onFinishNavigation!(); @@ -49,10 +55,9 @@ class RestaurantItemWidget extends StatelessWidget { height: 88, child: Hero( tag: restaurant.name ?? '', - child: Image.network( - fit: BoxFit.cover, - heroImage, - errorBuilder: (_, __, ___) => Container( + child: imageNetwork.build( + location: heroImage, + errorWidget: Container( color: RTColors.placeholder, child: const Icon(Icons.image_not_supported_rounded), ), diff --git a/lib/components/restaurant_review_widget.dart b/lib/components/restaurant_review_widget.dart index d60827d6..c8e656d2 100644 --- a/lib/components/restaurant_review_widget.dart +++ b/lib/components/restaurant_review_widget.dart @@ -1,16 +1,17 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; +import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/core/rt_colors.dart'; import 'package:restaurantour/core/text_style.dart'; import 'package:restaurantour/models/restaurant.dart'; class RestaurantReviewWidget extends StatelessWidget { - const RestaurantReviewWidget({super.key, required this.review, required this.isFirstItem}); + const RestaurantReviewWidget({super.key, required this.review, required this.isFirstItem, required this.imageNetwork}); final bool isFirstItem; final Review review; final String reviewText = 'Review text goes here. Review text goes here. This is a review. This is a review that is 3 lines long.'; - + final RTImageNetwork imageNetwork; int get rating => review.rating ?? 0; List get starRate => List.generate(rating > 5 ? 5 : rating.toInt(), (_) => SvgPicture.asset('assets/svg/star.svg')); @@ -40,10 +41,9 @@ class RestaurantReviewWidget extends StatelessWidget { height: 40, child: ClipRRect( borderRadius: BorderRadius.circular(300), - child: Image.network( - fit: BoxFit.cover, - review.user?.imageUrl ?? '', - errorBuilder: (_, __, ___) => Container( + child: imageNetwork.build( + location: review.user?.imageUrl ?? '', + errorWidget: Container( color: RTColors.placeholder, child: const Icon(Icons.person), ), diff --git a/lib/core/inject.dart b/lib/core/inject.dart index 3972a57c..93ee1bf4 100644 --- a/lib/core/inject.dart +++ b/lib/core/inject.dart @@ -1,5 +1,6 @@ import 'package:dio/dio.dart'; import 'package:get_it/get_it.dart'; +import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorites_service.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -29,4 +30,6 @@ Future setupInjection() async { inject.registerLazySingleton(() => sharedPref); inject.registerLazySingleton(() => FavoritesService(sharedPreferences: inject())); + + inject.registerLazySingleton(() => RTImageNetwork()); } diff --git a/lib/features/details/restaurant_details_screen.dart b/lib/features/details/restaurant_details_screen.dart index 5ddc2c8c..94c55b8b 100644 --- a/lib/features/details/restaurant_details_screen.dart +++ b/lib/features/details/restaurant_details_screen.dart @@ -3,6 +3,7 @@ import 'package:flutter_svg/svg.dart'; import 'package:provider/provider.dart'; import 'package:restaurantour/components/restaurant_review_widget.dart'; import 'package:restaurantour/components/rt_error_widget.dart'; +import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/core/inject.dart'; import 'package:restaurantour/core/rt_colors.dart'; import 'package:restaurantour/core/text_style.dart'; @@ -12,12 +13,18 @@ import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/services/favorites_service.dart'; class RestaurantDetailsScreen extends StatefulWidget { - const RestaurantDetailsScreen({super.key, required this.restaurant}); + const RestaurantDetailsScreen({super.key, required this.restaurant, required this.imageNetwork}); final Restaurant restaurant; - - static Widget create(Restaurant restaurant) => ChangeNotifierProvider( - create: (context) => RestaurantDetailsViewModel(restaurantId: restaurant.id ?? '', favoriteService: inject()), - child: RestaurantDetailsScreen(restaurant: restaurant), + final RTImageNetwork imageNetwork; + static Widget create({required Restaurant restaurant, required RTImageNetwork imageNetwork}) => ChangeNotifierProvider( + create: (context) => RestaurantDetailsViewModel( + restaurantId: restaurant.id ?? '', + favoriteService: inject(), + ), + child: RestaurantDetailsScreen( + restaurant: restaurant, + imageNetwork: imageNetwork, + ), ); @override @@ -29,7 +36,7 @@ class _RestaurantDetailsScreenState extends State { List get reviewsList => widget.restaurant.reviews ?? []; List get reviews => List.generate(reviewsCount, (index) { final bool isFirstItem = index == 0; - return RestaurantReviewWidget(isFirstItem: isFirstItem, review: reviewsList[index]); + return RestaurantReviewWidget(imageNetwork: widget.imageNetwork, isFirstItem: isFirstItem, review: reviewsList[index]); }); RestaurantDetailsViewModel? model; @@ -97,10 +104,9 @@ class _RestaurantDetailsScreenState extends State { height: 360, child: Hero( tag: widget.restaurant.name ?? '', - child: Image.network( - fit: BoxFit.cover, - widget.restaurant.heroImage, - errorBuilder: (_, __, ___) => const Icon(Icons.image_not_supported_rounded, size: 120), + child: widget.imageNetwork.build( + location: widget.restaurant.heroImage, + errorWidget: const Icon(Icons.image_not_supported_rounded, size: 120), ), ), ), diff --git a/lib/features/restaurants_list/pages/favorites/favorites_page.dart b/lib/features/restaurants_list/pages/favorites/favorites_page.dart index 70445444..271b820e 100644 --- a/lib/features/restaurants_list/pages/favorites/favorites_page.dart +++ b/lib/features/restaurants_list/pages/favorites/favorites_page.dart @@ -3,7 +3,9 @@ import 'package:provider/provider.dart'; import 'package:restaurantour/components/rt_empty_widget.dart'; import 'package:restaurantour/components/rt_error_widget.dart'; import 'package:restaurantour/components/restaurant_item_widget.dart'; +import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/components/rt_shimmer_loading.dart'; +import 'package:restaurantour/core/inject.dart'; import 'package:restaurantour/features/restaurants_list/restaurant_view_model.dart'; class FavoritesPage extends StatefulWidget { @@ -41,6 +43,7 @@ class _FavoritesPageState extends State { return RestaurantItemWidget( key: Key('favorite-restaurant-$index'), isFirstItem: isFirstItem, + imageNetwork: inject(), restaurant: model!.favorites[index], onFinishNavigation: model!.loadFavorites, ); diff --git a/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart b/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart index 9a6b70e3..a9e16e74 100644 --- a/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart +++ b/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart @@ -3,7 +3,9 @@ import 'package:provider/provider.dart'; import 'package:restaurantour/components/rt_empty_widget.dart'; import 'package:restaurantour/components/rt_error_widget.dart'; import 'package:restaurantour/components/restaurant_item_widget.dart'; +import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/components/rt_shimmer_loading.dart'; +import 'package:restaurantour/core/inject.dart'; import 'package:restaurantour/features/restaurants_list/restaurant_view_model.dart'; class RestaurantsPage extends StatefulWidget { @@ -41,6 +43,7 @@ class _RestaurantsPageState extends State { return RestaurantItemWidget( key: Key('restaurant-$index'), isFirstItem: isFirstItem, + imageNetwork: inject(), restaurant: model!.restaurants[index], ); }, From 64482c8c96348c64a64da037940976514c7d1081 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sun, 18 Feb 2024 02:22:04 -0300 Subject: [PATCH 32/89] feat: remove fake loading delay --- lib/features/restaurants_list/restaurant_view_model.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/features/restaurants_list/restaurant_view_model.dart b/lib/features/restaurants_list/restaurant_view_model.dart index d2c283ac..6637ffb6 100644 --- a/lib/features/restaurants_list/restaurant_view_model.dart +++ b/lib/features/restaurants_list/restaurant_view_model.dart @@ -28,7 +28,6 @@ class RestaurantListViewModel with ChangeNotifier { Future load() async { try { _emitLoading(); - await Future.delayed(const Duration(milliseconds: 500)); _restaurants = await restaurantRepository.getRestaurants(); restaurants.isEmpty ? _emitRestaurantsEmpty() : _emitContent(); From 473c87d1b246869444d95e58e1cde482b8915b49 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sun, 18 Feb 2024 02:22:55 -0300 Subject: [PATCH 33/89] feat: refactor rt_empty widget --- lib/components/rt_empty_widget.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/components/rt_empty_widget.dart b/lib/components/rt_empty_widget.dart index fabafd75..c70411f2 100644 --- a/lib/components/rt_empty_widget.dart +++ b/lib/components/rt_empty_widget.dart @@ -7,15 +7,15 @@ class RTEmptyWidget extends StatelessWidget { @override Widget build(BuildContext context) { return Padding( - padding: const EdgeInsets.all(18.0), + padding: const EdgeInsets.symmetric(horizontal: 18.0), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ const SizedBox( - height: 100, - child: Icon(Icons.search, size: 100), + height: 80, + child: Icon(Icons.search, size: 80), ), - const SizedBox(height: 40), + const SizedBox(height: 20), Text( AppLocalizations.of(context)!.emptyMessage, textAlign: TextAlign.center, From 01cb946e102270a234f218e948d262e59324ed88 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sun, 18 Feb 2024 02:23:19 -0300 Subject: [PATCH 34/89] feat: add mocktail to project and create some mocks to tests --- pubspec.lock | 8 ++++++++ pubspec.yaml | 1 + test/mocks/mocks.dart | 15 +++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 test/mocks/mocks.dart diff --git a/pubspec.lock b/pubspec.lock index 68c7f754..2ead9895 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -389,6 +389,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.5" + mocktail: + dependency: "direct main" + description: + name: mocktail + sha256: c4b5007d91ca4f67256e720cb1b6d704e79a510183a12fa551021f652577dce6 + url: "https://pub.dev" + source: hosted + version: "1.0.3" nested: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 15cbb84a..f143236a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -20,6 +20,7 @@ dependencies: get_it: ^7.6.7 intl: any json_annotation: ^4.8.1 + mocktail: ^1.0.3 provider: ^6.1.1 shared_preferences: ^2.2.2 shimmer: ^3.0.0 diff --git a/test/mocks/mocks.dart b/test/mocks/mocks.dart new file mode 100644 index 00000000..a347cc5b --- /dev/null +++ b/test/mocks/mocks.dart @@ -0,0 +1,15 @@ +import 'package:flutter/material.dart'; +import 'package:restaurantour/components/rt_image_network.dart'; + +import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:restaurantour/services/favorites_service.dart'; + +class RestaurantRepositoryMock extends Mock implements RestaurantRepository {} + +class FavoritesServiceMock extends Mock implements FavoritesService {} + +class RTImageNetworkMock extends Mock implements RTImageNetwork { + @override + Widget build({required String location, required Widget errorWidget}) => const Icon(Icons.image); +} From d472686992af01b2ffb8565ae6a9cb39583a4230 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sun, 18 Feb 2024 02:26:30 -0300 Subject: [PATCH 35/89] feat: add widget test to initial page --- test/widget_tests/restauran_tour_test.dart | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 test/widget_tests/restauran_tour_test.dart diff --git a/test/widget_tests/restauran_tour_test.dart b/test/widget_tests/restauran_tour_test.dart new file mode 100644 index 00000000..8bf51e27 --- /dev/null +++ b/test/widget_tests/restauran_tour_test.dart @@ -0,0 +1,45 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:get_it/get_it.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:restaurantour/components/rt_image_network.dart'; +import 'package:restaurantour/main.dart'; +import 'package:restaurantour/models/restaurant.dart'; +import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/services/favorites_service.dart'; + +import '../mocks/mocks.dart'; + +void main() { + RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); + FavoritesService favoritesService = FavoritesServiceMock(); + setUp(() { + GetIt.I.registerFactory(() => restaurantRepository); + GetIt.I.registerFactory(() => favoritesService); + GetIt.I.registerFactory(() => RTImageNetworkMock()); + }); + + tearDown(() { + reset(restaurantRepository); + reset(favoritesService); + GetIt.I.reset(); + }); + + testWidgets('when [RestaurantTour] loads should show the title on the page and fetch the data', (WidgetTester tester) async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + + await tester.pumpWidget(const RestauranTour()); + + expect(find.text('RestauranTour'), findsOneWidget); + verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); + }); + + testWidgets('when [RestaurantTour] loads should show the tabs [All Restaurants] and [My Favorites] on the page and fetch the data', (WidgetTester tester) async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + + await tester.pumpWidget(const RestauranTour()); + + expect(find.text('All Restaurants'), findsOneWidget); + expect(find.text('My Favorites'), findsOneWidget); + verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); + }); +} From 7d2f39b04c71a49490bb07ed6868a9caa1c72123 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sun, 18 Feb 2024 02:27:07 -0300 Subject: [PATCH 36/89] feat: add tests to favorites_page and restaurants_page --- test/widget_tests/favorites_page_test.dart | 119 +++++++++++++++++++ test/widget_tests/restaurants_page_test.dart | 87 ++++++++++++++ 2 files changed, 206 insertions(+) create mode 100644 test/widget_tests/favorites_page_test.dart create mode 100644 test/widget_tests/restaurants_page_test.dart diff --git a/test/widget_tests/favorites_page_test.dart b/test/widget_tests/favorites_page_test.dart new file mode 100644 index 00000000..eb0f419d --- /dev/null +++ b/test/widget_tests/favorites_page_test.dart @@ -0,0 +1,119 @@ +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:get_it/get_it.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:provider/provider.dart'; +import 'package:restaurantour/components/restaurant_item_widget.dart'; +import 'package:restaurantour/components/rt_empty_widget.dart'; +import 'package:restaurantour/components/rt_error_widget.dart'; +import 'package:restaurantour/components/rt_image_network.dart'; +import 'package:restaurantour/features/restaurants_list/pages/favorites/favorites_page.dart'; +import 'package:restaurantour/features/restaurants_list/restaurant_view_model.dart'; +import 'package:restaurantour/models/restaurant.dart'; +import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/services/favorites_service.dart'; + +import '../mocks/mocks.dart'; + +void main() { + RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); + FavoritesService favoritesService = FavoritesServiceMock(); + setUp(() { + GetIt.I.registerFactory(() => RTImageNetworkMock()); + }); + + tearDown(() { + reset(restaurantRepository); + reset(favoritesService); + GetIt.I.reset(); + }); + + Widget widgetBuilder() => MaterialApp( + localizationsDelegates: localizationsDelegates, + debugShowCheckedModeBanner: false, + home: ChangeNotifierProvider( + create: (context) { + final model = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + model.load(); + return model; + }, + child: const FavoritesPage(), + ), + ); + + testWidgets('''when successfully fetch the [RestaurantQueryResult] and has data, and also load the favorites fetch the data + should create a [RestaurantItemWidget] for each favorite [Restaurant]''', (WidgetTester tester) async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); + + await tester.pumpWidget(widgetBuilder()); + await tester.pumpAndSettle(); + + expect(find.text('Restaurant Name'), findsAtLeast(1)); + expect(find.bySubtype(), findsAtLeast(1)); + expect(find.byKey(const Key('favorite-restaurant-0')), findsOne); + verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); + verify(() => favoritesService.loadFavorites()).called(1); + }); + + testWidgets('''when get some error while fetch the favorites, + should render [RTErrorWidget] to inform to the user that something fails''', (WidgetTester tester) async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => favoritesService.loadFavorites()).thenThrow('error mock'); + + await tester.pumpWidget(widgetBuilder()); + await tester.pumpAndSettle(); + + expect(find.bySubtype(), findsAtLeast(1)); + verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); + verify(() => favoritesService.loadFavorites()).called(1); + }); + + testWidgets('''when successfully fetch the [RestaurantQueryResult] and has no data, + and also when load the favorites and has no favorites, + should render [RTEmptyWidget] to inform to the user that has no results''', (WidgetTester tester) async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResult(restaurants: []))); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); + await tester.pumpWidget(widgetBuilder()); + await tester.pumpAndSettle(); + + expect(find.bySubtype(), findsAtLeast(1)); + verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); + verify(() => favoritesService.loadFavorites()).called(1); + }); + + testWidgets('''when successfully fetch the [RestaurantQueryResult] and has data, + but when load the favorites and has no favorites, + should render [RTEmptyWidget] to inform to the user that has no results''', (WidgetTester tester) async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); + await tester.pumpWidget(widgetBuilder()); + await tester.pumpAndSettle(); + + expect(find.bySubtype(), findsAtLeast(1)); + verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); + verify(() => favoritesService.loadFavorites()).called(1); + }); + + testWidgets('''when successfully fetch the [RestaurantQueryResult] and has no data, + but when load the favorites and has favorites, + should render [RTEmptyWidget] to inform to the user that has no results''', (WidgetTester tester) async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResult(restaurants: []))); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); + await tester.pumpWidget(widgetBuilder()); + await tester.pumpAndSettle(); + + expect(find.bySubtype(), findsAtLeast(1)); + verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); + verify(() => favoritesService.loadFavorites()).called(1); + }); +} + +final localizationsDelegates = [ + AppLocalizations.delegate, + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, +]; diff --git a/test/widget_tests/restaurants_page_test.dart b/test/widget_tests/restaurants_page_test.dart new file mode 100644 index 00000000..ec4f8393 --- /dev/null +++ b/test/widget_tests/restaurants_page_test.dart @@ -0,0 +1,87 @@ +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:get_it/get_it.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:provider/provider.dart'; +import 'package:restaurantour/components/restaurant_item_widget.dart'; +import 'package:restaurantour/components/rt_empty_widget.dart'; +import 'package:restaurantour/components/rt_error_widget.dart'; +import 'package:restaurantour/components/rt_image_network.dart'; +import 'package:restaurantour/features/restaurants_list/pages/restaurants/restaurants_page.dart'; +import 'package:restaurantour/features/restaurants_list/restaurant_view_model.dart'; +import 'package:restaurantour/models/restaurant.dart'; +import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/services/favorites_service.dart'; + +import '../mocks/mocks.dart'; + +void main() { + RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); + FavoritesService favoritesService = FavoritesServiceMock(); + setUp(() { + GetIt.I.registerFactory(() => RTImageNetworkMock()); + }); + + tearDown(() { + reset(restaurantRepository); + reset(favoritesService); + GetIt.I.reset(); + }); + + Widget widgetBuilder() => MaterialApp( + localizationsDelegates: localizationsDelegates, + debugShowCheckedModeBanner: false, + home: ChangeNotifierProvider( + create: (context) { + final model = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + model.load(); + return model; + }, + child: const RestaurantsPage(), + ), + ); + + testWidgets('''when successfully fetch the [RestaurantQueryResult] and has data, + should create a [RestaurantItemWidget] for each [Restaurant]''', (WidgetTester tester) async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + + await tester.pumpWidget(widgetBuilder()); + await tester.pumpAndSettle(); + + expect(find.text('Restaurant Name'), findsAtLeast(1)); + expect(find.bySubtype(), findsAtLeast(1)); + expect(find.byKey(const Key('restaurant-0')), findsOne); + verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); + }); + + testWidgets('''when get some error while fetch the [RestaurantQueryResult], + should render [RTErrorWidget] to inform to the user that something fails''', (WidgetTester tester) async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenThrow('error mock'); + + await tester.pumpWidget(widgetBuilder()); + await tester.pumpAndSettle(); + + expect(find.bySubtype(), findsAtLeast(1)); + verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); + }); + + testWidgets('''when successfully fetch the [RestaurantQueryResult] and has no data, + should render [RTEmptyWidget] to inform to the user that has no results''', (WidgetTester tester) async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResult(restaurants: []))); + + await tester.pumpWidget(widgetBuilder()); + await tester.pumpAndSettle(); + + expect(find.bySubtype(), findsAtLeast(1)); + verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); + }); +} + +final localizationsDelegates = [ + AppLocalizations.delegate, + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, +]; From 4aa73ee64d43f9c826dbb50b28753206567c1b6a Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sun, 18 Feb 2024 02:58:55 -0300 Subject: [PATCH 37/89] feat: add tests to restaurant_details_screen --- .../details/restaurant_details_screen.dart | 1 + .../restaurant_details_screen_test.dart | 83 +++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 test/widget_tests/restaurant_details_screen_test.dart diff --git a/lib/features/details/restaurant_details_screen.dart b/lib/features/details/restaurant_details_screen.dart index 94c55b8b..a7232fef 100644 --- a/lib/features/details/restaurant_details_screen.dart +++ b/lib/features/details/restaurant_details_screen.dart @@ -90,6 +90,7 @@ class _RestaurantDetailsScreenState extends State { child: SizedBox(width: 18, height: 18, child: CircularProgressIndicator(strokeWidth: 2)), ) : IconButton( + key: const Key('favorite-button'), icon: Icon( (model!.isFavorite) ? Icons.favorite : Icons.favorite_border, color: RTColors.primaryFill, diff --git a/test/widget_tests/restaurant_details_screen_test.dart b/test/widget_tests/restaurant_details_screen_test.dart new file mode 100644 index 00000000..e99d70f7 --- /dev/null +++ b/test/widget_tests/restaurant_details_screen_test.dart @@ -0,0 +1,83 @@ +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:get_it/get_it.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:restaurantour/components/rt_error_widget.dart'; +import 'package:restaurantour/components/rt_image_network.dart'; +import 'package:restaurantour/features/details/restaurant_details_screen.dart'; +import 'package:restaurantour/models/restaurant.dart'; +import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/services/favorites_service.dart'; + +import '../mocks/mocks.dart'; + +void main() { + RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); + FavoritesService favoritesService = FavoritesServiceMock(); + setUp(() { + GetIt.I.registerFactory(() => restaurantRepository); + GetIt.I.registerFactory(() => favoritesService); + GetIt.I.registerFactory(() => RTImageNetworkMock()); + }); + + tearDown(() { + reset(restaurantRepository); + reset(favoritesService); + GetIt.I.reset(); + }); + + Widget widgetBuilder() => MaterialApp( + localizationsDelegates: localizationsDelegates, + debugShowCheckedModeBanner: false, + home: RestaurantDetailsScreen.create(restaurant: Restaurant.fixture(), imageNetwork: RTImageNetworkMock()), + ); + + testWidgets('''when successfully load the [RestaurantDetailsScreen] + should create a have the favorite Icon, the name of restaurant''', (WidgetTester tester) async { + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); + + await tester.pumpWidget(widgetBuilder()); + await tester.pumpAndSettle(); + + expect(find.text('Restaurant Name'), findsOne); + expect(find.text('Open Now'), findsOne); + expect(find.bySubtype(), findsAtLeast(1)); + }); + + testWidgets('''when successfully load the [RestaurantDetailsScreen] but fails to load favorites + should display the error screen''', (WidgetTester tester) async { + when(() => favoritesService.loadFavorites()).thenThrow('error mock'); + + await tester.pumpWidget(widgetBuilder()); + await tester.pumpAndSettle(); + + expect(find.bySubtype(), findsOne); + }); + + testWidgets('''if successfully load the [RestaurantDetailsScreen] and the restaurant is already favorite, + when tap on favorite button should call the service to remove from favorites passing the id''', (WidgetTester tester) async { + final restaurantId = Restaurant.fixture().id!; + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([restaurantId])); + when(() => favoritesService.removeFavorite(any())).thenAnswer((_) => Future.value()); + + await tester.pumpWidget(widgetBuilder()); + await tester.pumpAndSettle(); + await tester.tap(find.byKey(const Key('favorite-button'))); + await tester.pumpAndSettle(); + + expect(find.text('Restaurant Name'), findsOne); + expect(find.text('Open Now'), findsOne); + expect(find.bySubtype(), findsAtLeast(1)); + verify(() => favoritesService.removeFavorite(restaurantId)).called(1); + verifyNever(() => favoritesService.addFavorite(any())); + }); +} + +final localizationsDelegates = [ + AppLocalizations.delegate, + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, +]; From 69ca6a1697d0c6589efd6fb0152a6f970667fdbe Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sun, 18 Feb 2024 04:05:35 -0300 Subject: [PATCH 38/89] feat: add golden tests --- pubspec.lock | 8 ++ pubspec.yaml | 1 + test/golden_test/favorites_page_test.dart | 95 ++++++++++++++++++ .../goldens/favorite_page_content.png | Bin 0 -> 13441 bytes .../goldens/favorite_page_empty.png | Bin 0 -> 22787 bytes .../goldens/favorite_page_error.png | Bin 0 -> 20203 bytes .../goldens/restauran_tour_content.png | Bin 0 -> 19095 bytes test/golden_test/restauran_tour_test.dart | 43 ++++++++ test/mocks/mocks.dart | 5 + 9 files changed, 152 insertions(+) create mode 100644 test/golden_test/favorites_page_test.dart create mode 100644 test/golden_test/goldens/favorite_page_content.png create mode 100644 test/golden_test/goldens/favorite_page_empty.png create mode 100644 test/golden_test/goldens/favorite_page_error.png create mode 100644 test/golden_test/goldens/restauran_tour_content.png create mode 100644 test/golden_test/restauran_tour_test.dart diff --git a/pubspec.lock b/pubspec.lock index 2ead9895..d349853a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -277,6 +277,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.2" + golden_toolkit: + dependency: "direct main" + description: + name: golden_toolkit + sha256: "8f74adab33154fe7b731395782797021f97d2edc52f7bfb85ff4f1b5c4a215f0" + url: "https://pub.dev" + source: hosted + version: "0.15.0" graphs: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index f143236a..e2d9d8e2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -18,6 +18,7 @@ dependencies: sdk: flutter flutter_svg: ^2.0.9 get_it: ^7.6.7 + golden_toolkit: ^0.15.0 intl: any json_annotation: ^4.8.1 mocktail: ^1.0.3 diff --git a/test/golden_test/favorites_page_test.dart b/test/golden_test/favorites_page_test.dart new file mode 100644 index 00000000..a365e2e9 --- /dev/null +++ b/test/golden_test/favorites_page_test.dart @@ -0,0 +1,95 @@ +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:get_it/get_it.dart'; +import 'package:golden_toolkit/golden_toolkit.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:provider/provider.dart'; +import 'package:restaurantour/components/rt_image_network.dart'; +import 'package:restaurantour/features/restaurants_list/pages/favorites/favorites_page.dart'; +import 'package:restaurantour/features/restaurants_list/restaurant_view_model.dart'; +import 'package:restaurantour/models/restaurant.dart'; +import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/services/favorites_service.dart'; + +import '../mocks/mocks.dart'; + +void main() { + RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); + FavoritesService favoritesService = FavoritesServiceMock(); + setUp(() { + GetIt.I.registerFactory(() => RTImageNetworkMock()); + }); + + tearDown(() { + reset(restaurantRepository); + reset(favoritesService); + GetIt.I.reset(); + }); + + Widget widgetBuilder() => MaterialApp( + localizationsDelegates: localizationsDelegates, + debugShowCheckedModeBanner: false, + home: Scaffold( + body: ChangeNotifierProvider( + create: (context) { + final model = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + model.load(); + return model; + }, + child: const FavoritesPage(), + ), + ), + ); + + final deviceBuilder = DeviceBuilder() + ..overrideDevicesForAllScenarios(devices: [Device.iphone11]) + ..addScenario( + widget: widgetBuilder(), + ); + + testGoldens('''when successfully fetch the [RestaurantQueryResult] and has data, and also load the favorites fetch the data + should create a [RestaurantItemWidget] for each favorite [Restaurant]''', (WidgetTester tester) async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); + await loadAppFonts(); + + await tester.pumpDeviceBuilder(deviceBuilder); + await tester.pumpAndSettle(); + + await screenMatchesGolden(tester, "favorite_page_content"); + }); + + testGoldens('''when get some error while fetch the favorites, + should render [RTErrorWidget] to inform to the user that something fails''', (WidgetTester tester) async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => favoritesService.loadFavorites()).thenThrow('error mock'); + await loadAppFonts(); + + await tester.pumpDeviceBuilder(deviceBuilder); + await tester.pumpAndSettle(); + + await screenMatchesGolden(tester, "favorite_page_error"); + }); + + testGoldens('''when successfully fetch the [RestaurantQueryResult] and has no data, + and also when load the favorites and has no favorites, + should render [RTEmptyWidget] to inform to the user that has no results''', (WidgetTester tester) async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResult(restaurants: []))); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); + await loadAppFonts(); + + await tester.pumpDeviceBuilder(deviceBuilder); + await tester.pumpAndSettle(); + + await screenMatchesGolden(tester, "favorite_page_empty"); + }); +} + +final localizationsDelegates = [ + AppLocalizations.delegate, + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, +]; diff --git a/test/golden_test/goldens/favorite_page_content.png b/test/golden_test/goldens/favorite_page_content.png new file mode 100644 index 0000000000000000000000000000000000000000..34e0114f260df27c7247edf31e3e6d2fd6702d00 GIT binary patch literal 13441 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 Z>}s=Py0m&oS_y$4tg^=CJf)it{tw8&vJe0O literal 0 HcmV?d00001 diff --git a/test/golden_test/goldens/favorite_page_empty.png b/test/golden_test/goldens/favorite_page_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..b8fce0f4caef8086337ae84e1fcc3acc756273f2 GIT binary patch literal 22787 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 z z-B8_RNn|TFnAjt$T%nMRy(IBs;UxKbKbh- z4LWe40%W;PZlbFUloZJg6U+d}X5@OD1ghLljpZ{8w9negs>dXf-{jaZKvk2`3C2slXpfCBuwKA~6%3qm~DUf;t^5EXq6QEw&o?%k`ED%d1x#>K@4 z;ruQ@PmXdSNFquBIns0MaDssJ8FHe?)XeYhoDjzFS^kg^1#BhIaGoBF2&9!9KCAJt z&$#Mw^S+)P{3ZgkLbP|YH+M6@<2YLxr?c)JvUoTf9_>0 zYyRo(0iXq@fN~C=Q;NHF>q}}X0;$yxWT%2hMaqM{!~^Aw%bj&IGxc?V+AybZ581Lj zqo^n)hJm9Y4%ru$k8W6vhAbF>)xFa7!d|i?to8J%UoSWn&Z5ClJ|zvk)8pS7Z>SOG z*_%j^$G|NydO-JR3bJKMNyv|Kunj(8^9XjzoNGn)#n>M9U#ozHnrWG)fsuUudRtP` z_Nb283^i2$^5rU}#)V~b{F~pue+vNW280dH;bRU5^zr7cmzpoit&r~08Pev6oX!mC zNu$mGa98#gPF?39A6i>m9Z};4kI9v~)y!;ouegF!DHgiIU0OCwh+UXaQ&t`lG zrjKZ)0#OzmprgTNwTMoV+N$pzz?4BYSBYJfIM}N{`+=CwKvMgiubxK4T7^V$Sngo@ zbj`r3CoN`jmv-%FE~B{Sv;T2Zk^%9b{A)MU|s1#*= ze0;R}ffjYJ>Q4X5RY2EB5X_)Gt2i5}-f~g%|Bx-}KJ}yN8qrZ<{~LQ^@Zapobbskz z3NYf2ulEuJg@sD|%~gfhS({zWBwL{FRf%RtW>8l@DCk_Ss>-5Ia!R~1KumupjyEJM zjNwk;B(S}1?gaj&6YNU11HTq9ZeyvgYTH|fFoq_bDg3muLnnE>B`u4#E&3>xXXpxlH%U9; z(CU@N{UGRx)&0$;>05GwuLmUqe<*6J-V3~E{Pp8EujjM1jt6*!WBWh!rxLia@1+%g z8zJ3FzB`r*3!>iKb21nIhPXCNy7(Ftz*fWSC^8d9I{-`|0J(h`rJ>hGe00~2Kla=0Qh@WT?u(1&msHQOn;`B_~! zqNWCs9Su?2`Fc>?mDDC4;;B~UY1xfuyAXy^jdJ+kot*pK+eAZ3_q2&xY|hu{+bS}b z!d*L3H@2Vi4-w$Y?(;vlJs4Q#ICXpcahxdir$bU%OUSq--ln#c&DvTH8u-ORRGmLJ_J0 z-DGjgh+R^CCSGAXii$y<@50$HkGY2i1VFYu;#M}_k54pli-(uyg;VFy;p2_r^Hpsg zt5n|6=%!uvFrXGEOq<)8(&_xf{GFu-wo1|Lx0&ROSpN# zc|3C6<#XEVptLcyIFoH^j;tFpg~JuXS4yn{X|j+znf2q5#@(K7WsJNHEHFs6=dx8L z8~+%Un2!(HV71os2JgHK=&8)h%Tw8TcCZ|_u~t=9R<<@0(2I8alDIlKtWg%h*wp3q z@kUruY6lI|q?q)bdcErf93QX(C+{{HjpT?0Qt&8Ti0l`UOX@c=hC*s$m6V9JZkj|C z<@?Cg`XRa+Z~-x^0iaju$yLL^V7SX}Pe7aF^SaF?Z5Sp4yEayXz|3T+1k8N5>L0fQ zqK1e>QPn@pv^{kD=t{~LZc&@&>}-#vsk7W$TAQ{ZBxF?h;=Lex(6UFLS3MzWbHSQB zNyI!l+PnD;_{oD-Gzt#KU3It*iD-QTgKaGB;$CS9(CPBgVg&PV%uHZ6!L;csvx-zO z(>c`H*-|GRRd?z;K<$~^!*wV<@V#DM3XLcfE_%aF!TI|!rSJ_V5xd@lft8n+pVQ5` zR79twEq(yia9$Ok)n$4O#4+!cfrSxE&S+#V@s~X-`Q&U3%J`wjAstdO# z+uGXtcoLY0NhA{ZbY#RSlTBP~6|q(Dw78?7pa7W-Iy93TGG2y2AaDm{vaOKRRbl0& zfNef*@Z%?SSy@^8Zups-!tJo=`)`g{>BgpwM{Uxn;8X`jjPcwGkHY}oU-cIaRaP)h zmZ@wsn#3&;&>oAG8;D`y2m1Q@aKONk9k!Rcb`XYzID<+&4t+mq%O*E`WR8G}3{zWz zYVf(Syu5VUHoBF_6$^QJ!t8NmD0Y;&K_wu&dQ|y^yA~FBGc}Gs*_ygGK5AMiwn+XW zzI@s1p!nBnsr(8I1N{61ao94!8(U0nyLRo`q3~)C&y#fo`x1T;MbD;CQ&W7}?z&=n z-Kh7EqrV@GD!zk|-JrSZgTbpVAnPT=rbR^Jc$Mu;t;g|_bUN}+hP4L>C7aHpyd~hr zamWs&fdS(--F!QT);DFZkG7h(^%o2S-Qtu2&L|xb7ag#C7JtajulV4#hm!z3-;P zu05wxV|M+m_3zjJn&n@2_;(rn8y)_SL`9>?w_<@lL`|$H*Po|b{5IY(2bUj&#)2QL P&i;!*=1XKi<1xR;DcY_6}go@H(AQ(ss(o;b~N#K zy0*5qM~)n6oAydeOUs{HJ~&XlHqDbcJbvNgkB<1TU%#$f2)Alk1^Sm4HE1!UmXsXX zFX9$1{Hax+Nxi1I*057f*s4uVt$CyUZDW7*?WW{3^WWxf3tkUZbzDzXS{~-`GMVms zFKD*9b!EY?|0>OSxpl2{p}=+JzRJOiA)JB7Ze?y&R#tY-%hhxqZ*!I27_~3l@XEMDW`$wUAXO(aZ_@t5DuYZZS^SGN2MZS>f*6)wqr{*PODb&*Y zB%CZdzg}8fPIswmVimRV(f|HvO6_r(%lguW;h$@*Uu<{DB&k(Q^>V$t@=DTEXIQp6 zQiwGx$3yJV?~hHX_GQYiU%#GQSQvb;PvY9!ANK}?iyo|(hUsjX@faKw^;q26nq_rZ zTs(64_s5xGa@aBT^my3_3Fq;iL^_sj+m>EDVz_>U`yCw~@pMzuhdtzFy4%OJas^eB zHTAyTfA~ezMEbOZ*Ehe#<(uEXe}7OBl9)i%T$HMMoZ}gb-BEI5O6Qpe+xJv8F)}h* zbgT+QiEJpnI``n+tBthDmMRM^y$=h8J0~EX?iR zL+15$FK^4+o$|8&930t4RTAs6Em=x}Vl*yOasu#JX)aSut5an|w5?u}mfKIL zo-%0|pv$ym*-Xx|Y^|PqBOln^oYtE!V8Q)(FR$VJXzk+gM_rP95Nq-0+fA%LPF#Pt zqQo;#E8e6efT5L2ZjG4Aza_n59C7jnoD~JBfozKX=mZpC`Qp9_=kB-;UcfCA6cB_jS z#%3c}gsw^F?MXFpDjx-egkHo6Tg2lnRtIHbs@BYZC7s2R^bZQ+>7RH zCB>DOXDDt-cWm-`ypMN1g{~;l@+4-Pw9u&&$rWcoO};}(ZN21jUhc?XTjLJ>ix;=A zY47h!wfOtR_V!XJDl6BdCZD;p$;?Q*=<{h_g|}2UTGEZM zas6}hHFGkxHJ0slI5?iISe+n8M@LW2d<<={-S2Gj1^)zdv%kOd6+{Thi6Y#7V6ae{-{b}S|88fTk5Tw?94I7p~GcT z_SiFK!+FYjnI?9mDWxnrM~BaNR!uran$qX^4K~B()a;?zxFGMbm7?zR?kys>#z#l1 z26a42e;vD~j#_o@T)pv8>Deo%WFcs`=QzJf=cj)Wmi0K^7r@e6Qv@)`)revoZQI^6r3C! zq4A_$jEtAA{=eX8J0EUv6zr<&hNBF=ha+UFN9w-M&6U()?I!SzC_1 z+3yc8a+1B)mhMkFeeLR!DRdx8C zM%6y3rqoDGY z8XDRbj2$Sb%xiPn}??-K}tHkR>tUBk8;>405bzw zq)3!}7Qz}ql5OqnbmYnTc_%gPw-@(hB$t;fV(BrL1+zOh7i#4>4G4pH2wDh7F|x5) z@wiWY-xoMg9Tk<5s1%`}q*K)4v9{n>V6`HRU-D%^2dd}rBm($&n*R6gerwC~W4D_v zgx?rdhSFCqOmtc|TV&DBJwK^l-|cw)`mf6)RY}oRY~HI=eovo0)5pq+SUIIr*rq9C zR)56a)y^*cX>_zjw6y0Ri)$~A-(U?oEGpUzG%9_0_8#l-((uQW0FYciqw(=^-)dt4 zr}4Ik{wbh^M46Y@>`&QX_d&f4+KS_EraktreS1KIT1e`8pBVevWvVAWA)!9YQlqD* zXL4$)8;c-GE$uFr5NQ%u-IVGwrBB*KNx6-lejqW`s^Vngu(-{elB=V|>`!N|v^#h9(x1`f!a6*pWt8y)fDXlvzUk%84g2NYof&rtY}i*=7ue5`y6a-zk)Qre0h-L@ZtAY z-)^U-XYDFu_wK7xV5fSCyR(Yf-QTC<@l>SKqe0J`i;F9iM{D>erw=u|$CHV|l^Tx& z%*+?!q&=C$9k@vhQnNoVw{mjWNlYIh<36%^PGj6Ug_4+Hs+X9Ysu+oVKE-|vyV%(1 z&phQgzqr^N93g7U!Ozc6y6@)~^5n@GO-)wPp+kpehZ_8zJlUb`wPYmjG^+Uf!wsSk zU4MVoxB%6Is7PPFd?8(VEw>HBH#I*mEMw~F=~+Ei8zZ3r=HUvGSZ(C1M>6XU_tMCt zKOi1HID7Ea%RGmnZ&=e}4u5wnbb4?6XJI79x;;8=^do#?A9-nJFk{9kN;y{Yf|?o= zslaXS+wb3d@X~IxfAy>~Za494+O&z)*U?fqs$~l=FR$O}g8Y2b_T0})e_C6kh8hwD ztlC6t;$&(uVz!qocQaNbOXh98J<|BenB<66^MGbwm=c)!@y?S-u*Vnjtqbfo` z@OERs`)i4t_)tCusv>0XZJ}clv0@FDoZdRw{a#?Q%()`xi>W{_SyNc#S0k3g7FVhziC&7AZlNpbPzgt^49bsIy*Z(3h^Sj&J*J{RYRTGzkdCq?N8_w=Hq*UYC|EqI(3laS;KTZ^#G`Fgn$V) z?H1j-*XQX&cJgTFn@Y!t*>g@!O=%W+#XNt$dq)2+u@aod{)o{spSvZBcd3eYvB`K6 zA!xR9eSIBusq~N{DI+noVLZNOb!n#4sX!r^O(-srfsh#ywPUj3Lq=Th&db?p#KutC zJ39}Cs7UkcEMWedo7Kou`4yOy9IUkRI2mtWwqFl-ahd+fJZ4f8t=Cun^h;h|)JVGh z<(60}_bPj#TB!xr!J3%f7pmI)O|9-4R5W`9!`?D9%@(B1o*sGIW*#GQd~jmo>nBB- zYg558>wIyooz6buj>9CIPS1siN*6CsnjlBd?aRQx&YX#PdB=B zaI9}b!@7X#461LHWr9+~x3`zVs+xdb15Xv$4jn)K2zUJX?w`ZSnmOOfpB~P!>E1*< z(`1v4`tqwhtb9tF)kWLV0On#;w`xb?d(dWfTe(;I{AUL}=f~SGnVTOMj;f9pX9!{+ z#kQrg*?K)M&U;-f$rRnq0Bo@=&Mdq8CvFAIh@ zx%l~*c7a>OwHiuF%D}&WO?&S#Nb@xT1lt#<%Gd+B;ymg}0VqkONiu7KYbY3R3@e`b z=H=y0^@r(*D{UlelgEYFRYu*!I~p?b>qmIhY$3t>T|S}u&Y2g>@>>pj-m$swL{2A*nPN<3}rCfdch;ipmee8txZgFnViQWj4 zSlebNyet6|80M~@d)e99-{=&1(YLP8HmK0+nR#QDzFS;!A|Q#F*5Y*3pC2dPyU2H# z8=I2U1&TMyzS#D%b_n2t|M|(YxA6pBUAlhhx3VnEGR=Sg&}&IEC_DX&nTaWUP-fNb z?<>F0>@C~)5;v%BB#ahYXGuyvv}W1@y^niQ;Q{=*^S^u%)i*FWcH_ftpdj@=UhR0L zh||~KT{%>|^#0vDZqOO|LXV|)|Ge=nzS2|?!u9as!&kRHoA2hn(&cM;;lhP(tY%c) zE1%7Ov&2$X28}kliX4z~dyWO!JviuG{HlmRs)miq=f^@SPwjr{{$g#n;?0at8&d?E zUx*#utQPCN3l>xP*p>gIIDN8fyHCE;;-ucQkdXKAR8Xy))%JmjP4#?_kn#3PNZA-~ zPBUQgr2uA8abHWIt*KdNIXiyppMU;2!pYe)FyI>&rs_L~J<56P*u%S2G*>fC>oj;| zczA*^;Ix%M7#n;0yidY|_Zt#bW*Ssv>L78If;H?qqz>q!4t}kzW$-!wc<)r3eXUqh zXQ8JA2zOrh$n4dtS6wE*QXdG-$;%Tk{dv%rfj#K)Yzu@1{N}U2XAz)8! z>MF=<|0_SX+%@0MSDq{LX_l?RKf-ux4T7b%kUI+8kKIgSVvw9X6Z?6jb2OGd_50&} zQMH2*6NkuF3gB8U8*2+J2r?{o{3)zb8XUU*7i&7Q|)-(7#dlY}+wu{@NR zY1Mv92Q;H8nK^k$3L&3Sq=etv#Se~dHuT_$z6(CwE4q~&*?w;LMn-aWr&lZMuwQ0pEgX`_qC_w@ z4{)sf)#*yiR~+ce&OLjKtYko8IF-W5>uW2nYjaIQEg4*dO<5Z&Ma%?1=Lv}a%pgW% zj<~(+%mBrc$jBey1;oc)hu(&T^XY9O=x*gk(Z-4lhNt8bZ-E@9!gZox0VY=Sr#0%f z!{aR^nr++QUf(687w8>na;`~d(DVQV1$F&7x-NLBnbw`L@O$cC$x{ExvaI~|{@PG` zo(PH1j#c6O&rhfZp{&=xJWB}`h?Rzc-qZ!klTj;u351P;8(twaNnctSo5AYh6!z*g zD7zhY`a#Qb)UL@2C_cP5v0f2Qrg!6J$Q6vMqw9?y)FPQlCH)GFu zEOz^Otc+zFtLy3M(XvZN6F0_VZQspJ23xOnpD3XA(PP?uQf-HiNt|aW@f+l*eNwHz z^J_~Bvy6-kWR-|OIApD;=dvK(enFe&WV`+!B_$=3t=2^ml_FMciXI-4Lgv4|^ydPz zFF)LQ)U+Xi4)nwrQ)|O)L7)4s0tv( zaf^#C2Tyecv5I|z4hX0=?!80JMs9D9!Pk3wdoL&|9z1reVm0QJdioK^;a~jj#sGCg z+=LLq3T&?Tv9e=`>!3c^kNpvnUSBi-ZB>G*bj3J4eEhh$y?w25W7jyv!sw13z&%yG z=ewKluTnvz7B2QYZrvZEG6A?D76{71Z&se6rWE!k^I_VirrcQfhTwgqXc_NVqUJ#q zhkN%+tuOY@j<)OqQ_pAv;`8Z!+q}BAR$Vko($vyw$+nJL$_2R*wC;!o)fo?U7eu6i zNxPC`XJp@k;Wn0@=q!?fzB_pr= zgKs3&8fVnSU)c4nxOizSyK^fots&S0NznXPc{l4#P_pI>69$cJtD_**Kvy2kFFx7X zB1bQU=Ib4RL;SXwdc~jdu#K&)9$+j9EO!R)|%ZrIH+*_`fiij z*tekOF0QU=CbevU@oluUf_`g7O9L#8pEMLODhx8Ksp?LUD=yeUr`KBM=H~}M+PEYo zqfrp+-e2P)Vd}Qg(Y*y{%U_#sCAqk`OybSpv7LopsFqRFK;eWU`}^nf$k^(>wq4^D zY-;-YuUld|3*1G%e*FrraL3<&D;TP~f{}u}{AurX4}pAwN-FP8qpk*SRp|wv(#Rt1 zU}XGC!<$doG@i?|-M|KYKp}LnvAT|(-D#Qi#lv8NZ~u8CZ>*LuVQZuc!hYZzjc!B2 z<=K&@VDRFGFSZ5;EtzH~pl<2n=Y%hXo-|wk>~=WYK1u)7{I)$9SfLHPVgmFved~=6 z*B`==w43ZYi;Y|*@fdYQVCFrANB>%&x-y*Ytzco(m$!XXYnGB ztBnnslC?+!@iZ$}w7?%vvzEaVIWWwyeS2=dOulloC`J657v{Z{7&GJWIC01A3=9ld zSt!W;zyw2-a{A)OJ%3|qQ-P6@GCx5|<1t@^zoZxy=)#4%deOq-B(}(A-HK;N2Xe9P zD6S+bA0XTmER?@kc39K#coj)l39RA{{xDQ_?cH07G1T2s9~iJ-=n+?}%U#RXECTl} zF7M5OqmxiMCL7}fhWZwpAW1#L7vMAl_sCHEIp~<*#}S>Fr6Qf6ClRe;H`Dfth=`c~ zdiNC<7PITyiqcIl6+Sz>)1aEs2u1E?k_vDEQvwlr7Z6x*|}(CV+`nCHz7PN!FDdqFS0*Der; zwIrf&*~7zw^D?U3JMB>8HbLvVxN<+z}`aBN-lQY zg9+tlIlAj*V~UOnK8H0S%oWq@&2X55qiQUeRcsR(o6h@^W!gqf!iHp8unm4d+hgjy zpI=c?QH~DcAi@s83&R|XC_5T7o@1~3^yyQ=;ENQxU7v87#m^DjTz~l2`y`F*Ajt0a zf25L=la-=`1A&!4v#oVdMdUGg@I;JZCn3kH14jbYsRVE@j%L&{VJM$8%03PX8h~X< zj3vcCu;hTOUtvLAgyl=j6Ijgs`}cRSvIc~N?7{%sm@2@7p;!b5i6BK`OFJH&`U7zN+u{nQ0VRD%0hyel!Sa(Q1+Q(ZH zdP;-vdIgNDx_}k^pPRG~i-|ES(iGsMb#MXUvX&AkF&O7<6)NI3YkF|(ZgqBt8;#Gl zU7TIx<27*eT<3nPGK<?Ltq#jZ$vk?uA+|}DF3xaPgW(ddg66(nkjETP;1rksXg+pnNKDT(U1MsS6 zF3iW)2G+2&)XL`M$ynfE?5O!e?DD*LceNwtraIzPXVmE<{==IS~!BU=bGs_X~--P9Fh0 zc!0iX<~nRcT>vcwaajF|q8tvdsJpv+^XAQMse^7Q_K$*sgsn2u!PQC3xm|XH&`b{> zJ$jA5(+>tbd-e=-{|ZyN`}lS4Vy|Pzj%gNpFvDiU6{+Jd-v|x}h&Qc!Eh4#L$h0Ml zN9(oXQ;rsKg%{cm4uV!zRuNfTd83vN&dwr!Le@@6cGgHG7~(wVnNQuye2L7$`FbN* z4s4_iOFG#*Onc3?%FjqIcc-ix|nYf`1qX*&y6k^^9xBE@di1CVk3=xqlCm-Zc*rvu3gcQ(;4wBko=OV2P8-4lWH?1YHJrs3SB0+3&TryeUzKIQBmIM1*&W+T|apom65eK^jIX?Y8oxWnm}F zbjalO^)~Zha09Baqqgsju7@`3ldDpl0Xp-40D7Rntz#$p<_mCP1xSx*zOYgdDKG?TxH3!IzFD9ryxO>aDS2 zGFa&`af`uXezb*_O)~tWY6_tMVDFwqiJC-ZtE?Qcx^aSo!}TECJgf?W;!RibwtT+5 z51-JV?yEp`SWEups_LejVO*^b0tYDY0dF8AHo$ZI-7B=s(7k{EUMW)WA>(2BC(+SW zu(O9+vnNiycpAf|7DU}Vg=U|*xuXXU`k)T@ez@_`*jlsbDRE2!a5mFW!j=d}HfG(WOEiW;y zV(LlAW5b~+NwDyL)Y;h!67+P->TfmJO75J^5@KRU6(~mu2@2sfV3>w?)`Q~N)CK4k zyOpeb{r}lV^q=51UNa}=(dx|Ggam9Zh%QkvvF_pF54V@>!u8@kZ%2iMTnin^_#-d3 z{#u2bg8cjU3jq5yG(@zuwSg|bLIB_}_U8rYRG*6{3PgN-e4k5>>!G}|9t4;f83HOY zYnifY6q~83qeg@ts~&ORt-I;WxpSMq5-D_{B4Hs2IFD=YJ*nms7ssBc5?52VtnEG~ z)Zx9c#(GL1#c)9_S-ap7A`?Oh_mn)OA3=myg%VFfo5(LMv&8bEz)ead?kg{SS{}bs z&)@|5Zl)hZs|HTbrQQB7#awn6m3PzP{&qFRIA@kiBVoa9ZbGRdfpaXyssCwoM ziH(g-a=zKX*mb^_1ylm{A_1J1SU{l0l9G~85GU|{E#jdpLv1+%Bo(PS!gKV?Y2%~S z)Y=d~<(c7R)tVLP+~Mj62FQo37*F5}nt?|phz{sS)CxTlpAUAQpA*75ek8xd+u$Q0 zUWAZV&(i8+KPoQ%r+m13`f~nLv?qL`)+PC>g~0KpV1j?nM_UXq;a^={r6nUR;ioO; zg9_8d`uUDsPI$Argb|A<;eGe`xD|*>BYp&IyoiDcCdz3n0`vT-QkH?*@9;JP5Uh|% z0g#Z)2yRN@ZqOC;1r)e1?Drv(TO!GXVJ1v67^;8ktH)G|y%qo}gYO!Y;?A_aKVQkp zBZ8wPGfBB+>M{A+&X1}SKFdI@L6op%mAHuIA4Aw~zez+R+I~0+@~}+k$fDls`NXG} zXUz!PXNxZK4i?Oeps;m^1=MVtMQ3%;(T@u*u$<-bn~n@ADhL^bn+DLa2s43h3}lJi z9wZ*(WkS1cM?7W~pHqXIKupjvNRwCDbYyXQ~AgiXR?3!RPPG2?#ZZ1Kt>=d#aGdVz`h4A;9KYjnE8=VxmU8Sv`D4F>?(3{ zn?djnOH0RMF2UXuknW-6Zb8wcJacQ}FE)k&q|)Nj62+B54_BfNN_)f3CiWExQA#{| z1|*^FQ6?C7@7_#CxuJNcn!*M|w=w;Q>U2Qd!A9*SXkf0x(584gKLj|@Af||Om9Q%a zaS$xM%#94#PMJ>1cu@LDN}X7-i>0rS1xlWq3+TaY$YPcg*WfDHm3?sZ;-5! zVN6GY27)+x1kK;w({m2t>g4qFrg~}7Y*2f+dPGc1G*=)dHD(r$qAM4@kq?;IoW(xa zScIpto>2B|PgJ%1*Sl2eSr*LDZ-W4x#IyIdJU^w;sFydIDIkE5cZY=2=s|)5N3AtO z79k41q@+X(YHiVx&+G%ogHt6|iD({ibbN~p3nIgCMNMuR{XM7u!prIC=pf8Fh^{p6 z4X^F{cxcI}nA^xGKWM&kN?5^CWptJaoxYoU9Zn#zaBxExo!08z`Wo$r!0?+gcBPr|A{Qfx&U`L78wWTJ?{ zGYSE64=PH`;H$4L&+o|2Lu=QQ`LfbLHy@4-hyCYvU%Pts*-}0p3q2AKFuoFPT6u`* z&-`i6Zn$*e0za1s(NF@Uev0l1Td0p%kLe2pYrqomDUwziV}I?$?lDPm;${-z03f~% z!HZJ_gB`Jm>v8yNRf(>CVC{%!VtlycUSE21ZIn94uHlXnaO(3GZ?LWHbP*&{;hRwV9-&4y1F{# zhtcS5@bmHL4HR)1&lzORstjlj7N9uO(Fpun5LlI z5?+fcZXRkK_uDkZeX{H8zzEt(_X9`lL_;CF#aTz-BCs|h)GqUohCu8EAEX}{D;op! z@VL*`DP%~7R>gOE6EXV;oH{xjr!VeSKKt_P^oZpiw42*CwFiVaAFr?(OPUBHU=_M_-JxDY3zw~(-6k?R zeNYG>@L!aD+QXQWZMKy^hWI$9mGo%$v2U1Xl%6lv5`O1;awsyn(j7F!0#U`SqHb{egSX>$xzS zXay74KAsh79!-1^hmA0P^KA_j0|Nu4a0`?`oUHQ#0Ga}@?xCXWQt{rHmDL^kKs+=2 zCSg1W&Rd_Aw;dnO9~1?L@TTVn$gD2PQNipoxT#$conQy8`V~n-ixppf$MErp9Uwy z9sUxaZvR=C@xmL@E>f)5vKbl?U{i7+sx@m!01I_!aExF^^@OD@pwnuRr9{cgW!aG* z0TBb$(WW`}U=3XWlK4-~%{c$n^AwzT=ya#CTZQNugfsR7{eQ(^L0^zkq-%yTV_rbT zN?5G(ZHt$Y$ehDCz^Zr&g&!^Hy3+@CBoPQx?AW(Y0pe>BZdSGMO&H=}qsF(4ZEW~( zAs%!c8RLltreh?W>p!aU64VD>*zc|-(u2+B&(>cuUK=W+AC8&7&oNhJ z;6eLj!LFx8+~m!$pZAMcDFM{QYMgSOJs z3pW9$0}=XNg~N`9HnX-b{KT65F9rrZ6|vx4`2p=)fp8QOlw*Ei_k;_W(33DehY6en z>EwglKn_KNC0sVyU3@3g+MEa`MePS@VRRv*sBIgBA7@zN&*(5r^dl(~ju{HP)w~WT z2MGWsf0F?e8P6GSK{P;?xDmaO1S0qlc!MT55si_039r>J{{WH!MMS$H+N^|8k^?bW z`(wl%PlLfDnzJUA;sybj&i&AQTXYflF@Z?%q39C|MA~zi31Ny5x+?>Lm^?e@Vcv>Kpdb%(;FTs9XmR zk~O{h${9&uvqn50L37b0L9`B|6A-*+5oQpwJoXc+$$h9)dPHLMx9)I5u5oQ_HJTTW zsU}C~Sb*9Mlsu(ob0KSL!#Kzx`stPsIu*=$vi+2hWWbVSo~J=HxI8ua%sk#iN^`ViH}h zBC^$^o;#jK0W=AN5pi-Ho0OXkMsdH8c?kgB6*gstrn3MX{Qx$pNYJ(LN~A$|kk7?= zOh07aJ|D{vKj+1%99>Q{EFZMgFT*^;xcOe9n^~7>3r>l_@$CYDp&7QCEzZAYCsPPEpkXrNhG0*|x*cD!NP|;OvNcm4F#3!#!}cZS_EF8D+oco@&kW7LJv`2RWXP!T=m_NO;4y}-Y`lbd|RzO1bHVeqtp{_7*VG$K70_e@gOARkdX95_Pz>PU%gb1CA$ufnai+DzE$!TS#->EiF_|DoksR! z{BDKVI2in#j#%$aRN;mW(?w=qpY4p=d)l?2K#>j3!z<^B4jhrYgXO~qYy0?(4|1@= z#NclwXBokjz+t54!P0iDIclHH_n^fl=TE5jcCGT0JF*!#RNt<-_lqcsj(;h9$>1XS ze4e{*FW>n1{5XaG>MnE+`ERTgZ5Uvs(|4X}_@{dzQ-=j! zw6RXKG;DbZGa!GV!yVOmi(;O02b?DCqD@5BTjXnrjfs9$T7VitLnaBQlTbrM6v*WJ z75hj9-H|xZ_l>SIxU;7*?f9@k%@MXOdt38LTRPo^1jp)`)b*};FLOf|0F4?p)Sq%CnI;N#6t zuTcTd{8?};Tps?Y6e}44=fVE(&qMHbx1B*hC_G|L;Oj}y72 zCvK*qCEQPA=URKm7a=9-_6Yym?q5RpSAPDb#*sXxH$7A{8mM8fF)&74>&Vz#dx!Rs;8QT@71%v@>*#dSjvzB8&LU7W=er6JfhB@+ z((V&Ct7ubU#-yUv2``}lmjMFeEdnSK(HaCF1ilt*Fh^3j(CwQE&QigFfk%%Vxlbma zAzT_C3QD4(#(jSD5c(=`tPQYEmFqNi5ycjrFQkJA`w&qzAn(M|QNX~V649~<2VhDW zSy+h9T6Ex=)W=^K2(vOV{@ov(p{ZK7_HZ=+lh{Qmz6&9>G{X}l)rEi&O{te1!eur& zt*wvy(ok$A+AMzY;NTNl*z3@@gRWC`utzj82{dsXITHQ~_MIS32fkBF;{XkNjTid$ z;RcNlk=Y}%704%gHW(NZiNI~R4XG3$mWV6|J_X!N(XNKE?lPKI_8$)y3}3LArVEMW zfTjQTy(bm%(CnVGj8bm1gfEX3^Z=AD2r?v6_KAoc4}VWqWBcXdI~6*bkI!7>T=;M? z=h@!VImBLmM0DCn^|EUs3dNzcn-Fr0(D|_7V6+Y_6PF>32(x0Zm4%5!$OYyfEtoC9 zw202cpU;o62&0^7RIIW4(UG{x2a$a+T%#FepzznKh(2gCY$$VI=6Je0JTPvti#M6s z?}aP3l=&Ia2z0eW^cdP9J!A-t!Q60gW8DJ7+zs!M_I*qN3EKDYg7r!g|lNfo|&)JkUeZTdOqv+Z&9Z1^J$XFToP z-JeQ=y7Cgl1|7O+aH0WoJq%S1(-R_-Dt_)Y0sJ^RFgZKh2exViuLVvP#eYuz0K@R1 z2e9g4E>RzplpNDcjf;y@?*s-C4O0S{hoLXPfQFk=ta(2E^9DV9f_$~!6#47RBcs^x zSPNH?l;iT@r;Q%vs9;yQf-MlS@Dr!Qt=Lu4=uEIEV7Gi+=FnjvzVQs z^4?P%9D4=PnWKsUR|8v*F_n@LaImHhK5H}X>(;&ba`xCnYS*mZcaT!qyKiUMT@2Eu z4(-TyopBlYlns~W4eV5ehzDTuAfK?C`{2OHn6rZ3zO4)f9gkW_r0vIue;0sZ5UD{` zlt?gI5qiO%N*?a2<`pU2(~?6!noPw+2Kc$4|E&db$8wC9gQIb_{BSTjHY_@VM{o8o zIUjO!cb|cKi@5eHN=#K5f|Uv5&p3u#i7ZqF?76xOJ^n6DBl#bt;J7?(eLA9Z^eDcs zK@6$>h5v(() => restaurantRepository); + GetIt.I.registerFactory(() => favoritesService); + GetIt.I.registerFactory(() => RTImageNetworkMock()); + }); + + tearDown(() { + reset(restaurantRepository); + reset(favoritesService); + GetIt.I.reset(); + }); + + final deviceBuilder = DeviceBuilder() + ..overrideDevicesForAllScenarios(devices: [Device.iphone11]) + ..addScenario( + widget: const RestauranTour(), + ); + + testGoldens('when [RestaurantTour] loads should show the title on the page and fetch the data', (WidgetTester tester) async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + await loadAppFonts(); + + await tester.pumpDeviceBuilder(deviceBuilder); + await tester.pumpAndSettle(); + + await screenMatchesGolden(tester, "restauran_tour_content"); + }); +} diff --git a/test/mocks/mocks.dart b/test/mocks/mocks.dart index a347cc5b..9a9239c9 100644 --- a/test/mocks/mocks.dart +++ b/test/mocks/mocks.dart @@ -1,3 +1,4 @@ +import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:restaurantour/components/rt_image_network.dart'; @@ -9,6 +10,10 @@ class RestaurantRepositoryMock extends Mock implements RestaurantRepository {} class FavoritesServiceMock extends Mock implements FavoritesService {} +class DioMock extends Mock implements Dio {} + +class RequestOptionsMock extends Mock implements RequestOptions {} + class RTImageNetworkMock extends Mock implements RTImageNetwork { @override Widget build({required String location, required Widget errorWidget}) => const Icon(Icons.image); From 76d96b034880211e2b2350be34dee408a1212cb4 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sun, 18 Feb 2024 11:50:16 -0300 Subject: [PATCH 39/89] feat: refactor extract restaurant_tour to a separated file and rename the restaurant_view_model --- .../pages/favorites/favorites_page.dart | 2 +- .../pages/restaurants/restaurants_page.dart | 2 +- ...l.dart => restaurant_list_view_model.dart} | 0 .../restaurants_list_screen.dart | 2 +- lib/main.dart | 31 +------------------ lib/restauran_tour.dart | 31 +++++++++++++++++++ test/golden_test/favorites_page_test.dart | 2 +- test/golden_test/restauran_tour_test.dart | 2 +- test/widget_tests/favorites_page_test.dart | 2 +- test/widget_tests/restauran_tour_test.dart | 2 +- test/widget_tests/restaurants_page_test.dart | 2 +- 11 files changed, 40 insertions(+), 38 deletions(-) rename lib/features/restaurants_list/{restaurant_view_model.dart => restaurant_list_view_model.dart} (100%) create mode 100644 lib/restauran_tour.dart diff --git a/lib/features/restaurants_list/pages/favorites/favorites_page.dart b/lib/features/restaurants_list/pages/favorites/favorites_page.dart index 271b820e..b3ebfcf0 100644 --- a/lib/features/restaurants_list/pages/favorites/favorites_page.dart +++ b/lib/features/restaurants_list/pages/favorites/favorites_page.dart @@ -6,7 +6,7 @@ import 'package:restaurantour/components/restaurant_item_widget.dart'; import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/components/rt_shimmer_loading.dart'; import 'package:restaurantour/core/inject.dart'; -import 'package:restaurantour/features/restaurants_list/restaurant_view_model.dart'; +import 'package:restaurantour/features/restaurants_list/restaurant_list_view_model.dart'; class FavoritesPage extends StatefulWidget { const FavoritesPage({super.key}); diff --git a/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart b/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart index a9e16e74..56a5afea 100644 --- a/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart +++ b/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart @@ -6,7 +6,7 @@ import 'package:restaurantour/components/restaurant_item_widget.dart'; import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/components/rt_shimmer_loading.dart'; import 'package:restaurantour/core/inject.dart'; -import 'package:restaurantour/features/restaurants_list/restaurant_view_model.dart'; +import 'package:restaurantour/features/restaurants_list/restaurant_list_view_model.dart'; class RestaurantsPage extends StatefulWidget { const RestaurantsPage({super.key}); diff --git a/lib/features/restaurants_list/restaurant_view_model.dart b/lib/features/restaurants_list/restaurant_list_view_model.dart similarity index 100% rename from lib/features/restaurants_list/restaurant_view_model.dart rename to lib/features/restaurants_list/restaurant_list_view_model.dart diff --git a/lib/features/restaurants_list/restaurants_list_screen.dart b/lib/features/restaurants_list/restaurants_list_screen.dart index e1dd641b..f0968cf4 100644 --- a/lib/features/restaurants_list/restaurants_list_screen.dart +++ b/lib/features/restaurants_list/restaurants_list_screen.dart @@ -6,7 +6,7 @@ import 'package:restaurantour/core/inject.dart'; import 'package:restaurantour/core/text_style.dart'; import 'package:restaurantour/features/restaurants_list/pages/favorites/favorites_page.dart'; import 'package:restaurantour/features/restaurants_list/pages/restaurants/restaurants_page.dart'; -import 'package:restaurantour/features/restaurants_list/restaurant_view_model.dart'; +import 'package:restaurantour/features/restaurants_list/restaurant_list_view_model.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorites_service.dart'; diff --git a/lib/main.dart b/lib/main.dart index b7a58154..f58d03d0 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,9 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:restaurantour/core/rt_colors.dart'; import 'package:restaurantour/core/inject.dart'; -import 'package:restaurantour/features/restaurants_list/restaurants_list_screen.dart'; -import 'package:flutter_localizations/flutter_localizations.dart'; -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:restaurantour/restauran_tour.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); @@ -11,29 +8,3 @@ void main() async { runApp(const RestauranTour()); } - -class RestauranTour extends StatelessWidget { - const RestauranTour({super.key}); - - @override - Widget build(BuildContext context) { - return MaterialApp( - debugShowCheckedModeBanner: false, - localizationsDelegates: const [ - AppLocalizations.delegate, - GlobalMaterialLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - ], - theme: ThemeData( - visualDensity: VisualDensity.adaptivePlatformDensity, - colorScheme: const ColorScheme.light( - primary: RTColors.primaryFill, - onSurface: RTColors.secondaryText, - background: RTColors.background, - ), - ), - home: RestaurantsListScreen.create(), - ); - } -} diff --git a/lib/restauran_tour.dart b/lib/restauran_tour.dart new file mode 100644 index 00000000..61ea6f65 --- /dev/null +++ b/lib/restauran_tour.dart @@ -0,0 +1,31 @@ +import 'package:flutter/material.dart'; +import 'package:restaurantour/core/rt_colors.dart'; +import 'package:restaurantour/features/restaurants_list/restaurants_list_screen.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + +class RestauranTour extends StatelessWidget { + const RestauranTour({super.key}); + + @override + Widget build(BuildContext context) { + return MaterialApp( + debugShowCheckedModeBanner: false, + localizationsDelegates: const [ + AppLocalizations.delegate, + GlobalMaterialLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + ], + theme: ThemeData( + visualDensity: VisualDensity.adaptivePlatformDensity, + colorScheme: const ColorScheme.light( + primary: RTColors.primaryFill, + onSurface: RTColors.secondaryText, + background: RTColors.background, + ), + ), + home: RestaurantsListScreen.create(), + ); + } +} diff --git a/test/golden_test/favorites_page_test.dart b/test/golden_test/favorites_page_test.dart index a365e2e9..b2f97e49 100644 --- a/test/golden_test/favorites_page_test.dart +++ b/test/golden_test/favorites_page_test.dart @@ -8,7 +8,7 @@ import 'package:mocktail/mocktail.dart'; import 'package:provider/provider.dart'; import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/features/restaurants_list/pages/favorites/favorites_page.dart'; -import 'package:restaurantour/features/restaurants_list/restaurant_view_model.dart'; +import 'package:restaurantour/features/restaurants_list/restaurant_list_view_model.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorites_service.dart'; diff --git a/test/golden_test/restauran_tour_test.dart b/test/golden_test/restauran_tour_test.dart index d9aeefe3..361b9ca1 100644 --- a/test/golden_test/restauran_tour_test.dart +++ b/test/golden_test/restauran_tour_test.dart @@ -3,9 +3,9 @@ import 'package:get_it/get_it.dart'; import 'package:golden_toolkit/golden_toolkit.dart'; import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/components/rt_image_network.dart'; -import 'package:restaurantour/main.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/restauran_tour.dart'; import 'package:restaurantour/services/favorites_service.dart'; import '../mocks/mocks.dart'; diff --git a/test/widget_tests/favorites_page_test.dart b/test/widget_tests/favorites_page_test.dart index eb0f419d..5d960e69 100644 --- a/test/widget_tests/favorites_page_test.dart +++ b/test/widget_tests/favorites_page_test.dart @@ -10,7 +10,7 @@ import 'package:restaurantour/components/rt_empty_widget.dart'; import 'package:restaurantour/components/rt_error_widget.dart'; import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/features/restaurants_list/pages/favorites/favorites_page.dart'; -import 'package:restaurantour/features/restaurants_list/restaurant_view_model.dart'; +import 'package:restaurantour/features/restaurants_list/restaurant_list_view_model.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorites_service.dart'; diff --git a/test/widget_tests/restauran_tour_test.dart b/test/widget_tests/restauran_tour_test.dart index 8bf51e27..563d01ea 100644 --- a/test/widget_tests/restauran_tour_test.dart +++ b/test/widget_tests/restauran_tour_test.dart @@ -2,9 +2,9 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:get_it/get_it.dart'; import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/components/rt_image_network.dart'; -import 'package:restaurantour/main.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/restauran_tour.dart'; import 'package:restaurantour/services/favorites_service.dart'; import '../mocks/mocks.dart'; diff --git a/test/widget_tests/restaurants_page_test.dart b/test/widget_tests/restaurants_page_test.dart index ec4f8393..a64a5d90 100644 --- a/test/widget_tests/restaurants_page_test.dart +++ b/test/widget_tests/restaurants_page_test.dart @@ -10,7 +10,7 @@ import 'package:restaurantour/components/rt_empty_widget.dart'; import 'package:restaurantour/components/rt_error_widget.dart'; import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/features/restaurants_list/pages/restaurants/restaurants_page.dart'; -import 'package:restaurantour/features/restaurants_list/restaurant_view_model.dart'; +import 'package:restaurantour/features/restaurants_list/restaurant_list_view_model.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorites_service.dart'; From 80f7f9e182f7ce512fcd1a138476773d3befb457 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sun, 18 Feb 2024 12:38:45 -0300 Subject: [PATCH 40/89] feat: add tests to restaurant_list_view_model --- .../restaurant_list_view_model_test.dart | 185 ++++++++++++++++++ 1 file changed, 185 insertions(+) create mode 100644 test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart diff --git a/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart b/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart new file mode 100644 index 00000000..546f4e2f --- /dev/null +++ b/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart @@ -0,0 +1,185 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:get_it/get_it.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:restaurantour/components/rt_image_network.dart'; +import 'package:restaurantour/features/restaurants_list/restaurant_list_view_model.dart'; +import 'package:restaurantour/models/restaurant.dart'; +import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/services/favorites_service.dart'; + +import '../../mocks/mocks.dart'; + +void main() { + RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); + FavoritesService favoritesService = FavoritesServiceMock(); + setUp(() { + GetIt.I.registerFactory(() => restaurantRepository); + GetIt.I.registerFactory(() => favoritesService); + GetIt.I.registerFactory(() => RTImageNetworkMock()); + }); + + tearDown(() { + reset(restaurantRepository); + reset(favoritesService); + GetIt.I.reset(); + }); + + group('tests on restaurantListViewModel.load() ->', () { + test('''when [RestaurantListViewModel] is created the [status] should starts with [RestaurantListStatus.loading] + and no call to [restaurantRepository.getRestaurants] should be triggered''', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + + expect(sut.status, RestaurantListStatus.loading); + verifyNever(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))); + }); + + test('when [load] is called should call once time the [getRestaurants] on [RestaurantRepository]', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + + await sut.load(); + + verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); + }); + + test('when [load] get successfully the data from repository the [status] should be [RestaurantListStatus.content]', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + + await sut.load(); + + expect(sut.status, RestaurantListStatus.content); + }); + + test('''when [load] get successfully the data from repository but the [Restaurant] list is [empty] + the [status] should be [RestaurantListStatus.restaurantsEmpty]''', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResult(restaurants: []))); + final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + + await sut.load(); + + expect(sut.status, RestaurantListStatus.restaurantsEmpty); + }); + + test('when [load] get some error from repository the [status] should be [RestaurantListStatus.error]', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenThrow('error mock'); + final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + + await sut.load(); + + expect(sut.status, RestaurantListStatus.error); + }); + + test('''when [load] get some error from repository + no more calls should be triggered to [restaurantRepository.getRestaurants]''', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenThrow('error mock'); + final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + + await sut.load(); + + verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); + }); + }); + + group('tests on restaurantListViewModel.loadFavorites() ->', () { + test('''when [RestaurantListViewModel] is created the [status] should starts with [RestaurantListStatus.loading] + and no call to [favoritesService.loadFavorites] should be triggered''', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); + final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + + expect(sut.status, RestaurantListStatus.loading); + verifyNever(() => favoritesService.loadFavorites()); + }); + + test('when [loadFavorites] is called should call only once time the [getRestaurants] on [FavoritesService]', () async { + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); + final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + + await sut.loadFavorites(); + + verify(() => favoritesService.loadFavorites()).called(1); + }); + + test('''when [RestaurantListViewModel] is created the [Restaurant] list has items, + if [loadFavorites] get successfully the data from favoritesService + the [status] should be [RestaurantListStatus.favoritesEmpty]''', () async { + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); + final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + + await sut.loadFavorites(); + + expect(sut.status, RestaurantListStatus.favoritesEmpty); + }); + + test('''when [load] get successfully the data from repository but the [Restaurant] list is [empty], + when [loadFavorites] get successfully the data from favoritesService the [status] + should be [RestaurantListStatus.favoritesEmpty]''', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResult(restaurants: []))); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); + final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + + await sut.load(); + await sut.loadFavorites(); + + expect(sut.status, RestaurantListStatus.favoritesEmpty); + }); + + test('''when [load] get successfully the data from repository + and [loadFavorites] get successfully the data from favoritesService but finds no matching ID in the lists, + the [status] should be [RestaurantListStatus.favoritesEmpty]''', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value(['another-restaurant-id'])); + final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + + await sut.load(); + await sut.loadFavorites(); + + expect(sut.status, RestaurantListStatus.favoritesEmpty); + }); + + test('''when [load] get successfully the data from repository + and [loadFavorites] get successfully the data from favoritesService and finds a matching ID in the lists, + the [status] should be [RestaurantListStatus.content]''', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); + final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + + await sut.load(); + await sut.loadFavorites(); + + expect(sut.status, RestaurantListStatus.content); + }); + + test('''when [loadFavorites] get successfully the data from favoritesService but the list is [empty] + the [status] should be [RestaurantListStatus.favoritesEmpty]''', () async { + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); + final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + + await sut.loadFavorites(); + + expect(sut.status, RestaurantListStatus.favoritesEmpty); + }); + + test('''when [loadFavorites] get some error from favoritesService + the [status] should be [RestaurantListStatus.favoritesError]''', () async { + when(() => favoritesService.loadFavorites()).thenThrow('error mock'); + final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + + await sut.loadFavorites(); + + expect(sut.status, RestaurantListStatus.favoritesError); + }); + + test('''when [loadFavorites] get some error from favoritesService + no more calls should be triggered to [favoritesService.loadFavorites]''', () async { + when(() => favoritesService.loadFavorites()).thenThrow('error mock'); + final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + + await sut.loadFavorites(); + + verify(() => favoritesService.loadFavorites()).called(1); + }); + }); +} From 9820627147a8cc4494771a614ce79d0fb50d1984 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sun, 18 Feb 2024 12:44:01 -0300 Subject: [PATCH 41/89] feat: refactor folder name --- lib/components/restaurant_item_widget.dart | 2 +- .../restaurant_details_screen.dart | 2 +- .../restaurant_details_view_model.dart | 0 test/widget_tests/restaurant_details_screen_test.dart | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) rename lib/features/{details => restaurant_details}/restaurant_details_screen.dart (98%) rename lib/features/{details => restaurant_details}/restaurant_details_view_model.dart (100%) diff --git a/lib/components/restaurant_item_widget.dart b/lib/components/restaurant_item_widget.dart index 0cfeec17..19b9555d 100644 --- a/lib/components/restaurant_item_widget.dart +++ b/lib/components/restaurant_item_widget.dart @@ -5,7 +5,7 @@ import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/core/inject.dart'; import 'package:restaurantour/core/rt_colors.dart'; import 'package:restaurantour/core/text_style.dart'; -import 'package:restaurantour/features/details/restaurant_details_screen.dart'; +import 'package:restaurantour/features/restaurant_details/restaurant_details_screen.dart'; import 'package:restaurantour/models/restaurant.dart'; class RestaurantItemWidget extends StatelessWidget { diff --git a/lib/features/details/restaurant_details_screen.dart b/lib/features/restaurant_details/restaurant_details_screen.dart similarity index 98% rename from lib/features/details/restaurant_details_screen.dart rename to lib/features/restaurant_details/restaurant_details_screen.dart index a7232fef..e55b6b53 100644 --- a/lib/features/details/restaurant_details_screen.dart +++ b/lib/features/restaurant_details/restaurant_details_screen.dart @@ -8,7 +8,7 @@ import 'package:restaurantour/core/inject.dart'; import 'package:restaurantour/core/rt_colors.dart'; import 'package:restaurantour/core/text_style.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; -import 'package:restaurantour/features/details/restaurant_details_view_model.dart'; +import 'package:restaurantour/features/restaurant_details/restaurant_details_view_model.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/services/favorites_service.dart'; diff --git a/lib/features/details/restaurant_details_view_model.dart b/lib/features/restaurant_details/restaurant_details_view_model.dart similarity index 100% rename from lib/features/details/restaurant_details_view_model.dart rename to lib/features/restaurant_details/restaurant_details_view_model.dart diff --git a/test/widget_tests/restaurant_details_screen_test.dart b/test/widget_tests/restaurant_details_screen_test.dart index e99d70f7..1b84fe5b 100644 --- a/test/widget_tests/restaurant_details_screen_test.dart +++ b/test/widget_tests/restaurant_details_screen_test.dart @@ -6,7 +6,7 @@ import 'package:get_it/get_it.dart'; import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/components/rt_error_widget.dart'; import 'package:restaurantour/components/rt_image_network.dart'; -import 'package:restaurantour/features/details/restaurant_details_screen.dart'; +import 'package:restaurantour/features/restaurant_details/restaurant_details_screen.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorites_service.dart'; From e428a852db8971179e389aae8b758c21f88b8499 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sun, 18 Feb 2024 13:28:22 -0300 Subject: [PATCH 42/89] feat: add tests to restaurant_details_view_model --- .../restaurant_details_view_model.dart | 2 +- .../restaurant_details_view_model_test.dart | 114 ++++++++++++++++++ 2 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart diff --git a/lib/features/restaurant_details/restaurant_details_view_model.dart b/lib/features/restaurant_details/restaurant_details_view_model.dart index a0877909..340fc5a1 100644 --- a/lib/features/restaurant_details/restaurant_details_view_model.dart +++ b/lib/features/restaurant_details/restaurant_details_view_model.dart @@ -18,7 +18,7 @@ class RestaurantDetailsViewModel with ChangeNotifier { List _favoriteList = []; RestaurantDetailsViewModel({required this.favoriteService, required this.restaurantId}); - void toggleFavorite() async { + Future toggleFavorite() async { try { _emitChangingFavorite(); await Future.delayed(const Duration(milliseconds: 500)); diff --git a/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart b/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart new file mode 100644 index 00000000..88e1c66a --- /dev/null +++ b/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart @@ -0,0 +1,114 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:get_it/get_it.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:restaurantour/components/rt_image_network.dart'; +import 'package:restaurantour/features/restaurant_details/restaurant_details_view_model.dart'; +import 'package:restaurantour/services/favorites_service.dart'; + +import '../../mocks/mocks.dart'; + +void main() { + FavoritesService favoritesService = FavoritesServiceMock(); + setUp(() { + GetIt.I.registerFactory(() => favoritesService); + GetIt.I.registerFactory(() => RTImageNetworkMock()); + }); + + tearDown(() { + reset(favoritesService); + GetIt.I.reset(); + }); + const String restaurantId = ''; + test('''when [RestaurantDetailsViewModel] is created + the [status] should starts with [RestaurantDetailsStatus.loading] + and no call to [favoritesService.loadFavorites] should be triggered''', () async { + final sut = RestaurantDetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); + + expect(sut.status, RestaurantDetailsStatus.loading); + verifyNever(() => favoritesService.loadFavorites()); + }); + + test('when [load] is called should call once time the [loadFavorites] on [FavoritesService]', () async { + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); + final sut = RestaurantDetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); + + await sut.load(); + + verify(() => favoritesService.loadFavorites()).called(1); + }); + + test('''when [load] get successfully the data from favoriteService + the [status] should be [RestaurantDetailsStatus.content]''', () async { + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); + final sut = RestaurantDetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); + + await sut.load(); + + expect(sut.status, RestaurantDetailsStatus.content); + }); + + test('when [load] get some error from favoriteService the [status] should be [RestaurantDetailsStatus.error]', () async { + when(() => favoritesService.loadFavorites()).thenThrow('error mock'); + final sut = RestaurantDetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); + + await sut.load(); + + expect(sut.status, RestaurantDetailsStatus.error); + }); + + test('''when [load] get successfully the data from favoriteService and finds a matching ID in the favorite list + [restaurantDetailsViewModel.isFavorite] should be [true]''', () async { + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([restaurantId])); + final sut = RestaurantDetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); + + await sut.load(); + + expect(sut.isFavorite, true); + }); + + test('''when [load] get successfully the data from favoriteService and finds no matching ID in the favorite list + [restaurantDetailsViewModel.isFavorite] should be [false]''', () async { + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value(['new-restaurant'])); + final sut = RestaurantDetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); + + await sut.load(); + + expect(sut.isFavorite, false); + }); + + test('''when [load] get successfully the data from favoriteService and the [Restaurant] is favorite and + when [toggleFavorite] is called should call [favoritesService.removeFavorite] once time + and [restaurantDetailsViewModel.isFavorite] should be changed to [false]''', () async { + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([restaurantId])); + when(() => favoritesService.addFavorite(any())).thenAnswer((_) => Future.value()); + when(() => favoritesService.removeFavorite(any())).thenAnswer((_) => Future.value()); + final sut = RestaurantDetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); + + await sut.load(); + expect(sut.isFavorite, true); + + await sut.toggleFavorite(); + + expect(sut.isFavorite, false); + verify(() => favoritesService.removeFavorite(restaurantId)).called(1); + verifyNever(() => favoritesService.addFavorite(restaurantId)); + }); + + test('''when [load] get successfully the data from favoriteService and the [Restaurant] is not favorite and + when [toggleFavorite] is called should call [favoritesService.addFavorite] once time + and [restaurantDetailsViewModel.isFavorite] should be changed to [true]''', () async { + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value(['favorite-restaurant'])); + when(() => favoritesService.addFavorite(any())).thenAnswer((_) => Future.value()); + when(() => favoritesService.removeFavorite(any())).thenAnswer((_) => Future.value()); + final sut = RestaurantDetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); + + await sut.load(); + expect(sut.isFavorite, false); + + await sut.toggleFavorite(); + + expect(sut.isFavorite, true); + verify(() => favoritesService.addFavorite(restaurantId)).called(1); + verifyNever(() => favoritesService.removeFavorite(restaurantId)); + }); +} From be0c6a86c1d65a3b22048d72a39012164657463e Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sun, 18 Feb 2024 13:37:20 -0300 Subject: [PATCH 43/89] feat: update .gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 1be2d875..3d7b9477 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,8 @@ .buildlog/ .history .svn/ - +# automated_tests related +**/failures/ # IntelliJ related *.iml *.ipr From 63e7836f6fafb22bbf16dad57f6120fb056b8fc0 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sun, 18 Feb 2024 14:10:22 -0300 Subject: [PATCH 44/89] feat: add test to restaurant_details_screen --- .../restaurant_details_screen.dart | 1 + .../restaurants_list_screen.dart | 2 + .../goldens/restauran_tour_favorites_tab.png | Bin 0 -> 19142 bytes .../restaurant_details_added_favorite.png | Bin 0 -> 32608 bytes .../goldens/restaurant_details_content.png | Bin 0 -> 32608 bytes .../goldens/restaurant_details_favorite.png | Bin 0 -> 32608 bytes .../restaurant_details_not_favorite.png | Bin 0 -> 32912 bytes .../restaurant_details_removed_favorite.png | Bin 0 -> 32912 bytes test/golden_test/restauran_tour_test.dart | 14 ++ .../restaurant_details_screen_test.dart | 120 ++++++++++++++++++ 10 files changed, 137 insertions(+) create mode 100644 test/golden_test/goldens/restauran_tour_favorites_tab.png create mode 100644 test/golden_test/goldens/restaurant_details_added_favorite.png create mode 100644 test/golden_test/goldens/restaurant_details_content.png create mode 100644 test/golden_test/goldens/restaurant_details_favorite.png create mode 100644 test/golden_test/goldens/restaurant_details_not_favorite.png create mode 100644 test/golden_test/goldens/restaurant_details_removed_favorite.png create mode 100644 test/golden_test/restaurant_details_screen_test.dart diff --git a/lib/features/restaurant_details/restaurant_details_screen.dart b/lib/features/restaurant_details/restaurant_details_screen.dart index e55b6b53..9276b358 100644 --- a/lib/features/restaurant_details/restaurant_details_screen.dart +++ b/lib/features/restaurant_details/restaurant_details_screen.dart @@ -16,6 +16,7 @@ class RestaurantDetailsScreen extends StatefulWidget { const RestaurantDetailsScreen({super.key, required this.restaurant, required this.imageNetwork}); final Restaurant restaurant; final RTImageNetwork imageNetwork; + static Widget create({required Restaurant restaurant, required RTImageNetwork imageNetwork}) => ChangeNotifierProvider( create: (context) => RestaurantDetailsViewModel( restaurantId: restaurant.id ?? '', diff --git a/lib/features/restaurants_list/restaurants_list_screen.dart b/lib/features/restaurants_list/restaurants_list_screen.dart index f0968cf4..640e0d30 100644 --- a/lib/features/restaurants_list/restaurants_list_screen.dart +++ b/lib/features/restaurants_list/restaurants_list_screen.dart @@ -52,12 +52,14 @@ class _RestaurantsListScreenState extends State { bottom: TabBar( tabs: [ Tab( + key: const Key('all-restaurants-tab'), child: Text( AppLocalizations.of(context)!.restaurantListAllRestaurantsTab, style: RTTextStyle.button(), ), ), Tab( + key: const Key('my-favorites-tab'), child: Text( AppLocalizations.of(context)!.restaurantListMyFavoritesTab, style: RTTextStyle.button(), diff --git a/test/golden_test/goldens/restauran_tour_favorites_tab.png b/test/golden_test/goldens/restauran_tour_favorites_tab.png new file mode 100644 index 0000000000000000000000000000000000000000..f4acb3ba15e76e60521ed01d28ed152d578b871f GIT binary patch literal 19142 zcmeHvc{G-N{N{tAvXnMN6qS@MM6$IAl_)CvmMvv}tl6G6DO*bRr9x7o5ZRR?yQq*g z`@Zk%T=zTkJ7?z1%$alM_s`5Z?|aUB-sE}i<$HfW*XLS3_xtdoiX!8tU7JWG660AV zc{LJ=>OF}>6S097f3wg_r;h(nk<}DWky5HT2Jpi=@~N|zH{c)l4JJM$(jL-T`IDDj zqJ~>tqb|&Jl}uJ%D>^6BN0#m52z~wf z;9Z98dOhJkt}!zQSxzVxe`N^GH9xbLo10sUPn1qIMY5I&zu`|LZDVFWuSR+3#WOp~=eCUslL+p7gzopnx z*f~9egLo9x6KCs(o3rE|XdmRBta*}TH0|}^!2>DB!Jn^e|DO8v>63}Gqog2rC-t_% z=0wR4fm%1K0H0b5co10aKopG7}A!puZ^xD@)>5=7TVGRw95`V79)?eKbcj=fW z>s5VUUwL~#Rpv_Q-{QiYo}8xzkzbx2*69D4%~Kk<+q|pff@Gr_bC6dEzDt=~n(p~b z=R5AjHA`c-y3Ey-=1Olf-Cx}z*-q{#qT+Pvpo*~?=TFU_J(r_+2$$bFkko(J@8$p-EF(k7aAxv+v)P4qZ+DK4jH=F{Q=0_juvRg1<$**|>J3 z#=^=RkL90F5AlQ!U3v4hIlnz#^TRb2Q|s0o|6gx^Z`qmYD-syIS1e>P_xXX$0 z;?0p`#l^*1S=KT`zuzUExJ?}_WDxWIz23e1Bc0Pp_3n*@vGudK6Vs}QkJ8KI#a~NG z((Jkph+DUOjW~LkPdoV_sUbx#PN!j%L(cQgxo3yeUfUY&6x99t<-YHHZ{!c@mCAaO zZjO6XGW+vW_cswA>MB*;f@hoEUh`$fiz>sUOoVoN?Ypi`@gk$8X5sCrKA!%%gl!Zp zIm4K)^ww*J3f~^x_DUJjRMhj~=62q%@!*Gq)vof8ckJQf9wKr=T1vO6*M~{Xxm8C= zMw+#zmik>Qt2>jdm-Xn?h0|1x85Zf;%THBhd*&y$;cmFdz17$1;%&lZ+-OO6X+6rZ zdQs(vFFq%o4_&FuTOc>GW%_r1^Ci!Z8>z&~(iD9#E@iD<<5^x_*37=KeyX?TZ^N_0 z2l07>K+e;bFJE@@;OFLkve9{mp|{a{$06}VKJLyhyF=>>Jane6Cn|@F{7hYAAW1oo zI%tn2B@U{k>X(aP6UJCwTROrxlYxMXVYRa9R|Ft8cj2QG&HbK9&k=3xK5doIF8wl2h3^6%coWA zIqp5c%Uj>&udgz-II~1)XwF>F@lTpD5eVVe3OT?aBP|`(#&YQLcT2jWi7sB!YfiN) z2Kfhxv91wT&6(uI%5cAm=?S|-

LEY%q4XIx&ohAGZH=k}3Ugmm+Y^S3bvB|B(P z^^T5K&rS6n(`%TiJze0Hd*qDot0>iTN=l#NMp8<@Q9TY04mQ(j%X3vP&vP|5)qkkG z@y(O{=hZ&h?j?IBsqraVCDnL5^iitLeM=(S+3gj6f9h)1x8be)6Sb$EGooW-xk!-` zR-di2q;}u8YR+M#Y;taF6WJVU))x?+_w%J>Rb-*9V)G*(rP+#KCpikaB(D{ysHm8& z=5diWC?C}p66NGy+!H7}sCxPGcDK3FqkW~{^vtJv1^7(cj3`%9)YvHZp$YxDBG@$oom-5jyQSC`9g)6gYpe>`+$m4!3Br?d0Rnnz=x zwO)Him45y}V-n4J`t2R1Tr9RLi;l93ujMvNj~DHJwy->PAxzXw&~0}3g-(OS^`HHc zg1VoIP!?yEl%A`!9+#d}3YR*hjwhxPus$p|S0}>tolarpm)MmWAC#0@G(;PGdI80m9@a%sTqsp<~2v5 zh+XyF^W1n&s6RbF*!KZw^FpcK<4AR7*i1{r2gLU3DNYK5O>-iTF!38@|5HDYs-lpduHMoqa%d>K?c{^6O0Ey{@zH!jtt>Ck zf0pV1H+M+<|I~-J8*+1BJG+TE%)Wm={@-`#|ErZ5mDCDvwJx>JGG?XqHtHB0e3a`J zAbt`}e6M}?2Ftb86*EoOTeqI@s&Y>DR{16-@|sqJ0D^igTXT-`Mob1yjd`uHYiKkm zUx=1+t{&-q|!DBwiIvQhZa zj>EK+&`=g0#ejIPwbkLa{N^Y*!y*z$Oj^e1y?g80Jm&POqoov0OiV&TJcN|aouf7! zYs&{Z-&gS86<%@U=j+c)V}&�y^W9liaehvRM&)+)sM!9kx8^qW@W1S{l{Y)pc4) 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

q-Ht5POw$sm~R@X+)%V|L*%u|8v6VVVuzTN8)UX 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

q-Ht5POw$sm~R@X+)%V|L*%u|8v6VVVuzTN8)UX z^v1@<@k|^)JOfAe_g8x0U7=SbY=jnLirPuYgd!ZqGP1?YPli{(wcXPPYxX{RwI!;$ z5e&YA{Jm0;Bh;v2NF`Slmrp(^O@+9?vEtoYh8$d8f=W*L>GPQidWXwqfFV^y@B`2slqSc zko;nTqNb~~z-qd&Oh)$+}N0yD4`3O9uTRrDVYzEN^be*8d+m=1U%d_XadGyCciYyhH25s{8gDJ~c>PA)4w%&MxY_4Ujq23&@9Wgl#a@OErH;}XS`FZKBv=6H8xf!$xnNx)`$ z)HvQ*ulNO)SjAMM%5GK`hr?kGx^J^0yIC8M=ZP-Uz>Y#GxxCv=bE?za?WQ+M-g+SO zS<`9~QpD-F0hFB8+TzZQdbA9{_XvZkypodUSq*BmbcYmE5pSoD+?uM)?|f!EDGwWM zG4g>rdz)+>UvLv>Un%(E?Y0T;O@3yV(-=CNT@oc`&vO7mXk3q$=29xP_4sn>1jbfo zpVy-QeABO|J&4?Dcfv%-C}*bL#UiIg5F%LW2X|L#eT*o`QBGQ4Fz>5)EsJb4W%#9E z>0V6t1KhBr`}W1Dq~UseYd-`Zn^x`SSXEO-KaxKiA6#f>f|_38ns0(X7YoBuZY1n_2RBP zUf|CGHr;TCs@Nm}mxH&&SszT6(9WhwLhM8@2vNZGgocDTQ5)1doAo6M>cCuAdMKg8 z1pXc_YHw7MrU$Dj)`zS^H!SW^t2dGgfc#>w=Y_=>Z3Xe?iK5k@rHBsZmOu)777nN zd{#N*O7AnVotVeAiuf=&T#O;qph{()5D6LCxuR` zH+)WzBMUvrf~BIOqUzXaQRl;8>e15Dm@XB|wll)-Z=dXjy%+r64q(YvwCH$!*srKG z=Z4t${dR#U3woa^v=jD>9B~H;E=0eRVXAv`l zwp+JvYhW?6Ia)RXb}++ZuBU{3JS3Hg+Y*pZ>>zE31u5zJ3E_-i}k%NWgeM0=l|B!bcB}X z<|{+>eY-<7HMLN{4H@h-t+?9Y(6nShjEs!xpVJj{`@Ks%(lnRA7pk%Xc*T6+8iYM? zr4k975)$srm{2Sl{Zskmeh0d%33mpiGAOk-@|gk=xu#VGc#$n^Bu8$+pl!BLunE&{TmZUM7eMdgeS_)W+D>UzKDkqSHNj^Zqb27zur#s zK}qvpa0oVruzF|l2lM(rwcq_F+N@Lsd0BwSxxwZ{N2|V_eszt*fr=0gU5l*sJXGsN zAP~UWS9C_vt+_V(fcTNJx^K86KE6O0#3|RW1a7iD$wO zA?Ng<&JojuUL?hCO>9?R_>6(`Y**Uq%iB3;JTWU9fUOWd8gpvEwy1X~jOQ`P>dBGQ zIe8aT3)or~n>6+Vha;IQF>r+N8^FT{ynk*!2R>J?(f!=z0jwkc~uP ze5q1(5%6pOpcryL9-dOyfWe*VJ&OV?t%UPmtG{zbKI%lan7>mhr7zYZQ@*F-cg_aH z{(OwsR`MH_bcI9&!jz|5zrr!(pXcq&m=R4}bJy1qE~^r-=`0e#B_xtWT`WFYo``l` zsy<%p(DQHldzrKAVn>s+SAFvR6Qc%KC>WrKQGZxSh}vPcCFLGZ#u97fCI~|fnPa0F*PGp~OabyMf%JrX(*4V=fI+YnJ5M+3a!V?ysw~cjkC|l|4 zb-ECtgal4uf>1gmK`|1D>UTqLwek&DYG{K%K3*{c&^r?{9`|+bZ;w)2ogfv&QN!M% z&c2iGqV^^Mq>l2x)5-rP$$8?b#M9jK(i8&7AGYU&fD~YB=PLsY4<*^&tG8!OQvwVS z$g;Sg_F7V>#q%$G|3wk}7iaQsYk>a;-_5yo4p$4?@T-G56=gS4!1BPL3`KZA6k<}zr0~anfg@QuW5o@O#xU-#B zjS)he+m-v#MEffPxfJbR@OW0j_o!JR_HlY!o1`BOxrRqjO!f8k$mG(XKLZ0hWCM4P zJ?3vQMia?irz;6uB!Dq7Ffc?g@TrjXrk|f2h(vH0=9PW%rV4g4_|HWGrQ?n>)HBXm;CtphC24=&vnz&)2DdF=1sx^2`&c5iw(xm-K_RrK05bG zmI-S=v=|TwWFiMY?GJZ z0qY-L0#KM5IiwmvufnnDvFOq&{&)Ex`E#h-_LhsJ|EkEXgMG3=lDjgJqdIb1)vdAk zKvh9OeNUZ$`nl!2omfAj8a1dwdXMYxxap+}^LR5W+=mlyG;zSG^Ms0u%EA+^Y>x@RhM{7(B!9bH`PFuj%W4l3-WxPdR8k1ar?WwgOg566=+V|DTjyFh!VdVI`U&dMZne!%r)~{?j{uI zSBJKoI+x)qcp!1Mn%Fj)5>8M~7PRW05jx#3{HfA=kIVRbW~q!>E-ghFSQ=!4Nx;xC z@6sJWJvkf&D2CnT)SPSb;sYZH41~CCPwHJ9ofabL9Reo(t8GUVh1YUXo44XOSnrmtj3y62X+Oidd_{ z993g5i0fyvafMp=9dX+lhQeGAC)LEJ3qD^v_AZop4aFXhM5!!EV9zzgMvFq4`}!q3 za?Yj+F3hnAe??Z6)WQAi-cc-ayTHYSuKBd5(7OU2LoNRHQ`Rzv7|1Oq7Ma7)zrwJi z7pPj-^JAx6ET?gWZfWyggE;QcG)2^F*jU_q%hK+`v{C$G(FKh<`f!(9|JydtMBzk{ z8VKy{@AQJn=!GqL$o1}KkWllNr8(fQr8!PC_B~j6?l#sP-AKhjzcg0TZZl zgKI;(EfN72R1Qk$@e7;f*dBF1=Zw#%w49mZB)#h~x4EjYJ;Q&SVy778E^~Tp&j9uz zH5EBz1WeOO_+z)Fk^bV+61roJ5ZznaYPkpNuqttwt%p>y*u3S(l+ z^NrRnGGv45mpgwZV-PAjk>H7rJ!gRWN;QSv<4Ltn16)E9zZVST`=zXnZX>^;Fk~O{zcoxdKwf97WnLY)}S$de{G;tqQ+haRLKNfkIQKK`xYE6;TSt=Vc&03{ze77 znX-zoU+wK~=nXCCa8`HBVMoHp!;z@WJO1afbAD%ZP*_@N+Uem&ag3a*2c0QB9vtS{H;G8UwRvQLTXWhAeH+)N%8e_kOo z>myp&p%}m3GF=UX9*k~&`&Xge0ji)@#e9S6G{Sm3FTME;gPbxJ10+n}?#51Rfn4q^=ln3R~&MC`?BzOkD*SlzC$b`6>L=`6_SpLZ`xz^YK zEswP95YC`P*eWL)pFf(lPeFa~l2&cE_<2KO#uv8<#_=sBiDpd%3Y}o2uC9~G@mfBhI#tkI>S z?}MAMgH~kpztksP?XLxFF}QpC##m;;*hK^mPb$Va3d~XS?~)dJ49r>4dmQGa6=`!B z=z**73(nl#09cQTTeRALN)@?4n(MRGAkb<6EBX^mit$w+x8Sek7)s!Rj)T97&@~#* zdXK|ChjDTIeB-t;*?o#@{EBSpoGAIN#~Mjn3uwXO8?B|aMVEunKYbW<-L?x&qox4i zj-}q8-!t*{74iKvmiH!;f1=t3-ha9kqx#Q{ED=99hMI$#?HA6|P_6BxYZta4*`5n+ zcI^NI8;@5`&&T;YOx>||Fvx$)Yy+HNex%2qZ!B|nXh_35Won5bJbhGR6jBKc(fT4> z*pG1r_6{}E(mq!LCarxTc#2;X>(R2W0v_YEn~Nup@to7fOnxPL<=)4l-*uM@0nvjQ zh&ZHYptm-6gQJpHm)fQK?9bAI;NiVgHEaMpI=AvoDHXr|`Qdc&;QguJ?9Rq)Wx{Fm zd4>W>ymmVYwRs)4*lg;0PWe(7GG;(r3vE5NwQ_c}lfWc)F7M)_cjCO__Hh5h#zbN1 zAXj>5Xz1`^;t0BH9Hn1pnf@%u9&cr1Sfs_U==eIXX%%2`kq3qW%eq8#?J*0>>K7Ld?W%8C%ay+mw&i@0yOo;F4U`cUd%bzlUPbn#ZtbwjU!@?kFu z4a96(pMP9~Wi22gUjc$<*67)wv4<)eh(YkhKDi``3?G|04z?4P2vFY0Gml8hkF2*k zU>PekP{nH=&fHOBM;-U7JiFgw%T0smt^ZzwLnYC}9+3`;4!P6ZfG=yIJ1JJU9Qz8{ zHoP&|^6@U0aS*hGiP)cLrv9zYom- z5|$YX@(H9p!~OetKsb=4KbP(zCx%!P>Pr+d0E6;>c}=KTb<+)kvw6$i1?trtWBa9F ze2asU#flUtIjq*wL@00H&g_X}hi_U8q-6G|zz_~(AaKyZaj) z-g%=yFEa<*yM@*+)yrfd7x>Dw(wD3QyjDI#0Co1KPnVl<8#b^kPzc*d?~Fj%0skW4 zfD^qzf0)hG-QF%uLQXfjUY=PUa3rpr`0ORCYU(fv1KHrWG+9KCV(ij#@KGD6q-z!Z zHrkk5(!+}$8g6VL50N8yi1B69K1=EqkstrO^bKm!KgQaCYV-2)vij}uXzTG7IozQ% zpl+(2`W&sZFQD#HtJn4 zhgaRcMPA6I(4@4*uSvjWV)`pEc(aGruP#cn~|*gK2J_s0Pm|bzx{k)U*Bb;HiMWPCH2IoX5Ux8rZ$T9Ach;Z zVjo@7{vk=g^-aVC6p~-j)6<{sek7Q#^(h5fxP*m;LsIpkI zr({!?QQz0o48qW9Hm{29V-AKq5K*H$g%drX?gQgDTLh9p5!sia_q4z?{CFRqB&-2< zAP-~LDtgD@0069t$L*Y8KznaxK6Zg>@W7oph?LeiO6L1C4VGf?wq6iwng4b_M zD0wJX9b0(M~%z6^@N?>$I15_4gQQ+cn(MNmlS8{HflKFT)GPe?KRC!!MH`G?M| za?op~BlbN^KW*JJPpa*r)24XaI&a%MN&23r>wui?1G#^|?ncE-t#F zrUkrwd@RtK?*k}<+5y|Uu9<)Vo>H@{taQBi#Au~A4#cVn%^#BQ`H!4{HfUuaO~QbC zKV+=wrSNp-T0%s^khmXw0{!DQ8Mxj0aABN#H?I_OqbsOXX z>oid1j5$n7-W!mcjn{3{Gr!cCb_w$C*IcvDSh0=ZV%$f(*65EDo{%`V`OhcXTK3On zeE`)d?U+TfK_K>0sWYh_-q*grCxHBoebnFPEY(c_F<-d;FQVxGtx4klkQn}VHZ6*hMb?g<3^^o0%&naa6&$66HRj5^@d|L(jrDpoJVy_ol$OxM955#KPeS8-=jx z=27H#z!)mi3cdj8tn0Lcr)M1=)ew`Psf?Z%n%&boJLxRqs8*KKoq=Hwee_6yE3N_@5vT#FQVk_ z$YzVaeY+2ML<@Fr>QkkLUEi%3LpZGf((ZVA8XV=nQ;Y)WP<_}F(x*)Q(i0Pwh=pWz#dnaH64&0 z8n;!dnkLQ#^+v`epkK#ydY1t;a<_#y(X~5+01DfHvM;-OQy!52vGi698<9ck_?&+$ z(*o%LwSaf5xk_?+PaKCLjEq6N2nh7>?(EORgboQAeRTUmbfJy2%TW-jw)O}}>VVmx z)>u`(%e!3{6cjwO2?z*)4v%(gxSF8O)FX<00*vgA{hG&%j51ZC+_dvy*`qbeaMuJv zNQFt{b3y}<+3m0O0x`BQKK2%9mc#UGEb~F}7rFLXVl#E)2tY(xjT{wx-3tJoEKt(+ zIqL)}iYnv?B|Uu!_#Mcz#M+nY8ygEdGP(HA;S|CytKnJ8>wqp{6BgEASXh8%fkY`E z+#l$#)f;*VARe-jS0=OAV#b!HEI@QwtZLF3NKJZTl>t%!0jqNvu`#UGO3zX{&Y?9M z;Ka94K1=e4{M5JduV`Exe231P`Y^q~Oc=+Gli0{81(ks}e@!4z318q27c3AfMC;vp(@85p_ z@Bvzy{zGxliBV8j_x$Aec#=RFTm_=Q3JPV{x)VR-43QjnPNOMwQC{Msk5P8%zJ-T% zor=Z_T2bI9D811Y3;PTWiIL0d+Mk)SyS`A)a)M$l)ydO3-~O* zsb6*;19S;96d1(DP+_jZ<#i9 zNg#i`w>`Wsu{p2wWP`?o^={VG*jx*HKY?W%yXhuqZe&VqV`C#=D$=*bQsbE1wny~} zwM*6UI#Kbbe5-E{Uw)>$GJ>C`YO1L9SVbJZ9>JkglBWe9pRVysK1HKgb#!!Y(1~kO ztTEyd32?P41DLJ!Bmrw{;Ih___ij()y4-;=ysIOFIQjtp6vw5Z9rTM#n2Tn2C`cc8 zW_rurK%mRy0DUZWUxeMZvVir(vAfi2{CLX8@)9IM`t`P-0hnWj>NmYB2b!cDf*ta~ zAcpJFOex|n`Wm^)W9tk7!=FjJEu00m^V9wP&e#BVgK2rHPXehEbN!>(|C=< zywRi0)i%h+9XZegk|x0e6?U8tWXe}-mxVEb4DW37P9jxIhDWI}0Jz8~x&V0?i*jn# z=?$7Z|8`>iX7g$$wk^qT_yGfumBqW%nfDH37DpcoR%VE9Jf@|h|aE424k^8R2m24ey$$6|7c`}2p7jhpJSmY-lY z;i`Z@&;gcEWwAql_LnQu4Kzo^s+wtR&rIb#*GU)DklVl40 zW>JEPFBI7OaB8y;{sGjZ4nF{g39=S>P}uj*b23f2CXp?1F_Wz(ah`|gY${fI$9CV7 z;JbgMgUFyTg*eW*|92k!ZP)HR{!!XOiw{$7{!L;2_t75#5%U20PuMPX0PTrkjbc$s`hj=g zfcbR=lGqz``w@5w?w{x4+X$@8_0wF|8OADZf%Mw^YD+@?-_YV&>e|{iJsp+<)gUqki4MdF9=j>5M zb?4N-3k?bi0^XUAHbw+A9L(jUCh}5s$8jWpdRdY+aQ=;;3n_l}8C5YMgM}o;?z>358t@fGdL|u1l7>?S064qkxLv|ftnU|jV^xNXo zh?Ay+!dFATtmhUf0CmA@uy&Jyp|lp^*F`pom%Zb#XCt%*jAdDd&h>bI|AAfWAFKWJ z=@Sk85>TV!eJ55Fg!mN>VtnGScc2Vu3y_SwI=N5TJBBRp_r{J*-0?w%04+U8DSMhy9u+!Mq7` z*Jazmc^-k?%7L*OWdppz7swVjFfxMG)O@A(-eYsC;9QM_@w75Q zrx|KYxZqXlAe;y|>;*^Ci?BmOLBa|=r&T9t#sKgOM6gFt>Su4ifvMrc4jy)-Ja<}* zUrQBqFdl1eEur7pufrXi1~DN472;i`MM}Ag)(&Zdo$lo_FhfBTgib<96rPk~*Jvq{ z^%ax?8c{sVZUFr{O!)^(M*RChUoq##p5tWLPBv}8=8~R7pj9fb*bzN?IgHKsCa+FWx4x#{U2s25@ zQ;6${RcS@R2{&3 zVzN^y6LOqFI*lL)(8hu$63%}-Z1ahB0M{9p3{aZs%!zsl01?6H@z2f+OEAMEP&WcD z5%f9Y+yC;%LDtLxLXe@MAwI11eG|}t;XOBMs!@)M-Yy-#qu^yw@n-{RR)I@y|Fzj$ z1!4Dirq52icXbN1tCOzX*2vC1UM)>-$;s>LA)>9eT zA9_fTAtgrDwjIvU;d0ZiJ2!9s0CF&Vr%$nd^&KiIFGUv;NDRIaNWNQQiy1kZuYpfW zMjAj}s1Wr2z_Peg8rM?*!dd#mzz>cbdVNkBA2l5+JdeMwV%+iMz~?`t?ArV%e%avG zDreZ`N>y+r?U|SU-rsPL(dfK7c~HGG`Xb70n~|KH96F4z1D=PypDuIySfEpgN8e}H zIru=);!Oa`U{D9tUSL_%KdasLm!W>=$S!uE00#x9ya9=mt@u?k2um;UYOv9~H;=eX zzMlGhk2dSQW5}Tk!xKvzW5u~90cTnO>}%DsrbaWxJyw%~Rk@szp%9e={;_OEopVtj zox`F}Z)^%2ZAKz1}zTVjf8Z$?^1{fepai*6r?iaO(-4~Khk1-#pNip1*;Lyj)v1B`E zA01dr+A2s3x0sGR`srsA1s&$LL^0bm`49R_BdkSJ%*RGgftWe(G;> zBGN*|f8RLO_|;vt)jE`njPtuE1mhWAq+8Q1w{HiW6WrA%dQ}#D7>-D28r*uQ?$+V1UK2zmgb@H2@+<-1gWz~x{5J#Mn)k%fMaeZUArS> z`(+t(BBA30f$Sh!gF-@}IqjB7fIVyf{rfV=c>h$`%E(;iGw1<2G*c zBrr8KJw_dTluDN@&**TTHe_Vf2 zitby4;laW0LI`AKWGa3`9)V}Q4gB}L9Evt!XL+t z?S_dGK$-M<3!U&~e;jVI!if)TaaDof!-o$?geA=1yh(TS2?>6DbpNl%YY--_7sfJu z$VCIFKLnRKf+ik=;w{i*R{n14R`KRDUf!XGBB}Jj22Ki!75a}tmqc8Tqo>u>leLT0 zsw~wYZR=k%oz{2X(26_jChe^4L|t8CwbVKaB5+?^cLKaGNls1<@&drAWuT8{VGh+;=Z>ZB5lWDLe~Bo|3nWXE%^tP- zC+;mR`V)56)=!e5GBVz8U+rvxvE*%Q8`*)b_npCfMGF9+3;_Zt!)aX#=*410*UzCb}k@%8%sWf64mV1h0NUg0`o z#L<}H?Iw7iiVCS|LJ)SzdLWtK{)4F3{``FUN9z$F5cnLH!2PCu8r>k66dWwhkqJUf zdcNe>c5`|Av~)C?!=$%E>&6`8u7~zRykJN*(T;$M^p1pH;++Ah?_Jt zVg7!nKZl>9tZ9HWWqmr6#vL`6tu5XbAfaDv8|P%Uvjf?2AnYM)Z~&*qs>9WS(^yb- zRJZd1;g;#qhn;l2-c{=tIj z%z=8$X=@QVp)4aaW$}t2J~}#j`^cDmtUy~D5PM@ebYkwBJe$Sq>S`!2VA96T-fd(uQ-EA?C7c_4@>yf(u)YkHgnK)Sz z+{4~R>*$1ZZK$VGVA|7Xv9pf`xta?MA{k%pnMZleXE8gLFgjM!-1NhwT`K?Ch7xZ( zv2JrBePG+DZ3oUW78q}`(5A(w&z}h(cX^D$L6O1LEVb3M1T#}zQ8;}7XoeZmmfUAt z0s@qF@Duz-UU_~q&r2?0_6#pkwRQ|Z1P*DQw`nAO$6N39H`ip6}OkPm@GYCa#~!z3X$xFF^@%#{`&Q6cYcBJ%0oxw zKJ(!gI!-@@jEwC5v*pZ(e;LIk=dPCwzj=544ytg({T9Vn|NDQ*6G;wf0-OE)>wH(9 zLVn1VrY6R_ac_nfC)fS}IBb|7nH6>s78(k}T^xibS}vikK0pN*+Ip>B-$du_yhj<- zyvWxq7?AfO|1GA{8YoXRhq!cSjNhJyf&!WLllJ`-9KJLfB6)pX@WIGah3s1hGThw+ zZbKQ$33ls)7AjHQ(^jeUS7#5MH?@nMj>hTgCfomqivoD@V*3#u%P~v=<_wo;kudT zd7nDB&AZ^ld_F(nvp)b1#PMKUS=9IVCWuUV00z4*{Z)FIdRcubP>R7Q<{J!BFB5t=mWKTG8PS10s8hY=7^yriI~PlfkAU}U7buNi36>O{9< z*kcMb;fe8jt#8D__wOr4o!$_0Jn31XE%q4yKJ`u1O(AmQ0YEdouP@p5j&oVg6%g6l z+E#FGPIca9WTT8?5S2pdR}bY`nP%nWnETAe_#abLn&ZBsRsi-n;QIz~add1;Y#Xs0 zt_vCOjb+!n*8b)COT32!FbfhK5%IE>01LqAXMH#8CGfcjkU)nozG2zD2@1WPot+uq z6}^C~3R>ZaH{BcV7;XY-Ub+glp{%N03cT-YbaWtyHg`NY-vgo(A~~NgiT~MRAe8{Z zec4D7`-NV}pALW(5#rmgL4TBV;;@;kzU&o(3oP!{<2z-wwIq=6`vSlzP}KRaP_tln zAGNH{PyixdijbWAyyorasx9Da2p}updmpm1Q-jrq1p53u8qD_531<)?JKDLt)X{tI z+y02=!Vb$D_5`nT*$OSe}C?E3A}sd*bS^Y>b_DSl5tn_0qBvx zDnjC;bYjJh*_ycl7?>*$%NC<3*Wr!ifA_zogKBzNZDm)7;=P3xKax9G_Cgxc)|sfVSAZZule8a;*X4GJ$B}#2Rk0{+hYb^nSW(`34th63wFk)e{lVH#crPhrex!zL^)Hqv)lO8R{qAjwuc1GQzLl5TE1zbx-*a?! z{Z%AXNdU3YDSqMU`Ftzv-e)^rkx|Fe5YXWT3Cz!D1JcBgU~AiJi%T_wzJ8?$4+nMJ z?dsWb>y@6?M`Y8Oha zBF_O>PPQ@=*YN_t+)@^_-b!h_XAJ6#o)N#uwR`#d;d~N#bkdLd@8v?T%y=MsR=sfk ziEK2OsYQ;6>0X0ZM(5KnPM6I`E&)gq`1OmFtd*HbK(me+@Bv*DuD!nMuKfj9~Ts2&aDo_J@Aj${X+SAPxXE55i&QoiDdBtcaFdK zHI;T?bK_Tx!_Q7hbX%3&PuYt!59~n#e(Gkrt%Q8f2n*6K6>Vbq`cU_8x(P2m%2hSO zuR;8q@3N{gGKT~w|9sDS^l!5@rvt>3)teJHfmZ`D;fD7S>SMFNk4qyJF`JMO)mnd= z^xKTpLN|@=w+y(d>nv?5#HpXu=uNBT(E0*Tb|$>!m6gXf8-Pen4NwY7;1f4W(bgRN z{F*!PEFft40K|NLum*`*fTEW$De(H)>&2k%t6Y4cKdqZ?6=n_~=Z_;dqSR|LDW`7b z60ck5Hphw2%G{U7gH}3UUs4LLg2Vc7UU%K?5Fz<7xoy9GUBXil(Ql;D4JDw@$FyS~ zG1#cX(>z`n0Y1fL@*Yp<;NYOD`UM_5|8QzoRTs3%@sjoLXZQ*UyqJYj~9b>0`N)0uI*9?N~Ctv zPYip8ky}xSLmNA2gLbKN=%&QM1XW4`R7E9TT+%W_naa+$Ky|xeaH8hjZ+I_Fiilh1 zj8Nm-@aSDJ;nAj8sdMuFg)lAy|{O9Daj2Pr>KcuYQeXpZnBuS0z&ASN9O~ zZ^}WKZiQtzKrk6@h2xBD+-fteG@Ov&&#m0A3N3ImUY7zr@1IKsXK4~hf{-np6o4yr zxfHmYxARcD_*_Hj`xCX|zo{vWL=dMv-{>kOkcALI_RQ9JvaLvt82&hl$fy_8(Yiu? zMUD*!Bsuk}bZzI#pqEn`e~h_@WNDWBba4|%7U|-WZ$k4IPeyL0zj`bK3aOvu6(|XC zXD?$ql|QNH-$@p^tj1&ivJ#KcE z5pe=Z$W4IiZucf|-{#9vzNe6_{`k%{iZe{Jrv1=|&zAz%=ZYJ3Tg_9}f&LfrK!sl9 zVcZ^OAHR;50`K!#hacNbIqw~1=IWz->=-mylwDL;-nDk%ml$`ZV)Vv2cmLVKSdog9=d#}X<}gQqkEAw2 zJJAvv^)>5&Q(IE~a$0a+d>IAugD{yRdpYey#18AHytsIS{rqSnh17tsK8gN7Up>$q z{!yt>x71W4(@(OB>%k&M#=T)@H&KF>UraDTFYH}M_O$ThH=61~K=$7YWfoG0@5<`+ z-5abngSAb6ZBgc<} zQPZNwqhvNU2VQ$6#>v;#TEbbmI%vFBZX>iX7vU89Rgp%dE!!A>pp7lp#15jpFV>^k zr6r+;B4XX0IHUC8xB6`TQ?8-dU1RiDp^InzStUjLn!gpZMyX}VLZbtIq;KbSHXpiW zYzSLL6R@FvHdxpg$m^Bgxfb0+j;Yu*vyY7(mWxM(@CSMetALHw7q&l{Fqkga`vyqA z;3aGL(tRAF+-vGaVoUWg1jYxPh2PYj;qJJ$I85%oICj(j_gSa84W9duxXtNgu=O8# z1{JmhNndK%Kv^es-^9nG;xK|0BWsh;f;W$y7 z;Aclj;B-5#r8R17U|&XwOm!s&LLn;EcHI`vn+BMLVQOKK+FL371!kwL9p((=lOjxF zw%lq$f`YOU4x{70mI666lIx3Jr|Q^m+6>e0ldUNYyUD=DD(UB7D|s|_IwmHj$C)Og zWb)u(*RlMbb5uaZ{QM()=SFdHaU&!ieY2X^qL*#vQbpB~Qo(p0kYoa=}(B@TFl zjP>=|AxikIEo;f?4SjuQB;A*eA}(_To<>(&t%6w*45Plj|_|fl)dp%S`tc z@PYg8AHXARy1Wx}Bu88b5AAVW0O<$IeU4=76a;)cn?Qop@tKeSrcLaRJ%!)Y1d!EJ zq7uu8E2ONa zNRlBz<_R^FKu(o)9bH_6k$0{+I&ZcnXl~uQRliu{_5CjK2!u61XMHP}oXK|Ye$Mxu zu(@*r-sPRcc^z(9NfFGF^d>Y+L12+f(eHgIQ9y}Q*HrWG#tu!77SL3>&IH59nP@k$ zDulXuRyz9wG{iJF3@{3l+yPFdMPI>deo^|aC zy??2Rlodbta@w}5qoZdmL7RAFtip>N;dei%c4?b};j{}CD#v17EK5c=E76JzVhXH4 z59h;znuAt%o^DJ(M^)d0@5;jVJ!hbC?Iy&U??0zsk4uzh;Yze@gl$HS!sl-eGP_jh zx~tUbOxhjza+mm$09wuyK3WXUPlX^2g%YntMT7uar9hJ1a%#^@SL-4-bk ziy=vE4ZjKOq0px7AySVcdS8kL-E*FRvrBdudUZwR0;oN-xa9BepSxSg+jcm2jzIg~ z*5lHZi~4AAfxwa(CNPj=$Tzxdsu*D`?RA`-oILV;@@1%T$P>q~y)1;B09v9#^9Sba z_UXqPYbK=6#ND@)R6a%5GiFxJdeJu);nNJ#Lqu%Q4ncvti(ZqX%t|+JGC;Zgp!*vXH?S z!+^-Q@=45A*V61R_<6wu*CK~?1Dk_ZxgbKnq}@~(=`#u`A5DZ-m(K{I-aT{`))q!} zL(hrI!fIIOUP_h8ZJRsiviJhIfMr;lUm*_7HeNmc1wAuBZ9oh!J_j?)*02e)<2oH` z9%U=4xLowTe@jaMG27O*kkUc>z9Grq`q87%W=e*Oa0xJ7Nmta|A#Fyt9y>ELl7X-JgM~JJEm~T3+65$Vz$s@CxHl8c`oLcOjY zvp`<{i!Y(e{CLMmb_EFnm54-zFQGP7OT~?2W2|-UNq#U_QdzE(klzJW4af}|K_M1x zA1cwm4ZAR{SuksD23x|($?2bf^x^HDPmalKU?(|2EPGo({<)mSuIgZLP|szqn*}0R z)509i)Y8(wU}sJC_U&M8#bKFwh^^>)Ep|wjyYKR%MKvb8U1oIFq7KXR3{t>&ylN^C zEdcu5g?7oAAgxZUct%@WTng*+EY_N*8>f*ELIDoM@+)Uf_ye=xrDhYq>|j)PHT=93 zw_@12D{!{oYRi&o_;G0R-pBjQ^9UKntlGkb-kb<=uN}U}`(H(h>~_@!W&)LM+p;=8 z?JoBkXx@Jh_W+!_0+0S~S*Z4!3r8;OY%FrUSQ?4y4DNearERZ`J?*IeIzY8C1G$XP4xMs=IWj)7TaJ;A=JarE?U8v^kV! zdIH@YhA*;=hck*OhO$WO%o6Vt+fkGtT9o`Z(68R-Q1WV1zjOESzTe&NJP z&#PxnC{z|VYWp^E`5wvzeJHuuLNm9u8WGJ{W&tgLP=26D)4U2d_i@;EJRRPX+&2c;S^BM7Qp$jZ+%G~4myEmV$?u=8rRWusp3m%>j zoH-iqE$?N@=3rzYkiZv-iAI$|)$n3>K9}(y4xC9x5Y{R5837Mfpdl(aos!(vii+9lg4Ane$E;5TF;2cYa>&gMP<2R;a4}2*0x2Hh z2<=MIv=1L1c&?wW*c@+<@!j3v0hhd~on21Xl#k#a!c{TFm3wYPKd6#lOf0rDsF%ae z&Q8zJaIR*I2D~A_SJ)dpcLwu6`BPd+Ed59efivJR#T+7eW@aYUAwQTU;ujw^g<9Ks zLF2xN4b4R(jxYj`Og@>mt|DIIIHNv5w0YXvf z{R;KVk!7SB$KIPoDWU`x3g(4nWi1n}8ii2&KjY3B?rhZwxAadpp{wL2*GVm&?JG%p z?i@A5+4~>XVuK#_Z!oT_Np?;A^5qL!H#kivl01|i21Z*r z7Ok-))6m3j3M2A*R(p^3l2J|5!gM2q$md-`z7VpsW8V50z+OdPX#c%;0 z;h+GMa{29B)*kUVetxn;m<~x9*$Od+bHKD(V0z>oU_8I+KL^51cIQ*p<=R6tb};)0^Hx1wu$^g%s;|Qp zU>(RFU(EvIpW4g7Lh@nsy;*&Ifq+x}4Pm=Dw>fePi_s@#V8!Fq&b(7ra4!bq>jT(; zdBm>D%Fa_RrguQmgvvhoNc~SXj*Gm!ynxNJM@D|Z!Ha5Vr=^Y2`zA_Zvm*TNoqPsF z!NH$iDTI{f&k+d&GGcxdg*1Nb!op|j z2QrPS=p{;){>j@xjThH{Jz?xr0dP6nQRGWJc-u)QJ3UE1P58E1DO@9(9CdNgS}mSH8S&r7|-`lVD9 zknGGINiHT%k?A`OtLNO-IpemB!i8ck;op%ejc5pbGxf+&y@^{U4BqAK#^Lo;XQPOUW;445sqHX zP}nam>@2r^?(+J(=lay~R4g)7(8JQ4KU#ICGfgVAL-l)Imq}cm%eH2p<1|UCR0|L^ zgSgm)giyeA7GE{AdhpjhXV3IyYca#kH)G6vVIlj+1c!GZFhaB#2P*0|?kXBYfT^{@ zz3|~T6hbn!>Uf#NwCWc2Mz)>r*64(BJIcRdsa$l%3lpgqOyRSrFmnkz^rJ41E*BQ4 zB{dHCk=^c+la=L%Y0=s)c}MA-wO+gN`dw@cV84F-dap!z*P*~<#?^CBqI$7Jo(fzI zzU#w=;^6_7TQQvV7%UE2>*MO`FZY~FH(-fKmO=^eUG!7_K9?GX;{fz|HIFaH)q5Hs zGs-X_AB#+%At(t}))%IxT2$t&SWQmUmiaV3by?iG63&7NkXWDlG}wN$ta%=NTM(Xe zcyerrmhM$QZ^w{K4X3a`nj2c0)Bn!AIrxpRr66oE&JJI?12VAC#3pIP3$W1rg250T77D3M4{aaEk=K%g$8HIJi|i001GiBb)qxM5=B2@bGZJ zSS(S;4`)X9e63q)Pd+=uV$Td3@&mEJ0N@wcZ+0xK?N;7{hB4>{h!_ zxIA!-f|^<}q@U*$6VnM56%`o2tGnP(aFfB$2^!*|L@B$_;n~)o2Z!C^<>W1w(O)Fw zq~B6?H3qNQ7ePnvUYW~vv}a)k-}}5|;Gj|Rx7*%Fy0S;ZFUA`K8hj(zYFYUaMMXuX zP07t|jO{>n7@)lyS=v8ZUt+$)-}y6F^-v=k99QTk`<3 z7|1ti3>t4Navr9J089%gp%v!Jlo+%I!YSso+i9P5FuxWV!6M;J0V5T=J%4_msNMK$ z?<7n{JOTIK_o4KY{RR4g0VkQv0S4RdOXXlQ3Km|Sl&eTdn_c-mL|D+- zcf9oe7=i{k8&nTFWqoId*m6O>2jh-gCr)rg55WLrAdTmxlg90woeoJzZagxmyK68t zG*O2){}~(1%uXV5fsE#S!lZz>0B4)Dub^ zF6|RPf2J5q8UtS7lRk+hlqo>jx5WOJpH_y(Om!_x6=-Z|AW5w9dAUtFbxBI<{+uOX zmB*8_XOEtzxFIV`$oPp9a1`N9)xI{~tFupa1<$DJ=2nJ!jQ~E0d;jF0pP&C=Z~MI) z0l&`R)}clQQs^^52D#{io#u5w2qcK-@1K#gHIG-xfak+JddYPISM%mcu2>QTJ=|k6 z7`(CGMP3?&tcL8Ri?DBVC%ICYjW#`_T5RNu)|vWRVg5LHwchpaKza3BjiGycoDk(D zrHD`aV%5Qayy-O`>m3w2HEFL!%PS$!K+g&wP)o*o<7}YpIMimC0 z=d`4-IL#259!li8uj&xuA1wJ`dpcB9Z+orgO&F6SPJ+vqp&E6{8*^^V*w|x#M?}JP zCbY1SAN2}=VF`?c-)xy()8=H{fe8WdUT*xrwql9n?V;`c{@kzh;EDHSFy>B*x96Ue z7yT698yZJGN7O8wmU!DrFKPF_*cFv*qHxbh`+20VHV1|hvyu4-QGl-#>f*A{sId%o z%JQmTdsO4|8`_Trqahs5{5e5sZ|mE;#{9O~NK0qbqy#lJA=! zXqGUCyeEh{;!_$W14@$&^0-pPl73J(lOXZ^j!nZs)}^gEzfv?S@{KA;rxY(-aFeC*@f#w~_IgbxMd1~j3$IQ@}Rdl&V zK`Ut3>LJiluv(|8&IkfOC!_IWyRf{a44&%F{vE+ry)xzi3s^@hp`0l%VbF0LUNCGG zmghz%PKEaYqv??4g9m^Ai!lO2K}`)*gqLUtVa%HfPcdmENt#$!5qJL0ce6KAA{g4~vN8j}_ zB$~o8^x_yLn)vC}JwD<u346Ks@_ZV5cHnr2OkY`i@9fSYrX4>g!YpjB|z9G5KjH~ z56T7#c#UtrbJEBzRyorj}JaE$@LDJJcB|)8mD-`mVGZr8*jVKrCR{PxyBm* z@d_B2A8#%iJsK`L={ncf;qn&BDdsRDVzAhq2BJ^lK$pgXreNjAqM`&ED z>A~GDfBW`{e4{!tIt#kB`EIRi!+$t@yqiloFtxCCQHQ>BD7(olN<|N2=)JxqA;FZ< zm7sVef~;q$RC{6;K(QaxtZY1!%j{R+>Lbq-Pckd_b|qp0>GKTDzkF(*?ygZP!%0?& zIu3XLWPNPm5J=d-UKc1wdWFxYEZk{sodn6>4G!d) z3fYwUAO0bCz+;*>3*E{zXw7-Uiy2BvZ!lu}?sV7a>JC{!QhWyih16H%3Wc-C1pn0$ zZ#zP5VKJfF+Re~@cow|<_3y8Q2rO2u^pv&lTIL&6Y}78Ki3ypo5vg#>X*ZseikBZE zXs|d!h7ALkGx7{hEke8&bjZKczIKX%fup8~6RyOED5ViEpoPa7@6g7${Hy5&(n3$6h6<*8^RohFrX~m=hzW zwyVyD#o*p9hBnVl#qm||B_Br{7ijEBReg$7p-1D773Iu-p@RV&c&Ml>-qcP0>9z)L zmL&^*5;wjrR+tQt;l>B4K)2;by<~F(xhN?B<$a&~e)XMeV%RAc)kM*=`@8FnFH>8)XF}8=xKY7zNW~&} zSxhuCDCkN3cL(dNCtIJ*(6SHu0=WE91R1S#Lw#CLH|J8_hTV{@@!gkDI-^3~*~R9I zLv0JKk3hMU1OdUT03LGzpGO2W5R2vlYv!yvmk3&kHIYfT+ zWI*>rlFVJMrMpDAyaZf^SQ5rJ$!0&hcU@%kLIhZfVjIW?|A)HJ%$3`(5oDy!*TnuQ zV3NM1UucoXvz4#*21ve8R!OqqGDo>39~+#>;YPgU+NcXV`wkVAX#M=c{3&|+n8m;j zxJ8j?;3CUX6B82Z)g!`NhZ@02t^>X2FEIztz+_MBvPcS9L>e)G?o_vxSt0Rxg-$*d z0*1viOrqADYD6|#1d;G{octGlZ}GxJYZ}; zH5h1hhV%wJi^6Gs`L4IL#|2P7R0z=RH-a{Te}yLhGxLN|Sy?$!b_Pa0cx)|SgmF26 zLv=@wAfJq@Wx?{eytB^S)YSAHcGC`l8`eVp4_-8`eE-=@=rXSBu!0bkvbE&_+^BwR z%s8ihM-Sp|$;w94OjO1lAoey-Z{4B@mW-+AEBwNGM4$RJzRsC#S38wcx)v#Xj3otnBY@ zUZ>_mP`wOYd+Xl-)qdsqc%m?KnzIJKzPK-0gNJ8(B_~5`12}{INj6@>r@8<%0vCT% zeyyMx=}iT5{d=w0PBfHgTAq*ONM?ji3|WfEVYRkz-~=^$-Fgl(R1Go5&7@KOuNI+a zeRDti$DBH48Ag)M0VRBSqll-O25BeqjjLaPQz6Kk<@pzk`iscOyAEO+sla!Bj7qLA z9n~!`I)acf*UHON@k_sjj*Yd0Y%#d~5HBw;}i%T|xyFeBDrO^2?Iokf!-^sw1wki>MJt&%_iA;x+|rHZ?Ue^71<^NN-fV z*7N0!-(OvP%+1*WB)-$>i1TpTl$kBBO6`q>dH=xDt%oYl-j3mXnG>6Dy7kQrb&9h} zc_Rp*ITYD+e^j8{+n>Jr2Y`s=fXCcY3cGc5fY(F;w!+5lk{rwtD1u>rxqGV`kA_MZ zclS5Z8k)G%@{M%+-E1X|Tz#C*(^~shQE&VN*G~vg8U@s_pZ9Z)JR1C#l58mr)m|ld zt%QVx4>ou^{Ef4?Y}9uK)UbZk%N}?jlaP{j6y>&_pLxK(hf$$g!75Z z3W0pzRzkwjI<&UQ>cftej(3iCsy!Y@#@gpZP+z$TY?YdGX=} zf+X1!-a(-TdDd`*d}7a^Qrv4}p2J=V#&3LwX1bOzCKv%?SC!KNt1XUv--)&ZNue9R zIX@)ycMY{x{D$D#706vLNq50$3c?;J;goW@$M?%=|E_eM`#$ovm|s*~@*PYQ5snjf z2<^V4WH)-?U{qy37&H!=_sY)3jKwlX678ukPbs=#@#uN<&;)!^B_;*_+sVZRfSS+; zF;j5TqiHDg!t8voe=9!j)sAk97;afTJ%e-57=C;8UZXeqHRy?FB~cQ{yGlb>C?Ef) zxC4ucX$L{Xy1QB-eGV}9wXv4!W_bL`cjI9eC?3WQz+=&J4QiNh4n$G}ehNKdn1+eq z)2lx2>*rb5*%+Hxt15;8`>aX~&rR*u2l)ZA@~`PWQWq-J@%}9*K#tg0?d2I)oZyN% z3;LEs4c;Dw8&$e9m@K2h@cdcAoz4(J4m=K9(7DE zyF*{v4A_Df2OluCpq-gw z4r8BZR21YtFrcPtCf{kTpM{LChJPL2U+A9R4*6yME%PGs?&TO*nTRFn* z=RAH~h6jPAZ;F!M(9}E)f!NH_GTLF9=9VP8pn!lfLkU95$aoxNrj0oNC5RrJ<^@gA zCeq_>;hVTmnI~m9Vc&#dxT>zKj7BUlvzyt*t#)W0ZOwQtY z>ORwR#bqIKUuZHkOlGvf3T}I7>m679WvH)jDNz9POZEF5A3Q*-O!q6jk2eR?Hx9qS zfoVlLyXu}UmzBBs`y!S~a}T)tBk{E64^Kp-J!0N14^MxTAQci5Ykjd@XFipi44gGCPXeZ6`vLN60C#d%-fs15 ze^yAP>+F=95NN`%+}b0T*xw(L+1DP4!qdWG8+qctprZd<+lK!ynvee5Tb}>_d;dRZ oHGh?*Xo<)a9fgCH=HW@XKWvDX8WZ@a22uT`&al00NbHq3QX3 zYu3Y13%%5}Cn){<{e#EW8DB_it=_K6^9l4e_u76d{M%V-2Cqppi>!EhH1|l3+1_PQ z-eu7^FYiG{aJY|u!0yUxPvG;cA6s54K;fs^kp;)XHz)@EG#n4dl!Rwup|a_;-$1%X7bT)7WvlfQf&@|x)qG31GQ&1Fs&7FnHA z<7Ol(BQp~nP}-E^WZH%JqBkqPx0l$6WM*T7k_9b28z6?@QtW-&N{qsEnj6U1zpiqb z=~2yK#ZR6{o z14;Z&6~BIwomcO&WRgMT-Qk3*8yf{*5dl7p|FFuaY ziJaz^3kTqu8YIrb$>>D01Z>95my`(R5i2z$N-*O9lrkmza&GP1HV-sO$faf++oIx^ zx>;ucrmt__$B zE_NtZ`OkVA)j7V12B!>}C?=q@*J~afMaRE9@)1 z392t%ytsB_HUm6C*!}R^oPTcX2&OlobZ~!#L$g4Wt>gD^%f6&){YvxVcpj62U%1cA zQ1C?c($r?R^}#n_w0h!1q}FpyCrN@1EwbVF3%*29E5Q0?WhT4gvqC93HU`t%gH!R={ogT?9QgGe;@$F_ikrylF>gr!a~K+(f_X*rM;7 zkXEv^V4nO}#_2|n(nvZHZm6*5?vFXYH8G;gmo2US@FelN6!;sQhV8HP=Dv{*;&}RW z-@Ta=5~x&{9jF(djouV|F7~Tk6>;dF>RpiRSL1Rt>rv>mBn!*xOBNJ~@R@&4?7jPQ z*{!6c#5)ga3LQp{bayE!C=6Fbudr(s#5TAhZ5?!~^|fXL0_a}K%Cft<tUKjx@y%{BMPu8n~CjYoIe3XZ!MntAqxx3 zM!mRSN<4b!;!EoKIGRCu71wZNv+%1U|Lr#p9q!yUadB~sC=(KF4lGOm=h5^FrJ*u4 zX}ifXwXR5p0nfC#IhC`SlU6vqE1W8Ks&Z{|sXwjt0aV!K^slnN2PCk_Rgu8O!(-x* zN+U&lLaRu3C_psv*XJ07YJ)p!TG`HHW#0^{E+r*Z;Fg-2+I<$@SnrqG8ckcU*b!Fv z`UQiJSIDhy3%iNdBO=Hj|JplG?%lhmRiMdRxc1iMR#TyFdGa*(g9nnZ!?S5O=jXI4 z7H??A9io}Enz~Qsj0&=zIZPM1qu_bU$>W06T#$K8W2T_f7Q7XK6XxYrR&VrH=DpLF zEQ1V*WVG%(Ar59}nen(^D-^wMBOHtxu9*D?TrZ^rGm7S)8cwrCZ;Y7_vW7D^aox}LX zh6d|VRSD~LL1_V(Rol;BSP*f#nVn+Z7au)F!gYFlhtD2Vj_l3M;EtO2BrZb&4Hj-u zQ6(<0T9F2Mt{aa0#cpmSqLI02Hml)!z!@feV86`9$S8Gku%^@Eds6Z40`C&uzFkyK zbIa~paC{72BO*Oz_t>Vna3~>wTqv1OyU2lPA}RZHgucXt01_U%;PaX-VZLHjiWUM% zT;ni19>6#e5Z`yqkg-7;+uh%Do4 z2;>pP6G-6K|9`}~^?&tc^$6ru2*kOB&!T^Qa6uZxDXorclq0k*3%`g^L3h~q3Fj-Y?FVy&h5Ebsf5i2K|@?GK^UV(#JWnk9L^ zI?lCP-w?(XzA`58NElQ#m9^-lHDY}9sQ6I(^z>8#M!N@{dP)UpOPSco_NP8+KSGx5 zjHYLbiirtW^(?z~U8m>QEyW@VYeh+P$OWP5@7}#@Fs%@HO%@~#{>7VhS8&!hG?>Hl zSs?SBcX{+OwCxPcx?5KJ5_6vw>m!D160hpk7)k*Up;GT%*FDRZAiBS*z3rR2|2IvJ z-pi%X_LWez)r9P(V9`KizT|LDU-I(Cg1JPE9U|U3yf!Ur)Yr z>(&ojrEQLvYAoeMtf1C1GYC2kbtk&;mvn~H6c)p4dM-*BsU@5~Fj=9e1vd6Q@42DI z$L7QVkYw=N|GHghAUEeP&Q7DLQrdJH%5AI^*_Oy>!EZLL>34c!QJ~&jFz0_{2OaKI zrV;Sox-T}1wTipWnJpbe4u$!jpmnhP=2iMt_UUIE<3m5CNzl8Q8i~#Iim38=G_7}lQI_7lnnhNBJjFg^)~7FuZ}P#W|9VAEMgbG4lpf^qH`~e=yx(c z29cSc4w#Q^jBQ-F2jrT?$DKDSw=|t>nb`!G6uQ$*=YzL+ot@;p$Rw%aXZmd%Fh5VA zoXl&q({vQsLmW4vBi*813UD7-1O?*w;l`cT!o0l4=zzvnaC{y+NHE}y69iWmVRv

q-Ht5POw$sm~R@X+)%V|L*%u|8v6VVVuzTN8)UX z^v1@<@k|^)JOfAe_g8x0U7=SbY=jnLirPuYgd!ZqGP1?YPli{(wcXPPYxX{RwI!;$ z5e&YA{Jm0;Bh;v2NF`Slmrp(^O@+9?vEtoYh8$d8f=W*L>GPQidWXwqfFV^y@B`2slqSc zko;nTqNb~~z-qd&Oh)$+}N0yD4`3O9uTRrDVYzEN^be*8d+m=1U%d_XadGyCciYyhH25s{8gDJ~c>PA)4w%&MxY_4Ujq23&@9Wgl#a@OErH;}XS`FZKBv=6H8xf!$xnNx)`$ z)HvQ*ulNO)SjAMM%5GK`hr?kGx^J^0yIC8M=ZP-Uz>Y#GxxCv=bE?za?WQ+M-g+SO zS<`9~QpD-F0hFB8+TzZQdbA9{_XvZkypodUSq*BmbcYmE5pSoD+?uM)?|f!EDGwWM zG4g>rdz)+>UvLv>Un%(E?Y0T;O@3yV(-=CNT@oc`&vO7mXk3q$=29xP_4sn>1jbfo zpVy-QeABO|J&4?Dcfv%-C}*bL#UiIg5F%LW2X|L#eT*o`QBGQ4Fz>5)EsJb4W%#9E z>0V6t1KhBr`}W1Dq~UseYd-`Zn^x`SSXEO-KaxKiA6#f>f|_38ns0(X7YoBuZY1n_2RBP zUf|CGHr;TCs@Nm}mxH&&SszT6(9WhwLhM8@2vNZGgocDTQ5)1doAo6M>cCuAdMKg8 z1pXc_YHw7MrU$Dj)`zS^H!SW^t2dGgfc#>w=Y_=>Z3Xe?iK5k@rHBsZmOu)777nN zd{#N*O7AnVotVeAiuf=&T#O;qph{()5D6LCxuR` zH+)WzBMUvrf~BIOqUzXaQRl;8>e15Dm@XB|wll)-Z=dXjy%+r64q(YvwCH$!*srKG z=Z4t${dR#U3woa^v=jD>9B~H;E=0eRVXAv`l zwp+JvYhW?6Ia)RXb}++ZuBU{3JS3Hg+Y*pZ>>zE31u5zJ3E_-i}k%NWgeM0=l|B!bcB}X z<|{+>eY-<7HMLN{4H@h-t+?9Y(6nShjEs!xpVJj{`@Ks%(lnRA7pk%Xc*T6+8iYM? zr4k975)$srm{2Sl{Zskmeh0d%33mpiGAOk-@|gk=xu#VGc#$n^Bu8$+pl!BLunE&{TmZUM7eMdgeS_)W+D>UzKDkqSHNj^Zqb27zur#s zK}qvpa0oVruzF|l2lM(rwcq_F+N@Lsd0BwSxxwZ{N2|V_eszt*fr=0gU5l*sJXGsN zAP~UWS9C_vt+_V(fcTNJx^K86KE6O0#3|RW1a7iD$wO zA?Ng<&JojuUL?hCO>9?R_>6(`Y**Uq%iB3;JTWU9fUOWd8gpvEwy1X~jOQ`P>dBGQ zIe8aT3)or~n>6+Vha;IQF>r+N8^FT{ynk*!2R>J?(f!=z0jwkc~uP ze5q1(5%6pOpcryL9-dOyfWe*VJ&OV?t%UPmtG{zbKI%lan7>mhr7zYZQ@*F-cg_aH z{(OwsR`MH_bcI9&!jz|5zrr!(pXcq&m=R4}bJy1qE~^r-=`0e#B_xtWT`WFYo``l` zsy<%p(DQHldzrKAVn>s+SAFvR6Qc%KC>WrKQGZxSh}vPcCFLGZ#u97fCI~|fnPa0F*PGp~OabyMf%JrX(*4V=fI+YnJ5M+3a!V?ysw~cjkC|l|4 zb-ECtgal4uf>1gmK`|1D>UTqLwek&DYG{K%K3*{c&^r?{9`|+bZ;w)2ogfv&QN!M% z&c2iGqV^^Mq>l2x)5-rP$$8?b#M9jK(i8&7AGYU&fD~YB=PLsY4<*^&tG8!OQvwVS z$g;Sg_F7V>#q%$G|3wk}7iaQsYk>a;-_5yo4p$4?@T-G56=gS4!1BPL3`KZA6k<}zr0~anfg@QuW5o@O#xU-#B zjS)he+m-v#MEffPxfJbR@OW0j_o!JR_HlY!o1`BOxrRqjO!f8k$mG(XKLZ0hWCM4P zJ?3vQMia?irz;6uB!Dq7Ffc?g@TrjXrk|f2h(vH0=9PW%rV4g4_|HWGrQ?n>)HBXm;CtphC24=&vnz&)2DdF=1sx^2`&c5iw(xm-K_RrK05bG zmI-S=v=|TwWFiMY?GJZ z0qY-L0#KM5IiwmvufnnDvFOq&{&)Ex`E#h-_LhsJ|EkEXgMG3=lDjgJqdIb1)vdAk zKvh9OeNUZ$`nl!2omfAj8a1dwdXMYxxap+}^LR5W+=mlyG;zSG^Ms0u%EA+^Y>x@RhM{7(B!9bH`PFuj%W4l3-WxPdR8k1ar?WwgOg566=+V|DTjyFh!VdVI`U&dMZne!%r)~{?j{uI zSBJKoI+x)qcp!1Mn%Fj)5>8M~7PRW05jx#3{HfA=kIVRbW~q!>E-ghFSQ=!4Nx;xC z@6sJWJvkf&D2CnT)SPSb;sYZH41~CCPwHJ9ofabL9Reo(t8GUVh1YUXo44XOSnrmtj3y62X+Oidd_{ z993g5i0fyvafMp=9dX+lhQeGAC)LEJ3qD^v_AZop4aFXhM5!!EV9zzgMvFq4`}!q3 za?Yj+F3hnAe??Z6)WQAi-cc-ayTHYSuKBd5(7OU2LoNRHQ`Rzv7|1Oq7Ma7)zrwJi z7pPj-^JAx6ET?gWZfWyggE;QcG)2^F*jU_q%hK+`v{C$G(FKh<`f!(9|JydtMBzk{ z8VKy{@AQJn=!GqL$o1}KkWllNr8(fQr8!PC_B~j6?l#sP-AKhjzcg0TZZl zgKI;(EfN72R1Qk$@e7;f*dBF1=Zw#%w49mZB)#h~x4EjYJ;Q&SVy778E^~Tp&j9uz zH5EBz1WeOO_+z)Fk^bV+61roJ5ZznaYPkpNuqttwt%p>y*u3S(l+ z^NrRnGGv45mpgwZV-PAjk>H7rJ!gRWN;QSv<4Ltn16)E9zZVST`=zXnZX>^;Fk~O{zcoxdKwf97WnLY)}S$de{G;tqQ+haRLKNfkIQKK`xYE6;TSt=Vc&03{ze77 znX-zoU+wK~=nXCCa8`HBVMoHp!;z@WJO1afbAD%ZP*_@N+Uem&ag3a*2c0QB9vtS{H;G8UwRvQLTXWhAeH+)N%8e_kOo z>myp&p%}m3GF=UX9*k~&`&Xge0ji)@#e9S6G{Sm3FTME;gPbxJ10+n}?#51Rfn4q^=ln3R~&MC`?BzOkD*SlzC$b`6>L=`6_SpLZ`xz^YK zEswP95YC`P*eWL)pFf(lPeFa~l2&cE_<2KO#uv8<#_=sBiDpd%3Y}o2uC9~G@mfBhI#tkI>S z?}MAMgH~kpztksP?XLxFF}QpC##m;;*hK^mPb$Va3d~XS?~)dJ49r>4dmQGa6=`!B z=z**73(nl#09cQTTeRALN)@?4n(MRGAkb<6EBX^mit$w+x8Sek7)s!Rj)T97&@~#* zdXK|ChjDTIeB-t;*?o#@{EBSpoGAIN#~Mjn3uwXO8?B|aMVEunKYbW<-L?x&qox4i zj-}q8-!t*{74iKvmiH!;f1=t3-ha9kqx#Q{ED=99hMI$#?HA6|P_6BxYZta4*`5n+ zcI^NI8;@5`&&T;YOx>||Fvx$)Yy+HNex%2qZ!B|nXh_35Won5bJbhGR6jBKc(fT4> z*pG1r_6{}E(mq!LCarxTc#2;X>(R2W0v_YEn~Nup@to7fOnxPL<=)4l-*uM@0nvjQ zh&ZHYptm-6gQJpHm)fQK?9bAI;NiVgHEaMpI=AvoDHXr|`Qdc&;QguJ?9Rq)Wx{Fm zd4>W>ymmVYwRs)4*lg;0PWe(7GG;(r3vE5NwQ_c}lfWc)F7M)_cjCO__Hh5h#zbN1 zAXj>5Xz1`^;t0BH9Hn1pnf@%u9&cr1Sfs_U==eIXX%%2`kq3qW%eq8#?J*0>>K7Ld?W%8C%ay+mw&i@0yOo;F4U`cUd%bzlUPbn#ZtbwjU!@?kFu z4a96(pMP9~Wi22gUjc$<*67)wv4<)eh(YkhKDi``3?G|04z?4P2vFY0Gml8hkF2*k zU>PekP{nH=&fHOBM;-U7JiFgw%T0smt^ZzwLnYC}9+3`;4!P6ZfG=yIJ1JJU9Qz8{ zHoP&|^6@U0aS*hGiP)cLrv9zYom- z5|$YX@(H9p!~OetKsb=4KbP(zCx%!P>Pr+d0E6;>c}=KTb<+)kvw6$i1?trtWBa9F ze2asU#flUtIjq*wL@00H&g_X}hi_U8q-6G|zz_~(AaKyZaj) z-g%=yFEa<*yM@*+)yrfd7x>Dw(wD3QyjDI#0Co1KPnVl<8#b^kPzc*d?~Fj%0skW4 zfD^qzf0)hG-QF%uLQXfjUY=PUa3rpr`0ORCYU(fv1KHrWG+9KCV(ij#@KGD6q-z!Z zHrkk5(!+}$8g6VL50N8yi1B69K1=EqkstrO^bKm!KgQaCYV-2)vij}uXzTG7IozQ% zpl+(2`W&sZFQD#HtJn4 zhgaRcMPA6I(4@4*uSvjWV)`pEc(aGruP#cn~|*gK2J_s0Pm|bzx{k)U*Bb;HiMWPCH2IoX5Ux8rZ$T9Ach;Z zVjo@7{vk=g^-aVC6p~-j)6<{sek7Q#^(h5fxP*m;LsIpkI zr({!?QQz0o48qW9Hm{29V-AKq5K*H$g%drX?gQgDTLh9p5!sia_q4z?{CFRqB&-2< zAP-~LDtgD@0069t$L*Y8KznaxK6Zg>@W7oph?LeiO6L1C4VGf?wq6iwng4b_M zD0wJX9b0(M~%z6^@N?>$I15_4gQQ+cn(MNmlS8{HflKFT)GPe?KRC!!MH`G?M| za?op~BlbN^KW*JJPpa*r)24XaI&a%MN&23r>wui?1G#^|?ncE-t#F zrUkrwd@RtK?*k}<+5y|Uu9<)Vo>H@{taQBi#Au~A4#cVn%^#BQ`H!4{HfUuaO~QbC zKV+=wrSNp-T0%s^khmXw0{!DQ8Mxj0aABN#H?I_OqbsOXX z>oid1j5$n7-W!mcjn{3{Gr!cCb_w$C*IcvDSh0=ZV%$f(*65EDo{%`V`OhcXTK3On zeE`)d?U+TfK_K>0sWYh_-q*grCxHBoebnFPEY(c_F<-d;FQVxGtx4klkQn}VHZ6*hMb?g<3^^o0%&naa6&$66HRj5^@d|L(jrDpoJVy_ol$OxM955#KPeS8-=jx z=27H#z!)mi3cdj8tn0Lcr)M1=)ew`Psf?Z%n%&boJLxRqs8*KKoq=Hwee_6yE3N_@5vT#FQVk_ z$YzVaeY+2ML<@Fr>QkkLUEi%3LpZGf((ZVA8XV=nQ;Y)WP<_}F(x*)Q(i0Pwh=pWz#dnaH64&0 z8n;!dnkLQ#^+v`epkK#ydY1t;a<_#y(X~5+01DfHvM;-OQy!52vGi698<9ck_?&+$ z(*o%LwSaf5xk_?+PaKCLjEq6N2nh7>?(EORgboQAeRTUmbfJy2%TW-jw)O}}>VVmx z)>u`(%e!3{6cjwO2?z*)4v%(gxSF8O)FX<00*vgA{hG&%j51ZC+_dvy*`qbeaMuJv zNQFt{b3y}<+3m0O0x`BQKK2%9mc#UGEb~F}7rFLXVl#E)2tY(xjT{wx-3tJoEKt(+ zIqL)}iYnv?B|Uu!_#Mcz#M+nY8ygEdGP(HA;S|CytKnJ8>wqp{6BgEASXh8%fkY`E z+#l$#)f;*VARe-jS0=OAV#b!HEI@QwtZLF3NKJZTl>t%!0jqNvu`#UGO3zX{&Y?9M z;Ka94K1=e4{M5JduV`Exe231P`Y^q~Oc=+Gli0{81(ks}e@!4z318q27c3AfMC;vp(@85p_ z@Bvzy{zGxliBV8j_x$Aec#=RFTm_=Q3JPV{x)VR-43QjnPNOMwQC{Msk5P8%zJ-T% zor=Z_T2bI9D811Y3;PTWiIL0d+Mk)SyS`A)a)M$l)ydO3-~O* zsb6*;19S;96d1(DP+_jZ<#i9 zNg#i`w>`Wsu{p2wWP`?o^={VG*jx*HKY?W%yXhuqZe&VqV`C#=D$=*bQsbE1wny~} zwM*6UI#Kbbe5-E{Uw)>$GJ>C`YO1L9SVbJZ9>JkglBWe9pRVysK1HKgb#!!Y(1~kO ztTEyd32?P41DLJ!Bmrw{;Ih___ij()y4-;=ysIOFIQjtp6vw5Z9rTM#n2Tn2C`cc8 zW_rurK%mRy0DUZWUxeMZvVir(vAfi2{CLX8@)9IM`t`P-0hnWj>NmYB2b!cDf*ta~ zAcpJFOex|n`Wm^)W9tk7!=FjJEu00m^V9wP&e#BVgK2rHPXehEbN!>(|C=< zywRi0)i%h+9XZegk|x0e6?U8tWXe}-mxVEb4DW37P9jxIhDWI}0Jz8~x&V0?i*jn# z=?$7Z|8`>iX7g$$wk^qT_yGfumBqW%nfDH37DpcoR%VE9Jf@|h|aE424k^8R2m24ey$$6|7c`}2p7jhpJSmY-lY z;i`Z@&;gcEWwAql_LnQu4Kzo^s+wtR&rIb#*GU)DklVl40 zW>JEPFBI7OaB8y;{sGjZ4nF{g39=S>P}uj*b23f2CXp?1F_Wz(ah`|gY${fI$9CV7 z;JbgMgUFyTg*eW*|92k!ZP)HR{!!XOiw{$7{!L;2_t75#5%U20PuMPX0PTrkjbc$s`hj=g zfcbR=lGqz``w@5w?w{x4+X$@8_0wF|8OADZf%Mw^YD+@?-_YV&>e|{iJsp+<)gUqki4MdF9=j>5M zb?4N-3k?bi0^XUAHbw+A9L(jUCh}5s$8jWpdRdY+aQ=;;3n_l}8C5YMgM}o;?z>358t@fGdL|u1l7>?S064qkxLv|ftnU|jV^xNXo zh?Ay+!dFATtmhUf0CmA@uy&Jyp|lp^*F`pom%Zb#XCt%*jAdDd&h>bI|AAfWAFKWJ z=@Sk85>TV!eJ55Fg!mN>VtnGScc2Vu3y_SwI=N5TJBBRp_r{J*-0?w%04+U8DSMhy9u+!Mq7` z*Jazmc^-k?%7L*OWdppz7swVjFfxMG)O@A(-eYsC;9QM_@w75Q zrx|KYxZqXlAe;y|>;*^Ci?BmOLBa|=r&T9t#sKgOM6gFt>Su4ifvMrc4jy)-Ja<}* zUrQBqFdl1eEur7pufrXi1~DN472;i`MM}Ag)(&Zdo$lo_FhfBTgib<96rPk~*Jvq{ z^%ax?8c{sVZUFr{O!)^(M*RChUoq##p5tWLPBv}8=8~R7pj9fb*bzN?IgHKsCa+FWx4x#{U2s25@ zQ;6${RcS@R2{&3 zVzN^y6LOqFI*lL)(8hu$63%}-Z1ahB0M{9p3{aZs%!zsl01?6H@z2f+OEAMEP&WcD z5%f9Y+yC;%LDtLxLXe@MAwI11eG|}t;XOBMs!@)M-Yy-#qu^yw@n-{RR)I@y|Fzj$ z1!4Dirq52icXbN1tCOzX*2vC1UM)>-$;s>LA)>9eT zA9_fTAtgrDwjIvU;d0ZiJ2!9s0CF&Vr%$nd^&KiIFGUv;NDRIaNWNQQiy1kZuYpfW zMjAj}s1Wr2z_Peg8rM?*!dd#mzz>cbdVNkBA2l5+JdeMwV%+iMz~?`t?ArV%e%avG zDreZ`N>y+r?U|SU-rsPL(dfK7c~HGG`Xb70n~|KH96F4z1D=PypDuIySfEpgN8e}H zIru=);!Oa`U{D9tUSL_%KdasLm!W>=$S!uE00#x9ya9=mt@u?k2um;UYOv9~H;=eX zzMlGhk2dSQW5}Tk!xKvzW5u~90cTnO>}%DsrbaWxJyw%~Rk@szp%9e={;_OEopVtj zox`F}Z)^%2ZAKz1}zTVjf8Z$?^1{fepai*6r?iaO(-4~Khk1-#pNip1*;Lyj)v1B`E zA01dr+A2s3x0sGR`srsA1s&$LL^0bm`49R_BdkSJ%*RGgftWe(G;> zBGN*|f8RLO_|;vt)jE`njPtuE1mhWAq+8Q1w{HiW6WrA%dQ}#D7>-D28r*uQ?$+V1UK2zmgb@H2@+<-1gWz~x{5J#Mn)k%fMaeZUArS> z`(+t(BBA30f$Sh!gF-@}IqjB7fIVyf{rfV=c>h$`%E(;iGw1<2G*c zBrr8KJw_dTluDN@&**TTHe_Vf2 zitby4;laW0LI`AKWGa3`9)V}Q4gB}L9Evt!XL+t z?S_dGK$-M<3!U&~e;jVI!if)TaaDof!-o$?geA=1yh(TS2?>6DbpNl%YY--_7sfJu z$VCIFKLnRKf+ik=;w{i*R{n14R`KRDUf!XGBB}Jj22Ki!75a}tmqc8Tqo>u>leLT0 zsw~wYZR=k%oz{2X(26_jChe^4L|t8CwbVKaB5+?^cLKaGNls1<@&drAWuT8{VGh+;=Z>ZB5lWDLe~Bo|3nWXE%^tP- zC+;mR`V)56)=!e5GBVz8U+rvxvE*%Q8`*)b_npCfMGF9+3;_Zt!)aX#=*410*UzCb}k@%8%sWf64mV1h0NUg0`o z#L<}H?Iw7iiVCS|LJ)SzdLWtK{)4F3{``FUN9z$F5cnLH!2PCu8r>k66dWwhkqJUf zdcNe>c5`|Av~)C?!=$%E>&6`8u7~zRykJN*(T;$M^p1pH;++Ah?_Jt zVg7!nKZl>9tZ9HWWqmr6#vL`6tu5XbAfaDv8|P%Uvjf?2AnYM)Z~&*qs>9WS(^yb- zRJZd1;g;#qhn;l2-c{=tIj z%z=8$X=@QVp)4aaW$}t2J~}#j`^cDmtUy~D5PM@ebYkwBJe$Sq>S`!2VA96T-fd(uQ-EA?C7c_4@>yf(u)YkHgnK)Sz z+{4~R>*$1ZZK$VGVA|7Xv9pf`xta?MA{k%pnMZleXE8gLFgjM!-1NhwT`K?Ch7xZ( zv2JrBePG+DZ3oUW78q}`(5A(w&z}h(cX^D$L6O1LEVb3M1T#}zQ8;}7XoeZmmfUAt z0s@qF@Duz-UU_~q&r2?0_6#pkwRQ|Z1P*DQw`nAO$6N39H`ip6}OkPm@GYCa#~!z3X$xFF^@%#{`&Q6cYcBJ%0oxw zKJ(!gI!-@@jEwC5v*pZ(e;LIk=dPCwzj=544ytg({T9Vn|NDQ*6G;wf0-OE)>wH(9 zLVn1VrY6R_ac_nfC)fS}IBb|7nH6>s78(k}T^xibS}vikK0pN*+Ip>B-$du_yhj<- zyvWxq7?AfO|1GA{8YoXRhq!cSjNhJyf&!WLllJ`-9KJLfB6)pX@WIGah3s1hGThw+ zZbKQ$33ls)7AjHQ(^jeUS7#5MH?@nMj>hTgCfomqivoD@V*3#u%P~v=<_wo;kudT zd7nDB&AZ^ld_F(nvp)b1#PMKUS=9IVCWuUV00z4*{Z)FIdRcubP>R7Q<{J!BFB5t=mWKTG8PS10s8hY=7^yriI~PlfkAU}U7buNi36>O{9< z*kcMb;fe8jt#8D__wOr4o!$_0Jn31XE%q4yKJ`u1O(AmQ0YEdouP@p5j&oVg6%g6l z+E#FGPIca9WTT8?5S2pdR}bY`nP%nWnETAe_#abLn&ZBsRsi-n;QIz~add1;Y#Xs0 zt_vCOjb+!n*8b)COT32!FbfhK5%IE>01LqAXMH#8CGfcjkU)nozG2zD2@1WPot+uq z6}^C~3R>ZaH{BcV7;XY-Ub+glp{%N03cT-YbaWtyHg`NY-vgo(A~~NgiT~MRAe8{Z zec4D7`-NV}pALW(5#rmgL4TBV;;@;kzU&o(3oP!{<2z-wwIq=6`vSlzP}KRaP_tln zAGNH{PyixdijbWAyyorasx9Da2p}updmpm1Q-jrq1p53u8qD_531<)?JKDLt)X{tI z+y02=!Vb$D_5`nT*$OSe}C?E3A}sd*bS^Y>b_DSl5tn_0qBvx zDnjC;bYjJh*_ycl7?>*$%NC<3*Wr!ifA_zogKBzNZDm)7;=P3xKax9G_Cgxc)|sfVSAZZule8a;*X4GJ$B}#2Rk0{+hYb^nSW(`34th63wFk)e{lVH#crPhrex!zL^)Hqv)lO8R{qAjwuc1GQzLl5TE1zbx-*a?! z{Z%AXNdU3YDSqMU`Ftzv-e)^rkx|Fe5YXWT3Cz!D1JcBgU~AiJi%T_wzJ8?$4+nMJ z?dsWb>y@6?M`Y8Oha zBF_O>PPQ@=*YN_t+)@^_-b!h_XAJ6#o)N#uwR`#d;d~N#bkdLd@8v?T%y=MsR=sfk ziEK2OsYQ;6>0X0ZM(5KnPM6I`E&)gq`1OmFtd*HbK(me+@Bv*DuD!nMuKfj9~Ts2&aDo_J@Aj${X+SAPxXE55i&QoiDdBtcaFdK zHI;T?bK_Tx!_Q7hbX%3&PuYt!59~n#e(Gkrt%Q8f2n*6K6>Vbq`cU_8x(P2m%2hSO zuR;8q@3N{gGKT~w|9sDS^l!5@rvt>3)teJHfmZ`D;fD7S>SMFNk4qyJF`JMO)mnd= z^xKTpLN|@=w+y(d>nv?5#HpXu=uNBT(E0*Tb|$>!m6gXf8-Pen4NwY7;1f4W(bgRN z{F*!PEFft40K|NLum*`*fTEW$De(H)>&2k%t6Y4cKdqZ?6=n_~=Z_;dqSR|LDW`7b z60ck5Hphw2%G{U7gH}3UUs4LLg2Vc7UU%K?5Fz<7xoy9GUBXil(Ql;D4JDw@$FyS~ zG1#cX(>z`n0Y1fL@*Yp<;NYOD`UM_5|8QzoRTs3%@sjoLXZQ*UyqJYj~9b>0`N)0uI*9?N~Ctv zPYip8ky}xSLmNA2gLbKN=%&QM1XW4`R7E9TT+%W_naa+$Ky|xeaH8hjZ+I_Fiilh1 zj8Nm-@aSDJ;nAj8sdMuFg)lAy|{O9Daj2Pr>KcuYQeXpZnBuS0z&ASN9O~ zZ^}WKZiQtzKrk6@h2xBD+-fteG@Ov&&#m0A3N3ImUY7zr@1IKsXK4~hf{-np6o4yr zxfHmYxARcD_*_Hj`xCX|zo{vWL=dMv-{>kOkcALI_RQ9JvaLvt82&hl$fy_8(Yiu? zMUD*!Bsuk}bZzI#pqEn`e~h_@WNDWBba4|%7U|-WZ$k4IPeyL0zj`bK3aOvu6(|XC zXD?$ql|QNH-$@p^tj1&ivJ#KcE z5pe=Z$W4IiZucf|-{#9vzNe6_{`k%{iZe{Jrv1=|&zAz%=ZYJ3Tg_9}f&LfrK!sl9 zVcZ^OAHR;50`K!#hacNbIqw~1=IWz->=-mylwDL;-nDk%ml$`ZV)Vv2cmLVKSdog9=d#}X<}gQqkEAw2 zJJAvv^)>5&Q(IE~a$0a+d>IAugD{yRdpYey#18AHytsIS{rqSnh17tsK8gN7Up>$q z{!yt>x71W4(@(OB>%k&M#=T)@H&KF>UraDTFYH}M_O$ThH=61~K=$7YWfoG0@5<`+ z-5abngSAb6ZBgc<} zQPZNwqhvNU2VQ$6#>v;#TEbbmI%vFBZX>iX7vU89Rgp%dE!!A>pp7lp#15jpFV>^k zr6r+;B4XX0IHUC8xB6`TQ?8-dU1RiDp^InzStUjLn!gpZMyX}VLZbtIq;KbSHXpiW zYzSLL6R@FvHdxpg$m^Bgxfb0+j;Yu*vyY7(mWxM(@CSMetALHw7q&l{Fqkga`vyqA z;3aGL(tRAF+-vGaVoUWg1jYxPh2PYj;qJJ$I85%oICj(j_gSa84W9duxXtNgu=O8# z1{JmhNndK%Kv^es-^9nG;xK|0BWsh;f;W$y7 z;Aclj;B-5#r8R17U|&XwOm!s&LLn;EcHI`vn+BMLVQOKK+FL371!kwL9p((=lOjxF zw%lq$f`YOU4x{70mI666lIx3Jr|Q^m+6>e0ldUNYyUD=DD(UB7D|s|_IwmHj$C)Og zWb)u(*RlMbb5uaZ{QM()=SFdHaU&!ieY2X^qL*#vQbpB~Qo(p0kYoa=}(B@TFl zjP>=|AxikIEo;f?4SjuQB;A*eA}(_To<>(&t%6w*45Plj|_|fl)dp%S`tc z@PYg8AHXARy1Wx}Bu88b5AAVW0O<$IeU4=76a;)cn?Qop@tKeSrcLaRJ%!)Y1d!EJ zq7uu8E2ONa zNRlBz<_R^FKu(o)9bH_6k$0{+I&ZcnXl~uQRliu{_5CjK2!u61XMHP}oXK|Ye$Mxu zu(@*r-sPRcc^z(9NfFGF^d>Y+L12+f(eHgIQ9y}Q*HrWG#tu!77SL3>&IH59nP@k$ zDulXuRyz9wG{iJF3@{3l+yPFdMPI>deo^|aC zy??2Rlodbta@w}5qoZdmL7RAFtip>N;dei%c4?b};j{}CD#v17EK5c=E76JzVhXH4 z59h;znuAt%o^DJ(M^)d0@5;jVJ!hbC?Iy&U??0zsk4uzh;Yze@gl$HS!sl-eGP_jh zx~tUbOxhjza+mm$09wuyK3WXUPlX^2g%YntMT7uar9hJ1a%#^@SL-4-bk ziy=vE4ZjKOq0px7AySVcdS8kL-E*FRvrBdudUZwR0;oN-xa9BepSxSg+jcm2jzIg~ z*5lHZi~4AAfxwa(CNPj=$Tzxdsu*D`?RA`-oILV;@@1%T$P>q~y)1;B09v9#^9Sba z_UXqPYbK=6#ND@)R6a%5GiFxJdeJu);nNJ#Lqu%Q4ncvti(ZqX%t|+JGC;Zgp!*vXH?S z!+^-Q@=45A*V61R_<6wu*CK~?1Dk_ZxgbKnq}@~(=`#u`A5DZ-m(K{I-aT{`))q!} zL(hrI!fIIOUP_h8ZJRsiviJhIfMr;lUm*_7HeNmc1wAuBZ9oh!J_j?)*02e)<2oH` z9%U=4xLowTe@jaMG27O*kkUc>z9Grq`q87%W=e*Oa0xJ7Nmta|A#Fyt9y>ELl7X-JgM~JJEm~T3+65$Vz$s@CxHl8c`oLcOjY zvp`<{i!Y(e{CLMmb_EFnm54-zFQGP7OT~?2W2|-UNq#U_QdzE(klzJW4af}|K_M1x zA1cwm4ZAR{SuksD23x|($?2bf^x^HDPmalKU?(|2EPGo({<)mSuIgZLP|szqn*}0R z)509i)Y8(wU}sJC_U&M8#bKFwh^^>)Ep|wjyYKR%MKvb8U1oIFq7KXR3{t>&ylN^C zEdcu5g?7oAAgxZUct%@WTng*+EY_N*8>f*ELIDoM@+)Uf_ye=xrDhYq>|j)PHT=93 zw_@12D{!{oYRi&o_;G0R-pBjQ^9UKntlGkb-kb<=uN}U}`(H(h>~_@!W&)LM+p;=8 z?JoBkXx@Jh_W+!_0+0S~S*Z4!3r8;OY%FrUSQ?4y4DNearERZ`J?*IeIzY8C1G$XP4xMs=IWj)7TaJ;A=JarE?U8v^kV! zdIH@YhA*;=hck*OhO$WO%o6Vt+fkGtT9o`Z(68R-Q1WV1zjOESzTe&NJP z&#PxnC{z|VYWp^E`5wvzeJHuuLNm9u8WGJ{W&tgLP=26D)4U2d_i@;EJRRPX+&2c;S^BM7Qp$jZ+%G~4myEmV$?u=8rRWusp3m%>j zoH-iqE$?N@=3rzYkiZv-iAI$|)$n3>K9}(y4xC9x5Y{R5837Mfpdl(aos!(vii+9lg4Ane$E;5TF;2cYa>&gMP<2R;a4}2*0x2Hh z2<=MIv=1L1c&?wW*c@+<@!j3v0hhd~on21Xl#k#a!c{TFm3wYPKd6#lOf0rDsF%ae z&Q8zJaIR*I2D~A_SJ)dpcLwu6`BPd+Ed59efivJR#T+7eW@aYUAwQTU;ujw^g<9Ks zLF2xN4b4R(jxYj`Og@>mt|DIIIHNv5w0YXvf z{R;KVk!7SB$KIPoDWU`x3g(4nWi1n}8ii2&KjY3B?rhZwxAadpp{wL2*GVm&?JG%p z?i@A5+4~>XVuK#_Z!oT_Np?;A^5qL!H#kivl01|i21Z*r z7Ok-))6m3j3M2A*R(p^3l2J|5!gM2q$md-`z7VpsW8V50z+OdPX#c%;0 z;h+GMa{29B)*kUVetxn;m<~x9*$Od+bHKD(V0z>oU_8I+KL^51cIQ*p<=R6tb};)0^Hx1wu$^g%s;|Qp zU>(RFU(EvIpW4g7Lh@nsy;*&Ifq+x}4Pm=Dw>fePi_s@#V8!Fq&b(7ra4!bq>jT(; zdBm>D%Fa_RrguQmgvvhoNc~SXj*Gm!ynxNJM@D|Z!Ha5Vr=^Y2`zA_Zvm*TNoqPsF z!NH$iDTI{f&k+d&GGcxdg*1Nb!op|j z2QrPS=p{;){>j@xjThH{Jz?xr0dP6nQRGWJc-u)QJ3UE1P58E1DO@9(9CdNgS}mSH8S&r7|-`lVD9 zknGGINiHT%k?A`OtLNO-IpemB!i8ck;op%ejc5pbGxf+&y@^{U4BqAK#^Lo;XQPOUW;445sqHX zP}nam>@2r^?(+J(=lay~R4g)7(8JQ4KU#ICGfgVAL-l)Imq}cm%eH2p<1|UCR0|L^ zgSgm)giyeA7GE{AdhpjhXV3IyYca#kH)G6vVIlj+1c!GZFhaB#2P*0|?kXBYfT^{@ zz3|~T6hbn!>Uf#NwCWc2Mz)>r*64(BJIcRdsa$l%3lpgqOyRSrFmnkz^rJ41E*BQ4 zB{dHCk=^c+la=L%Y0=s)c}MA-wO+gN`dw@cV84F-dap!z*P*~<#?^CBqI$7Jo(fzI zzU#w=;^6_7TQQvV7%UE2>*MO`FZY~FH(-fKmO=^eUG!7_K9?GX;{fz|HIFaH)q5Hs zGs-X_AB#+%At(t}))%IxT2$t&SWQmUmiaV3by?iG63&7NkXWDlG}wN$ta%=NTM(Xe zcyerrmhM$QZ^w{K4X3a`nj2c0)Bn!AIrxpRr66oE&JJI?12VAC#3pIP3$W1rg250T77D3M4{aaEk=K%g$8HIJi|i001GiBb)qxM5=B2@bGZJ zSS(S;4`)X9e63q)Pd+=uV$Td3@&mEJ0N@wcZ+0xK?N;7{hB4>{h!_ zxIA!-f|^<}q@U*$6VnM56%`o2tGnP(aFfB$2^!*|L@B$_;n~)o2Z!C^<>W1w(O)Fw zq~B6?H3qNQ7ePnvUYW~vv}a)k-}}5|;Gj|Rx7*%Fy0S;ZFUA`K8hj(zYFYUaMMXuX zP07t|jO{>n7@)lyS=v8ZUt+$)-}y6F^-v=k99QTk`<3 z7|1ti3>t4Navr9J089%gp%v!Jlo+%I!YSso+i9P5FuxWV!6M;J0V5T=J%4_msNMK$ z?<7n{JOTIK_o4KY{RR4g0VkQv0S4RdOXXlQ3Km|Sl&eTdn_c-mL|D+- zcf9oe7=i{k8&nTFWqoId*m6O>2jh-gCr)rg55WLrAdTmxlg90woeoJzZagxmyK68t zG*O2){}~(1%uXV5fsE#S!lZz>0B4)Dub^ zF6|RPf2J5q8UtS7lRk+hlqo>jx5WOJpH_y(Om!_x6=-Z|AW5w9dAUtFbxBI<{+uOX zmB*8_XOEtzxFIV`$oPp9a1`N9)xI{~tFupa1<$DJ=2nJ!jQ~E0d;jF0pP&C=Z~MI) z0l&`R)}clQQs^^52D#{io#u5w2qcK-@1K#gHIG-xfak+JddYPISM%mcu2>QTJ=|k6 z7`(CGMP3?&tcL8Ri?DBVC%ICYjW#`_T5RNu)|vWRVg5LHwchpaKza3BjiGycoDk(D zrHD`aV%5Qayy-O`>m3w2HEFL!%PS$!K+g&wP)o*o<7}YpIMimC0 z=d`4-IL#259!li8uj&xuA1wJ`dpcB9Z+orgO&F6SPJ+vqp&E6{8*^^V*w|x#M?}JP zCbY1SAN2}=VF`?c-)xy()8=H{fe8WdUT*xrwql9n?V;`c{@kzh;EDHSFy>B*x96Ue z7yT698yZJGN7O8wmU!DrFKPF_*cFv*qHxbh`+20VHV1|hvyu4-QGl-#>f*A{sId%o z%JQmTdsO4|8`_Trqahs5{5e5sZ|mE;#{9O~NK0qbqy#lJA=! zXqGUCyeEh{;!_$W14@$&^0-pPl73J(lOXZ^j!nZs)}^gEzfv?S@{KA;rxY(-aFeC*@f#w~_IgbxMd1~j3$IQ@}Rdl&V zK`Ut3>LJiluv(|8&IkfOC!_IWyRf{a44&%F{vE+ry)xzi3s^@hp`0l%VbF0LUNCGG zmghz%PKEaYqv??4g9m^Ai!lO2K}`)*gqLUtVa%HfPcdmENt#$!5qJL0ce6KAA{g4~vN8j}_ zB$~o8^x_yLn)vC}JwD<u346Ks@_ZV5cHnr2OkY`i@9fSYrX4>g!YpjB|z9G5KjH~ z56T7#c#UtrbJEBzRyorj}JaE$@LDJJcB|)8mD-`mVGZr8*jVKrCR{PxyBm* z@d_B2A8#%iJsK`L={ncf;qn&BDdsRDVzAhq2BJ^lK$pgXreNjAqM`&ED z>A~GDfBW`{e4{!tIt#kB`EIRi!+$t@yqiloFtxCCQHQ>BD7(olN<|N2=)JxqA;FZ< zm7sVef~;q$RC{6;K(QaxtZY1!%j{R+>Lbq-Pckd_b|qp0>GKTDzkF(*?ygZP!%0?& zIu3XLWPNPm5J=d-UKc1wdWFxYEZk{sodn6>4G!d) z3fYwUAO0bCz+;*>3*E{zXw7-Uiy2BvZ!lu}?sV7a>JC{!QhWyih16H%3Wc-C1pn0$ zZ#zP5VKJfF+Re~@cow|<_3y8Q2rO2u^pv&lTIL&6Y}78Ki3ypo5vg#>X*ZseikBZE zXs|d!h7ALkGx7{hEke8&bjZKczIKX%fup8~6RyOED5ViEpoPa7@6g7${Hy5&(n3$6h6<*8^RohFrX~m=hzW zwyVyD#o*p9hBnVl#qm||B_Br{7ijEBReg$7p-1D773Iu-p@RV&c&Ml>-qcP0>9z)L zmL&^*5;wjrR+tQt;l>B4K)2;by<~F(xhN?B<$a&~e)XMeV%RAc)kM*=`@8FnFH>8)XF}8=xKY7zNW~&} zSxhuCDCkN3cL(dNCtIJ*(6SHu0=WE91R1S#Lw#CLH|J8_hTV{@@!gkDI-^3~*~R9I zLv0JKk3hMU1OdUT03LGzpGO2W5R2vlYv!yvmk3&kHIYfT+ zWI*>rlFVJMrMpDAyaZf^SQ5rJ$!0&hcU@%kLIhZfVjIW?|A)HJ%$3`(5oDy!*TnuQ zV3NM1UucoXvz4#*21ve8R!OqqGDo>39~+#>;YPgU+NcXV`wkVAX#M=c{3&|+n8m;j zxJ8j?;3CUX6B82Z)g!`NhZ@02t^>X2FEIztz+_MBvPcS9L>e)G?o_vxSt0Rxg-$*d z0*1viOrqADYD6|#1d;G{octGlZ}GxJYZ}; zH5h1hhV%wJi^6Gs`L4IL#|2P7R0z=RH-a{Te}yLhGxLN|Sy?$!b_Pa0cx)|SgmF26 zLv=@wAfJq@Wx?{eytB^S)YSAHcGC`l8`eVp4_-8`eE-=@=rXSBu!0bkvbE&_+^BwR z%s8ihM-Sp|$;w94OjO1lAoey-Z{4B@mW-+AEBwNGM4$RJzRsC#S38wcx)v#Xj3otnBY@ zUZ>_mP`wOYd+Xl-)qdsqc%m?KnzIJKzPK-0gNJ8(B_~5`12}{INj6@>r@8<%0vCT% zeyyMx=}iT5{d=w0PBfHgTAq*ONM?ji3|WfEVYRkz-~=^$-Fgl(R1Go5&7@KOuNI+a zeRDti$DBH48Ag)M0VRBSqll-O25BeqjjLaPQz6Kk<@pzk`iscOyAEO+sla!Bj7qLA z9n~!`I)acf*UHON@k_sjj*Yd0Y%#d~5HBw;}i%T|xyFeBDrO^2?Iokf!-^sw1wki>MJt&%_iA;x+|rHZ?Ue^71<^NN-fV z*7N0!-(OvP%+1*WB)-$>i1TpTl$kBBO6`q>dH=xDt%oYl-j3mXnG>6Dy7kQrb&9h} zc_Rp*ITYD+e^j8{+n>Jr2Y`s=fXCcY3cGc5fY(F;w!+5lk{rwtD1u>rxqGV`kA_MZ zclS5Z8k)G%@{M%+-E1X|Tz#C*(^~shQE&VN*G~vg8U@s_pZ9Z)JR1C#l58mr)m|ld zt%QVx4>ou^{Ef4?Y}9uK)UbZk%N}?jlaP{j6y>&_pLxK(hf$$g!75Z z3W0pzRzkwjI<&UQ>cftej(3iCsy!Y@#@gpZP+z$TY?YdGX=} zf+X1!-a(-TdDd`*d}7a^Qrv4}p2J=V#&3LwX1bOzCKv%?SC!KNt1XUv--)&ZNue9R zIX@)ycMY{x{D$D#706vLNq50$3c?;J;goW@$M?%=|E_eM`#$ovm|s*~@*PYQ5snjf z2<^V4WH)-?U{qy37&H!=_sY)3jKwlX678ukPbs=#@#uN<&;)!^B_;*_+sVZRfSS+; zF;j5TqiHDg!t8voe=9!j)sAk97;afTJ%e-57=C;8UZXeqHRy?FB~cQ{yGlb>C?Ef) zxC4ucX$L{Xy1QB-eGV}9wXv4!W_bL`cjI9eC?3WQz+=&J4QiNh4n$G}ehNKdn1+eq z)2lx2>*rb5*%+Hxt15;8`>aX~&rR*u2l)ZA@~`PWQWq-J@%}9*K#tg0?d2I)oZyN% z3;LEs4c;Dw8&$e9m@K2h@cdcAoz4(J4m=K9(7DE zyF*{v4A_Df2OluCpq-gw z4r8BZR21YtFrcPtCf{kTpM{LChJPL2U+A9R4*6yME%PGs?&TO*nTRFn* z=RAH~h6jPAZ;F!M(9}E)f!NH_GTLF9=9VP8pn!lfLkU95$aoxNrj0oNC5RrJ<^@gA zCeq_>;hVTmnI~m9Vc&#dxT>zKj7BUlvzyt*t#)W0ZOwQtY z>ORwR#bqIKUuZHkOlGvf3T}I7>m679WvH)jDNz9POZEF5A3Q*-O!q6jk2eR?Hx9qS zfoVlLyXu}UmzBBs`y!S~a}T)tBk{E64^Kp-J!0N14^MxTAQci5Ykjd@XFipi44gGCPXeZ6`vLN60C#d%-fs15 ze^yAP>+F=95NN`%+}b0T*xw(L+1DP4!qdWG8+qctprZd<+lK!ynvee5Tb}>_d;dRZ oHGh?*QIR4FB3-FUReHw)V(7g$rAhCd0E!4wL_$*#kX}RYU6I~|P(zpA zdnf_&uKeET%)R%oGw;l~_kCvWamE3Xot>Sv*ZO`xZRL}yvK$E!4G{zaA%VVvO2)b@0#cx_KxBavuVfd8X<0eRJB= zQ0r)+V^8=;D8VyT!`%5__KCiWJbjHlc3%s6+lwtGN{lSOWfb-{9(SsJ@^wT``KG78 z4`n(?nPv17^)?Ir*qLKI(6J!JFy$(>@||p~hPS_Q1+MV+ZElw4;!PJ7dqD`~_;;4& zlf0qe{1{oX9NQcYgoQ+)7V4Iq?#u`|K-03pw$uTfqze{8?>UjI2QRK)b9^vv^#^ za`G)gw^ZF1eeNA)nc&aF%v|ZUcl&64M2Gh%fOVuagp6_UPg<*Hu>--@Oe1@c<#h;_ z$GR@!GPN^NFnoQapg_XAVd?K*mtwMn`S(EswudSif{ruzzIu^~f^hnJr+MB)3F|OY zMydU=U*ZvBko!L+$-Wj86ui9Hoo0dBwTT z@3hQE;<)fLy<|3c(qc{#Z*F!e<(eXV#_NK6sc)m8dY1Y=G*Qs@vrysekEVg+!9#2Q z3eO$m)02~2D3ZX(`42|0}C za_SW2`kn6kl=%wB@fdY8l-sWGD1ChlRdMq*yhg?_R9Cq{K|_;IM9Hz5m0%K^nwpA~ z5_Xu%TzbY?VL$01d22UNzsfFcxsS1OO!~ysg8Sx~)>R^kKj69rymoKZ*0N!{Hxq)S zb-wYvb8&S=f)TxqkLH!&yc!tsn>;P{n%NnZEc73`a z>NCA~5fNo~kGKj$UuyHygB9LCozbnsKVB0+huXf}!i>W;tL*gX#XSr=KGToQx5^2? z+9_%;d7p;g=rz8y)h-^ab^WP3!9DwNOTB-F9;?H)eDkTO#np)U^~ zMHo01V|QDl+&9Oa8~L3Avz1cQpP2a%4d=zMK!XTjg`J(RaxRv7ziEUgoTq;)&$iyE zQtD2XZYHG@`Js`ctN{PaAerxZt%*G#AOJVi{8mcHogRO!{_moKe&g4JKYpAk2)PRR zLg-2PxTmbbd4Vm*z-jkXd}aWt;#oc5!QeHAC+IMx3a@bA(9UrtlQuMoq+u;|b$8c_ z$&O@&t_-l#@k>b=_XKH!Df4C>RT)C2#xs`c58v$u#TutN_o~3g{$#lTJuN`xcqq zC+2?UwvIX6cR{VBV2x&^JT|@hzVVMSc%JT4LWhD6sJ3_O2_Ts{^+dYyTzUd#%K|wA z?vz}*bBro%CQToXW70D+cHY+0juk7w-fbzHfc^f+7M>hJRl`No5o#Zg&wSMyPdhJ{QS8h=siSnd4&Qp zWku~m4U?Dh!oHxF@{?%`yE{_cd|3p>IL~GzKYzd3D>E)UJbcFAD$wV6y?_eSSZL)d zkzpw6YSaI{w$6FslB3U&*~(-6$>JmRIwq25tIT2nmkrAUCb_Gt zZ$}DDRPgY~rUs?(AZzTc`0=da25<|bI=7*7@0)H5?Ick3Mj!X1wuID)4WroI2PRZH zD`c3u%bnKdYX7-f%RU+!@og*E`C!i3WxX0ab0|x}dak850J--_N#}vso4-3p5)ep9Z5?}~i)7bV;;+{rkhRZ&c#sGgaGIA)|7(l7LJTow z!6$?~zKsXY@ag~R!^)<1Za^S>#W$&VR>$|u_V@PGCipC3=v|k(De1-i6`PuxIJ7Ii zmYH{bt#BeFguHswUigh;&O|jh?5_63N3sIHEFunSUHMkI&tF>SzpzA73u{|+CulXj z_s`d=u9A;?#Erccwz^Vk#%KPSCoL^aTb>i<=f?v5{Pl$R8!=?=as%rU5P7y2LNVsK zJq~4HU`Uj3mk%@hNX(EvhTW;GPYEihPhxo_ARw^x#Iy0Ze$GjRf{H31 zJUq-~WRRLjR)qxAp3P`Qo>0-`kMf-Ux66m$Yz7-@S*+1hq8<(U0**!BkXGxPdHkpv zhoD43dk(0NYfF-T&1!Rk z`$}hId&E~F7W;`h*`jR+wEap^GPK?6)JHt>n-~lQ`}!y_0==YTA`f35%`3Z6^|`F|Si35C7HLN~zlvadE{5Jxoo>q5IJ2Gdpx}aL{MIjY{D4 zkc>OHvHUp$iq$YHHt7oqecpzX_ee8eapR_$u+Y#iEP{4_o;LGdOs`3|Q^Kw4;=P0}OYrvg&hx2kX2|5X>K`}RnXcAJuJ_Q!!@l3&Khj>XjI4AS;mCnG zjMqGiOcIPwD6S?tp&DM8X3znL(1`ng_t>0z(ER*V5L`ZVDAC<^%kwG&#61pxWj)c&o5(;2_rT>oNU(%7X>&nUvPG1Z{DFNS?UI#DAZv{gi`1Dp#Q z&&(!e>#?)^j7rEU&MmkXVFN<>9ROU%eFE~aO?~UyCUVQ zckG~|A4w}%wiAHqs~#;gNtigs`YT9y{1s{=2s20)_b3~aJ{U&gUZ5`$kcRYt`5aZz zJ=xPP&sIu~-DT}K)ysA(Ul3jMc}rXuyxrt6+2*t(?rMLU5Gy06u>Q87 z_#mfn%dfG>y+<3pFkbSEfRl$qX!BfP1eN;gDRX?dLW{@5o3+X*+_@7=xR; zuMM9Ttwf(3r0QpEV^&(S6_fH?_ea`w86X!yGAiK_(HD2>GC;- z=xc(pHxv#)vKv(W$Yw;)`WFi~7FJ6b@ML_(^TOw-!t*#4eE}}_;XaC_Z6+c**2yEz z>!t8vQd*)YEE|+17HFb~Hx6}aRmxLFUU=KVy_U zhU{SLSjND-KyRWD^aj;EpwPf6D*S4H{rYvg>GbMo!dU#I%vrJpi}LCveqF!bJ;N{J+YG^iBXJlOP-vaP6$kv^wdU7R%#Ch zzVSJm$YEtQEE09-6@d=@d~vN3+u{#}S65emjG{|>FzbgXDfy5vj%FM$P7-!R?abOu zHYqh?(4$pblZStAUJTcov0sfR1;k|{c9yppHdUxs-rd^T>Tkwp(&U$KjHo-mi7Ds~ zB9n)A$38NPB9me){1r^J5pCJGY4M4-V5C@Q*4i%J!yeT=Ffh<0Z82mnd1UTs)Z_%c zhThisiGS6>w|5bZY_b;zb@i2s^if3P=J}~94*shCe6F18HxSJ%mneOM5wt|oEmT23 zGu4&_0#!BI7ETotVgKhx8cW^_3@Lo^uxWe^+jvEntt0~UCo5jZ(M@vPDW@3%ei<(> zEMyQZaprahX&t^oHZx3yKe*BHU2voL_)!$2bT$}=twX-06iMHq!$!OsS9(-sb%5G7 zXx#K7UibSZ8AQCEUYKn2KAIPm+=HL_E;U^|%B$QMoxod1pWI30TPr5}Z9jQAM%~hH zBp%b)i`lF#w;9eY{TO+V2Z}4U?VlNQKr37eACS@s3ZZ=kM^Zj6D(Y|a0K{~eB*|^} z&$CE+VeQE(N8}j^?dFl1ni~8vES?1n!?;P#(t4sgs{-_FLFA0wg^ z{w^%7tvymvQIVCA5sBnBX=+&RPi2SVU^4S~Vc}tM%xuP>;Enp^Y?_`Y9RMn#z*wP_LQD0 z^2laCcB=ZgMM6?i(B=0ljQ>tk;}&OczJzX@vHzuCiOXW=15eLm78N+Va*8S_Qf>e- zkoW|Ax$qBTf$c3(RVTN`BMde3cU-t;A@}ii3A(kOrJdRc2u2ymU?zi$U zUv7cv(%IU|+3JIH-q-s0upmq{> zfSi?5_+;JJ$3}2s%jyN0+x(`t03X6kBz|d<}g#^CG2Ds&g+<)iTY}O|8a?>QqGBh*K5jf%DF%)ZMJdMR0C*kIRq_$B~T>U)7T zE-woHIJr@55?N9`#+@)YTUQ9szH-8B0;fSg&Bemojm6SC%28Uagd~NL8$!A!e&}Fi z^9p9C$!ZJhn!02%K5KkA95an*tjAV-W)xjM+zSF@u3y}A9wzBA^Z|N&p>F0db*WHo zt&uHyaqeJP{S(JqkghG8-^!6kUq4}#D%GgTOQbzE<h9AG#YdNWS4R8RabM8Tx|7gBX<@#u8tK8NCuYO6VHEc~i3t^vBt*Q>{HVDQ&HFvMKbs)l#<%BTOE=^LT2r}CTRuw< zfGSo13&lvR`TF=|pU5-=>;Xl)p8bB5^8_?9mD?qv<;xlh*)%;D@G5Y@@LmENB=ea`}eQg>h1$Th8~r;%}M*rvLiYg?f^b9d`W^U738k7tSMK40gx&Ug) zQiy9>(GkRZHPNm_JCZ(PhMs%|Fp@rX#d9((*u&|lxOi#SxHSSoNT&oEtfCJ6%2*b} zb$y2b&4-OZRDW6rBZMIV!UwRi_6lV+3RpU;6p+FU7Clb4mbsxF~uy@>~wH zik1w@QQcl7rU3lBijb|Iy${0;d zOioWvvwFZt(clwK1=~%OS)Ww5YW{fou6{|J8F?;_ScwM;73}4UPW@ zA^d-B$m-cQ#}BEIl=Sqljt#yb;0c0+04bxIB7qe_h@XNvWMS~VSavoeYnyUZss^$rN!uf zuJ&<&oxfWEZ{tsG2Ak5i!mnTN$;udxh3>rMU}IaZ+JGO7P7+Yi(b>&y(miqGcUc5S{ejh$Uh_;# zozcuA?p=Gw$2tkhMu!284e@{XNa>|Awe1Z!tD_PUtL@Taa+Kxa;Fs6fsypQ5X}7Z! zY-Y~A(R2#2JbA7w{jBu^Pz|&|ueAQuDi*mA35B=e6u@9i%71w7dP2Vy@^2 zZ7zc%hJiy>L}KM3s-So+Z(GIscV{&Gw(;7x$JX!Txs1}OOxBC>b{Y_%lZ$Uzbq%rl zT=WS8F@|vih@t5HCkyRw#~AAmPZLrLOt4hAn@$l>Yh3PusFNI2de#%-}f{ zzNBGu6D$CC>;zTnT9%IS=wH_Gt)Gi3~VCnomRGMV({D{+tQFR@PXr?@v5&eO<~ zVyJiELb6-w=kE;OUiYo|ASH@a2M;Oqy!iHjPqwAZq9+^h$@Pg8Nw>d?H*)yD4v(_3 zv$4H2@xKhl-A8V{I+lqedsL-XJcqu0R_K*Dlh}TVVfe z`;+%3E9<%3?K`v?zk+YFPgnt=flcLGA?cRbYTov=p!L4FuaUWVX1mh8oREBNtyjCU zK-ktH8_CT!taVw7qOaGiQq&`%eR5vq>MBBqsUqxlxU>Y29AAy&MdEwI5kSI61cBT>9K!i zNGOgfz6c^ZPXH#g&1y*+%@aE>xXG9B6Dl>JU9ecM6)TKnthnlzx#ii6=BBkN+%1^Y zP?48E5rwVAB?!8WSLf?zg^|)puE$aPW15i_m8LC zC}E3CeS3<*7yvgzSA$Kts?Kfujb16K?Qy>}7j*PfMh61tWni#VR?xCvJi+=mSGY^^ zbqXB7F$JCjGoyjR*K`3t)!yv8XS+*fq7MudD7wb%CDyLeVFXq7h8}kgZs_Py0XgpN z-uoL^di(gG%!CV#9HC|4^2QIKhN-A2hYu#zEPAw~MV?|F(_-!jV2A2z7q+fX<&__` z9%rcgMPxY2=vgU$uR1?JFI3tP)(6j?%{7u00vUM1%)@TlLHgrV%|(L4Y~(#_;152Y zaNnA&td_zoYV?G;>(Yz6RrsJ+t&0sR=BO}MUW4yV3W0@W08~rd`=FXE4B)9dTLx7V zlkq^2(ZBRng)bO2(pf^wn0^)M#jq=u0i23hrB&1Zwz4~p+e+Fo(+#sb&a8b5lj@q0 zl0bJ#Vvn7Yyd_730BhFQ+g1^Z>5gHKYC1o^iI^=h2IHxX)iG8FR*KE8Q;_CZRwgE9 zTF~K_7i@nbC*Lp+-gy2e?FBqj&Oo3#A&y5&U*~youJN=FstT3_+z$b>QR0hIvxK|c z#+iu8Dx0Nzt@XX$@-7D3-tkgYgGG7R6^hCPZrz%vDjo_a2(Gzz5Z_v$1B2-j$F9Nv zRo|Yfr6ebJo~)(hQdL#|rT0eOV`l~-)#$^n*W^B_4ZB>TLREOjaOmV00>QMcqhoTz zcBIfEU~6m3J~bH+%UbWb<9w#~3TTVzr#F{3fIY3|=hqN_l^fapgA#oPT#|f6Q)=iC zXiw|A(XBo|%mW*@e|7@{WE5eNbGOf6H7%bEDqr);4Eyc^EIb>ynFDat-8Y7{iVSOq z(_q(*eAi?_d6Eg(oI$WfCcT2=3QK>oSizg%FtkSkkBNG%iv=rmqTEUcyfdy-`A8sN z7#r8RZ|Q$n?oG~+@ZQgrJ-7>s;9p+A9IP1hf{z$<{w!1CnGP^HHvr=9QlQ3a` z(5u&0N&*Qm(4k*6rfg)T`ZFLvW}dWYk<0t@`1rD7mkV`vgcpral8cj0PTt7YK zkmKLzbLMgKI5;Fk0nTGsbHAsI0?2LP6+LZjvcM)U9XNrUXT1(0q!F{rt+JbD3TaIP zD8qWrcgN=M;-^FrhxaTKJ392h_>Q-*?jC-m-)LEhn?Ufzm6aSYr6-Huuo(MAdo61h zJ4j-@Y{wAg%txM}WotIin3(xWU<&S~p|kfafRVfXW1sR^S$`f^Iv!bL!8b z*6<}-IcSCM#t+o@G7N<>9NYkIwi`<6V)a(6}VGB(zwFqxjlt5FlmHs zSUf#FVJAQD(@%Lm6?I)!bT`s(I6X@O(xzci(T!P<6%(zrIhBu0ef$jg^Be$O8T%|* z`1)mhBmql0Ej|iJhaC2dsGWMzK;CFF$9+V4`(k!S#EF}v^We!zxwTYlC@jD{MgOR6r?8jx#j@R|;HikdRcW(|+OYG;*egH=AD=-#Z)(q1jzF z=rU$YMb*`lGcfQ73kxrG$8j2=6H+d_rhq^0esSjR4I+@w!otGT0TOO#Xc+R%Z)px| zomchp@`5Lz|1K=Vv8P4}6&e+TKEx>|reEv2qU^y4AgvmxYkZ4KrzItiK`3RSIWs56 zNI2fwdDSU7QVJlP0qvIvKV!AH?@^hU(o3G6hF3;5@%t;VEX8||A)OHboyy?|!bs2S zW0t#4@$rFs#UKOcG}nUXzB8KaWx@3Q9Ug>_z8@sra01A`Tei)jcJ|Jf%%nlJV_zaj zp!gTbq>hUee4Kj1ZxO~{(yQtM3Do z52My31tCw_;A{A!8Dp*>$FmHMao%USI9*BYDiWviQ-0BODb|<+M1C1u-fn6gNNM^d zPVZROfD7UCW1QgF`z0i>mqR1@U7x{Y74F1p)t!_^LHjd-9Cun_`+t@YE9hMAcEtrc z#i$JsnLQffj% zjA4(@Y>7y2jsQR<2n^8SJXV~9{8fiYI z7T}BK0z+{v+A<16)o8*#MV2yG0#t<p_U78eO+pac5fu&Yz>W`_>!J+%(N7c?aj|rm*bm)v^ z1MCq<5803|q!V??tf7NA1(+uWDkTdkk&}~i=w-)--Q~>&4bWz2u?wCFT6eBZT>k#< z?iZHYy1I3MXi$?W;-39${=xf{@Xcn>uh3&F1E~otjpyr}Hp3OAG=lbAkLDG5L4`+^ zcr*galnzo|Z%;bs%eXk(mLP!`W(~vNPWBdTri&u~(MtXN z+!j~KMd?Uu>(~U2|IEKYqd_23%zHf(hVA{v5B)s9ylfe;wX(tvbYY8pKySX8+a;si zE37YGB8;lFlNoo?-^hmN8BKaT;<*MfZ%}k5tOCqrsr#EkvY3ZDuJabzfwnRsAIG6R z#2fBE7!=2-3B0Xr<)nNdgK!&{=>oeSjRvu+(L-u}AT!`_p;D?S^T>il7hIN`(Ke5K zHgXsYI18%`FAzuoJ|H3`jc37eKpcPp9{9g*uxtyPN^*M2fFwH*gmab}eUAVyiovzr zt~+dNYYYPqZ9P0myjJWh-_HDEI9}dxd}vT*$6?rOa(a_WH4mNzvM|sE_H|I2aR>z0 zJ!~rTIVB_vaiH)Uk%bn^kKFymgJ^*A^egS+{<=U~F6M93&?K(Yik`loq8xkRYFK!S zk+B$TPk5w~BGFY81>%SG_4R-*$1lTX01E}l640)z2x!1jJqf%$;Gh32cO|%6hjIUs zeqoA)eXK?`wY6FIc%jNVY}s1q&51ZkUo=ZcSE_VCS%-?lKMN}?;T9gGM&sYABJ+uv zn!qmNY{m*Q=H})C1PCFf3>gF-e}6;mXUg={2Gy`{i6Jc#FRu|pc4y!^T}+> zz||U%%Y6lZ9~3lF?#WAe<6%CKf7Y?a0ZM9W0m-$IsUpTvl@56T1azC!1mg4_Kyn=F zNg-b@ag~y#8^ltp9A}GiQvBo@7$y#n{y0`xY}`#2ch}Y{Gau~M;>1yVcqZUwZ;uj3 zaFJJ(oPN6@Ni!}&SK!eo)(xUC`qefFCfTsn_DEXX((>3wf0aJMxT7J%4rTSuZh9VB0Mfi6=r5;@`?x`Q?%dMOj#9Thk~hVdm7&STQV1r>8y3}wlC9rO{-LPkc0*^t4#rOM8X2dE)Y(*dvGIE}`KWWB&R z=uE%dBa&qeN5^U|TXC=&1g;9w+rq7Pzx=ENX=0YFI#P&}qj^|hTU%S6d%ciPy05UT zVU%idisVR|(Y2f>Ak7QU1ch?EXa8)uapB3Q{iVJYH*9<4E9lS*GRaI3mC3h`$@WRx zxd}$^{?bt&r=z2z{bYj{b4b(|mPW~4`jH|XInbE?HJVJOAyIUrA0ufstCfv#!^e9F z`?>b_1{9b^Usyo;rPa8~r*B=HAqKuak`IOBqK_er#4dHX9U}P#>M3qY2P_S$4oZrk^S+F`e?z#K+jcIqT-4j~ zKaN^8PV<^$c#v(9gg<{&IVN2O^I}LzQ8A*(xG^7`w0lJGwCbgt+{W3_#{SWf zlCw0J8j0YvMzt=o03Nt_dR8ZNw6(2)?H{0_sisJHf3Jet(?jO^&A(CQDfGQjXN-B~ z3cUje3C=AOV*_Qlx=~S*+e|%1&{muBq3ZpveJ;JST+^TLyBuQvHSoL-@F7k)|MrHs z-uCeomNiSaVSqv*bEM`2%g)U?Ex4?M;P#trnav0*V1=jts~lP6DnR;J&1wD_NSSCG<+#cqx>;mIz+N3?*SL8)65F$2R&wzap3Ye$DteT~dU*^tt?m1=q{HRZw?Uz%K>U_P>5d^uN1}* zY&F!t^;eMNa}Ov3rQ8mY+7U4bqPn!{)qui;aBRCOE+38SbX=u-~?fKJ)oivY~pb<7ncX+zeBi!#{j zq|&4>$GM?6oW)=}tzHXj&;-cB|Ll|1EIgZ@1+BUx6c0o z_d?L_x6{>&Dn&E7sAv|gd|hZWmu~JIxzD(zpC|@fmre`-YJL1=l_t=o6If2qPV&L# zRx#iG2poD}!8HEB33eb4=3~_|xeh`HTjO;`jlSr3aQeMF9h8iWyikDVM#09DVc{1| zqg8zdmG&4RTsMPPtPDu{Y;55HarFxb#}(2|xV{B3Zm`d#9sBkYVw$K(j@t?h!2831 z%X8=`Aiua41cU`O&{hOp(Ol3WkgdWct}FctvvA-am*!f_Nzn#_0F>)=K>pVNRYLnW zQSVoBXccCH4Y5!-ji6m-%g{R@=Z&-;ZP;$rxqAv8QyFjOppMo%I|g(>uu~1tCsrsB zvTY`_5fTy-n)&9BKqa$2PMO9b3YVpB)+jp$oGud*B3FjNg#<_PEjYpWgG^qX^=UUH zJQM8d?3$f50cO_{NJoQ>d|(UGVbL-vgssP=nf*Si#Du~S;P{$lGSD3NoPqD!AScfP zHL7Dtqr3;+EI z_C$WqBA9foS9Y7Lq|d_=w;#BY-%;-t2cRhn*lCJ5JMZDGus&eJ@vsNj*_q^ykyt5H zNPs?tOSscbJ)$QMWX!vobcljVNq?DIZcg6g_h`RuCTtl2o28sccpSf3zsbxZ{|W6A z5O7#;WjL}mQ|C6&dvM{m9pc;XJ9CiYJG1RN;M?EGE@3G4Yv`lG(fSY;aZ`_3Na!v^ zwWsnf@FAXfubWeF>r-6fU4E6a(62%%%dl7xI$t4#MA8WTiq2RYSfCU0yH_M=ga;u- zljiDFGl1B9)Df-F58rABNFbb50UuIi)D%`ir(Y1%XK>q2vIgkk1ya%!Cnyi9$$I&0Dr%c9Ac@=Wf%z1=*lmix8S=#Ji3N(nZn}yRr1V0=!hSWJ9+bd3 zJcy|!bUDUA(*{p#%E-z=S9MOxe6J`7UT~ZT^OZn#JcyFl=&!cT54vZ|S!ee|));YWi9W5*(&)wvera`v?~D z3DMn^$JSA{W5sC!vzJ3^alye?KhsNv0bB0pXwf|`1R}HGPGm&H5TXEKW$?SBqcz{@ zSuBG3)5DPe$O5R6rZA)oHAHmVwhj+d9Gow|`JEf>b+k^&ru6l?iX$%tm-=-eEj;hJ z%biu1BxD_yoBNQ0Q;!ZA@Qp`lz;2pRIRG3?*CU>u;OJO!wD)qY%;HazS%_Wbx6oJp z5kS`t&c>G|`}Uv~b~!M@0BOM-@4SBV2EO(x%OT9)64|w^gf6LM_mY0-tqRXg*Wi1O4i1J1Td$89?7|$6HWwWRBvCCco1;WE%b1;eo7| zmq`Ejvzu3M-tFDWCMSn!6N-L#B_o5iM-e~Rza9}9YW@lDrHoA3ZwNCJlir&^a`I@d zCoQ3&uj22S%E+)N5I<&Og0m9dBPZ{=P4K_>@J;NtbWN0yF~h3#T+);S5jnZ_Pl0OM zFW-iTH9t(<{0Y{&M zp!xJ8=2_^cPijdyst+HVq1=eiE$>G}R!Vz)-x8(;a(bWJWynUUrtbR8TPCKnO=6A~ zWvn|5LUJI%C+$6qS^aSlh%9 zIdC`lUO&b|@7*#P?|EFg;!rs~jK4Xb5u!haAbJeeH!$>;f5geim_H=8yk6>FFzQs| z3HfqYV8*_2WVzY<;N_P0smoGjkwL-(8E{Xp1&QKw8rD4Co~a8e7%NJDZ+4a9q3YAb zgs)#ijeI@w;v82NGTf)LvkA+;$;f1~6CU+D*w}>8@CXiPgZFgKhnch>s%XLHmAq7v2TbWI{Xg&( zSvfd}7TU3)pcKp>n&gZupQ6!i-}TDf#q!Ubu9r?HZ1HmodwynY!lHc{O2PCCeAcAV zeBJk5Rx`Jf@N{h$zs<1IJHWb>k0?tX{y;ZC7uawE2Hfr+La>ug@*1Z-rqN=(9N&yj zp{wP5VG$7&i9{5V<{uZ)r_wsU5D0LH?(sWtfl}?XdGe%k{sjb#SWCQ85|TvN^5yk+ zv;J5TP+V6hb9lM9k^c6~Qc?^?zHY4moQ!l|BiwvZ5Rc$1+PtuzyWoC0@$8rctRTeK z?a;P@-u+Q59e=DkeRV>~J^G)61$i$99i!-eL+e zjH<BcmxT3|Umb?bDB^}HVL10{nKVx)Nrpy=x)(?vRD@2^!4L^%czExlE-YgmQ_t)Q| zf|f_O4D?4}+vlPc`)?z`60PxH@Toh^%gbBK2Am1ve2w^CUfs{uZJocz8%X zUu@?qDJUt)PI}CUIPF64kFUMyB{M^g_+t9)D_4kunYdfHYzdS(@iMrKv-kP&mJ$+s zZjnbDQ!55a`W(L60yMT3bwDfZn0s-T2~s&LDB*E_&rW_k{Y@6{pLBPH%*;#(Bt;6w zah3VYC3_x&luzii@9;n|$+_j6v`Q@fJB~@b48Nr!7XhBL$ZO&3P&9P z(Ds0hjSwj1B7TdH^?j?L)xEo~TQji(Ur)migIa)T_zOTwJP2sj+T!ZqJ7PL6t{p%4 z(9)(rHCR42X5)^Un0VcJ%t-S3?h)a>K6OLJnbeM zDCM)%VK2LV?{BM}U6tY3y=425TjV?mMjuPOe7z8Sy@rUl#PtgddY~dgJ@2;JouJ^2QJ|JX}@CpQ9-H{G(`cNc4|IzZ5FErOEE?37y-|*n?sk}=^ zVfm!U$t|`_4ixBQWDaNdi%(fenV8a}{(ovx|9e~D|2VsO;v@+qu;#e2f#LvO+ zUT24oAaj1Z-ouWoDGOuoLPIOe9^>KM_*hN@fhX48=DG$3%mGd3BEH*P5Yw^k>FXpUZE4KbM|9H8bl}yCC+_!|n6~aI2Cgx! zn%~l|aJXSm|K_WJ1)s;x_|-di?p%LRavrs`yET2y(z{m`>|UZM=l*z;inj&XdS|T2 zq;*TY8V{0GW%n|5rV%*;I`8Y6QMX`QB^^*}e`s`k#?^5M?qHx<;6v=Dn<&j*Mm}qq zX@mpyuqznF7y^6PLkf$;2k+?B% z+ZwtGd2H9II*y`z;pQd)Ktdp85B9`-Qc*@`-JIG~KI=B%de67?E9X}=@ql3d^w?oK zO_Ku;LOY6(0}ms)#}KwU#OEHjI7GAqLA8y2WW;9lO+8CK-M{f{e5F}FjbP!)8-c#n&ZPvr)QW=@p2YRFr@)vs&$Xu;3uYa#bdtuPr z0OidOwiDdE%Ppg;dk-?VhRg|#in<07aB>XHU45vSEJXr5rS1~t@+@Kbe9}<7eqMgbNe8s~kp%o}vbIQ3s;{Z9fA8Ufw(i03&|}_+qKF zyr+XNEMGaKVqGic906Dc7F86e_ww_Z1wcRnfD^L3yzJvZ53v55I_A5@iR?B!2j5Wp z6X08~$WHf{derEF|2C>&3+mo1vBULf@RRoc1Se@FDG}~?C(KTqBSB71O@W)7+1psi z*F^#%dclZ&0JBwz`CDe_uFj+=V6c-QQ@1t6ts)~s*x~f?mMqckHsP(RyVt4r1`fr8 zhO!&$qqUb^x&-d*gKSKg`qJ^&_M?hKgV4vv3) zb-aGV8hh7;$A9pa{UlUF)ecpE=G-jW0B_S0}yx0*{Gt1{<4M z*laE<9lDJ+TT|nIUK#)N;|}N%h3H(h0=DH#F)9E|eT;NKna&@{{hWu)S*tX*2fS?! zmZYh!uD%QAm5TcDN|j9?$5b7RvpOlQ5*(C&WCE(Ufc+pbV3bEqMSwr%YBckpuWloK zr%|Siqo1eFN~S=eybiV5)zvix8pMfzr)gsmCr|`+n>K|Hw?`C; zk8GHqJRxtBzbmJ!JI|Jfe<6?$>JC?SUNDzl`SF(lB5fX0)4 z>{ITtwx6Y&E07vQZx7$Ug8^`#N+Y9SGDX^2R%8c0b4e-!G~6GBuow3P~VYo8-}=b1wW zo6N3RpA0#sqzX7z&Dss;YTfDT>KdwuOcF|euOYjMYE($P3+N+}GG*40-`lZmqg{s` z0?6B`!W$f-I_<-28kMM`4mUX3D#Qlr{Y##V9Xx4Fm(fB$z z_$7FBJis&{yLbyY0cr)x_KRIsgl7DAaG(O5UkzMWo+6kX?U7h=Eu;LOW{k(H zBrmQJDcN5enlZKP{r-+HlJ?i{DGDK0yTLpKD-gY8L89@18dQ2u%H;~+6u*X0L}>R2>Q^&zf{ zei!#twy(=RB01YOsMy0EWta5ow4 z6FSQ89DhM~7^=X{&N)qTVaI93v5$pkCD})_wZ7NlzH^#g{yMdB|I8pxSh+s@5~SCa zVIr)oSMRVX$>?>sJg)AFG6pdjj^nv`0zZBy2)LW?wdUWiPGB~OU+8YbL<*L$ zasMb`AzjO!&snnk_d9?+d==t+*(+MP24>=Ih>VLL{1!CtulqRXyy?z;x=s2IK+}A) z_e=J9nrbNc=9BQu8X4yuQINb~k(5nl5hUjxbDw)p-|ntcb*sAi{OVohkG;1n=9=@H-x%W^ z&pW<@3>N>BNXvJ|`sV?ohri3yI^-pi+^OH!RhoNKc-taeie=_8^)`~)DRn3jsz{JEv_s;@aV*M;Zw(T!c zwF@mLtq5d{YF!oJp`t6GLfb<#d%W^xv2|a;D}(mk73z-MvILN1Xfj`1?kTxRbo@k+ zESuJ;yDbTNuLuKH5+s%2Cuui!!}|mXp2HV~W%^R!QyVG#Ew|lB7T8(okQP`4w!Ni8 zys!igUP+Nw@}c)jE0YdVX_Yk+KOqgs&A$KHI4}9Q1Yu=w=18^Km>;-n=$>?RpFk$Z zuvRxdCO(cGekgTN0axbZ<$Yo>K2Ln(1k%*msV1)^f2&vbsPZ;KbEeCLhW)ZmO?cR8 zq$S{xC{^&5^NXfAa?WnxzHQ=TGh+MdrS7Zi?%l_2W{qhi-SE7+Gpzj2L;P*#dr0kL3rf^$nM2mj}>kM$|j^kJ54%y}v1;Y>-Bl?7jlvnyQ%N-II8*Rc{4u*vn9 zZR6s~kpP(A+5qy~?)p;rSRKX*lo?;mRq~M1JN9+%>H;=Wh3MMN0hPiygmG} zxw+xP{eER-Wl(pd8W=-CfC{JSHr2~+npKY&OWl^%#zW!mFO<~Xm-I2~kJpJ4u>_q% zwa{Xa3Xv(#8x=Il5ZTDOzjo>-=L9r)4haaH@_ti{OJROy@4Naj|E$QnI)7trq04g?QHQ2)g}4sP3v zK~3qgJWhZN@0BQ_*;I`s`K7}f1c3MxAlsgM4=Os_)z1?lzz@BE+9D%cR9yTl^0P|k zO4!j3=Yv%(IfGu)kV67AFg{r6)#f$YeX6cttRanVX7 zslm*MAPtUVBd#6O9kJ^8N_Y$AzFEUFbA~nx((rw#xWIkXKpUEiGaJycB+4GhX@X?Y zdN}p6ZtneXz$+UY$Jm*Q;6ONCZOhDe)H zzC*2R^D{=sbQUizE-s?MwxGE9R9!8mmw7llm}Xp|HI*sr`>gYHp9x{Wb?;d;%<|}S z!Ct*>_MIBtofb#RI7XdX+atdRo0N>^iRQBhL7;$~Z!S1p{`F=vAM96QX9ZyMf|9VQ zygZ*2i|0$Uqq}uPA(VdMLN-r^_?ZlG78t9mpfybMSMmV~T;Cu?*V==!NbSgn>axd> zLW>1=G}glZ6Y^!2^7HiaMx$(MLLROK5H^%gNw=-z+U z=CEDv`S5^*OB)|y0I9gUEJ6cg>rTTZfqFm>U$eDj^-FG%5rheN>&luGP943#mObG z$v>+l>&9XkLQh|nx3=c;dw1<_{E{w?67b5VPwkPyyyL}6)Znr+?|!X-3M7M)K2`<; zO-+QII`0cX>kf}iAIQ->MHVExn>yLuHhFYZb`w4)=4e#{I*D17dcNPkf2Tlbb`%fv zWZ-5uHV3o9E7bU~^HZX_gzMax4xUWa#l@wD)aTWdWgTeXanOY_6me*K7PYr+v9pYB z*zP3@Mi=pR$62W57Rm20rE>w!rUvO~Fl)j!`{0Iv626HK68^lQ7lmCimk1GTrJdgC zi$dx6x~>QijLbT7hOkxk*}{M2;CEpMfc7z8*(2Oj)g$SmFOP_C#(L{0kqbTSdI~pH zSa`Ivo#fExz!_HdcF7N4Ntrf`K5nDEtu4hca>*%o?xo?NL({i!WF}j4L2uvEWumb} zx`73~Ux`fR&RYY_-{VA>ui5o!U%A_ycKoT@aW;U&;$xzs0-*c#5qw=ev>EUBoYZ1t zugOUg-u-(aBg%Rdqg8%)x#-A#>Ecw+4f|`1)VRx?lX6l|qi`N++3XPab(nOLT1=$K(MJcX^H$OYz5T-wS65F+Od(djGLz6&A_1AE zWhJ?}b@tV#Ajn~VZ-yIcy=%b||I#1R#10L;0LCYjeCBEE+gooSH2aNsX1*7(PZBmu z!4^3eS70V%D(HMQ#j7M-=JW5EWJhkjQoemOr*k3gwqEOx_p6~5k5`K-JP)64uSL?E zZzN@>3cka5_q&htZM)UM)&HI@WqMa8`YD@ca=i7HUU_S4%Y5IUwq9S>Zb!(PVAXTE z1n)PKZ&K@ae|7ittLUY=S-K{Nia^S>k-Zr`zkKgnd~((G+p$tL@HWnoqI$hKWD@36 zFQxmxW#4a}{t+Jv2*S&c7M${fyvC5kn~op)tFjDO?YK+fA*E}-!^baF5|WcAd&BRq zI3&t}RAxhQ@0X5N>{Gtmv4h#?;r__?Er{B7K<1LJ_TjZz`>y3KMXAk#ZazJ{ApP_B z8Jv3Vca{$SSn+Qmy*hd%5G=EuCGMWOoBE5K6))&+Uv}l{dJufsxjd@72ekRy2h?n@ zdx9CHb0)i_bsu0Oz|e@McaXX`WiGM5&%UnW_=v?pZgw)G=~H-!b`rekZ!X=rv!xVu z>TzW2f3g7mQaerwIvZCF3N$8l{21{ZI{w&7`w(HCi){D8m?d?08&a~4w#H*rENgJy zp>QJ}R^{bv*3O@_RgJx<{^9y%;{ZrSX(9hYXo~&bW!^P8b<0Mt@Ar|MAB$SO=b>yB z(pxrme$*$`P~@6`g7<+`jiAn;RF2I-Rx)q@&+2&r*A)!{nUM-_;{~br=aMeK-C?JE zQVsbTY)fgDO-c1{zkLwfh;`a+x)uKrw)V|yQT}pp>%Gc{9S8%Sd#&kC9$tGJB0_-b zLYdAZsk3ZC7s|WxGnMmhDJwTX!%j0*nf9-){CW{Z1qC*sRuo>+y$V)Y#~!KD=9nUm*h0%Dt15lbZQAF?3gSDF~_$ z`eR;1M#c_j&%G2-wU3O9Y=__T3Y<*<`MT(GMg4cRF4Q^j0|WNp~fYohPP8^B^d2ulhJ(_O@?pnDO6z$5u8k+js* z2RjQFA1^n*<2l;I8@9BzHnz1XCjB^gaL1$Nw~ot?`T}z&J+}F#krAURcC{ox<(`8= zIA1$PeNSJ%p{a?z*=rY@2axjv@#Usga)dSUNJBtGL=oV$VE;JC0aZP&nJWsHN)z9VS|3^#7V0#u7tpGmT=*cFmQDVGVh9?A&LE(_CnakFdQBrm{)F(OpU7yn zyHc`j(Bo>aw{ri`KJ5v=o7R&6w~>0{UqBgOxf`H)n(}Ztzj(j99}pO$8dm|Og{pt3 zYQ?-a(rreQbadmv{-r&3U@53N*VHeO`i?$zz z#`jbS+Qt(LYu$x_Rj$>oWvCsE# z^bqKVY}Nm#5NB!UB^T2>sAxiApF||H^+EFIK)b}kQ^7Y0dp9m#RKPo&;6_ulTwJ-- zoVe6!S3y!3HrQI%fEhASfBaZbH}C$7+nv#`%4MY9mhc5>QKhX;s!!6=)2BHP>DcMs z68%7YSc}2C2t7}FeOBZFmpEpKR%V#z>@M~8aiU#n893db+>c*mfajrv$9x!cCLivV zfBQ4j6*<-6_sr0~{1K1im&d!qv!Tg&7bI?bjTn}zrH_|fbi&>~Xm_)C9EpeH=+_Om zK1c@qif61boKumK{)gugQYKp7QgTNJ<6>z^nR_n(p-V`s0`Q4F^ZS^oXN>;pv$m@-)Ch7(zoE-=|U zF6UxGv_428^|1a2Wzk3x@chYY2UVbyhQUolskhR?Ss0(3oTYNj#sFZAf1!H0p<>+? z-Mpv|Nrwx=P+@ngMI4@4@ zx3*sZ^DRJlBL)49c#$${n(u#6%3`K3a&mssO&o@flU9{D*r);x+-y0-#KcDJh*A%- zwz1CAA3-0~H!w_w-d2zOxA8hmD2RB4k2h{-`r6uZL)R^|?MI)Z#Ik4?^)=i6?|&2n zhmseh^i&xTq=0KJdTsA{BG!%tENrV2?*;Ni-=?DDK6AaWmZvkpv!^`L^ zsT-E15!9nq7;+HhCjUft^ava8DJx3zKXPJP?ZV=7bz*^Tc?{jb#1jw54x=uJt69tH+*XzwA$|nZoDXcc=v9vYrZNx zE3^*0*b(y)a^kDoZc^YJK%tDlprFQ{o|CYZ>r~_HKyY|3>2bPU{hXeU%NP`@aQMpR zEvePHsxBhf(UkH(6le~cZbcYx+kX{AyKucG>Lfk)_o$b@;8wHMur+Q%!BmV-L6qB0 z_xERDWV9Js9+^4%Y@96u6&xXKxk>Fuf$)bogYSLn&fN_4)}4v9xEszV{TPH!qgAu< zmba~(9cT?G$q-D*{1OH=f6_>noyFC&fG7HMzql04=?^h1cf7UnFeB1;aU%H{w)SCp zCkF}3R_P#Zejylnwq31BB1P;AK;?ryoCaQmzFjZfJv9^DMW*1#aw`3kt-Uj#R#yJ* za$TF=`Jw6|SJT%*2R+9i55r~GDQ(gCwLj}80XlWFC6TIllQq9oes45KFuQ#{vzHiI zUA$$TZV9@SV9k{!+!t#C8H!nHnfMqGE#KEUorJMCH0*Op)wtt}o3Y;(hbj#bn)b+Z z9V?|`1&;LyD;y=j%ColKJ#L%72F24c4ra%s7(nyM%VqXx%hw*~H3^PW z@%;STQ`}G}%gyAOn87R_XmI}Y9s<070$xD0a~c>}qW;y8$mH5mSh?hen}14gYRIS*6dbO$Z`q4v^}4J3NY_5I%P$m;j$^rGDXGS{w6nBN01ygW0jhC`IZz{|nDqIXt`CxL z(rt>D9}jO$wXpL3{uyn2LZWmAx~skVWB*cVvBg+fS&>S)oQK9i%gQSbe&4@HDGnX@ zLC=nvGxIVsI=AcBOAVd!0NG?201JD=EgxR`#75K4P(EH$IX9hIHr~=geBirh-jw=6 zzsN}-kOo`iMxK5r{{39RSa^bs<7+T5-4f*!xQzc%9%0CgG{8j{l$6MSsilER?RS5+ z-fUl*5OkiL*RcYi6rn0(ZkeWD)shP+LKRND4AQFGj3#ai?34nOXZe*E-b`MJIeNm! zt=qy^Y-J8lf9215(~bH{t_2N|=077dRhNwo4$@yuTTLS$-SZq^fHT7iUIwauRAPhq z1q~oj{+fvTar$_%FXdQ1{<)OegKIZ9rq*=D~aX%T7wrt6xiX^+@<@N5Z zDcKk$)2a{r#{wcu+*`u42c4~tZpI}fe7e^$ZOiFWY;I>4Iv&H@-0{#XPM8h9ucDZ! zJk_4mX3^Y6iLJ9_O5sRxTHQZ(XW#3o?!vd(@C^sC~C9xX$+6S@7Y2N?3oH`SOlo?D=$?X^i^OT z5J$dc^-Yr3iJ1FPt8eZsx57nsgG2|6>)utqnw_Y3?-<*{nL}c`nhJKibgp|Gp353^ z{kk4n0C(*xOnGVB@jp5cy-{1M0j65{8sBgdwk=xMMPd*?tn4t1Uu{?li;83;9Y$%- zp5z^o2h> zwi6sZ#A+tjlR+ixVcFgdXDS+WLO|d_WbiHCiZG9c1jq+$k^L1B`ynuRBq%3Jae(-M z1YE5j8OpL$Id|O?*&`(Cp6gIU0S3sHf7aY{$-xzzFLxN1U9*bkqwM4X4ASf%-VIdQ zuv0g0it{D$nMkcKcAx5qJq!lO5*XvJ1?RTByg_;Oq}^mU)JxCey}>B%NeX&1K`Nz< z-~R5*17>cqIWYd6BS7Br>WJeO24l+h)GlUV#(#c&Osc5|^SIj1(AUdEbL-GRi~xy{ z2+7jPP4E8$k)>@((&r~!Ef$NNfMbxb(0hiFO9^v=u*(;kPmwK-6*GYXjh$T1-@GeW zRa92ih9Y_?7egmz_0RJdmdM|}O_q1Rn(UOtDY)>v+_(%6$MsEB32~!p+weATCQ(}o zXiqQ*cwYcvS~Kl7y}XjrB(zSgC&pxU>tbw;4&XQrROaJZ9xdakW7?NQK58~A_N=1{ zrNTmtevK)ux9jpNJiapzF8!BkA5&lM-7^rGTLHR4nGn~7VV&%$H?LpwLm~wk?0G6G zDwId}+rx+<54_vwk9MWHl%u($X`z=3sICHF_{m%!1H!|@b#W$;x*#?zgkZ@IlJHnE z9oskAD5HX`XyQ-?u*VQcUKa8AS5SCBs`{%-$N#pTte@@hV)gq?j2JL1y~5{`@fxk| zQ!pb9?a9tn$|g6Y93$7P*0s-_hjmJgdbKt&Ot4tuW?~OV0>5pu_{&2^fktBl0^9RX zArT*Mt)-tWZ^mM;_d2idtobPb&R+nqaM+GnP6?08%ywq9-E!}JZ=to-&96=g+GKQG z0YrP777gV@-To7z(8(Y`pe6FTRt!uljL;|mAhd^x2`RB10um-+E2MsXWocBRrKM%! z>-anWLEd5!8wtMb#}~VoDop^Cm3B1}u zMu+uvT|zx$8ImyIpYzyQl7EiOa=y<)EN{O{fBmNAq5$Zo3~SB$r~w4whmN7JeGgr7 zmu#s)Ncteb&)i6KiTzFswZ(uEOeIG`-MXH6?`Ux(WZ|eH-v-xJI_goiiK#@X=)P^c zxBs*|d{DmxlrxH%9q#WGZ@dwgC9Uz^AS-k(1URaN`x+h2Yy;-cRM5a{z(g+YPT-^poa+&GeNcyJm^9 zCQ6%UTOM}o-4KGK$P~4-PC^uRlX@5fkN*tceHjSPAPM9zd{JY05gra+D`Lnr`|?uu zM}+YbnDv8^f50(zhrgzd?x4N}Uua?d3AJQrXXi&T$@Kq*fk7}1A%~>kLv8)xh4N1T z2KuuAPFT(6Q3zdwQXc~NvX*V8gaAD%pD8-QZy))+V^~j>SnU@Ccv}iuZ;1#!fr2UQoaAl1`_kphm*e!HR=m$B3veDw z@Z?i~`Lpd+iRM0rRCp|Z7+(K7;C99GB@M4dnE1VzAa6vAq%sHG%P~x^L;c}s`S^VG z900CRG*wTjDd!l$o6X4GS z5#VX1$e&4)OdF+=av2Xt&enUTbE@B?mgCE5vY0lktHFQ&1 zGTCYvus3vG?NI{qlI|33`~0U-X#b1ZL6P%>wFI*@)67{Hcj$jOcK1kQ-YxHu?O|Q z0Vt~zjYKuz!YG~&L=aFJ<-1c9R_FWe&`oD!VQ_c&DtKDtQ8UxELsx}=GI*SFU{v}K z)v$ytC-T@5wLD-)@5PhuIMoa6?92z8ggH-qh>WhE34<2o*Tx8HI-frA24 zdq^h7tDR41X}kSHMP?c(HU+)mjaU6|yzKwi=BD(@(SSviMm;>-TYki2 z2WBKe%Wt!lus5w&e&ucOGv;R@Kg07~lNo(mpjoid2bcDZvgoX=@6jP9qM00lqsao` zv_r`fC`=xQ<`7=x7QgN2R_k-5=I91rX@)Z!^`2f-s3`PtZ*}vR-1=m4=V3-n696vnh`GG6-ITQAW!D5G{!zI~LUjCj% zz}(mH1W}E_+VhZ#yu5OTchdfW@L0{umX;*WhA&^Z$`dlW;r(4%O57D|1RaeipfQ+_ zmX_#_I%?RctzQavwrEcV_W<%YtRG{?lldLsXV~zb!YT&dscn)oGRrrL z5WECiMS-v*WZ|fxaJXzO7^IQ+)KZZ!du4qSPXq!Adc{CRb1mpo!BQeXzQ+rZTQYYf z=U9k=a^R4T*X5439?KDfhJKn2K)=_$7f~Xo7q=iMpXx}#FL^?ok(f`t>&^_!|4hk^ z6t%6a`hA$_^LcVQSk1)kI0B99kCqF%T*g_#VB-x-eirf(F!73`2`L1Hror7323hk2 zfHq)(;6}wov_Jp#S$l=|92xX!3;9g>;27FKVARZ8ll;xs+ElS;3eG?itqJVCLiV^p zNpEvFIHzX~1k2wG=S?`ErSI+S25ydJ6J}GnGvO-!(=W&@v?Ri!Pb z6KjhmO-m!S&!T+TW`{m;0@sMbK*T1bAZ*jY#t;+|dER`0PYBqm06q!d7iekm>XTCH zZoH^ngd>SxD7a1`K%S#!k$P%qFG>e+fDX4F$jwm^b!E#VPhhOzC(pv)8gv>TYt?-K z_Ga(hEZ?vVh3?!03>ZWLq;+#p$XTj8TR}dRrD*SBM3_EZLBpQMa(}ui!18Ej4Atp2 z%)nEx_9G{U3Jf+UVyaCWwlbKHo0^`U0`oVNmG3lwmxBP|F)V)_;{u!E^Dm?$_5Li7 zy!Sp)?37J=xX$q!$P9X z9zEGH=z9mL8j7HFK9JCQOuHA@1?7vV`JsoBbFcF3!SQt^CntWS;gc#8uv1M_=H%<;B18$B>aa7pCmN9L3OS z9zo-Ah^i|h(>%v1&yhk434U8o4L~!dFfOygYvI!0)heWKeb_@_8-BU9*r6I+-Tb;v z)ehj6`p^V`@xohnT=Mc_Yzv6t_5vX`x_~Iky>&c`{z{?mkRzAI#{h%M6or@OhczbB zHikx7)e~PDn^&kw10adPzAXrXv;_d9n}@zTD2Q(n5@`;`4lcibl&%d;^ zTrmDg*Z_SO==ofvB(b`{#zvqJdf8cg_N}YKV!n`nay;+Lm+;wQbIKQH>PAbW}jq_XmZ=ZEUGI8k`7Skr^{%EFno~Q};3WX!al7m$!OCMjlbm=TE`AYB^TE>(2DA`V5&PfuT zgvNzjruKYV-iWD{RWKZ8^Q$kj7bRuUBqN$z%&epB$34C~^6PwT*&O_U9ehvPx`J-y z@W6($KEdo_)FT3n!1_p4S2i5n_t`MR0kz+74StzF2VUO;QEL~fJGyeu!Is1Q@4)T< zEe7NN2i~QBn>qUbU;BSCrKcOv57X{t;%+w9IJ`y>gzT35O&IN#`sRp0^m@YHZy`1e Q{8!|bf|`7utm)JL0nevx#Q*>R literal 0 HcmV?d00001 diff --git a/test/golden_test/goldens/restaurant_details_removed_favorite.png b/test/golden_test/goldens/restaurant_details_removed_favorite.png new file mode 100644 index 0000000000000000000000000000000000000000..e18c0d266f42ad9f87675e35161eb543fb8ca5c2 GIT binary patch literal 32912 zcmeFZcTiJbzb_m>QIR4FB3-FUReHw)V(7g$rAhCd0E!4wL_$*#kX}RYU6I~|P(zpA zdnf_&uKeET%)R%oGw;l~_kCvWamE3Xot>Sv*ZO`xZRL}yvK$E!4G{zaA%VVvO2)b@0#cx_KxBavuVfd8X<0eRJB= zQ0r)+V^8=;D8VyT!`%5__KCiWJbjHlc3%s6+lwtGN{lSOWfb-{9(SsJ@^wT``KG78 z4`n(?nPv17^)?Ir*qLKI(6J!JFy$(>@||p~hPS_Q1+MV+ZElw4;!PJ7dqD`~_;;4& zlf0qe{1{oX9NQcYgoQ+)7V4Iq?#u`|K-03pw$uTfqze{8?>UjI2QRK)b9^vv^#^ za`G)gw^ZF1eeNA)nc&aF%v|ZUcl&64M2Gh%fOVuagp6_UPg<*Hu>--@Oe1@c<#h;_ z$GR@!GPN^NFnoQapg_XAVd?K*mtwMn`S(EswudSif{ruzzIu^~f^hnJr+MB)3F|OY zMydU=U*ZvBko!L+$-Wj86ui9Hoo0dBwTT z@3hQE;<)fLy<|3c(qc{#Z*F!e<(eXV#_NK6sc)m8dY1Y=G*Qs@vrysekEVg+!9#2Q z3eO$m)02~2D3ZX(`42|0}C za_SW2`kn6kl=%wB@fdY8l-sWGD1ChlRdMq*yhg?_R9Cq{K|_;IM9Hz5m0%K^nwpA~ z5_Xu%TzbY?VL$01d22UNzsfFcxsS1OO!~ysg8Sx~)>R^kKj69rymoKZ*0N!{Hxq)S zb-wYvb8&S=f)TxqkLH!&yc!tsn>;P{n%NnZEc73`a z>NCA~5fNo~kGKj$UuyHygB9LCozbnsKVB0+huXf}!i>W;tL*gX#XSr=KGToQx5^2? z+9_%;d7p;g=rz8y)h-^ab^WP3!9DwNOTB-F9;?H)eDkTO#np)U^~ zMHo01V|QDl+&9Oa8~L3Avz1cQpP2a%4d=zMK!XTjg`J(RaxRv7ziEUgoTq;)&$iyE zQtD2XZYHG@`Js`ctN{PaAerxZt%*G#AOJVi{8mcHogRO!{_moKe&g4JKYpAk2)PRR zLg-2PxTmbbd4Vm*z-jkXd}aWt;#oc5!QeHAC+IMx3a@bA(9UrtlQuMoq+u;|b$8c_ z$&O@&t_-l#@k>b=_XKH!Df4C>RT)C2#xs`c58v$u#TutN_o~3g{$#lTJuN`xcqq zC+2?UwvIX6cR{VBV2x&^JT|@hzVVMSc%JT4LWhD6sJ3_O2_Ts{^+dYyTzUd#%K|wA z?vz}*bBro%CQToXW70D+cHY+0juk7w-fbzHfc^f+7M>hJRl`No5o#Zg&wSMyPdhJ{QS8h=siSnd4&Qp zWku~m4U?Dh!oHxF@{?%`yE{_cd|3p>IL~GzKYzd3D>E)UJbcFAD$wV6y?_eSSZL)d zkzpw6YSaI{w$6FslB3U&*~(-6$>JmRIwq25tIT2nmkrAUCb_Gt zZ$}DDRPgY~rUs?(AZzTc`0=da25<|bI=7*7@0)H5?Ick3Mj!X1wuID)4WroI2PRZH zD`c3u%bnKdYX7-f%RU+!@og*E`C!i3WxX0ab0|x}dak850J--_N#}vso4-3p5)ep9Z5?}~i)7bV;;+{rkhRZ&c#sGgaGIA)|7(l7LJTow z!6$?~zKsXY@ag~R!^)<1Za^S>#W$&VR>$|u_V@PGCipC3=v|k(De1-i6`PuxIJ7Ii zmYH{bt#BeFguHswUigh;&O|jh?5_63N3sIHEFunSUHMkI&tF>SzpzA73u{|+CulXj z_s`d=u9A;?#Erccwz^Vk#%KPSCoL^aTb>i<=f?v5{Pl$R8!=?=as%rU5P7y2LNVsK zJq~4HU`Uj3mk%@hNX(EvhTW;GPYEihPhxo_ARw^x#Iy0Ze$GjRf{H31 zJUq-~WRRLjR)qxAp3P`Qo>0-`kMf-Ux66m$Yz7-@S*+1hq8<(U0**!BkXGxPdHkpv zhoD43dk(0NYfF-T&1!Rk z`$}hId&E~F7W;`h*`jR+wEap^GPK?6)JHt>n-~lQ`}!y_0==YTA`f35%`3Z6^|`F|Si35C7HLN~zlvadE{5Jxoo>q5IJ2Gdpx}aL{MIjY{D4 zkc>OHvHUp$iq$YHHt7oqecpzX_ee8eapR_$u+Y#iEP{4_o;LGdOs`3|Q^Kw4;=P0}OYrvg&hx2kX2|5X>K`}RnXcAJuJ_Q!!@l3&Khj>XjI4AS;mCnG zjMqGiOcIPwD6S?tp&DM8X3znL(1`ng_t>0z(ER*V5L`ZVDAC<^%kwG&#61pxWj)c&o5(;2_rT>oNU(%7X>&nUvPG1Z{DFNS?UI#DAZv{gi`1Dp#Q z&&(!e>#?)^j7rEU&MmkXVFN<>9ROU%eFE~aO?~UyCUVQ zckG~|A4w}%wiAHqs~#;gNtigs`YT9y{1s{=2s20)_b3~aJ{U&gUZ5`$kcRYt`5aZz zJ=xPP&sIu~-DT}K)ysA(Ul3jMc}rXuyxrt6+2*t(?rMLU5Gy06u>Q87 z_#mfn%dfG>y+<3pFkbSEfRl$qX!BfP1eN;gDRX?dLW{@5o3+X*+_@7=xR; zuMM9Ttwf(3r0QpEV^&(S6_fH?_ea`w86X!yGAiK_(HD2>GC;- z=xc(pHxv#)vKv(W$Yw;)`WFi~7FJ6b@ML_(^TOw-!t*#4eE}}_;XaC_Z6+c**2yEz z>!t8vQd*)YEE|+17HFb~Hx6}aRmxLFUU=KVy_U zhU{SLSjND-KyRWD^aj;EpwPf6D*S4H{rYvg>GbMo!dU#I%vrJpi}LCveqF!bJ;N{J+YG^iBXJlOP-vaP6$kv^wdU7R%#Ch zzVSJm$YEtQEE09-6@d=@d~vN3+u{#}S65emjG{|>FzbgXDfy5vj%FM$P7-!R?abOu zHYqh?(4$pblZStAUJTcov0sfR1;k|{c9yppHdUxs-rd^T>Tkwp(&U$KjHo-mi7Ds~ zB9n)A$38NPB9me){1r^J5pCJGY4M4-V5C@Q*4i%J!yeT=Ffh<0Z82mnd1UTs)Z_%c zhThisiGS6>w|5bZY_b;zb@i2s^if3P=J}~94*shCe6F18HxSJ%mneOM5wt|oEmT23 zGu4&_0#!BI7ETotVgKhx8cW^_3@Lo^uxWe^+jvEntt0~UCo5jZ(M@vPDW@3%ei<(> zEMyQZaprahX&t^oHZx3yKe*BHU2voL_)!$2bT$}=twX-06iMHq!$!OsS9(-sb%5G7 zXx#K7UibSZ8AQCEUYKn2KAIPm+=HL_E;U^|%B$QMoxod1pWI30TPr5}Z9jQAM%~hH zBp%b)i`lF#w;9eY{TO+V2Z}4U?VlNQKr37eACS@s3ZZ=kM^Zj6D(Y|a0K{~eB*|^} z&$CE+VeQE(N8}j^?dFl1ni~8vES?1n!?;P#(t4sgs{-_FLFA0wg^ z{w^%7tvymvQIVCA5sBnBX=+&RPi2SVU^4S~Vc}tM%xuP>;Enp^Y?_`Y9RMn#z*wP_LQD0 z^2laCcB=ZgMM6?i(B=0ljQ>tk;}&OczJzX@vHzuCiOXW=15eLm78N+Va*8S_Qf>e- zkoW|Ax$qBTf$c3(RVTN`BMde3cU-t;A@}ii3A(kOrJdRc2u2ymU?zi$U zUv7cv(%IU|+3JIH-q-s0upmq{> zfSi?5_+;JJ$3}2s%jyN0+x(`t03X6kBz|d<}g#^CG2Ds&g+<)iTY}O|8a?>QqGBh*K5jf%DF%)ZMJdMR0C*kIRq_$B~T>U)7T zE-woHIJr@55?N9`#+@)YTUQ9szH-8B0;fSg&Bemojm6SC%28Uagd~NL8$!A!e&}Fi z^9p9C$!ZJhn!02%K5KkA95an*tjAV-W)xjM+zSF@u3y}A9wzBA^Z|N&p>F0db*WHo zt&uHyaqeJP{S(JqkghG8-^!6kUq4}#D%GgTOQbzE<h9AG#YdNWS4R8RabM8Tx|7gBX<@#u8tK8NCuYO6VHEc~i3t^vBt*Q>{HVDQ&HFvMKbs)l#<%BTOE=^LT2r}CTRuw< zfGSo13&lvR`TF=|pU5-=>;Xl)p8bB5^8_?9mD?qv<;xlh*)%;D@G5Y@@LmENB=ea`}eQg>h1$Th8~r;%}M*rvLiYg?f^b9d`W^U738k7tSMK40gx&Ug) zQiy9>(GkRZHPNm_JCZ(PhMs%|Fp@rX#d9((*u&|lxOi#SxHSSoNT&oEtfCJ6%2*b} zb$y2b&4-OZRDW6rBZMIV!UwRi_6lV+3RpU;6p+FU7Clb4mbsxF~uy@>~wH zik1w@QQcl7rU3lBijb|Iy${0;d zOioWvvwFZt(clwK1=~%OS)Ww5YW{fou6{|J8F?;_ScwM;73}4UPW@ zA^d-B$m-cQ#}BEIl=Sqljt#yb;0c0+04bxIB7qe_h@XNvWMS~VSavoeYnyUZss^$rN!uf zuJ&<&oxfWEZ{tsG2Ak5i!mnTN$;udxh3>rMU}IaZ+JGO7P7+Yi(b>&y(miqGcUc5S{ejh$Uh_;# zozcuA?p=Gw$2tkhMu!284e@{XNa>|Awe1Z!tD_PUtL@Taa+Kxa;Fs6fsypQ5X}7Z! zY-Y~A(R2#2JbA7w{jBu^Pz|&|ueAQuDi*mA35B=e6u@9i%71w7dP2Vy@^2 zZ7zc%hJiy>L}KM3s-So+Z(GIscV{&Gw(;7x$JX!Txs1}OOxBC>b{Y_%lZ$Uzbq%rl zT=WS8F@|vih@t5HCkyRw#~AAmPZLrLOt4hAn@$l>Yh3PusFNI2de#%-}f{ zzNBGu6D$CC>;zTnT9%IS=wH_Gt)Gi3~VCnomRGMV({D{+tQFR@PXr?@v5&eO<~ zVyJiELb6-w=kE;OUiYo|ASH@a2M;Oqy!iHjPqwAZq9+^h$@Pg8Nw>d?H*)yD4v(_3 zv$4H2@xKhl-A8V{I+lqedsL-XJcqu0R_K*Dlh}TVVfe z`;+%3E9<%3?K`v?zk+YFPgnt=flcLGA?cRbYTov=p!L4FuaUWVX1mh8oREBNtyjCU zK-ktH8_CT!taVw7qOaGiQq&`%eR5vq>MBBqsUqxlxU>Y29AAy&MdEwI5kSI61cBT>9K!i zNGOgfz6c^ZPXH#g&1y*+%@aE>xXG9B6Dl>JU9ecM6)TKnthnlzx#ii6=BBkN+%1^Y zP?48E5rwVAB?!8WSLf?zg^|)puE$aPW15i_m8LC zC}E3CeS3<*7yvgzSA$Kts?Kfujb16K?Qy>}7j*PfMh61tWni#VR?xCvJi+=mSGY^^ zbqXB7F$JCjGoyjR*K`3t)!yv8XS+*fq7MudD7wb%CDyLeVFXq7h8}kgZs_Py0XgpN z-uoL^di(gG%!CV#9HC|4^2QIKhN-A2hYu#zEPAw~MV?|F(_-!jV2A2z7q+fX<&__` z9%rcgMPxY2=vgU$uR1?JFI3tP)(6j?%{7u00vUM1%)@TlLHgrV%|(L4Y~(#_;152Y zaNnA&td_zoYV?G;>(Yz6RrsJ+t&0sR=BO}MUW4yV3W0@W08~rd`=FXE4B)9dTLx7V zlkq^2(ZBRng)bO2(pf^wn0^)M#jq=u0i23hrB&1Zwz4~p+e+Fo(+#sb&a8b5lj@q0 zl0bJ#Vvn7Yyd_730BhFQ+g1^Z>5gHKYC1o^iI^=h2IHxX)iG8FR*KE8Q;_CZRwgE9 zTF~K_7i@nbC*Lp+-gy2e?FBqj&Oo3#A&y5&U*~youJN=FstT3_+z$b>QR0hIvxK|c z#+iu8Dx0Nzt@XX$@-7D3-tkgYgGG7R6^hCPZrz%vDjo_a2(Gzz5Z_v$1B2-j$F9Nv zRo|Yfr6ebJo~)(hQdL#|rT0eOV`l~-)#$^n*W^B_4ZB>TLREOjaOmV00>QMcqhoTz zcBIfEU~6m3J~bH+%UbWb<9w#~3TTVzr#F{3fIY3|=hqN_l^fapgA#oPT#|f6Q)=iC zXiw|A(XBo|%mW*@e|7@{WE5eNbGOf6H7%bEDqr);4Eyc^EIb>ynFDat-8Y7{iVSOq z(_q(*eAi?_d6Eg(oI$WfCcT2=3QK>oSizg%FtkSkkBNG%iv=rmqTEUcyfdy-`A8sN z7#r8RZ|Q$n?oG~+@ZQgrJ-7>s;9p+A9IP1hf{z$<{w!1CnGP^HHvr=9QlQ3a` z(5u&0N&*Qm(4k*6rfg)T`ZFLvW}dWYk<0t@`1rD7mkV`vgcpral8cj0PTt7YK zkmKLzbLMgKI5;Fk0nTGsbHAsI0?2LP6+LZjvcM)U9XNrUXT1(0q!F{rt+JbD3TaIP zD8qWrcgN=M;-^FrhxaTKJ392h_>Q-*?jC-m-)LEhn?Ufzm6aSYr6-Huuo(MAdo61h zJ4j-@Y{wAg%txM}WotIin3(xWU<&S~p|kfafRVfXW1sR^S$`f^Iv!bL!8b z*6<}-IcSCM#t+o@G7N<>9NYkIwi`<6V)a(6}VGB(zwFqxjlt5FlmHs zSUf#FVJAQD(@%Lm6?I)!bT`s(I6X@O(xzci(T!P<6%(zrIhBu0ef$jg^Be$O8T%|* z`1)mhBmql0Ej|iJhaC2dsGWMzK;CFF$9+V4`(k!S#EF}v^We!zxwTYlC@jD{MgOR6r?8jx#j@R|;HikdRcW(|+OYG;*egH=AD=-#Z)(q1jzF z=rU$YMb*`lGcfQ73kxrG$8j2=6H+d_rhq^0esSjR4I+@w!otGT0TOO#Xc+R%Z)px| zomchp@`5Lz|1K=Vv8P4}6&e+TKEx>|reEv2qU^y4AgvmxYkZ4KrzItiK`3RSIWs56 zNI2fwdDSU7QVJlP0qvIvKV!AH?@^hU(o3G6hF3;5@%t;VEX8||A)OHboyy?|!bs2S zW0t#4@$rFs#UKOcG}nUXzB8KaWx@3Q9Ug>_z8@sra01A`Tei)jcJ|Jf%%nlJV_zaj zp!gTbq>hUee4Kj1ZxO~{(yQtM3Do z52My31tCw_;A{A!8Dp*>$FmHMao%USI9*BYDiWviQ-0BODb|<+M1C1u-fn6gNNM^d zPVZROfD7UCW1QgF`z0i>mqR1@U7x{Y74F1p)t!_^LHjd-9Cun_`+t@YE9hMAcEtrc z#i$JsnLQffj% zjA4(@Y>7y2jsQR<2n^8SJXV~9{8fiYI z7T}BK0z+{v+A<16)o8*#MV2yG0#t<p_U78eO+pac5fu&Yz>W`_>!J+%(N7c?aj|rm*bm)v^ z1MCq<5803|q!V??tf7NA1(+uWDkTdkk&}~i=w-)--Q~>&4bWz2u?wCFT6eBZT>k#< z?iZHYy1I3MXi$?W;-39${=xf{@Xcn>uh3&F1E~otjpyr}Hp3OAG=lbAkLDG5L4`+^ zcr*galnzo|Z%;bs%eXk(mLP!`W(~vNPWBdTri&u~(MtXN z+!j~KMd?Uu>(~U2|IEKYqd_23%zHf(hVA{v5B)s9ylfe;wX(tvbYY8pKySX8+a;si zE37YGB8;lFlNoo?-^hmN8BKaT;<*MfZ%}k5tOCqrsr#EkvY3ZDuJabzfwnRsAIG6R z#2fBE7!=2-3B0Xr<)nNdgK!&{=>oeSjRvu+(L-u}AT!`_p;D?S^T>il7hIN`(Ke5K zHgXsYI18%`FAzuoJ|H3`jc37eKpcPp9{9g*uxtyPN^*M2fFwH*gmab}eUAVyiovzr zt~+dNYYYPqZ9P0myjJWh-_HDEI9}dxd}vT*$6?rOa(a_WH4mNzvM|sE_H|I2aR>z0 zJ!~rTIVB_vaiH)Uk%bn^kKFymgJ^*A^egS+{<=U~F6M93&?K(Yik`loq8xkRYFK!S zk+B$TPk5w~BGFY81>%SG_4R-*$1lTX01E}l640)z2x!1jJqf%$;Gh32cO|%6hjIUs zeqoA)eXK?`wY6FIc%jNVY}s1q&51ZkUo=ZcSE_VCS%-?lKMN}?;T9gGM&sYABJ+uv zn!qmNY{m*Q=H})C1PCFf3>gF-e}6;mXUg={2Gy`{i6Jc#FRu|pc4y!^T}+> zz||U%%Y6lZ9~3lF?#WAe<6%CKf7Y?a0ZM9W0m-$IsUpTvl@56T1azC!1mg4_Kyn=F zNg-b@ag~y#8^ltp9A}GiQvBo@7$y#n{y0`xY}`#2ch}Y{Gau~M;>1yVcqZUwZ;uj3 zaFJJ(oPN6@Ni!}&SK!eo)(xUC`qefFCfTsn_DEXX((>3wf0aJMxT7J%4rTSuZh9VB0Mfi6=r5;@`?x`Q?%dMOj#9Thk~hVdm7&STQV1r>8y3}wlC9rO{-LPkc0*^t4#rOM8X2dE)Y(*dvGIE}`KWWB&R z=uE%dBa&qeN5^U|TXC=&1g;9w+rq7Pzx=ENX=0YFI#P&}qj^|hTU%S6d%ciPy05UT zVU%idisVR|(Y2f>Ak7QU1ch?EXa8)uapB3Q{iVJYH*9<4E9lS*GRaI3mC3h`$@WRx zxd}$^{?bt&r=z2z{bYj{b4b(|mPW~4`jH|XInbE?HJVJOAyIUrA0ufstCfv#!^e9F z`?>b_1{9b^Usyo;rPa8~r*B=HAqKuak`IOBqK_er#4dHX9U}P#>M3qY2P_S$4oZrk^S+F`e?z#K+jcIqT-4j~ zKaN^8PV<^$c#v(9gg<{&IVN2O^I}LzQ8A*(xG^7`w0lJGwCbgt+{W3_#{SWf zlCw0J8j0YvMzt=o03Nt_dR8ZNw6(2)?H{0_sisJHf3Jet(?jO^&A(CQDfGQjXN-B~ z3cUje3C=AOV*_Qlx=~S*+e|%1&{muBq3ZpveJ;JST+^TLyBuQvHSoL-@F7k)|MrHs z-uCeomNiSaVSqv*bEM`2%g)U?Ex4?M;P#trnav0*V1=jts~lP6DnR;J&1wD_NSSCG<+#cqx>;mIz+N3?*SL8)65F$2R&wzap3Ye$DteT~dU*^tt?m1=q{HRZw?Uz%K>U_P>5d^uN1}* zY&F!t^;eMNa}Ov3rQ8mY+7U4bqPn!{)qui;aBRCOE+38SbX=u-~?fKJ)oivY~pb<7ncX+zeBi!#{j zq|&4>$GM?6oW)=}tzHXj&;-cB|Ll|1EIgZ@1+BUx6c0o z_d?L_x6{>&Dn&E7sAv|gd|hZWmu~JIxzD(zpC|@fmre`-YJL1=l_t=o6If2qPV&L# zRx#iG2poD}!8HEB33eb4=3~_|xeh`HTjO;`jlSr3aQeMF9h8iWyikDVM#09DVc{1| zqg8zdmG&4RTsMPPtPDu{Y;55HarFxb#}(2|xV{B3Zm`d#9sBkYVw$K(j@t?h!2831 z%X8=`Aiua41cU`O&{hOp(Ol3WkgdWct}FctvvA-am*!f_Nzn#_0F>)=K>pVNRYLnW zQSVoBXccCH4Y5!-ji6m-%g{R@=Z&-;ZP;$rxqAv8QyFjOppMo%I|g(>uu~1tCsrsB zvTY`_5fTy-n)&9BKqa$2PMO9b3YVpB)+jp$oGud*B3FjNg#<_PEjYpWgG^qX^=UUH zJQM8d?3$f50cO_{NJoQ>d|(UGVbL-vgssP=nf*Si#Du~S;P{$lGSD3NoPqD!AScfP zHL7Dtqr3;+EI z_C$WqBA9foS9Y7Lq|d_=w;#BY-%;-t2cRhn*lCJ5JMZDGus&eJ@vsNj*_q^ykyt5H zNPs?tOSscbJ)$QMWX!vobcljVNq?DIZcg6g_h`RuCTtl2o28sccpSf3zsbxZ{|W6A z5O7#;WjL}mQ|C6&dvM{m9pc;XJ9CiYJG1RN;M?EGE@3G4Yv`lG(fSY;aZ`_3Na!v^ zwWsnf@FAXfubWeF>r-6fU4E6a(62%%%dl7xI$t4#MA8WTiq2RYSfCU0yH_M=ga;u- zljiDFGl1B9)Df-F58rABNFbb50UuIi)D%`ir(Y1%XK>q2vIgkk1ya%!Cnyi9$$I&0Dr%c9Ac@=Wf%z1=*lmix8S=#Ji3N(nZn}yRr1V0=!hSWJ9+bd3 zJcy|!bUDUA(*{p#%E-z=S9MOxe6J`7UT~ZT^OZn#JcyFl=&!cT54vZ|S!ee|));YWi9W5*(&)wvera`v?~D z3DMn^$JSA{W5sC!vzJ3^alye?KhsNv0bB0pXwf|`1R}HGPGm&H5TXEKW$?SBqcz{@ zSuBG3)5DPe$O5R6rZA)oHAHmVwhj+d9Gow|`JEf>b+k^&ru6l?iX$%tm-=-eEj;hJ z%biu1BxD_yoBNQ0Q;!ZA@Qp`lz;2pRIRG3?*CU>u;OJO!wD)qY%;HazS%_Wbx6oJp z5kS`t&c>G|`}Uv~b~!M@0BOM-@4SBV2EO(x%OT9)64|w^gf6LM_mY0-tqRXg*Wi1O4i1J1Td$89?7|$6HWwWRBvCCco1;WE%b1;eo7| zmq`Ejvzu3M-tFDWCMSn!6N-L#B_o5iM-e~Rza9}9YW@lDrHoA3ZwNCJlir&^a`I@d zCoQ3&uj22S%E+)N5I<&Og0m9dBPZ{=P4K_>@J;NtbWN0yF~h3#T+);S5jnZ_Pl0OM zFW-iTH9t(<{0Y{&M zp!xJ8=2_^cPijdyst+HVq1=eiE$>G}R!Vz)-x8(;a(bWJWynUUrtbR8TPCKnO=6A~ zWvn|5LUJI%C+$6qS^aSlh%9 zIdC`lUO&b|@7*#P?|EFg;!rs~jK4Xb5u!haAbJeeH!$>;f5geim_H=8yk6>FFzQs| z3HfqYV8*_2WVzY<;N_P0smoGjkwL-(8E{Xp1&QKw8rD4Co~a8e7%NJDZ+4a9q3YAb zgs)#ijeI@w;v82NGTf)LvkA+;$;f1~6CU+D*w}>8@CXiPgZFgKhnch>s%XLHmAq7v2TbWI{Xg&( zSvfd}7TU3)pcKp>n&gZupQ6!i-}TDf#q!Ubu9r?HZ1HmodwynY!lHc{O2PCCeAcAV zeBJk5Rx`Jf@N{h$zs<1IJHWb>k0?tX{y;ZC7uawE2Hfr+La>ug@*1Z-rqN=(9N&yj zp{wP5VG$7&i9{5V<{uZ)r_wsU5D0LH?(sWtfl}?XdGe%k{sjb#SWCQ85|TvN^5yk+ zv;J5TP+V6hb9lM9k^c6~Qc?^?zHY4moQ!l|BiwvZ5Rc$1+PtuzyWoC0@$8rctRTeK z?a;P@-u+Q59e=DkeRV>~J^G)61$i$99i!-eL+e zjH<BcmxT3|Umb?bDB^}HVL10{nKVx)Nrpy=x)(?vRD@2^!4L^%czExlE-YgmQ_t)Q| zf|f_O4D?4}+vlPc`)?z`60PxH@Toh^%gbBK2Am1ve2w^CUfs{uZJocz8%X zUu@?qDJUt)PI}CUIPF64kFUMyB{M^g_+t9)D_4kunYdfHYzdS(@iMrKv-kP&mJ$+s zZjnbDQ!55a`W(L60yMT3bwDfZn0s-T2~s&LDB*E_&rW_k{Y@6{pLBPH%*;#(Bt;6w zah3VYC3_x&luzii@9;n|$+_j6v`Q@fJB~@b48Nr!7XhBL$ZO&3P&9P z(Ds0hjSwj1B7TdH^?j?L)xEo~TQji(Ur)migIa)T_zOTwJP2sj+T!ZqJ7PL6t{p%4 z(9)(rHCR42X5)^Un0VcJ%t-S3?h)a>K6OLJnbeM zDCM)%VK2LV?{BM}U6tY3y=425TjV?mMjuPOe7z8Sy@rUl#PtgddY~dgJ@2;JouJ^2QJ|JX}@CpQ9-H{G(`cNc4|IzZ5FErOEE?37y-|*n?sk}=^ zVfm!U$t|`_4ixBQWDaNdi%(fenV8a}{(ovx|9e~D|2VsO;v@+qu;#e2f#LvO+ zUT24oAaj1Z-ouWoDGOuoLPIOe9^>KM_*hN@fhX48=DG$3%mGd3BEH*P5Yw^k>FXpUZE4KbM|9H8bl}yCC+_!|n6~aI2Cgx! zn%~l|aJXSm|K_WJ1)s;x_|-di?p%LRavrs`yET2y(z{m`>|UZM=l*z;inj&XdS|T2 zq;*TY8V{0GW%n|5rV%*;I`8Y6QMX`QB^^*}e`s`k#?^5M?qHx<;6v=Dn<&j*Mm}qq zX@mpyuqznF7y^6PLkf$;2k+?B% z+ZwtGd2H9II*y`z;pQd)Ktdp85B9`-Qc*@`-JIG~KI=B%de67?E9X}=@ql3d^w?oK zO_Ku;LOY6(0}ms)#}KwU#OEHjI7GAqLA8y2WW;9lO+8CK-M{f{e5F}FjbP!)8-c#n&ZPvr)QW=@p2YRFr@)vs&$Xu;3uYa#bdtuPr z0OidOwiDdE%Ppg;dk-?VhRg|#in<07aB>XHU45vSEJXr5rS1~t@+@Kbe9}<7eqMgbNe8s~kp%o}vbIQ3s;{Z9fA8Ufw(i03&|}_+qKF zyr+XNEMGaKVqGic906Dc7F86e_ww_Z1wcRnfD^L3yzJvZ53v55I_A5@iR?B!2j5Wp z6X08~$WHf{derEF|2C>&3+mo1vBULf@RRoc1Se@FDG}~?C(KTqBSB71O@W)7+1psi z*F^#%dclZ&0JBwz`CDe_uFj+=V6c-QQ@1t6ts)~s*x~f?mMqckHsP(RyVt4r1`fr8 zhO!&$qqUb^x&-d*gKSKg`qJ^&_M?hKgV4vv3) zb-aGV8hh7;$A9pa{UlUF)ecpE=G-jW0B_S0}yx0*{Gt1{<4M z*laE<9lDJ+TT|nIUK#)N;|}N%h3H(h0=DH#F)9E|eT;NKna&@{{hWu)S*tX*2fS?! zmZYh!uD%QAm5TcDN|j9?$5b7RvpOlQ5*(C&WCE(Ufc+pbV3bEqMSwr%YBckpuWloK zr%|Siqo1eFN~S=eybiV5)zvix8pMfzr)gsmCr|`+n>K|Hw?`C; zk8GHqJRxtBzbmJ!JI|Jfe<6?$>JC?SUNDzl`SF(lB5fX0)4 z>{ITtwx6Y&E07vQZx7$Ug8^`#N+Y9SGDX^2R%8c0b4e-!G~6GBuow3P~VYo8-}=b1wW zo6N3RpA0#sqzX7z&Dss;YTfDT>KdwuOcF|euOYjMYE($P3+N+}GG*40-`lZmqg{s` z0?6B`!W$f-I_<-28kMM`4mUX3D#Qlr{Y##V9Xx4Fm(fB$z z_$7FBJis&{yLbyY0cr)x_KRIsgl7DAaG(O5UkzMWo+6kX?U7h=Eu;LOW{k(H zBrmQJDcN5enlZKP{r-+HlJ?i{DGDK0yTLpKD-gY8L89@18dQ2u%H;~+6u*X0L}>R2>Q^&zf{ zei!#twy(=RB01YOsMy0EWta5ow4 z6FSQ89DhM~7^=X{&N)qTVaI93v5$pkCD})_wZ7NlzH^#g{yMdB|I8pxSh+s@5~SCa zVIr)oSMRVX$>?>sJg)AFG6pdjj^nv`0zZBy2)LW?wdUWiPGB~OU+8YbL<*L$ zasMb`AzjO!&snnk_d9?+d==t+*(+MP24>=Ih>VLL{1!CtulqRXyy?z;x=s2IK+}A) z_e=J9nrbNc=9BQu8X4yuQINb~k(5nl5hUjxbDw)p-|ntcb*sAi{OVohkG;1n=9=@H-x%W^ z&pW<@3>N>BNXvJ|`sV?ohri3yI^-pi+^OH!RhoNKc-taeie=_8^)`~)DRn3jsz{JEv_s;@aV*M;Zw(T!c zwF@mLtq5d{YF!oJp`t6GLfb<#d%W^xv2|a;D}(mk73z-MvILN1Xfj`1?kTxRbo@k+ zESuJ;yDbTNuLuKH5+s%2Cuui!!}|mXp2HV~W%^R!QyVG#Ew|lB7T8(okQP`4w!Ni8 zys!igUP+Nw@}c)jE0YdVX_Yk+KOqgs&A$KHI4}9Q1Yu=w=18^Km>;-n=$>?RpFk$Z zuvRxdCO(cGekgTN0axbZ<$Yo>K2Ln(1k%*msV1)^f2&vbsPZ;KbEeCLhW)ZmO?cR8 zq$S{xC{^&5^NXfAa?WnxzHQ=TGh+MdrS7Zi?%l_2W{qhi-SE7+Gpzj2L;P*#dr0kL3rf^$nM2mj}>kM$|j^kJ54%y}v1;Y>-Bl?7jlvnyQ%N-II8*Rc{4u*vn9 zZR6s~kpP(A+5qy~?)p;rSRKX*lo?;mRq~M1JN9+%>H;=Wh3MMN0hPiygmG} zxw+xP{eER-Wl(pd8W=-CfC{JSHr2~+npKY&OWl^%#zW!mFO<~Xm-I2~kJpJ4u>_q% zwa{Xa3Xv(#8x=Il5ZTDOzjo>-=L9r)4haaH@_ti{OJROy@4Naj|E$QnI)7trq04g?QHQ2)g}4sP3v zK~3qgJWhZN@0BQ_*;I`s`K7}f1c3MxAlsgM4=Os_)z1?lzz@BE+9D%cR9yTl^0P|k zO4!j3=Yv%(IfGu)kV67AFg{r6)#f$YeX6cttRanVX7 zslm*MAPtUVBd#6O9kJ^8N_Y$AzFEUFbA~nx((rw#xWIkXKpUEiGaJycB+4GhX@X?Y zdN}p6ZtneXz$+UY$Jm*Q;6ONCZOhDe)H zzC*2R^D{=sbQUizE-s?MwxGE9R9!8mmw7llm}Xp|HI*sr`>gYHp9x{Wb?;d;%<|}S z!Ct*>_MIBtofb#RI7XdX+atdRo0N>^iRQBhL7;$~Z!S1p{`F=vAM96QX9ZyMf|9VQ zygZ*2i|0$Uqq}uPA(VdMLN-r^_?ZlG78t9mpfybMSMmV~T;Cu?*V==!NbSgn>axd> zLW>1=G}glZ6Y^!2^7HiaMx$(MLLROK5H^%gNw=-z+U z=CEDv`S5^*OB)|y0I9gUEJ6cg>rTTZfqFm>U$eDj^-FG%5rheN>&luGP943#mObG z$v>+l>&9XkLQh|nx3=c;dw1<_{E{w?67b5VPwkPyyyL}6)Znr+?|!X-3M7M)K2`<; zO-+QII`0cX>kf}iAIQ->MHVExn>yLuHhFYZb`w4)=4e#{I*D17dcNPkf2Tlbb`%fv zWZ-5uHV3o9E7bU~^HZX_gzMax4xUWa#l@wD)aTWdWgTeXanOY_6me*K7PYr+v9pYB z*zP3@Mi=pR$62W57Rm20rE>w!rUvO~Fl)j!`{0Iv626HK68^lQ7lmCimk1GTrJdgC zi$dx6x~>QijLbT7hOkxk*}{M2;CEpMfc7z8*(2Oj)g$SmFOP_C#(L{0kqbTSdI~pH zSa`Ivo#fExz!_HdcF7N4Ntrf`K5nDEtu4hca>*%o?xo?NL({i!WF}j4L2uvEWumb} zx`73~Ux`fR&RYY_-{VA>ui5o!U%A_ycKoT@aW;U&;$xzs0-*c#5qw=ev>EUBoYZ1t zugOUg-u-(aBg%Rdqg8%)x#-A#>Ecw+4f|`1)VRx?lX6l|qi`N++3XPab(nOLT1=$K(MJcX^H$OYz5T-wS65F+Od(djGLz6&A_1AE zWhJ?}b@tV#Ajn~VZ-yIcy=%b||I#1R#10L;0LCYjeCBEE+gooSH2aNsX1*7(PZBmu z!4^3eS70V%D(HMQ#j7M-=JW5EWJhkjQoemOr*k3gwqEOx_p6~5k5`K-JP)64uSL?E zZzN@>3cka5_q&htZM)UM)&HI@WqMa8`YD@ca=i7HUU_S4%Y5IUwq9S>Zb!(PVAXTE z1n)PKZ&K@ae|7ittLUY=S-K{Nia^S>k-Zr`zkKgnd~((G+p$tL@HWnoqI$hKWD@36 zFQxmxW#4a}{t+Jv2*S&c7M${fyvC5kn~op)tFjDO?YK+fA*E}-!^baF5|WcAd&BRq zI3&t}RAxhQ@0X5N>{Gtmv4h#?;r__?Er{B7K<1LJ_TjZz`>y3KMXAk#ZazJ{ApP_B z8Jv3Vca{$SSn+Qmy*hd%5G=EuCGMWOoBE5K6))&+Uv}l{dJufsxjd@72ekRy2h?n@ zdx9CHb0)i_bsu0Oz|e@McaXX`WiGM5&%UnW_=v?pZgw)G=~H-!b`rekZ!X=rv!xVu z>TzW2f3g7mQaerwIvZCF3N$8l{21{ZI{w&7`w(HCi){D8m?d?08&a~4w#H*rENgJy zp>QJ}R^{bv*3O@_RgJx<{^9y%;{ZrSX(9hYXo~&bW!^P8b<0Mt@Ar|MAB$SO=b>yB z(pxrme$*$`P~@6`g7<+`jiAn;RF2I-Rx)q@&+2&r*A)!{nUM-_;{~br=aMeK-C?JE zQVsbTY)fgDO-c1{zkLwfh;`a+x)uKrw)V|yQT}pp>%Gc{9S8%Sd#&kC9$tGJB0_-b zLYdAZsk3ZC7s|WxGnMmhDJwTX!%j0*nf9-){CW{Z1qC*sRuo>+y$V)Y#~!KD=9nUm*h0%Dt15lbZQAF?3gSDF~_$ z`eR;1M#c_j&%G2-wU3O9Y=__T3Y<*<`MT(GMg4cRF4Q^j0|WNp~fYohPP8^B^d2ulhJ(_O@?pnDO6z$5u8k+js* z2RjQFA1^n*<2l;I8@9BzHnz1XCjB^gaL1$Nw~ot?`T}z&J+}F#krAURcC{ox<(`8= zIA1$PeNSJ%p{a?z*=rY@2axjv@#Usga)dSUNJBtGL=oV$VE;JC0aZP&nJWsHN)z9VS|3^#7V0#u7tpGmT=*cFmQDVGVh9?A&LE(_CnakFdQBrm{)F(OpU7yn zyHc`j(Bo>aw{ri`KJ5v=o7R&6w~>0{UqBgOxf`H)n(}Ztzj(j99}pO$8dm|Og{pt3 zYQ?-a(rreQbadmv{-r&3U@53N*VHeO`i?$zz z#`jbS+Qt(LYu$x_Rj$>oWvCsE# z^bqKVY}Nm#5NB!UB^T2>sAxiApF||H^+EFIK)b}kQ^7Y0dp9m#RKPo&;6_ulTwJ-- zoVe6!S3y!3HrQI%fEhASfBaZbH}C$7+nv#`%4MY9mhc5>QKhX;s!!6=)2BHP>DcMs z68%7YSc}2C2t7}FeOBZFmpEpKR%V#z>@M~8aiU#n893db+>c*mfajrv$9x!cCLivV zfBQ4j6*<-6_sr0~{1K1im&d!qv!Tg&7bI?bjTn}zrH_|fbi&>~Xm_)C9EpeH=+_Om zK1c@qif61boKumK{)gugQYKp7QgTNJ<6>z^nR_n(p-V`s0`Q4F^ZS^oXN>;pv$m@-)Ch7(zoE-=|U zF6UxGv_428^|1a2Wzk3x@chYY2UVbyhQUolskhR?Ss0(3oTYNj#sFZAf1!H0p<>+? z-Mpv|Nrwx=P+@ngMI4@4@ zx3*sZ^DRJlBL)49c#$${n(u#6%3`K3a&mssO&o@flU9{D*r);x+-y0-#KcDJh*A%- zwz1CAA3-0~H!w_w-d2zOxA8hmD2RB4k2h{-`r6uZL)R^|?MI)Z#Ik4?^)=i6?|&2n zhmseh^i&xTq=0KJdTsA{BG!%tENrV2?*;Ni-=?DDK6AaWmZvkpv!^`L^ zsT-E15!9nq7;+HhCjUft^ava8DJx3zKXPJP?ZV=7bz*^Tc?{jb#1jw54x=uJt69tH+*XzwA$|nZoDXcc=v9vYrZNx zE3^*0*b(y)a^kDoZc^YJK%tDlprFQ{o|CYZ>r~_HKyY|3>2bPU{hXeU%NP`@aQMpR zEvePHsxBhf(UkH(6le~cZbcYx+kX{AyKucG>Lfk)_o$b@;8wHMur+Q%!BmV-L6qB0 z_xERDWV9Js9+^4%Y@96u6&xXKxk>Fuf$)bogYSLn&fN_4)}4v9xEszV{TPH!qgAu< zmba~(9cT?G$q-D*{1OH=f6_>noyFC&fG7HMzql04=?^h1cf7UnFeB1;aU%H{w)SCp zCkF}3R_P#Zejylnwq31BB1P;AK;?ryoCaQmzFjZfJv9^DMW*1#aw`3kt-Uj#R#yJ* za$TF=`Jw6|SJT%*2R+9i55r~GDQ(gCwLj}80XlWFC6TIllQq9oes45KFuQ#{vzHiI zUA$$TZV9@SV9k{!+!t#C8H!nHnfMqGE#KEUorJMCH0*Op)wtt}o3Y;(hbj#bn)b+Z z9V?|`1&;LyD;y=j%ColKJ#L%72F24c4ra%s7(nyM%VqXx%hw*~H3^PW z@%;STQ`}G}%gyAOn87R_XmI}Y9s<070$xD0a~c>}qW;y8$mH5mSh?hen}14gYRIS*6dbO$Z`q4v^}4J3NY_5I%P$m;j$^rGDXGS{w6nBN01ygW0jhC`IZz{|nDqIXt`CxL z(rt>D9}jO$wXpL3{uyn2LZWmAx~skVWB*cVvBg+fS&>S)oQK9i%gQSbe&4@HDGnX@ zLC=nvGxIVsI=AcBOAVd!0NG?201JD=EgxR`#75K4P(EH$IX9hIHr~=geBirh-jw=6 zzsN}-kOo`iMxK5r{{39RSa^bs<7+T5-4f*!xQzc%9%0CgG{8j{l$6MSsilER?RS5+ z-fUl*5OkiL*RcYi6rn0(ZkeWD)shP+LKRND4AQFGj3#ai?34nOXZe*E-b`MJIeNm! zt=qy^Y-J8lf9215(~bH{t_2N|=077dRhNwo4$@yuTTLS$-SZq^fHT7iUIwauRAPhq z1q~oj{+fvTar$_%FXdQ1{<)OegKIZ9rq*=D~aX%T7wrt6xiX^+@<@N5Z zDcKk$)2a{r#{wcu+*`u42c4~tZpI}fe7e^$ZOiFWY;I>4Iv&H@-0{#XPM8h9ucDZ! zJk_4mX3^Y6iLJ9_O5sRxTHQZ(XW#3o?!vd(@C^sC~C9xX$+6S@7Y2N?3oH`SOlo?D=$?X^i^OT z5J$dc^-Yr3iJ1FPt8eZsx57nsgG2|6>)utqnw_Y3?-<*{nL}c`nhJKibgp|Gp353^ z{kk4n0C(*xOnGVB@jp5cy-{1M0j65{8sBgdwk=xMMPd*?tn4t1Uu{?li;83;9Y$%- zp5z^o2h> zwi6sZ#A+tjlR+ixVcFgdXDS+WLO|d_WbiHCiZG9c1jq+$k^L1B`ynuRBq%3Jae(-M z1YE5j8OpL$Id|O?*&`(Cp6gIU0S3sHf7aY{$-xzzFLxN1U9*bkqwM4X4ASf%-VIdQ zuv0g0it{D$nMkcKcAx5qJq!lO5*XvJ1?RTByg_;Oq}^mU)JxCey}>B%NeX&1K`Nz< z-~R5*17>cqIWYd6BS7Br>WJeO24l+h)GlUV#(#c&Osc5|^SIj1(AUdEbL-GRi~xy{ z2+7jPP4E8$k)>@((&r~!Ef$NNfMbxb(0hiFO9^v=u*(;kPmwK-6*GYXjh$T1-@GeW zRa92ih9Y_?7egmz_0RJdmdM|}O_q1Rn(UOtDY)>v+_(%6$MsEB32~!p+weATCQ(}o zXiqQ*cwYcvS~Kl7y}XjrB(zSgC&pxU>tbw;4&XQrROaJZ9xdakW7?NQK58~A_N=1{ zrNTmtevK)ux9jpNJiapzF8!BkA5&lM-7^rGTLHR4nGn~7VV&%$H?LpwLm~wk?0G6G zDwId}+rx+<54_vwk9MWHl%u($X`z=3sICHF_{m%!1H!|@b#W$;x*#?zgkZ@IlJHnE z9oskAD5HX`XyQ-?u*VQcUKa8AS5SCBs`{%-$N#pTte@@hV)gq?j2JL1y~5{`@fxk| zQ!pb9?a9tn$|g6Y93$7P*0s-_hjmJgdbKt&Ot4tuW?~OV0>5pu_{&2^fktBl0^9RX zArT*Mt)-tWZ^mM;_d2idtobPb&R+nqaM+GnP6?08%ywq9-E!}JZ=to-&96=g+GKQG z0YrP777gV@-To7z(8(Y`pe6FTRt!uljL;|mAhd^x2`RB10um-+E2MsXWocBRrKM%! z>-anWLEd5!8wtMb#}~VoDop^Cm3B1}u zMu+uvT|zx$8ImyIpYzyQl7EiOa=y<)EN{O{fBmNAq5$Zo3~SB$r~w4whmN7JeGgr7 zmu#s)Ncteb&)i6KiTzFswZ(uEOeIG`-MXH6?`Ux(WZ|eH-v-xJI_goiiK#@X=)P^c zxBs*|d{DmxlrxH%9q#WGZ@dwgC9Uz^AS-k(1URaN`x+h2Yy;-cRM5a{z(g+YPT-^poa+&GeNcyJm^9 zCQ6%UTOM}o-4KGK$P~4-PC^uRlX@5fkN*tceHjSPAPM9zd{JY05gra+D`Lnr`|?uu zM}+YbnDv8^f50(zhrgzd?x4N}Uua?d3AJQrXXi&T$@Kq*fk7}1A%~>kLv8)xh4N1T z2KuuAPFT(6Q3zdwQXc~NvX*V8gaAD%pD8-QZy))+V^~j>SnU@Ccv}iuZ;1#!fr2UQoaAl1`_kphm*e!HR=m$B3veDw z@Z?i~`Lpd+iRM0rRCp|Z7+(K7;C99GB@M4dnE1VzAa6vAq%sHG%P~x^L;c}s`S^VG z900CRG*wTjDd!l$o6X4GS z5#VX1$e&4)OdF+=av2Xt&enUTbE@B?mgCE5vY0lktHFQ&1 zGTCYvus3vG?NI{qlI|33`~0U-X#b1ZL6P%>wFI*@)67{Hcj$jOcK1kQ-YxHu?O|Q z0Vt~zjYKuz!YG~&L=aFJ<-1c9R_FWe&`oD!VQ_c&DtKDtQ8UxELsx}=GI*SFU{v}K z)v$ytC-T@5wLD-)@5PhuIMoa6?92z8ggH-qh>WhE34<2o*Tx8HI-frA24 zdq^h7tDR41X}kSHMP?c(HU+)mjaU6|yzKwi=BD(@(SSviMm;>-TYki2 z2WBKe%Wt!lus5w&e&ucOGv;R@Kg07~lNo(mpjoid2bcDZvgoX=@6jP9qM00lqsao` zv_r`fC`=xQ<`7=x7QgN2R_k-5=I91rX@)Z!^`2f-s3`PtZ*}vR-1=m4=V3-n696vnh`GG6-ITQAW!D5G{!zI~LUjCj% zz}(mH1W}E_+VhZ#yu5OTchdfW@L0{umX;*WhA&^Z$`dlW;r(4%O57D|1RaeipfQ+_ zmX_#_I%?RctzQavwrEcV_W<%YtRG{?lldLsXV~zb!YT&dscn)oGRrrL z5WECiMS-v*WZ|fxaJXzO7^IQ+)KZZ!du4qSPXq!Adc{CRb1mpo!BQeXzQ+rZTQYYf z=U9k=a^R4T*X5439?KDfhJKn2K)=_$7f~Xo7q=iMpXx}#FL^?ok(f`t>&^_!|4hk^ z6t%6a`hA$_^LcVQSk1)kI0B99kCqF%T*g_#VB-x-eirf(F!73`2`L1Hror7323hk2 zfHq)(;6}wov_Jp#S$l=|92xX!3;9g>;27FKVARZ8ll;xs+ElS;3eG?itqJVCLiV^p zNpEvFIHzX~1k2wG=S?`ErSI+S25ydJ6J}GnGvO-!(=W&@v?Ri!Pb z6KjhmO-m!S&!T+TW`{m;0@sMbK*T1bAZ*jY#t;+|dER`0PYBqm06q!d7iekm>XTCH zZoH^ngd>SxD7a1`K%S#!k$P%qFG>e+fDX4F$jwm^b!E#VPhhOzC(pv)8gv>TYt?-K z_Ga(hEZ?vVh3?!03>ZWLq;+#p$XTj8TR}dRrD*SBM3_EZLBpQMa(}ui!18Ej4Atp2 z%)nEx_9G{U3Jf+UVyaCWwlbKHo0^`U0`oVNmG3lwmxBP|F)V)_;{u!E^Dm?$_5Li7 zy!Sp)?37J=xX$q!$P9X z9zEGH=z9mL8j7HFK9JCQOuHA@1?7vV`JsoBbFcF3!SQt^CntWS;gc#8uv1M_=H%<;B18$B>aa7pCmN9L3OS z9zo-Ah^i|h(>%v1&yhk434U8o4L~!dFfOygYvI!0)heWKeb_@_8-BU9*r6I+-Tb;v z)ehj6`p^V`@xohnT=Mc_Yzv6t_5vX`x_~Iky>&c`{z{?mkRzAI#{h%M6or@OhczbB zHikx7)e~PDn^&kw10adPzAXrXv;_d9n}@zTD2Q(n5@`;`4lcibl&%d;^ zTrmDg*Z_SO==ofvB(b`{#zvqJdf8cg_N}YKV!n`nay;+Lm+;wQbIKQH>PAbW}jq_XmZ=ZEUGI8k`7Skr^{%EFno~Q};3WX!al7m$!OCMjlbm=TE`AYB^TE>(2DA`V5&PfuT zgvNzjruKYV-iWD{RWKZ8^Q$kj7bRuUBqN$z%&epB$34C~^6PwT*&O_U9ehvPx`J-y z@W6($KEdo_)FT3n!1_p4S2i5n_t`MR0kz+74StzF2VUO;QEL~fJGyeu!Is1Q@4)T< zEe7NN2i~QBn>qUbU;BSCrKcOv57X{t;%+w9IJ`y>gzT35O&IN#`sRp0^m@YHZy`1e Q{8!|bf|`7utm)JL0nevx#Q*>R literal 0 HcmV?d00001 diff --git a/test/golden_test/restauran_tour_test.dart b/test/golden_test/restauran_tour_test.dart index 361b9ca1..6f962eb3 100644 --- a/test/golden_test/restauran_tour_test.dart +++ b/test/golden_test/restauran_tour_test.dart @@ -1,3 +1,4 @@ +import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:get_it/get_it.dart'; import 'package:golden_toolkit/golden_toolkit.dart'; @@ -30,6 +31,7 @@ void main() { ..addScenario( widget: const RestauranTour(), ); + autoUpdateGoldenFiles = true; testGoldens('when [RestaurantTour] loads should show the title on the page and fetch the data', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); @@ -40,4 +42,16 @@ void main() { await screenMatchesGolden(tester, "restauran_tour_content"); }); + + testGoldens('when [RestaurantTour] loads should show the title on the page and fetch the data', (WidgetTester tester) async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); + await loadAppFonts(); + + await tester.pumpDeviceBuilder(deviceBuilder); + await tester.pumpAndSettle(); + await tester.tap(find.byKey(const Key('my-favorites-tab'))); + + await screenMatchesGolden(tester, "restauran_tour_favorites_tab"); + }); } diff --git a/test/golden_test/restaurant_details_screen_test.dart b/test/golden_test/restaurant_details_screen_test.dart new file mode 100644 index 00000000..6613d66e --- /dev/null +++ b/test/golden_test/restaurant_details_screen_test.dart @@ -0,0 +1,120 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:get_it/get_it.dart'; +import 'package:golden_toolkit/golden_toolkit.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:restaurantour/components/rt_image_network.dart'; +import 'package:restaurantour/features/restaurant_details/restaurant_details_screen.dart'; +import 'package:restaurantour/models/restaurant.dart'; +import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/services/favorites_service.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; + +import '../mocks/mocks.dart'; + +void main() { + RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); + FavoritesService favoritesService = FavoritesServiceMock(); + setUp(() { + GetIt.I.registerFactory(() => restaurantRepository); + GetIt.I.registerFactory(() => favoritesService); + GetIt.I.registerFactory(() => RTImageNetworkMock()); + }); + + tearDown(() { + reset(restaurantRepository); + reset(favoritesService); + GetIt.I.reset(); + }); + + Widget widgetBuilder() => MaterialApp( + localizationsDelegates: localizationsDelegates, + debugShowCheckedModeBanner: false, + home: Scaffold(body: RestaurantDetailsScreen.create(restaurant: Restaurant.fixture(), imageNetwork: RTImageNetworkMock())), + ); + + final deviceBuilder = DeviceBuilder() + ..overrideDevicesForAllScenarios( + devices: [ + Device.iphone11.copyWith( + size: const Size(414, 1100), + ), + ], + ) + ..addScenario( + widget: widgetBuilder(), + ); + + testGoldens('when [RestaurantDetailsScreen] loads should show the title, favorite icon, and other details', (WidgetTester tester) async { + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); + + await loadAppFonts(); + + await tester.pumpDeviceBuilder(deviceBuilder); + await tester.pumpAndSettle(); + + await screenMatchesGolden(tester, "restaurant_details_content"); + }); + + testGoldens('when [RestaurantDetailsScreen] loads a favorite restaurant should show the favorite icon filled', (WidgetTester tester) async { + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); + + await loadAppFonts(); + + await tester.pumpDeviceBuilder(deviceBuilder); + await tester.pumpAndSettle(); + + await screenMatchesGolden(tester, "restaurant_details_favorite"); + }); + + testGoldens('when [RestaurantDetailsScreen] loads a non favorite restaurant should show the favorite icon not filled', (WidgetTester tester) async { + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); + + await loadAppFonts(); + + await tester.pumpDeviceBuilder(deviceBuilder); + await tester.pumpAndSettle(); + + await screenMatchesGolden(tester, "restaurant_details_not_favorite"); + }); + + group('toggleFavorite', () { + testGoldens('''when [RestaurantDetailsScreen] loads a non favorite restaurant + and tap to favorite update the status and show the favorite icon filled''', (WidgetTester tester) async { + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); + when(() => favoritesService.addFavorite(any())).thenAnswer((_) => Future.value()); + + await loadAppFonts(); + + await tester.pumpDeviceBuilder(deviceBuilder); + await tester.pumpAndSettle(); + await tester.tap(find.byKey(const Key('favorite-button'))); + await tester.pumpAndSettle(); + + await screenMatchesGolden(tester, "restaurant_details_added_favorite"); + }); + + testGoldens('''when [RestaurantDetailsScreen] loads a favorite restaurant + and tap to remove favorite update the status and show the favorite icon not filled''', (WidgetTester tester) async { + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); + when(() => favoritesService.removeFavorite(any())).thenAnswer((_) => Future.value()); + + await loadAppFonts(); + + await tester.pumpDeviceBuilder(deviceBuilder); + await tester.pumpAndSettle(); + await tester.tap(find.byKey(const Key('favorite-button'))); + await tester.pumpAndSettle(); + + await screenMatchesGolden(tester, "restaurant_details_removed_favorite"); + }); + }); +} + +final localizationsDelegates = [ + AppLocalizations.delegate, + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, +]; From baee709cca4b10a5148ada9ce020852317af4034 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sun, 18 Feb 2024 14:45:31 -0300 Subject: [PATCH 45/89] feat: refactor remove api key --- lib/core/inject.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/core/inject.dart b/lib/core/inject.dart index 93ee1bf4..a8a763ab 100644 --- a/lib/core/inject.dart +++ b/lib/core/inject.dart @@ -8,7 +8,8 @@ import 'package:shared_preferences/shared_preferences.dart'; GetIt inject = GetIt.instance; Future setupInjection() async { - const _apiKey = 'vssWzyNh4aMaf2s8z8jOVuVkDI1OERKDaPXgMIn0qYDNB_1DseUsTytTzRmQzlADj4b_S5XfkaR1Kv4N4SGwOtu8lH-0yaNze1M-KhBL8EIGVkOT55vGIRjnwfHQZXYx'; + // this key can be stored within a remote config + const _apiKey = ''; await inject.reset(); SharedPreferences sharedPref = await SharedPreferences.getInstance(); From 290d93b323b0fbd403b9fc71f0618daa8da5de62 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sun, 18 Feb 2024 17:58:01 -0300 Subject: [PATCH 46/89] fix: use .env files to store api secrets, move mocktail to dev_dependencies --- .gitignore | 1 + lib/core/inject.dart | 6 ++++-- pubspec.lock | 10 +++++++++- pubspec.yaml | 6 ++++-- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 3d7b9477..d2a108d5 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ *.ipr *.iws .idea/ +*.env # The .vscode folder contains launch configuration and tasks you configure in # VS Code which you may wish to be included in version control, so this line diff --git a/lib/core/inject.dart b/lib/core/inject.dart index a8a763ab..d316cbfa 100644 --- a/lib/core/inject.dart +++ b/lib/core/inject.dart @@ -4,12 +4,14 @@ import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorites_service.dart'; import 'package:shared_preferences/shared_preferences.dart'; +import 'package:flutter_dotenv/flutter_dotenv.dart'; GetIt inject = GetIt.instance; Future setupInjection() async { - // this key can be stored within a remote config - const _apiKey = ''; + await dotenv.load(fileName: ".env"); + + final _apiKey = dotenv.env['API_KEY']; await inject.reset(); SharedPreferences sharedPref = await SharedPreferences.getInstance(); diff --git a/pubspec.lock b/pubspec.lock index d349853a..6ff8e620 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -222,6 +222,14 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_dotenv: + dependency: "direct main" + description: + name: flutter_dotenv + sha256: "9357883bdd153ab78cbf9ffa07656e336b8bbb2b5a3ca596b0b27e119f7c7d77" + url: "https://pub.dev" + source: hosted + version: "5.1.0" flutter_lints: dependency: "direct dev" description: @@ -398,7 +406,7 @@ packages: source: hosted version: "1.0.5" mocktail: - dependency: "direct main" + dependency: "direct dev" description: name: mocktail sha256: c4b5007d91ca4f67256e720cb1b6d704e79a510183a12fa551021f652577dce6 diff --git a/pubspec.yaml b/pubspec.yaml index e2d9d8e2..b3f43983 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -14,6 +14,7 @@ dependencies: dio: ^5.4.0 flutter: sdk: flutter + flutter_dotenv: ^5.1.0 flutter_localizations: sdk: flutter flutter_svg: ^2.0.9 @@ -21,23 +22,24 @@ dependencies: golden_toolkit: ^0.15.0 intl: any json_annotation: ^4.8.1 - mocktail: ^1.0.3 provider: ^6.1.1 shared_preferences: ^2.2.2 shimmer: ^3.0.0 dev_dependencies: + build_runner: ^2.4.8 flutter_test: sdk: flutter flutter_lints: ^1.0.2 - build_runner: ^2.4.8 json_serializable: ^6.7.1 + mocktail: ^1.0.3 flutter: uses-material-design: true generate: true assets: - assets/svg/ + - .env fonts: - family: Lora fonts: From a6be892c7e98da800a5d68e031b5cbc0c1277c5e Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sun, 18 Feb 2024 23:44:00 -0300 Subject: [PATCH 47/89] feat: stop call loadFavorites when change tab, refactor restaurant_details_view_model add status for each page, call loadFavorites on load restaurants, and fix tests --- .../restaurant_details_view_model.dart | 2 - .../pages/favorites/favorites_page.dart | 7 +- .../pages/restaurants/restaurants_page.dart | 7 +- .../restaurant_list_view_model.dart | 71 ++++++++++++------- .../restaurants_list_screen.dart | 4 +- test/golden_test/restauran_tour_test.dart | 2 + .../restaurant_list_view_model_test.dart | 36 ++++++---- test/widget_tests/restauran_tour_test.dart | 2 + test/widget_tests/restaurants_page_test.dart | 3 + 9 files changed, 84 insertions(+), 50 deletions(-) diff --git a/lib/features/restaurant_details/restaurant_details_view_model.dart b/lib/features/restaurant_details/restaurant_details_view_model.dart index 340fc5a1..b52f5cd3 100644 --- a/lib/features/restaurant_details/restaurant_details_view_model.dart +++ b/lib/features/restaurant_details/restaurant_details_view_model.dart @@ -21,7 +21,6 @@ class RestaurantDetailsViewModel with ChangeNotifier { Future toggleFavorite() async { try { _emitChangingFavorite(); - await Future.delayed(const Duration(milliseconds: 500)); isFavorite ? await favoriteService.removeFavorite(restaurantId) : await favoriteService.addFavorite(restaurantId); isFavorite = !isFavorite; @@ -38,7 +37,6 @@ class RestaurantDetailsViewModel with ChangeNotifier { _favoriteList = await favoriteService.loadFavorites(); isFavorite = _favoriteList.contains(restaurantId); - await Future.delayed(const Duration(milliseconds: 300)); _emitContent(); } catch (e) { diff --git a/lib/features/restaurants_list/pages/favorites/favorites_page.dart b/lib/features/restaurants_list/pages/favorites/favorites_page.dart index b3ebfcf0..02c5dfaf 100644 --- a/lib/features/restaurants_list/pages/favorites/favorites_page.dart +++ b/lib/features/restaurants_list/pages/favorites/favorites_page.dart @@ -22,18 +22,17 @@ class _FavoritesPageState extends State { void initState() { super.initState(); model = context.read(); - WidgetsBinding.instance.addPostFrameCallback((_) async => await model!.loadFavorites()); } @override Widget build(BuildContext context) { model = context.watch(); - if (model!.status.isLoading) return const RTShimmerLoading(); + if (model!.restaurantFavoriteListStatus.isLoading) return const RTShimmerLoading(); - if (model!.status.isFavoritesError) return const RTErrorWidget(); + if (model!.restaurantFavoriteListStatus.isError) return const RTErrorWidget(); - if (model!.status.isFavoritesEmpty) return const RTEmptyWidget(); + if (model!.restaurantFavoriteListStatus.isEmpty) return const RTEmptyWidget(); return ListView.builder( itemCount: model!.favorites.length, diff --git a/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart b/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart index 56a5afea..f1545b02 100644 --- a/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart +++ b/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart @@ -27,11 +27,11 @@ class _RestaurantsPageState extends State { @override Widget build(BuildContext context) { model = context.watch(); - if (model!.status.isLoading) return const RTShimmerLoading(); + if (model!.restaurantListStatus.isLoading) return const RTShimmerLoading(); - if (model!.status.isError) return const RTErrorWidget(); + if (model!.restaurantListStatus.isError) return const RTErrorWidget(); - if (model!.status.isRestaurantsEmpty) return const RTEmptyWidget(); + if (model!.restaurantListStatus.isEmpty) return const RTEmptyWidget(); return RefreshIndicator( onRefresh: () => model!.load(), @@ -45,6 +45,7 @@ class _RestaurantsPageState extends State { isFirstItem: isFirstItem, imageNetwork: inject(), restaurant: model!.restaurants[index], + onFinishNavigation: () => model!.loadFavorites(), ); }, ), diff --git a/lib/features/restaurants_list/restaurant_list_view_model.dart b/lib/features/restaurants_list/restaurant_list_view_model.dart index 6637ffb6..78d7ba55 100644 --- a/lib/features/restaurants_list/restaurant_list_view_model.dart +++ b/lib/features/restaurants_list/restaurant_list_view_model.dart @@ -3,14 +3,20 @@ import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorites_service.dart'; -enum RestaurantListStatus { loading, content, error, favoritesEmpty, restaurantsEmpty, favoritesError } +enum RestaurantListStatus { loading, content, error, empty } extension RestaurantListStatusExt on RestaurantListStatus { bool get isLoading => this == RestaurantListStatus.loading; bool get isError => this == RestaurantListStatus.error; - bool get isFavoritesEmpty => this == RestaurantListStatus.favoritesEmpty; - bool get isRestaurantsEmpty => this == RestaurantListStatus.restaurantsEmpty; - bool get isFavoritesError => this == RestaurantListStatus.favoritesError; + bool get isEmpty => this == RestaurantListStatus.empty; +} + +enum RestaurantFavoriteListStatus { loading, content, error, empty } + +extension RestaurantFavoriteListStatusExt on RestaurantFavoriteListStatus { + bool get isLoading => this == RestaurantFavoriteListStatus.loading; + bool get isError => this == RestaurantFavoriteListStatus.error; + bool get isEmpty => this == RestaurantFavoriteListStatus.empty; } class RestaurantListViewModel with ChangeNotifier { @@ -18,7 +24,9 @@ class RestaurantListViewModel with ChangeNotifier { final FavoritesService favoritesService; RestaurantListViewModel({required this.favoritesService, required this.restaurantRepository}); - RestaurantListStatus status = RestaurantListStatus.loading; + RestaurantListStatus restaurantListStatus = RestaurantListStatus.loading; + RestaurantFavoriteListStatus restaurantFavoriteListStatus = RestaurantFavoriteListStatus.loading; + RestaurantQueryResult? _restaurants; List _favorites = []; @@ -26,58 +34,71 @@ class RestaurantListViewModel with ChangeNotifier { List get restaurants => _restaurants?.restaurants ?? []; Future load() async { + await loadRestaurants(); + await loadFavorites(); + } + + Future loadRestaurants() async { try { - _emitLoading(); + _emitRestaurantListLoading(); _restaurants = await restaurantRepository.getRestaurants(); - - restaurants.isEmpty ? _emitRestaurantsEmpty() : _emitContent(); + restaurants.isEmpty ? _emitRestaurantListEmpty() : _emitRestaurantListContent(); } catch (e) { print(e); - _emitError(); + _emitRestaurantListError(); } } Future loadFavorites() async { try { - _emitLoading(); - await Future.delayed(const Duration(milliseconds: 200)); + _emitRestaurantFavoriteListLoading(); _favorites = []; final favoritesIds = await favoritesService.loadFavorites(); _favorites = restaurants.where((restaurant) => favoritesIds.contains(restaurant.id)).toList(); - _favorites.isEmpty ? _emitFavoritesEmpty() : _emitContent(); + _favorites.isEmpty ? _emitRestaurantFavoriteListEmpty() : _emitRestaurantFavoriteListContent(); } catch (e) { print(e); - _emitFavoriteError(); + _emitRestaurantFavoriteListError(); } } - void _emitContent() { - status = RestaurantListStatus.content; + void _emitRestaurantListContent() { + restaurantListStatus = RestaurantListStatus.content; + notifyListeners(); + } + + void _emitRestaurantListLoading() { + restaurantListStatus = RestaurantListStatus.loading; + notifyListeners(); + } + + void _emitRestaurantListError() { + restaurantListStatus = RestaurantListStatus.error; notifyListeners(); } - void _emitLoading() { - status = RestaurantListStatus.loading; + void _emitRestaurantListEmpty() { + restaurantListStatus = RestaurantListStatus.empty; notifyListeners(); } - void _emitError() { - status = RestaurantListStatus.error; + void _emitRestaurantFavoriteListContent() { + restaurantFavoriteListStatus = RestaurantFavoriteListStatus.content; notifyListeners(); } - void _emitFavoriteError() { - status = RestaurantListStatus.favoritesError; + void _emitRestaurantFavoriteListLoading() { + restaurantFavoriteListStatus = RestaurantFavoriteListStatus.loading; notifyListeners(); } - void _emitRestaurantsEmpty() { - status = RestaurantListStatus.restaurantsEmpty; + void _emitRestaurantFavoriteListError() { + restaurantFavoriteListStatus = RestaurantFavoriteListStatus.error; notifyListeners(); } - void _emitFavoritesEmpty() { - status = RestaurantListStatus.favoritesEmpty; + void _emitRestaurantFavoriteListEmpty() { + restaurantFavoriteListStatus = RestaurantFavoriteListStatus.empty; notifyListeners(); } } diff --git a/lib/features/restaurants_list/restaurants_list_screen.dart b/lib/features/restaurants_list/restaurants_list_screen.dart index 640e0d30..86237993 100644 --- a/lib/features/restaurants_list/restaurants_list_screen.dart +++ b/lib/features/restaurants_list/restaurants_list_screen.dart @@ -32,7 +32,9 @@ class _RestaurantsListScreenState extends State { void initState() { super.initState(); model = context.read(); - WidgetsBinding.instance.addPostFrameCallback((_) async => await model!.load()); + WidgetsBinding.instance.addPostFrameCallback((_) async { + await model!.load(); + }); } @override diff --git a/test/golden_test/restauran_tour_test.dart b/test/golden_test/restauran_tour_test.dart index 6f962eb3..0940ed81 100644 --- a/test/golden_test/restauran_tour_test.dart +++ b/test/golden_test/restauran_tour_test.dart @@ -35,6 +35,8 @@ void main() { testGoldens('when [RestaurantTour] loads should show the title on the page and fetch the data', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); + await loadAppFonts(); await tester.pumpDeviceBuilder(deviceBuilder); diff --git a/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart b/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart index 546f4e2f..99c8360c 100644 --- a/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart +++ b/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart @@ -25,17 +25,19 @@ void main() { }); group('tests on restaurantListViewModel.load() ->', () { - test('''when [RestaurantListViewModel] is created the [status] should starts with [RestaurantListStatus.loading] + test('''when [RestaurantListViewModel] is created the [restaurantListStatus] should starts with [RestaurantListStatus.loading] and no call to [restaurantRepository.getRestaurants] should be triggered''', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - expect(sut.status, RestaurantListStatus.loading); + expect(sut.restaurantListStatus, RestaurantListStatus.loading); verifyNever(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))); }); test('when [load] is called should call once time the [getRestaurants] on [RestaurantRepository]', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.load(); @@ -43,37 +45,41 @@ void main() { verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); }); - test('when [load] get successfully the data from repository the [status] should be [RestaurantListStatus.content]', () async { + test('when [load] get successfully the data from repository the [restaurantListStatus] should be [RestaurantListStatus.content]', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.load(); - expect(sut.status, RestaurantListStatus.content); + expect(sut.restaurantListStatus, RestaurantListStatus.content); }); test('''when [load] get successfully the data from repository but the [Restaurant] list is [empty] - the [status] should be [RestaurantListStatus.restaurantsEmpty]''', () async { + the [restaurantListStatus] should be [RestaurantListStatus.restaurantsEmpty]''', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResult(restaurants: []))); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.load(); - expect(sut.status, RestaurantListStatus.restaurantsEmpty); + expect(sut.restaurantListStatus, RestaurantListStatus.empty); }); - test('when [load] get some error from repository the [status] should be [RestaurantListStatus.error]', () async { + test('when [load] get some error from repository the [restaurantListStatus] should be [RestaurantListStatus.error]', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenThrow('error mock'); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.load(); - expect(sut.status, RestaurantListStatus.error); + expect(sut.restaurantListStatus, RestaurantListStatus.error); }); test('''when [load] get some error from repository no more calls should be triggered to [restaurantRepository.getRestaurants]''', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenThrow('error mock'); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.load(); @@ -89,7 +95,7 @@ void main() { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - expect(sut.status, RestaurantListStatus.loading); + expect(sut.restaurantFavoriteListStatus, RestaurantFavoriteListStatus.loading); verifyNever(() => favoritesService.loadFavorites()); }); @@ -110,7 +116,7 @@ void main() { await sut.loadFavorites(); - expect(sut.status, RestaurantListStatus.favoritesEmpty); + expect(sut.restaurantFavoriteListStatus, RestaurantFavoriteListStatus.empty); }); test('''when [load] get successfully the data from repository but the [Restaurant] list is [empty], @@ -123,7 +129,7 @@ void main() { await sut.load(); await sut.loadFavorites(); - expect(sut.status, RestaurantListStatus.favoritesEmpty); + expect(sut.restaurantFavoriteListStatus, RestaurantFavoriteListStatus.empty); }); test('''when [load] get successfully the data from repository @@ -136,7 +142,7 @@ void main() { await sut.load(); await sut.loadFavorites(); - expect(sut.status, RestaurantListStatus.favoritesEmpty); + expect(sut.restaurantFavoriteListStatus, RestaurantFavoriteListStatus.empty); }); test('''when [load] get successfully the data from repository @@ -149,7 +155,7 @@ void main() { await sut.load(); await sut.loadFavorites(); - expect(sut.status, RestaurantListStatus.content); + expect(sut.restaurantFavoriteListStatus, RestaurantFavoriteListStatus.content); }); test('''when [loadFavorites] get successfully the data from favoritesService but the list is [empty] @@ -159,7 +165,7 @@ void main() { await sut.loadFavorites(); - expect(sut.status, RestaurantListStatus.favoritesEmpty); + expect(sut.restaurantFavoriteListStatus, RestaurantFavoriteListStatus.empty); }); test('''when [loadFavorites] get some error from favoritesService @@ -169,7 +175,7 @@ void main() { await sut.loadFavorites(); - expect(sut.status, RestaurantListStatus.favoritesError); + expect(sut.restaurantFavoriteListStatus, RestaurantFavoriteListStatus.error); }); test('''when [loadFavorites] get some error from favoritesService diff --git a/test/widget_tests/restauran_tour_test.dart b/test/widget_tests/restauran_tour_test.dart index 563d01ea..0ae7666d 100644 --- a/test/widget_tests/restauran_tour_test.dart +++ b/test/widget_tests/restauran_tour_test.dart @@ -26,6 +26,7 @@ void main() { testWidgets('when [RestaurantTour] loads should show the title on the page and fetch the data', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); await tester.pumpWidget(const RestauranTour()); @@ -35,6 +36,7 @@ void main() { testWidgets('when [RestaurantTour] loads should show the tabs [All Restaurants] and [My Favorites] on the page and fetch the data', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); await tester.pumpWidget(const RestauranTour()); diff --git a/test/widget_tests/restaurants_page_test.dart b/test/widget_tests/restaurants_page_test.dart index a64a5d90..62753bf8 100644 --- a/test/widget_tests/restaurants_page_test.dart +++ b/test/widget_tests/restaurants_page_test.dart @@ -46,6 +46,7 @@ void main() { testWidgets('''when successfully fetch the [RestaurantQueryResult] and has data, should create a [RestaurantItemWidget] for each [Restaurant]''', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); @@ -59,6 +60,7 @@ void main() { testWidgets('''when get some error while fetch the [RestaurantQueryResult], should render [RTErrorWidget] to inform to the user that something fails''', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenThrow('error mock'); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); @@ -70,6 +72,7 @@ void main() { testWidgets('''when successfully fetch the [RestaurantQueryResult] and has no data, should render [RTEmptyWidget] to inform to the user that has no results''', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResult(restaurants: []))); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); From 48098cd7c4f08b92c87d28991447f34bd1c83ef4 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sun, 18 Feb 2024 23:52:28 -0300 Subject: [PATCH 48/89] feat: create a widget_fot_tests to efficiently reuse components that configure locales and themes for golden_tests --- test/golden_test/favorites_page_test.dart | 37 ++++++------------- .../restaurant_details_screen_test.dart | 26 ++----------- test/widget_for_tests.dart | 18 +++++++++ 3 files changed, 32 insertions(+), 49 deletions(-) create mode 100644 test/widget_for_tests.dart diff --git a/test/golden_test/favorites_page_test.dart b/test/golden_test/favorites_page_test.dart index b2f97e49..9674f8be 100644 --- a/test/golden_test/favorites_page_test.dart +++ b/test/golden_test/favorites_page_test.dart @@ -1,6 +1,3 @@ -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:get_it/get_it.dart'; import 'package:golden_toolkit/golden_toolkit.dart'; @@ -14,6 +11,7 @@ import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorites_service.dart'; import '../mocks/mocks.dart'; +import '../widget_for_tests.dart'; void main() { RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); @@ -28,25 +26,19 @@ void main() { GetIt.I.reset(); }); - Widget widgetBuilder() => MaterialApp( - localizationsDelegates: localizationsDelegates, - debugShowCheckedModeBanner: false, - home: Scaffold( - body: ChangeNotifierProvider( - create: (context) { - final model = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - model.load(); - return model; - }, - child: const FavoritesPage(), - ), - ), - ); - final deviceBuilder = DeviceBuilder() ..overrideDevicesForAllScenarios(devices: [Device.iphone11]) ..addScenario( - widget: widgetBuilder(), + widget: widgetBuilder( + ChangeNotifierProvider( + create: (context) { + final model = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + model.load(); + return model; + }, + child: const FavoritesPage(), + ), + ), ); testGoldens('''when successfully fetch the [RestaurantQueryResult] and has data, and also load the favorites fetch the data @@ -86,10 +78,3 @@ void main() { await screenMatchesGolden(tester, "favorite_page_empty"); }); } - -final localizationsDelegates = [ - AppLocalizations.delegate, - GlobalMaterialLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, -]; diff --git a/test/golden_test/restaurant_details_screen_test.dart b/test/golden_test/restaurant_details_screen_test.dart index 6613d66e..b0beaa5c 100644 --- a/test/golden_test/restaurant_details_screen_test.dart +++ b/test/golden_test/restaurant_details_screen_test.dart @@ -8,10 +8,9 @@ import 'package:restaurantour/features/restaurant_details/restaurant_details_scr import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorites_service.dart'; -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; -import 'package:flutter_localizations/flutter_localizations.dart'; import '../mocks/mocks.dart'; +import '../widget_for_tests.dart'; void main() { RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); @@ -28,22 +27,10 @@ void main() { GetIt.I.reset(); }); - Widget widgetBuilder() => MaterialApp( - localizationsDelegates: localizationsDelegates, - debugShowCheckedModeBanner: false, - home: Scaffold(body: RestaurantDetailsScreen.create(restaurant: Restaurant.fixture(), imageNetwork: RTImageNetworkMock())), - ); - final deviceBuilder = DeviceBuilder() - ..overrideDevicesForAllScenarios( - devices: [ - Device.iphone11.copyWith( - size: const Size(414, 1100), - ), - ], - ) + ..overrideDevicesForAllScenarios(devices: [Device.iphone11.copyWith(size: const Size(414, 1100))]) ..addScenario( - widget: widgetBuilder(), + widget: widgetBuilder(RestaurantDetailsScreen.create(restaurant: Restaurant.fixture(), imageNetwork: RTImageNetworkMock())), ); testGoldens('when [RestaurantDetailsScreen] loads should show the title, favorite icon, and other details', (WidgetTester tester) async { @@ -111,10 +98,3 @@ void main() { }); }); } - -final localizationsDelegates = [ - AppLocalizations.delegate, - GlobalMaterialLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, -]; diff --git a/test/widget_for_tests.dart b/test/widget_for_tests.dart new file mode 100644 index 00000000..87369a29 --- /dev/null +++ b/test/widget_for_tests.dart @@ -0,0 +1,18 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; + +Widget widgetBuilder(Widget child) { + return MaterialApp( + localizationsDelegates: localizationsDelegates, + debugShowCheckedModeBanner: false, + home: Scaffold(body: child), + ); +} + +final localizationsDelegates = [ + AppLocalizations.delegate, + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, +]; From 0b35ce8277de1ec5718d31a7fc96db9a240efa2c Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Mon, 19 Feb 2024 00:41:31 -0300 Subject: [PATCH 49/89] feat: refactor names of widgets and folders structure --- ...t_item_widget.dart => rt_item_widget.dart} | 10 +- ...view_widget.dart => rt_review_widget.dart} | 6 +- lib/core/inject.dart | 4 +- .../{text_style.dart => rt_text_style.dart} | 0 .../details_screen.dart} | 26 ++--- .../details_view_model.dart} | 28 ++--- .../pages/favorites/favorites_page.dart | 18 +-- .../pages/restaurants/restaurants_page.dart | 18 +-- .../restaurants/restaurant_view_model.dart | 104 ++++++++++++++++++ .../restaurants_screen.dart} | 30 +++-- .../restaurant_list_view_model.dart | 104 ------------------ lib/restauran_tour.dart | 4 +- ...tes_service.dart => favorite_service.dart} | 4 +- ...een_test.dart => details_screen_test.dart} | 30 ++--- test/golden_test/favorites_page_test.dart | 12 +- ....png => details_screen_added_favorite.png} | Bin ...content.png => details_screen_content.png} | Bin ...vorite.png => details_screen_favorite.png} | Bin ...te.png => details_screen_not_favorite.png} | Bin ...ng => details_screen_removed_favorite.png} | Bin test/golden_test/restauran_tour_test.dart | 6 +- test/mocks/mocks.dart | 4 +- .../restaurant_details_view_model_test.dart | 46 ++++---- .../restaurant_list_view_model_test.dart | 90 +++++++-------- test/widget_tests/favorites_page_test.dart | 16 +-- test/widget_tests/restauran_tour_test.dart | 6 +- .../restaurant_details_screen_test.dart | 16 +-- test/widget_tests/restaurants_page_test.dart | 16 +-- 28 files changed, 298 insertions(+), 300 deletions(-) rename lib/components/{restaurant_item_widget.dart => rt_item_widget.dart} (91%) rename lib/components/{restaurant_review_widget.dart => rt_review_widget.dart} (90%) rename lib/core/{text_style.dart => rt_text_style.dart} (100%) rename lib/features/{restaurant_details/restaurant_details_screen.dart => details/details_screen.dart} (87%) rename lib/features/{restaurant_details/restaurant_details_view_model.dart => details/details_view_model.dart} (52%) rename lib/features/{restaurants_list => restaurants}/pages/favorites/favorites_page.dart (65%) rename lib/features/{restaurants_list => restaurants}/pages/restaurants/restaurants_page.dart (68%) create mode 100644 lib/features/restaurants/restaurant_view_model.dart rename lib/features/{restaurants_list/restaurants_list_screen.dart => restaurants/restaurants_screen.dart} (66%) delete mode 100644 lib/features/restaurants_list/restaurant_list_view_model.dart rename lib/services/{favorites_service.dart => favorite_service.dart} (91%) rename test/golden_test/{restaurant_details_screen_test.dart => details_screen_test.dart} (67%) rename test/golden_test/goldens/{restaurant_details_added_favorite.png => details_screen_added_favorite.png} (100%) rename test/golden_test/goldens/{restaurant_details_content.png => details_screen_content.png} (100%) rename test/golden_test/goldens/{restaurant_details_favorite.png => details_screen_favorite.png} (100%) rename test/golden_test/goldens/{restaurant_details_not_favorite.png => details_screen_not_favorite.png} (100%) rename test/golden_test/goldens/{restaurant_details_removed_favorite.png => details_screen_removed_favorite.png} (100%) diff --git a/lib/components/restaurant_item_widget.dart b/lib/components/rt_item_widget.dart similarity index 91% rename from lib/components/restaurant_item_widget.dart rename to lib/components/rt_item_widget.dart index 19b9555d..a0e6485b 100644 --- a/lib/components/restaurant_item_widget.dart +++ b/lib/components/rt_item_widget.dart @@ -4,12 +4,12 @@ import 'package:flutter_svg/svg.dart'; import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/core/inject.dart'; import 'package:restaurantour/core/rt_colors.dart'; -import 'package:restaurantour/core/text_style.dart'; -import 'package:restaurantour/features/restaurant_details/restaurant_details_screen.dart'; +import 'package:restaurantour/core/rt_text_style.dart'; +import 'package:restaurantour/features/details/details_screen.dart'; import 'package:restaurantour/models/restaurant.dart'; -class RestaurantItemWidget extends StatelessWidget { - const RestaurantItemWidget({super.key, required this.restaurant, required this.isFirstItem, this.onFinishNavigation, required this.imageNetwork}); +class RTItemWidget extends StatelessWidget { + const RTItemWidget({super.key, required this.restaurant, required this.isFirstItem, this.onFinishNavigation, required this.imageNetwork}); final bool isFirstItem; final Restaurant restaurant; final VoidCallback? onFinishNavigation; @@ -33,7 +33,7 @@ class RestaurantItemWidget extends StatelessWidget { await Navigator.push( context, MaterialPageRoute( - builder: (BuildContext context) => RestaurantDetailsScreen.create( + builder: (BuildContext context) => DetailsScreen.create( restaurant: restaurant, imageNetwork: inject(), ), diff --git a/lib/components/restaurant_review_widget.dart b/lib/components/rt_review_widget.dart similarity index 90% rename from lib/components/restaurant_review_widget.dart rename to lib/components/rt_review_widget.dart index c8e656d2..688faad0 100644 --- a/lib/components/restaurant_review_widget.dart +++ b/lib/components/rt_review_widget.dart @@ -2,12 +2,12 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/core/rt_colors.dart'; -import 'package:restaurantour/core/text_style.dart'; +import 'package:restaurantour/core/rt_text_style.dart'; import 'package:restaurantour/models/restaurant.dart'; -class RestaurantReviewWidget extends StatelessWidget { - const RestaurantReviewWidget({super.key, required this.review, required this.isFirstItem, required this.imageNetwork}); +class RTReviewWidget extends StatelessWidget { + const RTReviewWidget({super.key, required this.review, required this.isFirstItem, required this.imageNetwork}); final bool isFirstItem; final Review review; final String reviewText = 'Review text goes here. Review text goes here. This is a review. This is a review that is 3 lines long.'; diff --git a/lib/core/inject.dart b/lib/core/inject.dart index d316cbfa..2d7bedfb 100644 --- a/lib/core/inject.dart +++ b/lib/core/inject.dart @@ -2,7 +2,7 @@ import 'package:dio/dio.dart'; import 'package:get_it/get_it.dart'; import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; -import 'package:restaurantour/services/favorites_service.dart'; +import 'package:restaurantour/services/favorite_service.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; @@ -32,7 +32,7 @@ Future setupInjection() async { inject.registerLazySingleton(() => sharedPref); - inject.registerLazySingleton(() => FavoritesService(sharedPreferences: inject())); + inject.registerLazySingleton(() => FavoriteService(sharedPreferences: inject())); inject.registerLazySingleton(() => RTImageNetwork()); } diff --git a/lib/core/text_style.dart b/lib/core/rt_text_style.dart similarity index 100% rename from lib/core/text_style.dart rename to lib/core/rt_text_style.dart diff --git a/lib/features/restaurant_details/restaurant_details_screen.dart b/lib/features/details/details_screen.dart similarity index 87% rename from lib/features/restaurant_details/restaurant_details_screen.dart rename to lib/features/details/details_screen.dart index 9276b358..e440739f 100644 --- a/lib/features/restaurant_details/restaurant_details_screen.dart +++ b/lib/features/details/details_screen.dart @@ -1,46 +1,46 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:provider/provider.dart'; -import 'package:restaurantour/components/restaurant_review_widget.dart'; +import 'package:restaurantour/components/rt_review_widget.dart'; import 'package:restaurantour/components/rt_error_widget.dart'; import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/core/inject.dart'; import 'package:restaurantour/core/rt_colors.dart'; -import 'package:restaurantour/core/text_style.dart'; +import 'package:restaurantour/core/rt_text_style.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; -import 'package:restaurantour/features/restaurant_details/restaurant_details_view_model.dart'; +import 'package:restaurantour/features/details/details_view_model.dart'; import 'package:restaurantour/models/restaurant.dart'; -import 'package:restaurantour/services/favorites_service.dart'; +import 'package:restaurantour/services/favorite_service.dart'; -class RestaurantDetailsScreen extends StatefulWidget { - const RestaurantDetailsScreen({super.key, required this.restaurant, required this.imageNetwork}); +class DetailsScreen extends StatefulWidget { + const DetailsScreen({super.key, required this.restaurant, required this.imageNetwork}); final Restaurant restaurant; final RTImageNetwork imageNetwork; static Widget create({required Restaurant restaurant, required RTImageNetwork imageNetwork}) => ChangeNotifierProvider( - create: (context) => RestaurantDetailsViewModel( + create: (context) => DetailsViewModel( restaurantId: restaurant.id ?? '', - favoriteService: inject(), + favoriteService: inject(), ), - child: RestaurantDetailsScreen( + child: DetailsScreen( restaurant: restaurant, imageNetwork: imageNetwork, ), ); @override - State createState() => _RestaurantDetailsScreenState(); + State createState() => _DetailsScreenState(); } -class _RestaurantDetailsScreenState extends State { +class _DetailsScreenState extends State { int get reviewsCount => reviewsList.length; List get reviewsList => widget.restaurant.reviews ?? []; List get reviews => List.generate(reviewsCount, (index) { final bool isFirstItem = index == 0; - return RestaurantReviewWidget(imageNetwork: widget.imageNetwork, isFirstItem: isFirstItem, review: reviewsList[index]); + return RTReviewWidget(imageNetwork: widget.imageNetwork, isFirstItem: isFirstItem, review: reviewsList[index]); }); - RestaurantDetailsViewModel? model; + DetailsViewModel? model; @override void initState() { diff --git a/lib/features/restaurant_details/restaurant_details_view_model.dart b/lib/features/details/details_view_model.dart similarity index 52% rename from lib/features/restaurant_details/restaurant_details_view_model.dart rename to lib/features/details/details_view_model.dart index b52f5cd3..cf0a3a92 100644 --- a/lib/features/restaurant_details/restaurant_details_view_model.dart +++ b/lib/features/details/details_view_model.dart @@ -1,23 +1,23 @@ import 'package:flutter/material.dart'; -import 'package:restaurantour/services/favorites_service.dart'; +import 'package:restaurantour/services/favorite_service.dart'; -enum RestaurantDetailsStatus { loading, content, error, updatingFavorite } +enum DetailsStatus { loading, content, error, updatingFavorite } -extension RestaurantDetailsStatusExt on RestaurantDetailsStatus { - bool get isLoading => this == RestaurantDetailsStatus.loading; - bool get isAddingFavorite => this == RestaurantDetailsStatus.updatingFavorite; - bool get isError => this == RestaurantDetailsStatus.error; +extension DetailsStatusExt on DetailsStatus { + bool get isLoading => this == DetailsStatus.loading; + bool get isAddingFavorite => this == DetailsStatus.updatingFavorite; + bool get isError => this == DetailsStatus.error; } -class RestaurantDetailsViewModel with ChangeNotifier { - RestaurantDetailsStatus status = RestaurantDetailsStatus.loading; +class DetailsViewModel with ChangeNotifier { + DetailsStatus status = DetailsStatus.loading; final String restaurantId; - final FavoritesService favoriteService; + final FavoriteService favoriteService; bool isFavorite = false; List _favoriteList = []; - RestaurantDetailsViewModel({required this.favoriteService, required this.restaurantId}); + DetailsViewModel({required this.favoriteService, required this.restaurantId}); Future toggleFavorite() async { try { _emitChangingFavorite(); @@ -46,22 +46,22 @@ class RestaurantDetailsViewModel with ChangeNotifier { } void _emitContent() { - status = RestaurantDetailsStatus.content; + status = DetailsStatus.content; notifyListeners(); } void _emitChangingFavorite() { - status = RestaurantDetailsStatus.updatingFavorite; + status = DetailsStatus.updatingFavorite; notifyListeners(); } void _emitLoading() { - status = RestaurantDetailsStatus.loading; + status = DetailsStatus.loading; notifyListeners(); } void _emitError() { - status = RestaurantDetailsStatus.error; + status = DetailsStatus.error; notifyListeners(); } } diff --git a/lib/features/restaurants_list/pages/favorites/favorites_page.dart b/lib/features/restaurants/pages/favorites/favorites_page.dart similarity index 65% rename from lib/features/restaurants_list/pages/favorites/favorites_page.dart rename to lib/features/restaurants/pages/favorites/favorites_page.dart index 02c5dfaf..e768f80a 100644 --- a/lib/features/restaurants_list/pages/favorites/favorites_page.dart +++ b/lib/features/restaurants/pages/favorites/favorites_page.dart @@ -2,11 +2,11 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:restaurantour/components/rt_empty_widget.dart'; import 'package:restaurantour/components/rt_error_widget.dart'; -import 'package:restaurantour/components/restaurant_item_widget.dart'; +import 'package:restaurantour/components/rt_item_widget.dart'; import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/components/rt_shimmer_loading.dart'; import 'package:restaurantour/core/inject.dart'; -import 'package:restaurantour/features/restaurants_list/restaurant_list_view_model.dart'; +import 'package:restaurantour/features/restaurants/restaurant_view_model.dart'; class FavoritesPage extends StatefulWidget { const FavoritesPage({super.key}); @@ -16,7 +16,7 @@ class FavoritesPage extends StatefulWidget { } class _FavoritesPageState extends State { - RestaurantListViewModel? model; + RestaurantsViewModel? model; @override void initState() { @@ -28,22 +28,22 @@ class _FavoritesPageState extends State { Widget build(BuildContext context) { model = context.watch(); - if (model!.restaurantFavoriteListStatus.isLoading) return const RTShimmerLoading(); + if (model!.favoriteStatus.isLoading) return const RTShimmerLoading(); - if (model!.restaurantFavoriteListStatus.isError) return const RTErrorWidget(); + if (model!.favoriteStatus.isError) return const RTErrorWidget(); - if (model!.restaurantFavoriteListStatus.isEmpty) return const RTEmptyWidget(); + if (model!.favoriteStatus.isEmpty) return const RTEmptyWidget(); return ListView.builder( - itemCount: model!.favorites.length, + itemCount: model!.favoritesRestaurantList.length, itemBuilder: (context, index) { final isFirstItem = index == 0; - return RestaurantItemWidget( + return RTItemWidget( key: Key('favorite-restaurant-$index'), isFirstItem: isFirstItem, imageNetwork: inject(), - restaurant: model!.favorites[index], + restaurant: model!.favoritesRestaurantList[index], onFinishNavigation: model!.loadFavorites, ); }, diff --git a/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart b/lib/features/restaurants/pages/restaurants/restaurants_page.dart similarity index 68% rename from lib/features/restaurants_list/pages/restaurants/restaurants_page.dart rename to lib/features/restaurants/pages/restaurants/restaurants_page.dart index f1545b02..f024f86f 100644 --- a/lib/features/restaurants_list/pages/restaurants/restaurants_page.dart +++ b/lib/features/restaurants/pages/restaurants/restaurants_page.dart @@ -2,11 +2,11 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:restaurantour/components/rt_empty_widget.dart'; import 'package:restaurantour/components/rt_error_widget.dart'; -import 'package:restaurantour/components/restaurant_item_widget.dart'; +import 'package:restaurantour/components/rt_item_widget.dart'; import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/components/rt_shimmer_loading.dart'; import 'package:restaurantour/core/inject.dart'; -import 'package:restaurantour/features/restaurants_list/restaurant_list_view_model.dart'; +import 'package:restaurantour/features/restaurants/restaurant_view_model.dart'; class RestaurantsPage extends StatefulWidget { const RestaurantsPage({super.key}); @@ -16,7 +16,7 @@ class RestaurantsPage extends StatefulWidget { } class _RestaurantsPageState extends State { - RestaurantListViewModel? model; + RestaurantsViewModel? model; @override void initState() { @@ -27,24 +27,24 @@ class _RestaurantsPageState extends State { @override Widget build(BuildContext context) { model = context.watch(); - if (model!.restaurantListStatus.isLoading) return const RTShimmerLoading(); + if (model!.restaurantStatus.isLoading) return const RTShimmerLoading(); - if (model!.restaurantListStatus.isError) return const RTErrorWidget(); + if (model!.restaurantStatus.isError) return const RTErrorWidget(); - if (model!.restaurantListStatus.isEmpty) return const RTEmptyWidget(); + if (model!.restaurantStatus.isEmpty) return const RTEmptyWidget(); return RefreshIndicator( onRefresh: () => model!.load(), child: ListView.builder( - itemCount: model!.restaurants.length, + itemCount: model!.restaurantsList.length, itemBuilder: (context, index) { final isFirstItem = index == 0; - return RestaurantItemWidget( + return RTItemWidget( key: Key('restaurant-$index'), isFirstItem: isFirstItem, imageNetwork: inject(), - restaurant: model!.restaurants[index], + restaurant: model!.restaurantsList[index], onFinishNavigation: () => model!.loadFavorites(), ); }, diff --git a/lib/features/restaurants/restaurant_view_model.dart b/lib/features/restaurants/restaurant_view_model.dart new file mode 100644 index 00000000..41a74934 --- /dev/null +++ b/lib/features/restaurants/restaurant_view_model.dart @@ -0,0 +1,104 @@ +import 'package:flutter/material.dart'; +import 'package:restaurantour/models/restaurant.dart'; +import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/services/favorite_service.dart'; + +enum RestaurantStatus { loading, content, error, empty } + +extension RestaurantStatusExt on RestaurantStatus { + bool get isLoading => this == RestaurantStatus.loading; + bool get isError => this == RestaurantStatus.error; + bool get isEmpty => this == RestaurantStatus.empty; +} + +enum FavoriteStatus { loading, content, error, empty } + +extension FavoriteStatusExt on FavoriteStatus { + bool get isLoading => this == FavoriteStatus.loading; + bool get isError => this == FavoriteStatus.error; + bool get isEmpty => this == FavoriteStatus.empty; +} + +class RestaurantsViewModel with ChangeNotifier { + final RestaurantRepository restaurantRepository; + final FavoriteService favoritesService; + RestaurantsViewModel({required this.favoritesService, required this.restaurantRepository}); + + RestaurantStatus restaurantStatus = RestaurantStatus.loading; + FavoriteStatus favoriteStatus = FavoriteStatus.loading; + + RestaurantQueryResult? _restaurants; + List _favorites = []; + + List get favoritesRestaurantList => _favorites; + List get restaurantsList => _restaurants?.restaurants ?? []; + + Future load() async { + await loadRestaurants(); + await loadFavorites(); + } + + Future loadRestaurants() async { + try { + _emitRestaurantLoading(); + _restaurants = await restaurantRepository.getRestaurants(); + restaurantsList.isEmpty ? _emitRestaurantEmpty() : _emitRestaurantContent(); + } catch (e) { + print(e); + _emitRestaurantError(); + } + } + + Future loadFavorites() async { + try { + _emitFavoriteLoading(); + _favorites = []; + final favoritesIds = await favoritesService.loadFavorites(); + _favorites = restaurantsList.where((restaurant) => favoritesIds.contains(restaurant.id)).toList(); + _favorites.isEmpty ? _emitFavoriteEmpty() : _emitFavoriteContent(); + } catch (e) { + print(e); + _emitFavoriteError(); + } + } + + void _emitRestaurantContent() { + restaurantStatus = RestaurantStatus.content; + notifyListeners(); + } + + void _emitRestaurantLoading() { + restaurantStatus = RestaurantStatus.loading; + notifyListeners(); + } + + void _emitRestaurantError() { + restaurantStatus = RestaurantStatus.error; + notifyListeners(); + } + + void _emitRestaurantEmpty() { + restaurantStatus = RestaurantStatus.empty; + notifyListeners(); + } + + void _emitFavoriteContent() { + favoriteStatus = FavoriteStatus.content; + notifyListeners(); + } + + void _emitFavoriteLoading() { + favoriteStatus = FavoriteStatus.loading; + notifyListeners(); + } + + void _emitFavoriteError() { + favoriteStatus = FavoriteStatus.error; + notifyListeners(); + } + + void _emitFavoriteEmpty() { + favoriteStatus = FavoriteStatus.empty; + notifyListeners(); + } +} diff --git a/lib/features/restaurants_list/restaurants_list_screen.dart b/lib/features/restaurants/restaurants_screen.dart similarity index 66% rename from lib/features/restaurants_list/restaurants_list_screen.dart rename to lib/features/restaurants/restaurants_screen.dart index 86237993..48fc7afb 100644 --- a/lib/features/restaurants_list/restaurants_list_screen.dart +++ b/lib/features/restaurants/restaurants_screen.dart @@ -3,38 +3,36 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:provider/provider.dart'; import 'package:restaurantour/core/rt_colors.dart'; import 'package:restaurantour/core/inject.dart'; -import 'package:restaurantour/core/text_style.dart'; -import 'package:restaurantour/features/restaurants_list/pages/favorites/favorites_page.dart'; -import 'package:restaurantour/features/restaurants_list/pages/restaurants/restaurants_page.dart'; -import 'package:restaurantour/features/restaurants_list/restaurant_list_view_model.dart'; +import 'package:restaurantour/core/rt_text_style.dart'; +import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page.dart'; +import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_page.dart'; +import 'package:restaurantour/features/restaurants/restaurant_view_model.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; -import 'package:restaurantour/services/favorites_service.dart'; +import 'package:restaurantour/services/favorite_service.dart'; -class RestaurantsListScreen extends StatefulWidget { - const RestaurantsListScreen({super.key}); +class RestaurantsScreen extends StatefulWidget { + const RestaurantsScreen({super.key}); static Widget create() => ChangeNotifierProvider( - create: (context) => RestaurantListViewModel( - favoritesService: inject(), + create: (context) => RestaurantsViewModel( + favoritesService: inject(), restaurantRepository: inject(), ), - child: const RestaurantsListScreen(), + child: const RestaurantsScreen(), ); @override - State createState() => _RestaurantsListScreenState(); + State createState() => _RestaurantsScreenState(); } -class _RestaurantsListScreenState extends State { - RestaurantListViewModel? model; +class _RestaurantsScreenState extends State { + RestaurantsViewModel? model; @override void initState() { super.initState(); model = context.read(); - WidgetsBinding.instance.addPostFrameCallback((_) async { - await model!.load(); - }); + WidgetsBinding.instance.addPostFrameCallback((_) async => await model!.load()); } @override diff --git a/lib/features/restaurants_list/restaurant_list_view_model.dart b/lib/features/restaurants_list/restaurant_list_view_model.dart deleted file mode 100644 index 78d7ba55..00000000 --- a/lib/features/restaurants_list/restaurant_list_view_model.dart +++ /dev/null @@ -1,104 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:restaurantour/models/restaurant.dart'; -import 'package:restaurantour/repositories/restaurant_repository.dart'; -import 'package:restaurantour/services/favorites_service.dart'; - -enum RestaurantListStatus { loading, content, error, empty } - -extension RestaurantListStatusExt on RestaurantListStatus { - bool get isLoading => this == RestaurantListStatus.loading; - bool get isError => this == RestaurantListStatus.error; - bool get isEmpty => this == RestaurantListStatus.empty; -} - -enum RestaurantFavoriteListStatus { loading, content, error, empty } - -extension RestaurantFavoriteListStatusExt on RestaurantFavoriteListStatus { - bool get isLoading => this == RestaurantFavoriteListStatus.loading; - bool get isError => this == RestaurantFavoriteListStatus.error; - bool get isEmpty => this == RestaurantFavoriteListStatus.empty; -} - -class RestaurantListViewModel with ChangeNotifier { - final RestaurantRepository restaurantRepository; - final FavoritesService favoritesService; - RestaurantListViewModel({required this.favoritesService, required this.restaurantRepository}); - - RestaurantListStatus restaurantListStatus = RestaurantListStatus.loading; - RestaurantFavoriteListStatus restaurantFavoriteListStatus = RestaurantFavoriteListStatus.loading; - - RestaurantQueryResult? _restaurants; - List _favorites = []; - - List get favorites => _favorites; - List get restaurants => _restaurants?.restaurants ?? []; - - Future load() async { - await loadRestaurants(); - await loadFavorites(); - } - - Future loadRestaurants() async { - try { - _emitRestaurantListLoading(); - _restaurants = await restaurantRepository.getRestaurants(); - restaurants.isEmpty ? _emitRestaurantListEmpty() : _emitRestaurantListContent(); - } catch (e) { - print(e); - _emitRestaurantListError(); - } - } - - Future loadFavorites() async { - try { - _emitRestaurantFavoriteListLoading(); - _favorites = []; - final favoritesIds = await favoritesService.loadFavorites(); - _favorites = restaurants.where((restaurant) => favoritesIds.contains(restaurant.id)).toList(); - _favorites.isEmpty ? _emitRestaurantFavoriteListEmpty() : _emitRestaurantFavoriteListContent(); - } catch (e) { - print(e); - _emitRestaurantFavoriteListError(); - } - } - - void _emitRestaurantListContent() { - restaurantListStatus = RestaurantListStatus.content; - notifyListeners(); - } - - void _emitRestaurantListLoading() { - restaurantListStatus = RestaurantListStatus.loading; - notifyListeners(); - } - - void _emitRestaurantListError() { - restaurantListStatus = RestaurantListStatus.error; - notifyListeners(); - } - - void _emitRestaurantListEmpty() { - restaurantListStatus = RestaurantListStatus.empty; - notifyListeners(); - } - - void _emitRestaurantFavoriteListContent() { - restaurantFavoriteListStatus = RestaurantFavoriteListStatus.content; - notifyListeners(); - } - - void _emitRestaurantFavoriteListLoading() { - restaurantFavoriteListStatus = RestaurantFavoriteListStatus.loading; - notifyListeners(); - } - - void _emitRestaurantFavoriteListError() { - restaurantFavoriteListStatus = RestaurantFavoriteListStatus.error; - notifyListeners(); - } - - void _emitRestaurantFavoriteListEmpty() { - restaurantFavoriteListStatus = RestaurantFavoriteListStatus.empty; - notifyListeners(); - } -} diff --git a/lib/restauran_tour.dart b/lib/restauran_tour.dart index 61ea6f65..bbaa0615 100644 --- a/lib/restauran_tour.dart +++ b/lib/restauran_tour.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:restaurantour/core/rt_colors.dart'; -import 'package:restaurantour/features/restaurants_list/restaurants_list_screen.dart'; +import 'package:restaurantour/features/restaurants/restaurants_screen.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; @@ -25,7 +25,7 @@ class RestauranTour extends StatelessWidget { background: RTColors.background, ), ), - home: RestaurantsListScreen.create(), + home: RestaurantsScreen.create(), ); } } diff --git a/lib/services/favorites_service.dart b/lib/services/favorite_service.dart similarity index 91% rename from lib/services/favorites_service.dart rename to lib/services/favorite_service.dart index 6230aed6..fc3f3005 100644 --- a/lib/services/favorites_service.dart +++ b/lib/services/favorite_service.dart @@ -1,10 +1,10 @@ import 'package:shared_preferences/shared_preferences.dart'; -class FavoritesService { +class FavoriteService { final SharedPreferences sharedPreferences; final String favoritesKey = 'favorites'; - FavoritesService({required this.sharedPreferences}); + FavoriteService({required this.sharedPreferences}); Future> loadFavorites() async { List? favoriteItems = sharedPreferences.getStringList(favoritesKey); diff --git a/test/golden_test/restaurant_details_screen_test.dart b/test/golden_test/details_screen_test.dart similarity index 67% rename from test/golden_test/restaurant_details_screen_test.dart rename to test/golden_test/details_screen_test.dart index b0beaa5c..fc0e6691 100644 --- a/test/golden_test/restaurant_details_screen_test.dart +++ b/test/golden_test/details_screen_test.dart @@ -4,20 +4,20 @@ import 'package:get_it/get_it.dart'; import 'package:golden_toolkit/golden_toolkit.dart'; import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/components/rt_image_network.dart'; -import 'package:restaurantour/features/restaurant_details/restaurant_details_screen.dart'; +import 'package:restaurantour/features/details/details_screen.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; -import 'package:restaurantour/services/favorites_service.dart'; +import 'package:restaurantour/services/favorite_service.dart'; import '../mocks/mocks.dart'; import '../widget_for_tests.dart'; void main() { RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); - FavoritesService favoritesService = FavoritesServiceMock(); + FavoriteService favoritesService = FavoritesServiceMock(); setUp(() { GetIt.I.registerFactory(() => restaurantRepository); - GetIt.I.registerFactory(() => favoritesService); + GetIt.I.registerFactory(() => favoritesService); GetIt.I.registerFactory(() => RTImageNetworkMock()); }); @@ -30,10 +30,10 @@ void main() { final deviceBuilder = DeviceBuilder() ..overrideDevicesForAllScenarios(devices: [Device.iphone11.copyWith(size: const Size(414, 1100))]) ..addScenario( - widget: widgetBuilder(RestaurantDetailsScreen.create(restaurant: Restaurant.fixture(), imageNetwork: RTImageNetworkMock())), + widget: widgetBuilder(DetailsScreen.create(restaurant: Restaurant.fixture(), imageNetwork: RTImageNetworkMock())), ); - testGoldens('when [RestaurantDetailsScreen] loads should show the title, favorite icon, and other details', (WidgetTester tester) async { + testGoldens('when [DetailsScreen] loads should show the title, favorite icon, and other details', (WidgetTester tester) async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); await loadAppFonts(); @@ -41,10 +41,10 @@ void main() { await tester.pumpDeviceBuilder(deviceBuilder); await tester.pumpAndSettle(); - await screenMatchesGolden(tester, "restaurant_details_content"); + await screenMatchesGolden(tester, "details_screen_content"); }); - testGoldens('when [RestaurantDetailsScreen] loads a favorite restaurant should show the favorite icon filled', (WidgetTester tester) async { + testGoldens('when [DetailsScreen] loads a favorite restaurant should show the favorite icon filled', (WidgetTester tester) async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); await loadAppFonts(); @@ -52,10 +52,10 @@ void main() { await tester.pumpDeviceBuilder(deviceBuilder); await tester.pumpAndSettle(); - await screenMatchesGolden(tester, "restaurant_details_favorite"); + await screenMatchesGolden(tester, "details_screen_favorite"); }); - testGoldens('when [RestaurantDetailsScreen] loads a non favorite restaurant should show the favorite icon not filled', (WidgetTester tester) async { + testGoldens('when [DetailsScreen] loads a non favorite restaurant should show the favorite icon not filled', (WidgetTester tester) async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); await loadAppFonts(); @@ -63,11 +63,11 @@ void main() { await tester.pumpDeviceBuilder(deviceBuilder); await tester.pumpAndSettle(); - await screenMatchesGolden(tester, "restaurant_details_not_favorite"); + await screenMatchesGolden(tester, "details_screen_not_favorite"); }); group('toggleFavorite', () { - testGoldens('''when [RestaurantDetailsScreen] loads a non favorite restaurant + testGoldens('''when [DetailsScreen] loads a non favorite restaurant and tap to favorite update the status and show the favorite icon filled''', (WidgetTester tester) async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); when(() => favoritesService.addFavorite(any())).thenAnswer((_) => Future.value()); @@ -79,10 +79,10 @@ void main() { await tester.tap(find.byKey(const Key('favorite-button'))); await tester.pumpAndSettle(); - await screenMatchesGolden(tester, "restaurant_details_added_favorite"); + await screenMatchesGolden(tester, "details_screen_added_favorite"); }); - testGoldens('''when [RestaurantDetailsScreen] loads a favorite restaurant + testGoldens('''when [DetailsScreen] loads a favorite restaurant and tap to remove favorite update the status and show the favorite icon not filled''', (WidgetTester tester) async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); when(() => favoritesService.removeFavorite(any())).thenAnswer((_) => Future.value()); @@ -94,7 +94,7 @@ void main() { await tester.tap(find.byKey(const Key('favorite-button'))); await tester.pumpAndSettle(); - await screenMatchesGolden(tester, "restaurant_details_removed_favorite"); + await screenMatchesGolden(tester, "details_screen_removed_favorite"); }); }); } diff --git a/test/golden_test/favorites_page_test.dart b/test/golden_test/favorites_page_test.dart index 9674f8be..e409c68d 100644 --- a/test/golden_test/favorites_page_test.dart +++ b/test/golden_test/favorites_page_test.dart @@ -4,18 +4,18 @@ import 'package:golden_toolkit/golden_toolkit.dart'; import 'package:mocktail/mocktail.dart'; import 'package:provider/provider.dart'; import 'package:restaurantour/components/rt_image_network.dart'; -import 'package:restaurantour/features/restaurants_list/pages/favorites/favorites_page.dart'; -import 'package:restaurantour/features/restaurants_list/restaurant_list_view_model.dart'; +import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page.dart'; +import 'package:restaurantour/features/restaurants/restaurant_view_model.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; -import 'package:restaurantour/services/favorites_service.dart'; +import 'package:restaurantour/services/favorite_service.dart'; import '../mocks/mocks.dart'; import '../widget_for_tests.dart'; void main() { RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); - FavoritesService favoritesService = FavoritesServiceMock(); + FavoriteService favoritesService = FavoritesServiceMock(); setUp(() { GetIt.I.registerFactory(() => RTImageNetworkMock()); }); @@ -32,7 +32,7 @@ void main() { widget: widgetBuilder( ChangeNotifierProvider( create: (context) { - final model = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + final model = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); model.load(); return model; }, @@ -42,7 +42,7 @@ void main() { ); testGoldens('''when successfully fetch the [RestaurantQueryResult] and has data, and also load the favorites fetch the data - should create a [RestaurantItemWidget] for each favorite [Restaurant]''', (WidgetTester tester) async { + should create a [RTItemWidget] for each favorite [Restaurant]''', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); await loadAppFonts(); diff --git a/test/golden_test/goldens/restaurant_details_added_favorite.png b/test/golden_test/goldens/details_screen_added_favorite.png similarity index 100% rename from test/golden_test/goldens/restaurant_details_added_favorite.png rename to test/golden_test/goldens/details_screen_added_favorite.png diff --git a/test/golden_test/goldens/restaurant_details_content.png b/test/golden_test/goldens/details_screen_content.png similarity index 100% rename from test/golden_test/goldens/restaurant_details_content.png rename to test/golden_test/goldens/details_screen_content.png diff --git a/test/golden_test/goldens/restaurant_details_favorite.png b/test/golden_test/goldens/details_screen_favorite.png similarity index 100% rename from test/golden_test/goldens/restaurant_details_favorite.png rename to test/golden_test/goldens/details_screen_favorite.png diff --git a/test/golden_test/goldens/restaurant_details_not_favorite.png b/test/golden_test/goldens/details_screen_not_favorite.png similarity index 100% rename from test/golden_test/goldens/restaurant_details_not_favorite.png rename to test/golden_test/goldens/details_screen_not_favorite.png diff --git a/test/golden_test/goldens/restaurant_details_removed_favorite.png b/test/golden_test/goldens/details_screen_removed_favorite.png similarity index 100% rename from test/golden_test/goldens/restaurant_details_removed_favorite.png rename to test/golden_test/goldens/details_screen_removed_favorite.png diff --git a/test/golden_test/restauran_tour_test.dart b/test/golden_test/restauran_tour_test.dart index 0940ed81..29e22934 100644 --- a/test/golden_test/restauran_tour_test.dart +++ b/test/golden_test/restauran_tour_test.dart @@ -7,16 +7,16 @@ import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/restauran_tour.dart'; -import 'package:restaurantour/services/favorites_service.dart'; +import 'package:restaurantour/services/favorite_service.dart'; import '../mocks/mocks.dart'; void main() { RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); - FavoritesService favoritesService = FavoritesServiceMock(); + FavoriteService favoritesService = FavoritesServiceMock(); setUp(() { GetIt.I.registerFactory(() => restaurantRepository); - GetIt.I.registerFactory(() => favoritesService); + GetIt.I.registerFactory(() => favoritesService); GetIt.I.registerFactory(() => RTImageNetworkMock()); }); diff --git a/test/mocks/mocks.dart b/test/mocks/mocks.dart index 9a9239c9..a72232b9 100644 --- a/test/mocks/mocks.dart +++ b/test/mocks/mocks.dart @@ -4,11 +4,11 @@ import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:mocktail/mocktail.dart'; -import 'package:restaurantour/services/favorites_service.dart'; +import 'package:restaurantour/services/favorite_service.dart'; class RestaurantRepositoryMock extends Mock implements RestaurantRepository {} -class FavoritesServiceMock extends Mock implements FavoritesService {} +class FavoritesServiceMock extends Mock implements FavoriteService {} class DioMock extends Mock implements Dio {} diff --git a/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart b/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart index 88e1c66a..d7de09f1 100644 --- a/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart +++ b/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart @@ -2,15 +2,15 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:get_it/get_it.dart'; import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/components/rt_image_network.dart'; -import 'package:restaurantour/features/restaurant_details/restaurant_details_view_model.dart'; -import 'package:restaurantour/services/favorites_service.dart'; +import 'package:restaurantour/features/details/details_view_model.dart'; +import 'package:restaurantour/services/favorite_service.dart'; import '../../mocks/mocks.dart'; void main() { - FavoritesService favoritesService = FavoritesServiceMock(); + FavoriteService favoritesService = FavoritesServiceMock(); setUp(() { - GetIt.I.registerFactory(() => favoritesService); + GetIt.I.registerFactory(() => favoritesService); GetIt.I.registerFactory(() => RTImageNetworkMock()); }); @@ -19,18 +19,18 @@ void main() { GetIt.I.reset(); }); const String restaurantId = ''; - test('''when [RestaurantDetailsViewModel] is created - the [status] should starts with [RestaurantDetailsStatus.loading] + test('''when [DetailsViewModel] is created + the [status] should starts with [DetailsStatus.loading] and no call to [favoritesService.loadFavorites] should be triggered''', () async { - final sut = RestaurantDetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); + final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); - expect(sut.status, RestaurantDetailsStatus.loading); + expect(sut.status, DetailsStatus.loading); verifyNever(() => favoritesService.loadFavorites()); }); test('when [load] is called should call once time the [loadFavorites] on [FavoritesService]', () async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - final sut = RestaurantDetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); + final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); await sut.load(); @@ -38,28 +38,28 @@ void main() { }); test('''when [load] get successfully the data from favoriteService - the [status] should be [RestaurantDetailsStatus.content]''', () async { + the [status] should be [DetailsStatus.content]''', () async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - final sut = RestaurantDetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); + final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); await sut.load(); - expect(sut.status, RestaurantDetailsStatus.content); + expect(sut.status, DetailsStatus.content); }); - test('when [load] get some error from favoriteService the [status] should be [RestaurantDetailsStatus.error]', () async { + test('when [load] get some error from favoriteService the [status] should be [DetailsStatus.error]', () async { when(() => favoritesService.loadFavorites()).thenThrow('error mock'); - final sut = RestaurantDetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); + final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); await sut.load(); - expect(sut.status, RestaurantDetailsStatus.error); + expect(sut.status, DetailsStatus.error); }); test('''when [load] get successfully the data from favoriteService and finds a matching ID in the favorite list - [restaurantDetailsViewModel.isFavorite] should be [true]''', () async { + [detailsViewModel.isFavorite] should be [true]''', () async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([restaurantId])); - final sut = RestaurantDetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); + final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); await sut.load(); @@ -67,9 +67,9 @@ void main() { }); test('''when [load] get successfully the data from favoriteService and finds no matching ID in the favorite list - [restaurantDetailsViewModel.isFavorite] should be [false]''', () async { + [detailsViewModel.isFavorite] should be [false]''', () async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value(['new-restaurant'])); - final sut = RestaurantDetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); + final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); await sut.load(); @@ -78,11 +78,11 @@ void main() { test('''when [load] get successfully the data from favoriteService and the [Restaurant] is favorite and when [toggleFavorite] is called should call [favoritesService.removeFavorite] once time - and [restaurantDetailsViewModel.isFavorite] should be changed to [false]''', () async { + and [detailsViewModel.isFavorite] should be changed to [false]''', () async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([restaurantId])); when(() => favoritesService.addFavorite(any())).thenAnswer((_) => Future.value()); when(() => favoritesService.removeFavorite(any())).thenAnswer((_) => Future.value()); - final sut = RestaurantDetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); + final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); await sut.load(); expect(sut.isFavorite, true); @@ -96,11 +96,11 @@ void main() { test('''when [load] get successfully the data from favoriteService and the [Restaurant] is not favorite and when [toggleFavorite] is called should call [favoritesService.addFavorite] once time - and [restaurantDetailsViewModel.isFavorite] should be changed to [true]''', () async { + and [detailsViewModel.isFavorite] should be changed to [true]''', () async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value(['favorite-restaurant'])); when(() => favoritesService.addFavorite(any())).thenAnswer((_) => Future.value()); when(() => favoritesService.removeFavorite(any())).thenAnswer((_) => Future.value()); - final sut = RestaurantDetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); + final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); await sut.load(); expect(sut.isFavorite, false); diff --git a/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart b/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart index 99c8360c..22d5b6f7 100644 --- a/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart +++ b/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart @@ -2,19 +2,19 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:get_it/get_it.dart'; import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/components/rt_image_network.dart'; -import 'package:restaurantour/features/restaurants_list/restaurant_list_view_model.dart'; +import 'package:restaurantour/features/restaurants/restaurant_view_model.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; -import 'package:restaurantour/services/favorites_service.dart'; +import 'package:restaurantour/services/favorite_service.dart'; import '../../mocks/mocks.dart'; void main() { RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); - FavoritesService favoritesService = FavoritesServiceMock(); + FavoriteService favoritesService = FavoritesServiceMock(); setUp(() { GetIt.I.registerFactory(() => restaurantRepository); - GetIt.I.registerFactory(() => favoritesService); + GetIt.I.registerFactory(() => favoritesService); GetIt.I.registerFactory(() => RTImageNetworkMock()); }); @@ -24,63 +24,63 @@ void main() { GetIt.I.reset(); }); - group('tests on restaurantListViewModel.load() ->', () { - test('''when [RestaurantListViewModel] is created the [restaurantListStatus] should starts with [RestaurantListStatus.loading] + group('tests on restaurantViewModel.load() ->', () { + test('''when [RestaurantViewModel] is created the [restaurantStatus] should starts with [RestaurantStatus.loading] and no call to [restaurantRepository.getRestaurants] should be triggered''', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - expect(sut.restaurantListStatus, RestaurantListStatus.loading); + expect(sut.restaurantStatus, RestaurantStatus.loading); verifyNever(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))); }); test('when [load] is called should call once time the [getRestaurants] on [RestaurantRepository]', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.load(); verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); }); - test('when [load] get successfully the data from repository the [restaurantListStatus] should be [RestaurantListStatus.content]', () async { + test('when [load] get successfully the data from repository the [restaurantStatus] should be [RestaurantStatus.content]', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.load(); - expect(sut.restaurantListStatus, RestaurantListStatus.content); + expect(sut.restaurantStatus, RestaurantStatus.content); }); test('''when [load] get successfully the data from repository but the [Restaurant] list is [empty] - the [restaurantListStatus] should be [RestaurantListStatus.restaurantsEmpty]''', () async { + the [restaurantStatus] should be [RestaurantStatus.empty]''', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResult(restaurants: []))); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.load(); - expect(sut.restaurantListStatus, RestaurantListStatus.empty); + expect(sut.restaurantStatus, RestaurantStatus.empty); }); - test('when [load] get some error from repository the [restaurantListStatus] should be [RestaurantListStatus.error]', () async { + test('when [load] get some error from repository the [restaurantStatus] should be [RestaurantStatus.error]', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenThrow('error mock'); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.load(); - expect(sut.restaurantListStatus, RestaurantListStatus.error); + expect(sut.restaurantStatus, RestaurantStatus.error); }); test('''when [load] get some error from repository no more calls should be triggered to [restaurantRepository.getRestaurants]''', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenThrow('error mock'); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.load(); @@ -88,100 +88,100 @@ void main() { }); }); - group('tests on restaurantListViewModel.loadFavorites() ->', () { - test('''when [RestaurantListViewModel] is created the [status] should starts with [RestaurantListStatus.loading] + group('tests on restaurantViewModel.loadFavorites() ->', () { + test('''when [RestaurantViewModel] is created the [favoriteStatus] should starts with [FavoriteStatus.loading] and no call to [favoritesService.loadFavorites] should be triggered''', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - expect(sut.restaurantFavoriteListStatus, RestaurantFavoriteListStatus.loading); + expect(sut.favoriteStatus, FavoriteStatus.loading); verifyNever(() => favoritesService.loadFavorites()); }); test('when [loadFavorites] is called should call only once time the [getRestaurants] on [FavoritesService]', () async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.loadFavorites(); verify(() => favoritesService.loadFavorites()).called(1); }); - test('''when [RestaurantListViewModel] is created the [Restaurant] list has items, + test('''when [RestaurantViewModel] is created the [Restaurant] list has items, if [loadFavorites] get successfully the data from favoritesService - the [status] should be [RestaurantListStatus.favoritesEmpty]''', () async { + the [favoriteStatus] should be [FavoriteStatus.empty]''', () async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); - final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.loadFavorites(); - expect(sut.restaurantFavoriteListStatus, RestaurantFavoriteListStatus.empty); + expect(sut.favoriteStatus, FavoriteStatus.empty); }); test('''when [load] get successfully the data from repository but the [Restaurant] list is [empty], - when [loadFavorites] get successfully the data from favoritesService the [status] - should be [RestaurantListStatus.favoritesEmpty]''', () async { + when [loadFavorites] get successfully the data from favoritesService the [favoriteStatus] + should be [FavoriteStatus.empty]''', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResult(restaurants: []))); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); - final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.load(); await sut.loadFavorites(); - expect(sut.restaurantFavoriteListStatus, RestaurantFavoriteListStatus.empty); + expect(sut.favoriteStatus, FavoriteStatus.empty); }); test('''when [load] get successfully the data from repository and [loadFavorites] get successfully the data from favoritesService but finds no matching ID in the lists, - the [status] should be [RestaurantListStatus.favoritesEmpty]''', () async { + the [favoriteStatus] should be [FavoriteStatus.empty]''', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value(['another-restaurant-id'])); - final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.load(); await sut.loadFavorites(); - expect(sut.restaurantFavoriteListStatus, RestaurantFavoriteListStatus.empty); + expect(sut.favoriteStatus, FavoriteStatus.empty); }); test('''when [load] get successfully the data from repository and [loadFavorites] get successfully the data from favoritesService and finds a matching ID in the lists, - the [status] should be [RestaurantListStatus.content]''', () async { + the [favoriteStatus] should be [FavoriteStatus.content]''', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); - final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.load(); await sut.loadFavorites(); - expect(sut.restaurantFavoriteListStatus, RestaurantFavoriteListStatus.content); + expect(sut.favoriteStatus, FavoriteStatus.content); }); test('''when [loadFavorites] get successfully the data from favoritesService but the list is [empty] - the [status] should be [RestaurantListStatus.favoritesEmpty]''', () async { + the [favoriteStatus] should be [FavoriteStatus.empty]''', () async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.loadFavorites(); - expect(sut.restaurantFavoriteListStatus, RestaurantFavoriteListStatus.empty); + expect(sut.favoriteStatus, FavoriteStatus.empty); }); test('''when [loadFavorites] get some error from favoritesService - the [status] should be [RestaurantListStatus.favoritesError]''', () async { + the [favoriteStatus] should be [FavoriteStatus.error]''', () async { when(() => favoritesService.loadFavorites()).thenThrow('error mock'); - final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.loadFavorites(); - expect(sut.restaurantFavoriteListStatus, RestaurantFavoriteListStatus.error); + expect(sut.favoriteStatus, FavoriteStatus.error); }); test('''when [loadFavorites] get some error from favoritesService no more calls should be triggered to [favoritesService.loadFavorites]''', () async { when(() => favoritesService.loadFavorites()).thenThrow('error mock'); - final sut = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.loadFavorites(); diff --git a/test/widget_tests/favorites_page_test.dart b/test/widget_tests/favorites_page_test.dart index 5d960e69..6884896a 100644 --- a/test/widget_tests/favorites_page_test.dart +++ b/test/widget_tests/favorites_page_test.dart @@ -5,21 +5,21 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:get_it/get_it.dart'; import 'package:mocktail/mocktail.dart'; import 'package:provider/provider.dart'; -import 'package:restaurantour/components/restaurant_item_widget.dart'; +import 'package:restaurantour/components/rt_item_widget.dart'; import 'package:restaurantour/components/rt_empty_widget.dart'; import 'package:restaurantour/components/rt_error_widget.dart'; import 'package:restaurantour/components/rt_image_network.dart'; -import 'package:restaurantour/features/restaurants_list/pages/favorites/favorites_page.dart'; -import 'package:restaurantour/features/restaurants_list/restaurant_list_view_model.dart'; +import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page.dart'; +import 'package:restaurantour/features/restaurants/restaurant_view_model.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; -import 'package:restaurantour/services/favorites_service.dart'; +import 'package:restaurantour/services/favorite_service.dart'; import '../mocks/mocks.dart'; void main() { RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); - FavoritesService favoritesService = FavoritesServiceMock(); + FavoriteService favoritesService = FavoritesServiceMock(); setUp(() { GetIt.I.registerFactory(() => RTImageNetworkMock()); }); @@ -35,7 +35,7 @@ void main() { debugShowCheckedModeBanner: false, home: ChangeNotifierProvider( create: (context) { - final model = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + final model = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); model.load(); return model; }, @@ -44,7 +44,7 @@ void main() { ); testWidgets('''when successfully fetch the [RestaurantQueryResult] and has data, and also load the favorites fetch the data - should create a [RestaurantItemWidget] for each favorite [Restaurant]''', (WidgetTester tester) async { + should create a [RTItemWidget] for each favorite [Restaurant]''', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); @@ -52,7 +52,7 @@ void main() { await tester.pumpAndSettle(); expect(find.text('Restaurant Name'), findsAtLeast(1)); - expect(find.bySubtype(), findsAtLeast(1)); + expect(find.bySubtype(), findsAtLeast(1)); expect(find.byKey(const Key('favorite-restaurant-0')), findsOne); verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); verify(() => favoritesService.loadFavorites()).called(1); diff --git a/test/widget_tests/restauran_tour_test.dart b/test/widget_tests/restauran_tour_test.dart index 0ae7666d..9b584589 100644 --- a/test/widget_tests/restauran_tour_test.dart +++ b/test/widget_tests/restauran_tour_test.dart @@ -5,16 +5,16 @@ import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/restauran_tour.dart'; -import 'package:restaurantour/services/favorites_service.dart'; +import 'package:restaurantour/services/favorite_service.dart'; import '../mocks/mocks.dart'; void main() { RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); - FavoritesService favoritesService = FavoritesServiceMock(); + FavoriteService favoritesService = FavoritesServiceMock(); setUp(() { GetIt.I.registerFactory(() => restaurantRepository); - GetIt.I.registerFactory(() => favoritesService); + GetIt.I.registerFactory(() => favoritesService); GetIt.I.registerFactory(() => RTImageNetworkMock()); }); diff --git a/test/widget_tests/restaurant_details_screen_test.dart b/test/widget_tests/restaurant_details_screen_test.dart index 1b84fe5b..7933e0ef 100644 --- a/test/widget_tests/restaurant_details_screen_test.dart +++ b/test/widget_tests/restaurant_details_screen_test.dart @@ -6,19 +6,19 @@ import 'package:get_it/get_it.dart'; import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/components/rt_error_widget.dart'; import 'package:restaurantour/components/rt_image_network.dart'; -import 'package:restaurantour/features/restaurant_details/restaurant_details_screen.dart'; +import 'package:restaurantour/features/details/details_screen.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; -import 'package:restaurantour/services/favorites_service.dart'; +import 'package:restaurantour/services/favorite_service.dart'; import '../mocks/mocks.dart'; void main() { RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); - FavoritesService favoritesService = FavoritesServiceMock(); + FavoriteService favoritesService = FavoritesServiceMock(); setUp(() { GetIt.I.registerFactory(() => restaurantRepository); - GetIt.I.registerFactory(() => favoritesService); + GetIt.I.registerFactory(() => favoritesService); GetIt.I.registerFactory(() => RTImageNetworkMock()); }); @@ -31,10 +31,10 @@ void main() { Widget widgetBuilder() => MaterialApp( localizationsDelegates: localizationsDelegates, debugShowCheckedModeBanner: false, - home: RestaurantDetailsScreen.create(restaurant: Restaurant.fixture(), imageNetwork: RTImageNetworkMock()), + home: DetailsScreen.create(restaurant: Restaurant.fixture(), imageNetwork: RTImageNetworkMock()), ); - testWidgets('''when successfully load the [RestaurantDetailsScreen] + testWidgets('''when successfully load the [DetailsScreen] should create a have the favorite Icon, the name of restaurant''', (WidgetTester tester) async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); @@ -46,7 +46,7 @@ void main() { expect(find.bySubtype(), findsAtLeast(1)); }); - testWidgets('''when successfully load the [RestaurantDetailsScreen] but fails to load favorites + testWidgets('''when successfully load the [DetailsScreen] but fails to load favorites should display the error screen''', (WidgetTester tester) async { when(() => favoritesService.loadFavorites()).thenThrow('error mock'); @@ -56,7 +56,7 @@ void main() { expect(find.bySubtype(), findsOne); }); - testWidgets('''if successfully load the [RestaurantDetailsScreen] and the restaurant is already favorite, + testWidgets('''if successfully load the [DetailsScreen] and the restaurant is already favorite, when tap on favorite button should call the service to remove from favorites passing the id''', (WidgetTester tester) async { final restaurantId = Restaurant.fixture().id!; when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([restaurantId])); diff --git a/test/widget_tests/restaurants_page_test.dart b/test/widget_tests/restaurants_page_test.dart index 62753bf8..deae39b0 100644 --- a/test/widget_tests/restaurants_page_test.dart +++ b/test/widget_tests/restaurants_page_test.dart @@ -5,21 +5,21 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:get_it/get_it.dart'; import 'package:mocktail/mocktail.dart'; import 'package:provider/provider.dart'; -import 'package:restaurantour/components/restaurant_item_widget.dart'; +import 'package:restaurantour/components/rt_item_widget.dart'; import 'package:restaurantour/components/rt_empty_widget.dart'; import 'package:restaurantour/components/rt_error_widget.dart'; import 'package:restaurantour/components/rt_image_network.dart'; -import 'package:restaurantour/features/restaurants_list/pages/restaurants/restaurants_page.dart'; -import 'package:restaurantour/features/restaurants_list/restaurant_list_view_model.dart'; +import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_page.dart'; +import 'package:restaurantour/features/restaurants/restaurant_view_model.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; -import 'package:restaurantour/services/favorites_service.dart'; +import 'package:restaurantour/services/favorite_service.dart'; import '../mocks/mocks.dart'; void main() { RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); - FavoritesService favoritesService = FavoritesServiceMock(); + FavoriteService favoritesService = FavoritesServiceMock(); setUp(() { GetIt.I.registerFactory(() => RTImageNetworkMock()); }); @@ -35,7 +35,7 @@ void main() { debugShowCheckedModeBanner: false, home: ChangeNotifierProvider( create: (context) { - final model = RestaurantListViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); + final model = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); model.load(); return model; }, @@ -44,7 +44,7 @@ void main() { ); testWidgets('''when successfully fetch the [RestaurantQueryResult] and has data, - should create a [RestaurantItemWidget] for each [Restaurant]''', (WidgetTester tester) async { + should create a [RTItemWidget] for each [Restaurant]''', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); @@ -52,7 +52,7 @@ void main() { await tester.pumpAndSettle(); expect(find.text('Restaurant Name'), findsAtLeast(1)); - expect(find.bySubtype(), findsAtLeast(1)); + expect(find.bySubtype(), findsAtLeast(1)); expect(find.byKey(const Key('restaurant-0')), findsOne); verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); }); From 7ff283ba579f30038dab775239f912e6718ca609 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Mon, 19 Feb 2024 00:48:02 -0300 Subject: [PATCH 50/89] chrore: refactor restaurant >> restaurants --- .../pages/favorites/favorites_page.dart | 8 ++-- .../pages/restaurants/restaurants_page.dart | 8 ++-- .../restaurants/restaurants_screen.dart | 2 +- ...model.dart => restaurants_view_model.dart} | 40 ++++++++-------- test/golden_test/favorites_page_test.dart | 2 +- .../restaurant_list_view_model_test.dart | 46 +++++++++---------- test/widget_tests/favorites_page_test.dart | 2 +- test/widget_tests/restaurants_page_test.dart | 2 +- 8 files changed, 55 insertions(+), 55 deletions(-) rename lib/features/restaurants/{restaurant_view_model.dart => restaurants_view_model.dart} (65%) diff --git a/lib/features/restaurants/pages/favorites/favorites_page.dart b/lib/features/restaurants/pages/favorites/favorites_page.dart index e768f80a..0e66be36 100644 --- a/lib/features/restaurants/pages/favorites/favorites_page.dart +++ b/lib/features/restaurants/pages/favorites/favorites_page.dart @@ -6,7 +6,7 @@ import 'package:restaurantour/components/rt_item_widget.dart'; import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/components/rt_shimmer_loading.dart'; import 'package:restaurantour/core/inject.dart'; -import 'package:restaurantour/features/restaurants/restaurant_view_model.dart'; +import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; class FavoritesPage extends StatefulWidget { const FavoritesPage({super.key}); @@ -28,11 +28,11 @@ class _FavoritesPageState extends State { Widget build(BuildContext context) { model = context.watch(); - if (model!.favoriteStatus.isLoading) return const RTShimmerLoading(); + if (model!.favoritesStatus.isLoading) return const RTShimmerLoading(); - if (model!.favoriteStatus.isError) return const RTErrorWidget(); + if (model!.favoritesStatus.isError) return const RTErrorWidget(); - if (model!.favoriteStatus.isEmpty) return const RTEmptyWidget(); + if (model!.favoritesStatus.isEmpty) return const RTEmptyWidget(); return ListView.builder( itemCount: model!.favoritesRestaurantList.length, diff --git a/lib/features/restaurants/pages/restaurants/restaurants_page.dart b/lib/features/restaurants/pages/restaurants/restaurants_page.dart index f024f86f..6d372b0f 100644 --- a/lib/features/restaurants/pages/restaurants/restaurants_page.dart +++ b/lib/features/restaurants/pages/restaurants/restaurants_page.dart @@ -6,7 +6,7 @@ import 'package:restaurantour/components/rt_item_widget.dart'; import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/components/rt_shimmer_loading.dart'; import 'package:restaurantour/core/inject.dart'; -import 'package:restaurantour/features/restaurants/restaurant_view_model.dart'; +import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; class RestaurantsPage extends StatefulWidget { const RestaurantsPage({super.key}); @@ -27,11 +27,11 @@ class _RestaurantsPageState extends State { @override Widget build(BuildContext context) { model = context.watch(); - if (model!.restaurantStatus.isLoading) return const RTShimmerLoading(); + if (model!.restaurantsStatus.isLoading) return const RTShimmerLoading(); - if (model!.restaurantStatus.isError) return const RTErrorWidget(); + if (model!.restaurantsStatus.isError) return const RTErrorWidget(); - if (model!.restaurantStatus.isEmpty) return const RTEmptyWidget(); + if (model!.restaurantsStatus.isEmpty) return const RTEmptyWidget(); return RefreshIndicator( onRefresh: () => model!.load(), diff --git a/lib/features/restaurants/restaurants_screen.dart b/lib/features/restaurants/restaurants_screen.dart index 48fc7afb..3bab271d 100644 --- a/lib/features/restaurants/restaurants_screen.dart +++ b/lib/features/restaurants/restaurants_screen.dart @@ -6,7 +6,7 @@ import 'package:restaurantour/core/inject.dart'; import 'package:restaurantour/core/rt_text_style.dart'; import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page.dart'; import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_page.dart'; -import 'package:restaurantour/features/restaurants/restaurant_view_model.dart'; +import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; diff --git a/lib/features/restaurants/restaurant_view_model.dart b/lib/features/restaurants/restaurants_view_model.dart similarity index 65% rename from lib/features/restaurants/restaurant_view_model.dart rename to lib/features/restaurants/restaurants_view_model.dart index 41a74934..c0d5d67f 100644 --- a/lib/features/restaurants/restaurant_view_model.dart +++ b/lib/features/restaurants/restaurants_view_model.dart @@ -3,20 +3,20 @@ import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; -enum RestaurantStatus { loading, content, error, empty } +enum RestaurantsStatus { loading, content, error, empty } -extension RestaurantStatusExt on RestaurantStatus { - bool get isLoading => this == RestaurantStatus.loading; - bool get isError => this == RestaurantStatus.error; - bool get isEmpty => this == RestaurantStatus.empty; +extension RestaurantsStatusExt on RestaurantsStatus { + bool get isLoading => this == RestaurantsStatus.loading; + bool get isError => this == RestaurantsStatus.error; + bool get isEmpty => this == RestaurantsStatus.empty; } -enum FavoriteStatus { loading, content, error, empty } +enum FavoritesStatus { loading, content, error, empty } -extension FavoriteStatusExt on FavoriteStatus { - bool get isLoading => this == FavoriteStatus.loading; - bool get isError => this == FavoriteStatus.error; - bool get isEmpty => this == FavoriteStatus.empty; +extension FavoritesStatusExt on FavoritesStatus { + bool get isLoading => this == FavoritesStatus.loading; + bool get isError => this == FavoritesStatus.error; + bool get isEmpty => this == FavoritesStatus.empty; } class RestaurantsViewModel with ChangeNotifier { @@ -24,8 +24,8 @@ class RestaurantsViewModel with ChangeNotifier { final FavoriteService favoritesService; RestaurantsViewModel({required this.favoritesService, required this.restaurantRepository}); - RestaurantStatus restaurantStatus = RestaurantStatus.loading; - FavoriteStatus favoriteStatus = FavoriteStatus.loading; + RestaurantsStatus restaurantsStatus = RestaurantsStatus.loading; + FavoritesStatus favoritesStatus = FavoritesStatus.loading; RestaurantQueryResult? _restaurants; List _favorites = []; @@ -63,42 +63,42 @@ class RestaurantsViewModel with ChangeNotifier { } void _emitRestaurantContent() { - restaurantStatus = RestaurantStatus.content; + restaurantsStatus = RestaurantsStatus.content; notifyListeners(); } void _emitRestaurantLoading() { - restaurantStatus = RestaurantStatus.loading; + restaurantsStatus = RestaurantsStatus.loading; notifyListeners(); } void _emitRestaurantError() { - restaurantStatus = RestaurantStatus.error; + restaurantsStatus = RestaurantsStatus.error; notifyListeners(); } void _emitRestaurantEmpty() { - restaurantStatus = RestaurantStatus.empty; + restaurantsStatus = RestaurantsStatus.empty; notifyListeners(); } void _emitFavoriteContent() { - favoriteStatus = FavoriteStatus.content; + favoritesStatus = FavoritesStatus.content; notifyListeners(); } void _emitFavoriteLoading() { - favoriteStatus = FavoriteStatus.loading; + favoritesStatus = FavoritesStatus.loading; notifyListeners(); } void _emitFavoriteError() { - favoriteStatus = FavoriteStatus.error; + favoritesStatus = FavoritesStatus.error; notifyListeners(); } void _emitFavoriteEmpty() { - favoriteStatus = FavoriteStatus.empty; + favoritesStatus = FavoritesStatus.empty; notifyListeners(); } } diff --git a/test/golden_test/favorites_page_test.dart b/test/golden_test/favorites_page_test.dart index e409c68d..d31828a1 100644 --- a/test/golden_test/favorites_page_test.dart +++ b/test/golden_test/favorites_page_test.dart @@ -5,7 +5,7 @@ import 'package:mocktail/mocktail.dart'; import 'package:provider/provider.dart'; import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page.dart'; -import 'package:restaurantour/features/restaurants/restaurant_view_model.dart'; +import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; diff --git a/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart b/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart index 22d5b6f7..4bacb830 100644 --- a/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart +++ b/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart @@ -2,7 +2,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:get_it/get_it.dart'; import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/components/rt_image_network.dart'; -import 'package:restaurantour/features/restaurants/restaurant_view_model.dart'; +import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; @@ -25,13 +25,13 @@ void main() { }); group('tests on restaurantViewModel.load() ->', () { - test('''when [RestaurantViewModel] is created the [restaurantStatus] should starts with [RestaurantStatus.loading] + test('''when [RestaurantViewModel] is created the [restaurantsStatus] should starts with [RestaurantStatus.loading] and no call to [restaurantRepository.getRestaurants] should be triggered''', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - expect(sut.restaurantStatus, RestaurantStatus.loading); + expect(sut.restaurantsStatus, RestaurantsStatus.loading); verifyNever(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))); }); @@ -45,35 +45,35 @@ void main() { verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); }); - test('when [load] get successfully the data from repository the [restaurantStatus] should be [RestaurantStatus.content]', () async { + test('when [load] get successfully the data from repository the [restaurantsStatus] should be [RestaurantStatus.content]', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.load(); - expect(sut.restaurantStatus, RestaurantStatus.content); + expect(sut.restaurantsStatus, RestaurantsStatus.content); }); test('''when [load] get successfully the data from repository but the [Restaurant] list is [empty] - the [restaurantStatus] should be [RestaurantStatus.empty]''', () async { + the [restaurantsStatus] should be [RestaurantStatus.empty]''', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResult(restaurants: []))); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.load(); - expect(sut.restaurantStatus, RestaurantStatus.empty); + expect(sut.restaurantsStatus, RestaurantsStatus.empty); }); - test('when [load] get some error from repository the [restaurantStatus] should be [RestaurantStatus.error]', () async { + test('when [load] get some error from repository the [restaurantsStatus] should be [RestaurantStatus.error]', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenThrow('error mock'); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.load(); - expect(sut.restaurantStatus, RestaurantStatus.error); + expect(sut.restaurantsStatus, RestaurantsStatus.error); }); test('''when [load] get some error from repository @@ -89,13 +89,13 @@ void main() { }); group('tests on restaurantViewModel.loadFavorites() ->', () { - test('''when [RestaurantViewModel] is created the [favoriteStatus] should starts with [FavoriteStatus.loading] + test('''when [RestaurantViewModel] is created the [favoritesStatus] should starts with [FavoriteStatus.loading] and no call to [favoritesService.loadFavorites] should be triggered''', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - expect(sut.favoriteStatus, FavoriteStatus.loading); + expect(sut.favoritesStatus, FavoritesStatus.loading); verifyNever(() => favoritesService.loadFavorites()); }); @@ -110,17 +110,17 @@ void main() { test('''when [RestaurantViewModel] is created the [Restaurant] list has items, if [loadFavorites] get successfully the data from favoritesService - the [favoriteStatus] should be [FavoriteStatus.empty]''', () async { + the [favoritesStatus] should be [FavoriteStatus.empty]''', () async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.loadFavorites(); - expect(sut.favoriteStatus, FavoriteStatus.empty); + expect(sut.favoritesStatus, FavoritesStatus.empty); }); test('''when [load] get successfully the data from repository but the [Restaurant] list is [empty], - when [loadFavorites] get successfully the data from favoritesService the [favoriteStatus] + when [loadFavorites] get successfully the data from favoritesService the [favoritesStatus] should be [FavoriteStatus.empty]''', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResult(restaurants: []))); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); @@ -129,12 +129,12 @@ void main() { await sut.load(); await sut.loadFavorites(); - expect(sut.favoriteStatus, FavoriteStatus.empty); + expect(sut.favoritesStatus, FavoritesStatus.empty); }); test('''when [load] get successfully the data from repository and [loadFavorites] get successfully the data from favoritesService but finds no matching ID in the lists, - the [favoriteStatus] should be [FavoriteStatus.empty]''', () async { + the [favoritesStatus] should be [FavoriteStatus.empty]''', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value(['another-restaurant-id'])); final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); @@ -142,12 +142,12 @@ void main() { await sut.load(); await sut.loadFavorites(); - expect(sut.favoriteStatus, FavoriteStatus.empty); + expect(sut.favoritesStatus, FavoritesStatus.empty); }); test('''when [load] get successfully the data from repository and [loadFavorites] get successfully the data from favoritesService and finds a matching ID in the lists, - the [favoriteStatus] should be [FavoriteStatus.content]''', () async { + the [favoritesStatus] should be [FavoriteStatus.content]''', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); @@ -155,27 +155,27 @@ void main() { await sut.load(); await sut.loadFavorites(); - expect(sut.favoriteStatus, FavoriteStatus.content); + expect(sut.favoritesStatus, FavoritesStatus.content); }); test('''when [loadFavorites] get successfully the data from favoritesService but the list is [empty] - the [favoriteStatus] should be [FavoriteStatus.empty]''', () async { + the [favoritesStatus] should be [FavoriteStatus.empty]''', () async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.loadFavorites(); - expect(sut.favoriteStatus, FavoriteStatus.empty); + expect(sut.favoritesStatus, FavoritesStatus.empty); }); test('''when [loadFavorites] get some error from favoritesService - the [favoriteStatus] should be [FavoriteStatus.error]''', () async { + the [favoritesStatus] should be [FavoriteStatus.error]''', () async { when(() => favoritesService.loadFavorites()).thenThrow('error mock'); final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.loadFavorites(); - expect(sut.favoriteStatus, FavoriteStatus.error); + expect(sut.favoritesStatus, FavoritesStatus.error); }); test('''when [loadFavorites] get some error from favoritesService diff --git a/test/widget_tests/favorites_page_test.dart b/test/widget_tests/favorites_page_test.dart index 6884896a..a0434fb3 100644 --- a/test/widget_tests/favorites_page_test.dart +++ b/test/widget_tests/favorites_page_test.dart @@ -10,7 +10,7 @@ import 'package:restaurantour/components/rt_empty_widget.dart'; import 'package:restaurantour/components/rt_error_widget.dart'; import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page.dart'; -import 'package:restaurantour/features/restaurants/restaurant_view_model.dart'; +import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; diff --git a/test/widget_tests/restaurants_page_test.dart b/test/widget_tests/restaurants_page_test.dart index deae39b0..6ff441ed 100644 --- a/test/widget_tests/restaurants_page_test.dart +++ b/test/widget_tests/restaurants_page_test.dart @@ -10,7 +10,7 @@ import 'package:restaurantour/components/rt_empty_widget.dart'; import 'package:restaurantour/components/rt_error_widget.dart'; import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_page.dart'; -import 'package:restaurantour/features/restaurants/restaurant_view_model.dart'; +import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; From bc9ab1fd9d87e68e18c6323d0d3d700a3f3f7cb4 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Mon, 19 Feb 2024 01:21:38 -0300 Subject: [PATCH 51/89] chore: add review --- lib/components/rt_review_widget.dart | 3 +-- lib/models/restaurant.dart | 12 ++++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/components/rt_review_widget.dart b/lib/components/rt_review_widget.dart index 688faad0..fa866399 100644 --- a/lib/components/rt_review_widget.dart +++ b/lib/components/rt_review_widget.dart @@ -10,7 +10,6 @@ class RTReviewWidget extends StatelessWidget { const RTReviewWidget({super.key, required this.review, required this.isFirstItem, required this.imageNetwork}); final bool isFirstItem; final Review review; - final String reviewText = 'Review text goes here. Review text goes here. This is a review. This is a review that is 3 lines long.'; final RTImageNetwork imageNetwork; int get rating => review.rating ?? 0; List get starRate => List.generate(rating > 5 ? 5 : rating.toInt(), (_) => SvgPicture.asset('assets/svg/star.svg')); @@ -30,7 +29,7 @@ class RTReviewWidget extends StatelessWidget { Row(children: starRate), const SizedBox(height: 8), Text( - reviewText, + review.review ?? '', style: RTTextStyle.body1(), ), const SizedBox(height: 8), diff --git a/lib/models/restaurant.dart b/lib/models/restaurant.dart index 1f62eb52..0e19829d 100644 --- a/lib/models/restaurant.dart +++ b/lib/models/restaurant.dart @@ -52,14 +52,22 @@ class User { @JsonSerializable() class Review { + static const _review = 'Review text goes here. Review text goes here. This is a review. This is a review that is 3 lines long.'; + final String? id; final int? rating; + final String? review; final User? user; - const Review({this.id, this.rating, this.user}); + const Review({this.review = _review, this.id, this.rating, this.user}); factory Review.fromJson(Map json) => _$ReviewFromJson(json); - factory Review.fixture() => Review(id: 'reviewId', rating: 3, user: User.fixture()); + factory Review.fixture() => Review( + id: 'reviewId', + rating: 3, + review: 'Review text goes here. Review text goes here. This is a review. This is a review that is 3 lines long.', + user: User.fixture(), + ); Map toJson() => _$ReviewToJson(this); } From f15be8c223cbf8e2fb1c68b587cb263f898ce15b Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Mon, 19 Feb 2024 09:23:24 -0300 Subject: [PATCH 52/89] feat: export components to reduce imports, add openDetailst on rt_item to navitate to details --- lib/components/rt_components.dart | 6 +++++ lib/components/rt_item_widget.dart | 22 +++++++++---------- lib/core/inject.dart | 2 +- lib/features/details/details_screen.dart | 4 +--- .../pages/favorites/favorites_page.dart | 18 ++++++++++----- .../pages/restaurants/restaurants_page.dart | 18 ++++++++++----- test/golden_test/details_screen_test.dart | 2 +- test/golden_test/favorites_page_test.dart | 2 +- test/golden_test/restauran_tour_test.dart | 2 +- test/widget_tests/favorites_page_test.dart | 5 +---- test/widget_tests/restauran_tour_test.dart | 2 +- .../restaurant_details_screen_test.dart | 3 +-- test/widget_tests/restaurants_page_test.dart | 5 +---- 13 files changed, 51 insertions(+), 40 deletions(-) create mode 100644 lib/components/rt_components.dart diff --git a/lib/components/rt_components.dart b/lib/components/rt_components.dart new file mode 100644 index 00000000..1097c598 --- /dev/null +++ b/lib/components/rt_components.dart @@ -0,0 +1,6 @@ +export 'package:restaurantour/components/rt_empty_widget.dart'; +export 'package:restaurantour/components/rt_error_widget.dart'; +export 'package:restaurantour/components/rt_image_network.dart'; +export 'package:restaurantour/components/rt_item_widget.dart'; +export 'package:restaurantour/components/rt_review_widget.dart'; +export 'package:restaurantour/components/rt_shimmer_loading.dart'; diff --git a/lib/components/rt_item_widget.dart b/lib/components/rt_item_widget.dart index a0e6485b..6281c429 100644 --- a/lib/components/rt_item_widget.dart +++ b/lib/components/rt_item_widget.dart @@ -2,17 +2,23 @@ import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_svg/svg.dart'; import 'package:restaurantour/components/rt_image_network.dart'; -import 'package:restaurantour/core/inject.dart'; import 'package:restaurantour/core/rt_colors.dart'; import 'package:restaurantour/core/rt_text_style.dart'; -import 'package:restaurantour/features/details/details_screen.dart'; import 'package:restaurantour/models/restaurant.dart'; class RTItemWidget extends StatelessWidget { - const RTItemWidget({super.key, required this.restaurant, required this.isFirstItem, this.onFinishNavigation, required this.imageNetwork}); + const RTItemWidget({ + super.key, + required this.restaurant, + required this.isFirstItem, + this.onFinishNavigation, + required this.imageNetwork, + required this.openDetails, + }); final bool isFirstItem; final Restaurant restaurant; final VoidCallback? onFinishNavigation; + final Function openDetails; final RTImageNetwork imageNetwork; double get rating => restaurant.rating ?? 0; @@ -30,15 +36,7 @@ class RTItemWidget extends StatelessWidget { elevation: 2, child: InkWell( onTap: () async { - await Navigator.push( - context, - MaterialPageRoute( - builder: (BuildContext context) => DetailsScreen.create( - restaurant: restaurant, - imageNetwork: inject(), - ), - ), - ); + await openDetails(); if (onFinishNavigation != null) onFinishNavigation!(); }, child: SizedBox( diff --git a/lib/core/inject.dart b/lib/core/inject.dart index 2d7bedfb..81975541 100644 --- a/lib/core/inject.dart +++ b/lib/core/inject.dart @@ -1,6 +1,6 @@ import 'package:dio/dio.dart'; import 'package:get_it/get_it.dart'; -import 'package:restaurantour/components/rt_image_network.dart'; +import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; import 'package:shared_preferences/shared_preferences.dart'; diff --git a/lib/features/details/details_screen.dart b/lib/features/details/details_screen.dart index e440739f..fe2541be 100644 --- a/lib/features/details/details_screen.dart +++ b/lib/features/details/details_screen.dart @@ -1,9 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:provider/provider.dart'; -import 'package:restaurantour/components/rt_review_widget.dart'; -import 'package:restaurantour/components/rt_error_widget.dart'; -import 'package:restaurantour/components/rt_image_network.dart'; +import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/core/inject.dart'; import 'package:restaurantour/core/rt_colors.dart'; import 'package:restaurantour/core/rt_text_style.dart'; diff --git a/lib/features/restaurants/pages/favorites/favorites_page.dart b/lib/features/restaurants/pages/favorites/favorites_page.dart index 0e66be36..4f8620dd 100644 --- a/lib/features/restaurants/pages/favorites/favorites_page.dart +++ b/lib/features/restaurants/pages/favorites/favorites_page.dart @@ -1,11 +1,8 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:restaurantour/components/rt_empty_widget.dart'; -import 'package:restaurantour/components/rt_error_widget.dart'; -import 'package:restaurantour/components/rt_item_widget.dart'; -import 'package:restaurantour/components/rt_image_network.dart'; -import 'package:restaurantour/components/rt_shimmer_loading.dart'; +import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/core/inject.dart'; +import 'package:restaurantour/features/details/details_screen.dart'; import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; class FavoritesPage extends StatefulWidget { @@ -44,6 +41,17 @@ class _FavoritesPageState extends State { isFirstItem: isFirstItem, imageNetwork: inject(), restaurant: model!.favoritesRestaurantList[index], + openDetails: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (BuildContext context) => DetailsScreen.create( + restaurant: model!.favoritesRestaurantList[index], + imageNetwork: inject(), + ), + ), + ); + }, onFinishNavigation: model!.loadFavorites, ); }, diff --git a/lib/features/restaurants/pages/restaurants/restaurants_page.dart b/lib/features/restaurants/pages/restaurants/restaurants_page.dart index 6d372b0f..25d11e28 100644 --- a/lib/features/restaurants/pages/restaurants/restaurants_page.dart +++ b/lib/features/restaurants/pages/restaurants/restaurants_page.dart @@ -1,11 +1,8 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:restaurantour/components/rt_empty_widget.dart'; -import 'package:restaurantour/components/rt_error_widget.dart'; -import 'package:restaurantour/components/rt_item_widget.dart'; -import 'package:restaurantour/components/rt_image_network.dart'; -import 'package:restaurantour/components/rt_shimmer_loading.dart'; +import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/core/inject.dart'; +import 'package:restaurantour/features/details/details_screen.dart'; import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; class RestaurantsPage extends StatefulWidget { @@ -45,6 +42,17 @@ class _RestaurantsPageState extends State { isFirstItem: isFirstItem, imageNetwork: inject(), restaurant: model!.restaurantsList[index], + openDetails: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (BuildContext context) => DetailsScreen.create( + restaurant: model!.restaurantsList[index], + imageNetwork: inject(), + ), + ), + ); + }, onFinishNavigation: () => model!.loadFavorites(), ); }, diff --git a/test/golden_test/details_screen_test.dart b/test/golden_test/details_screen_test.dart index fc0e6691..40a76e49 100644 --- a/test/golden_test/details_screen_test.dart +++ b/test/golden_test/details_screen_test.dart @@ -3,7 +3,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:get_it/get_it.dart'; import 'package:golden_toolkit/golden_toolkit.dart'; import 'package:mocktail/mocktail.dart'; -import 'package:restaurantour/components/rt_image_network.dart'; +import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/features/details/details_screen.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; diff --git a/test/golden_test/favorites_page_test.dart b/test/golden_test/favorites_page_test.dart index d31828a1..a80ad416 100644 --- a/test/golden_test/favorites_page_test.dart +++ b/test/golden_test/favorites_page_test.dart @@ -3,7 +3,7 @@ import 'package:get_it/get_it.dart'; import 'package:golden_toolkit/golden_toolkit.dart'; import 'package:mocktail/mocktail.dart'; import 'package:provider/provider.dart'; -import 'package:restaurantour/components/rt_image_network.dart'; +import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page.dart'; import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; import 'package:restaurantour/models/restaurant.dart'; diff --git a/test/golden_test/restauran_tour_test.dart b/test/golden_test/restauran_tour_test.dart index 29e22934..d7395081 100644 --- a/test/golden_test/restauran_tour_test.dart +++ b/test/golden_test/restauran_tour_test.dart @@ -3,7 +3,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:get_it/get_it.dart'; import 'package:golden_toolkit/golden_toolkit.dart'; import 'package:mocktail/mocktail.dart'; -import 'package:restaurantour/components/rt_image_network.dart'; +import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/restauran_tour.dart'; diff --git a/test/widget_tests/favorites_page_test.dart b/test/widget_tests/favorites_page_test.dart index a0434fb3..5eb808c5 100644 --- a/test/widget_tests/favorites_page_test.dart +++ b/test/widget_tests/favorites_page_test.dart @@ -5,10 +5,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:get_it/get_it.dart'; import 'package:mocktail/mocktail.dart'; import 'package:provider/provider.dart'; -import 'package:restaurantour/components/rt_item_widget.dart'; -import 'package:restaurantour/components/rt_empty_widget.dart'; -import 'package:restaurantour/components/rt_error_widget.dart'; -import 'package:restaurantour/components/rt_image_network.dart'; +import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page.dart'; import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; import 'package:restaurantour/models/restaurant.dart'; diff --git a/test/widget_tests/restauran_tour_test.dart b/test/widget_tests/restauran_tour_test.dart index 9b584589..c719cca2 100644 --- a/test/widget_tests/restauran_tour_test.dart +++ b/test/widget_tests/restauran_tour_test.dart @@ -1,7 +1,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:get_it/get_it.dart'; import 'package:mocktail/mocktail.dart'; -import 'package:restaurantour/components/rt_image_network.dart'; +import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/restauran_tour.dart'; diff --git a/test/widget_tests/restaurant_details_screen_test.dart b/test/widget_tests/restaurant_details_screen_test.dart index 7933e0ef..f37953d1 100644 --- a/test/widget_tests/restaurant_details_screen_test.dart +++ b/test/widget_tests/restaurant_details_screen_test.dart @@ -4,8 +4,7 @@ import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:get_it/get_it.dart'; import 'package:mocktail/mocktail.dart'; -import 'package:restaurantour/components/rt_error_widget.dart'; -import 'package:restaurantour/components/rt_image_network.dart'; +import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/features/details/details_screen.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; diff --git a/test/widget_tests/restaurants_page_test.dart b/test/widget_tests/restaurants_page_test.dart index 6ff441ed..db196b1f 100644 --- a/test/widget_tests/restaurants_page_test.dart +++ b/test/widget_tests/restaurants_page_test.dart @@ -5,10 +5,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:get_it/get_it.dart'; import 'package:mocktail/mocktail.dart'; import 'package:provider/provider.dart'; -import 'package:restaurantour/components/rt_item_widget.dart'; -import 'package:restaurantour/components/rt_empty_widget.dart'; -import 'package:restaurantour/components/rt_error_widget.dart'; -import 'package:restaurantour/components/rt_image_network.dart'; +import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_page.dart'; import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; import 'package:restaurantour/models/restaurant.dart'; From 019558b81bd34bb6b9023379f1df384148724ad5 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Mon, 19 Feb 2024 09:54:46 -0300 Subject: [PATCH 53/89] feat: refactor detail_screen, receive restaurantId instead object and inject the imageNetwork and update goldens --- lib/features/details/details_screen.dart | 77 ++++++++++++------ lib/features/details/details_view_model.dart | 4 +- .../pages/favorites/favorites_page.dart | 3 +- .../pages/restaurants/restaurants_page.dart | 3 +- test/golden_test/details_screen_test.dart | 2 +- .../goldens/details_screen_added_favorite.png | Bin 32608 -> 32625 bytes .../goldens/details_screen_content.png | Bin 32608 -> 32625 bytes .../goldens/details_screen_favorite.png | Bin 32608 -> 32625 bytes .../goldens/details_screen_not_favorite.png | Bin 32912 -> 32930 bytes .../details_screen_removed_favorite.png | Bin 32912 -> 32930 bytes .../restaurant_details_screen_test.dart | 2 +- 11 files changed, 58 insertions(+), 33 deletions(-) diff --git a/lib/features/details/details_screen.dart b/lib/features/details/details_screen.dart index fe2541be..d5026b52 100644 --- a/lib/features/details/details_screen.dart +++ b/lib/features/details/details_screen.dart @@ -11,19 +11,14 @@ import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/services/favorite_service.dart'; class DetailsScreen extends StatefulWidget { - const DetailsScreen({super.key, required this.restaurant, required this.imageNetwork}); - final Restaurant restaurant; - final RTImageNetwork imageNetwork; + const DetailsScreen({super.key}); - static Widget create({required Restaurant restaurant, required RTImageNetwork imageNetwork}) => ChangeNotifierProvider( + static Widget create({required String? restaurantId}) => ChangeNotifierProvider( create: (context) => DetailsViewModel( - restaurantId: restaurant.id ?? '', + restaurantId: restaurantId ?? '', favoriteService: inject(), ), - child: DetailsScreen( - restaurant: restaurant, - imageNetwork: imageNetwork, - ), + child: const DetailsScreen(), ); @override @@ -31,12 +26,11 @@ class DetailsScreen extends StatefulWidget { } class _DetailsScreenState extends State { + final RTImageNetwork imageNetwork = inject(); + int get reviewsCount => reviewsList.length; - List get reviewsList => widget.restaurant.reviews ?? []; - List get reviews => List.generate(reviewsCount, (index) { - final bool isFirstItem = index == 0; - return RTReviewWidget(imageNetwork: widget.imageNetwork, isFirstItem: isFirstItem, review: reviewsList[index]); - }); + List get reviewsList => model!.restaurant.reviews ?? []; + Restaurant get restaurant => model!.restaurant; DetailsViewModel? model; @@ -79,7 +73,7 @@ class _DetailsScreenState extends State { surfaceTintColor: RTColors.background, shadowColor: RTColors.primaryFill, title: Text( - widget.restaurant.name ?? '', + model!.restaurant.name ?? '', style: RTTextStyle.headingH6(), ), actions: [ @@ -103,9 +97,9 @@ class _DetailsScreenState extends State { SizedBox( height: 360, child: Hero( - tag: widget.restaurant.name ?? '', - child: widget.imageNetwork.build( - location: widget.restaurant.heroImage, + tag: restaurant.name ?? '', + child: imageNetwork.build( + location: restaurant.heroImage, errorWidget: const Icon(Icons.image_not_supported_rounded, size: 120), ), ), @@ -119,14 +113,23 @@ class _DetailsScreenState extends State { crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Text( - '${widget.restaurant.price} ${widget.restaurant.displayCategory}', - style: RTTextStyle.caption(), + Row( + children: [ + Text( + restaurant.price ?? '', + style: RTTextStyle.caption(), + ), + const SizedBox(width: 4), + Text( + restaurant.displayCategory, + style: RTTextStyle.caption(), + ), + ], ), Row( children: [ Text( - widget.restaurant.isOpen + restaurant.isOpen ? AppLocalizations.of(context)!.restaurantListAllRestaurantsTabOpenNow : AppLocalizations.of(context)!.restaurantListAllRestaurantsTabClosed, style: RTTextStyle.overline(), @@ -139,7 +142,7 @@ class _DetailsScreenState extends State { height: 8, decoration: BoxDecoration( shape: BoxShape.circle, - color: widget.restaurant.isOpen ? RTColors.open : RTColors.closed, + color: restaurant.isOpen ? RTColors.open : RTColors.closed, ), ), ), @@ -154,7 +157,7 @@ class _DetailsScreenState extends State { ), const SizedBox(height: 24), Text( - widget.restaurant.location?.formattedAddress ?? '', + restaurant.location?.formattedAddress ?? '', style: RTTextStyle.body2(), ), const _Divider(), @@ -167,7 +170,7 @@ class _DetailsScreenState extends State { child: Row( children: [ Text( - '${widget.restaurant.rating ?? 0.0}', + '${restaurant.rating ?? 0.0}', style: RTTextStyle.headingH4(), ), Padding( @@ -182,7 +185,7 @@ class _DetailsScreenState extends State { AppLocalizations.of(context)!.restaurantDetailReviews(reviewsCount), style: RTTextStyle.caption(), ), - ...reviews, + _Reviews(reviewsList: reviewsList), ], ), ), @@ -203,3 +206,25 @@ class _Divider extends StatelessWidget { ); } } + +class _Reviews extends StatefulWidget { + final List reviewsList; + + const _Reviews({required this.reviewsList}); + @override + State<_Reviews> createState() => _ReviewsState(); +} + +class _ReviewsState extends State<_Reviews> { + final RTImageNetwork imageNetwork = inject(); + + @override + Widget build(BuildContext context) { + return Column( + children: List.generate(widget.reviewsList.length, (index) { + final bool isFirstItem = index == 0; + return RTReviewWidget(imageNetwork: imageNetwork, isFirstItem: isFirstItem, review: widget.reviewsList[index]); + }), + ); + } +} diff --git a/lib/features/details/details_view_model.dart b/lib/features/details/details_view_model.dart index cf0a3a92..bf8d0055 100644 --- a/lib/features/details/details_view_model.dart +++ b/lib/features/details/details_view_model.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/services/favorite_service.dart'; enum DetailsStatus { loading, content, error, updatingFavorite } @@ -11,9 +12,10 @@ extension DetailsStatusExt on DetailsStatus { class DetailsViewModel with ChangeNotifier { DetailsStatus status = DetailsStatus.loading; + bool isFavorite = false; + Restaurant restaurant = Restaurant.fixture(); final String restaurantId; final FavoriteService favoriteService; - bool isFavorite = false; List _favoriteList = []; diff --git a/lib/features/restaurants/pages/favorites/favorites_page.dart b/lib/features/restaurants/pages/favorites/favorites_page.dart index 4f8620dd..34ecd42a 100644 --- a/lib/features/restaurants/pages/favorites/favorites_page.dart +++ b/lib/features/restaurants/pages/favorites/favorites_page.dart @@ -46,8 +46,7 @@ class _FavoritesPageState extends State { context, MaterialPageRoute( builder: (BuildContext context) => DetailsScreen.create( - restaurant: model!.favoritesRestaurantList[index], - imageNetwork: inject(), + restaurantId: model!.favoritesRestaurantList[index].id, ), ), ); diff --git a/lib/features/restaurants/pages/restaurants/restaurants_page.dart b/lib/features/restaurants/pages/restaurants/restaurants_page.dart index 25d11e28..6fabdb66 100644 --- a/lib/features/restaurants/pages/restaurants/restaurants_page.dart +++ b/lib/features/restaurants/pages/restaurants/restaurants_page.dart @@ -47,8 +47,7 @@ class _RestaurantsPageState extends State { context, MaterialPageRoute( builder: (BuildContext context) => DetailsScreen.create( - restaurant: model!.restaurantsList[index], - imageNetwork: inject(), + restaurantId: model!.restaurantsList[index].id, ), ), ); diff --git a/test/golden_test/details_screen_test.dart b/test/golden_test/details_screen_test.dart index 40a76e49..2893b47b 100644 --- a/test/golden_test/details_screen_test.dart +++ b/test/golden_test/details_screen_test.dart @@ -30,7 +30,7 @@ void main() { final deviceBuilder = DeviceBuilder() ..overrideDevicesForAllScenarios(devices: [Device.iphone11.copyWith(size: const Size(414, 1100))]) ..addScenario( - widget: widgetBuilder(DetailsScreen.create(restaurant: Restaurant.fixture(), imageNetwork: RTImageNetworkMock())), + widget: widgetBuilder(DetailsScreen.create(restaurantId: Restaurant.fixture().id)), ); testGoldens('when [DetailsScreen] loads should show the title, favorite icon, and other details', (WidgetTester tester) async { diff --git a/test/golden_test/goldens/details_screen_added_favorite.png b/test/golden_test/goldens/details_screen_added_favorite.png index 5d4130efa8d8cfd27ee7c0930e464644cf492db2..1256012ded763bfdd8eb046f9f443d3b7744348c 100644 GIT binary patch literal 32625 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%0D)(O5Ixr4Z&_p3rNby!Pm~n$_I>d! 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

q-Ht5POw$sm~R@X+)%V|L*%u|8v6VVVuzTN8)UX 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%0D)(O5Ixr4Z&_p3rNby!Pm~n$_I>d! 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

q-Ht5POw$sm~R@X+)%V|L*%u|8v6VVVuzTN8)UX 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%0D)(O5Ixr4Z&_p3rNby!Pm~n$_I>d! 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

q-Ht5POw$sm~R@X+)%V|L*%u|8v6VVVuzTN8)UX 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 oHGh?*)QF4%+BfVOIq-rv9 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 literal 32912 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 Q{8!|bf|`7utm)JL0nevx#Q*>R diff --git a/test/golden_test/goldens/details_screen_removed_favorite.png b/test/golden_test/goldens/details_screen_removed_favorite.png index e18c0d266f42ad9f87675e35161eb543fb8ca5c2..fa63e65cbacd2bd7e55d06b8292f637355238fa8 100644 GIT binary patch literal 32930 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 literal 32912 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 Q{8!|bf|`7utm)JL0nevx#Q*>R diff --git a/test/widget_tests/restaurant_details_screen_test.dart b/test/widget_tests/restaurant_details_screen_test.dart index f37953d1..278faa6f 100644 --- a/test/widget_tests/restaurant_details_screen_test.dart +++ b/test/widget_tests/restaurant_details_screen_test.dart @@ -30,7 +30,7 @@ void main() { Widget widgetBuilder() => MaterialApp( localizationsDelegates: localizationsDelegates, debugShowCheckedModeBanner: false, - home: DetailsScreen.create(restaurant: Restaurant.fixture(), imageNetwork: RTImageNetworkMock()), + home: DetailsScreen.create(restaurantId: Restaurant.fixture().id), ); testWidgets('''when successfully load the [DetailsScreen] From ec4a7179bf078dc559b1a0c79981d6c4e42ca539 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Mon, 19 Feb 2024 11:13:54 -0300 Subject: [PATCH 54/89] feat: save data using specific queries --- lib/core/queries.dart | 69 +++++++++++++++++++++ lib/models/restaurant.dart | 8 +-- lib/models/restaurant.g.dart | 2 + lib/repositories/restaurant_repository.dart | 53 ++++++---------- 4 files changed, 94 insertions(+), 38 deletions(-) create mode 100644 lib/core/queries.dart diff --git a/lib/core/queries.dart b/lib/core/queries.dart new file mode 100644 index 00000000..50a52e05 --- /dev/null +++ b/lib/core/queries.dart @@ -0,0 +1,69 @@ +class RTQueries { + static String getRestaurantsQuery(int offset) { + return ''' +query getRestaurants { + search(location: "Las Vegas", limit: 20, offset: 0) { + business { + id + name + price + rating + photos + categories { + title + alias + } + hours { + is_open_now + } + } + } +} + +'''; + } + + static String getReviewsQuery({required String restaurantId, required int offset}) { + return ''' +query MyQuery { + reviews(business: "$restaurantId", limit: 10, offset: $offset) { + total + review { + text + rating + user { + id + name + image_url + } + } + } +} +'''; + } + + static String getRestaurantDetailsQuery({required String restaurantId}) { + return ''' +query MyQuery { + business(id: "$restaurantId") { + alias + categories { + alias + title + } + hours { + is_open_now + } + location { + formatted_address + } + rating + id + photos + name + price + } +} +'''; + } +} diff --git a/lib/models/restaurant.dart b/lib/models/restaurant.dart index 0e19829d..8812a72b 100644 --- a/lib/models/restaurant.dart +++ b/lib/models/restaurant.dart @@ -52,20 +52,18 @@ class User { @JsonSerializable() class Review { - static const _review = 'Review text goes here. Review text goes here. This is a review. This is a review that is 3 lines long.'; - final String? id; final int? rating; - final String? review; + final String? text; final User? user; - const Review({this.review = _review, this.id, this.rating, this.user}); + const Review({this.text, this.id, this.rating, this.user}); factory Review.fromJson(Map json) => _$ReviewFromJson(json); factory Review.fixture() => Review( id: 'reviewId', rating: 3, - review: 'Review text goes here. Review text goes here. This is a review. This is a review that is 3 lines long.', + text: 'Review text goes here. Review text goes here. This is a review. This is a review that is 3 lines long.', user: User.fixture(), ); diff --git a/lib/models/restaurant.g.dart b/lib/models/restaurant.g.dart index 3ed33f9a..4280320b 100644 --- a/lib/models/restaurant.g.dart +++ b/lib/models/restaurant.g.dart @@ -37,6 +37,7 @@ Map _$UserToJson(User instance) => { }; Review _$ReviewFromJson(Map json) => Review( + text: json['text'] as String?, id: json['id'] as String?, rating: json['rating'] as int?, user: json['user'] == null @@ -47,6 +48,7 @@ Review _$ReviewFromJson(Map json) => Review( Map _$ReviewToJson(Review instance) => { 'id': instance.id, 'rating': instance.rating, + 'text': instance.text, 'user': instance.user, }; diff --git a/lib/repositories/restaurant_repository.dart b/lib/repositories/restaurant_repository.dart index e0c24165..37b14c02 100644 --- a/lib/repositories/restaurant_repository.dart +++ b/lib/repositories/restaurant_repository.dart @@ -1,4 +1,5 @@ import 'package:dio/dio.dart'; +import 'package:restaurantour/core/queries.dart'; import 'package:restaurantour/models/restaurant.dart'; class RestaurantRepository { @@ -9,44 +10,30 @@ class RestaurantRepository { Future getRestaurants({int offset = 0}) async { final response = await dio.post>( '/v3/graphql', - data: _getQuery(offset), + data: RTQueries.getRestaurantsQuery(offset), ); return RestaurantQueryResult.fromJson(response.data!['data']['search']); } - String _getQuery(int offset) { - return ''' -query getRestaurants { - search(location: "Las Vegas", limit: 20, offset: $offset) { - total - business { - id - name - price - rating - photos - reviews { - id - rating - user { - id - image_url - name - } - } - categories { - title - alias - } - hours { - is_open_now - } - location { - formatted_address - } + Future> getReviews({required String restaurantId, int offset = 0}) async { + final response = await dio.post>( + '/v3/graphql', + data: RTQueries.getReviewsQuery(restaurantId: restaurantId, offset: offset), + ); + final result = response.data!['data']['reviews']['review']; + if (result is List) { + return result.map((json) => Review.fromJson(json)).toList(); } + return []; } -} -'''; + + Future getRestaurantDetails({required String restaurantId, int offset = 0}) async { + final response = await dio.post>( + '/v3/graphql', + data: RTQueries.getRestaurantDetailsQuery(restaurantId: restaurantId), + ); + final result = response.data!['data']['business']; + + return Restaurant.fromJson(result); } } From 70327a91c2026986249f5d465d71bbf7ebb6e411 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Mon, 19 Feb 2024 11:35:16 -0300 Subject: [PATCH 55/89] feat: get the details from api, update tests --- lib/components/rt_review_widget.dart | 4 ++- lib/features/details/details_screen.dart | 6 ++-- lib/features/details/details_view_model.dart | 11 +++++-- test/golden_test/details_screen_test.dart | 13 ++++++-- .../restaurant_details_view_model_test.dart | 32 ++++++++++++++----- .../restaurant_details_screen_test.dart | 4 +++ 6 files changed, 53 insertions(+), 17 deletions(-) diff --git a/lib/components/rt_review_widget.dart b/lib/components/rt_review_widget.dart index fa866399..576c03fc 100644 --- a/lib/components/rt_review_widget.dart +++ b/lib/components/rt_review_widget.dart @@ -29,7 +29,9 @@ class RTReviewWidget extends StatelessWidget { Row(children: starRate), const SizedBox(height: 8), Text( - review.review ?? '', + review.text ?? '', + maxLines: 3, + overflow: TextOverflow.ellipsis, style: RTTextStyle.body1(), ), const SizedBox(height: 8), diff --git a/lib/features/details/details_screen.dart b/lib/features/details/details_screen.dart index d5026b52..af97e3b4 100644 --- a/lib/features/details/details_screen.dart +++ b/lib/features/details/details_screen.dart @@ -8,6 +8,7 @@ import 'package:restaurantour/core/rt_text_style.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:restaurantour/features/details/details_view_model.dart'; import 'package:restaurantour/models/restaurant.dart'; +import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; class DetailsScreen extends StatefulWidget { @@ -16,6 +17,7 @@ class DetailsScreen extends StatefulWidget { static Widget create({required String? restaurantId}) => ChangeNotifierProvider( create: (context) => DetailsViewModel( restaurantId: restaurantId ?? '', + restaurantRepository: inject(), favoriteService: inject(), ), child: const DetailsScreen(), @@ -28,8 +30,8 @@ class DetailsScreen extends StatefulWidget { class _DetailsScreenState extends State { final RTImageNetwork imageNetwork = inject(); - int get reviewsCount => reviewsList.length; - List get reviewsList => model!.restaurant.reviews ?? []; + int get reviewsCount => model!.reviews.length; + List get reviewsList => model!.reviews; Restaurant get restaurant => model!.restaurant; DetailsViewModel? model; diff --git a/lib/features/details/details_view_model.dart b/lib/features/details/details_view_model.dart index bf8d0055..2a3a661e 100644 --- a/lib/features/details/details_view_model.dart +++ b/lib/features/details/details_view_model.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; +import 'package:restaurantour/core/inject.dart'; import 'package:restaurantour/models/restaurant.dart'; +import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; enum DetailsStatus { loading, content, error, updatingFavorite } @@ -14,12 +16,15 @@ class DetailsViewModel with ChangeNotifier { DetailsStatus status = DetailsStatus.loading; bool isFavorite = false; Restaurant restaurant = Restaurant.fixture(); + List reviews = []; + final String restaurantId; final FavoriteService favoriteService; + final RestaurantRepository restaurantRepository; List _favoriteList = []; - DetailsViewModel({required this.favoriteService, required this.restaurantId}); + DetailsViewModel({required this.favoriteService, required this.restaurantRepository, required this.restaurantId}); Future toggleFavorite() async { try { _emitChangingFavorite(); @@ -36,10 +41,10 @@ class DetailsViewModel with ChangeNotifier { Future load() async { try { _emitLoading(); - + restaurant = await restaurantRepository.getRestaurantDetails(restaurantId: restaurantId); + reviews = await restaurantRepository.getReviews(restaurantId: restaurantId); _favoriteList = await favoriteService.loadFavorites(); isFavorite = _favoriteList.contains(restaurantId); - _emitContent(); } catch (e) { print(e); diff --git a/test/golden_test/details_screen_test.dart b/test/golden_test/details_screen_test.dart index 2893b47b..f96c8cf6 100644 --- a/test/golden_test/details_screen_test.dart +++ b/test/golden_test/details_screen_test.dart @@ -35,6 +35,8 @@ void main() { testGoldens('when [DetailsScreen] loads should show the title, favorite icon, and other details', (WidgetTester tester) async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); + when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value([Review.fixture()])); await loadAppFonts(); @@ -46,7 +48,8 @@ void main() { testGoldens('when [DetailsScreen] loads a favorite restaurant should show the favorite icon filled', (WidgetTester tester) async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); - + when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value([Review.fixture()])); await loadAppFonts(); await tester.pumpDeviceBuilder(deviceBuilder); @@ -57,7 +60,8 @@ void main() { testGoldens('when [DetailsScreen] loads a non favorite restaurant should show the favorite icon not filled', (WidgetTester tester) async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - + when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value([Review.fixture()])); await loadAppFonts(); await tester.pumpDeviceBuilder(deviceBuilder); @@ -71,7 +75,8 @@ void main() { and tap to favorite update the status and show the favorite icon filled''', (WidgetTester tester) async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); when(() => favoritesService.addFavorite(any())).thenAnswer((_) => Future.value()); - + when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value([Review.fixture()])); await loadAppFonts(); await tester.pumpDeviceBuilder(deviceBuilder); @@ -86,6 +91,8 @@ void main() { and tap to remove favorite update the status and show the favorite icon not filled''', (WidgetTester tester) async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); when(() => favoritesService.removeFavorite(any())).thenAnswer((_) => Future.value()); + when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value([Review.fixture()])); await loadAppFonts(); diff --git a/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart b/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart index d7de09f1..1ed1aab8 100644 --- a/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart +++ b/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart @@ -3,14 +3,19 @@ import 'package:get_it/get_it.dart'; import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/features/details/details_view_model.dart'; +import 'package:restaurantour/models/restaurant.dart'; +import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; import '../../mocks/mocks.dart'; void main() { FavoriteService favoritesService = FavoritesServiceMock(); + RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); + setUp(() { GetIt.I.registerFactory(() => favoritesService); + GetIt.I.registerFactory(() => restaurantRepository); GetIt.I.registerFactory(() => RTImageNetworkMock()); }); @@ -22,7 +27,7 @@ void main() { test('''when [DetailsViewModel] is created the [status] should starts with [DetailsStatus.loading] and no call to [favoritesService.loadFavorites] should be triggered''', () async { - final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); + final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); expect(sut.status, DetailsStatus.loading); verifyNever(() => favoritesService.loadFavorites()); @@ -30,7 +35,9 @@ void main() { test('when [load] is called should call once time the [loadFavorites] on [FavoritesService]', () async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); + when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value([Review.fixture()])); + final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); await sut.load(); @@ -40,7 +47,9 @@ void main() { test('''when [load] get successfully the data from favoriteService the [status] should be [DetailsStatus.content]''', () async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); + when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value([Review.fixture()])); + final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); await sut.load(); @@ -49,7 +58,9 @@ void main() { test('when [load] get some error from favoriteService the [status] should be [DetailsStatus.error]', () async { when(() => favoritesService.loadFavorites()).thenThrow('error mock'); - final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); + final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); + when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value([Review.fixture()])); await sut.load(); @@ -59,7 +70,9 @@ void main() { test('''when [load] get successfully the data from favoriteService and finds a matching ID in the favorite list [detailsViewModel.isFavorite] should be [true]''', () async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([restaurantId])); - final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); + final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); + when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value([Review.fixture()])); await sut.load(); @@ -69,7 +82,7 @@ void main() { test('''when [load] get successfully the data from favoriteService and finds no matching ID in the favorite list [detailsViewModel.isFavorite] should be [false]''', () async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value(['new-restaurant'])); - final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); + final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); await sut.load(); @@ -82,7 +95,10 @@ void main() { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([restaurantId])); when(() => favoritesService.addFavorite(any())).thenAnswer((_) => Future.value()); when(() => favoritesService.removeFavorite(any())).thenAnswer((_) => Future.value()); - final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); + when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value([Review.fixture()])); + + final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); await sut.load(); expect(sut.isFavorite, true); @@ -100,7 +116,7 @@ void main() { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value(['favorite-restaurant'])); when(() => favoritesService.addFavorite(any())).thenAnswer((_) => Future.value()); when(() => favoritesService.removeFavorite(any())).thenAnswer((_) => Future.value()); - final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId); + final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); await sut.load(); expect(sut.isFavorite, false); diff --git a/test/widget_tests/restaurant_details_screen_test.dart b/test/widget_tests/restaurant_details_screen_test.dart index 278faa6f..04841b3c 100644 --- a/test/widget_tests/restaurant_details_screen_test.dart +++ b/test/widget_tests/restaurant_details_screen_test.dart @@ -36,6 +36,8 @@ void main() { testWidgets('''when successfully load the [DetailsScreen] should create a have the favorite Icon, the name of restaurant''', (WidgetTester tester) async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); + when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value([Review.fixture()])); await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); @@ -60,6 +62,8 @@ void main() { final restaurantId = Restaurant.fixture().id!; when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([restaurantId])); when(() => favoritesService.removeFavorite(any())).thenAnswer((_) => Future.value()); + when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value([Review.fixture()])); await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); From 0be0aa9815503ed6e680ca35fcbff8a92ce898f6 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Mon, 19 Feb 2024 11:47:27 -0300 Subject: [PATCH 56/89] fix: favorites was not refreshing --- lib/components/rt_item_widget.dart | 2 +- lib/features/details/details_view_model.dart | 1 - lib/features/restaurants/pages/favorites/favorites_page.dart | 4 ++-- .../restaurants/pages/restaurants/restaurants_page.dart | 4 ++-- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/components/rt_item_widget.dart b/lib/components/rt_item_widget.dart index 6281c429..252dce6a 100644 --- a/lib/components/rt_item_widget.dart +++ b/lib/components/rt_item_widget.dart @@ -18,7 +18,7 @@ class RTItemWidget extends StatelessWidget { final bool isFirstItem; final Restaurant restaurant; final VoidCallback? onFinishNavigation; - final Function openDetails; + final Future Function() openDetails; final RTImageNetwork imageNetwork; double get rating => restaurant.rating ?? 0; diff --git a/lib/features/details/details_view_model.dart b/lib/features/details/details_view_model.dart index 2a3a661e..cf5bf518 100644 --- a/lib/features/details/details_view_model.dart +++ b/lib/features/details/details_view_model.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:restaurantour/core/inject.dart'; import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; diff --git a/lib/features/restaurants/pages/favorites/favorites_page.dart b/lib/features/restaurants/pages/favorites/favorites_page.dart index 34ecd42a..e15288e6 100644 --- a/lib/features/restaurants/pages/favorites/favorites_page.dart +++ b/lib/features/restaurants/pages/favorites/favorites_page.dart @@ -41,8 +41,8 @@ class _FavoritesPageState extends State { isFirstItem: isFirstItem, imageNetwork: inject(), restaurant: model!.favoritesRestaurantList[index], - openDetails: () { - Navigator.push( + openDetails: () async { + await Navigator.push( context, MaterialPageRoute( builder: (BuildContext context) => DetailsScreen.create( diff --git a/lib/features/restaurants/pages/restaurants/restaurants_page.dart b/lib/features/restaurants/pages/restaurants/restaurants_page.dart index 6fabdb66..b770e4ed 100644 --- a/lib/features/restaurants/pages/restaurants/restaurants_page.dart +++ b/lib/features/restaurants/pages/restaurants/restaurants_page.dart @@ -42,8 +42,8 @@ class _RestaurantsPageState extends State { isFirstItem: isFirstItem, imageNetwork: inject(), restaurant: model!.restaurantsList[index], - openDetails: () { - Navigator.push( + openDetails: () async { + await Navigator.push( context, MaterialPageRoute( builder: (BuildContext context) => DetailsScreen.create( From 62bb55baab5b1ca8374c2872056f10868877de4a Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Mon, 19 Feb 2024 14:12:53 -0300 Subject: [PATCH 57/89] feat: add pagination to restaurants list and reviews --- lib/core/queries.dart | 20 ++++-- lib/features/details/details_screen.dart | 42 +++++++++++-- lib/features/details/details_view_model.dart | 44 +++++++++++-- .../pages/restaurants/restaurants_page.dart | 62 ++++++++++++++----- .../restaurants/restaurants_view_model.dart | 30 +++++++-- lib/models/restaurant.dart | 14 +++++ lib/models/restaurant.g.dart | 14 +++++ lib/repositories/restaurant_repository.dart | 11 ++-- test/golden_test/details_screen_test.dart | 10 +-- .../restaurant_details_view_model_test.dart | 10 +-- .../restaurant_details_screen_test.dart | 4 +- 11 files changed, 209 insertions(+), 52 deletions(-) diff --git a/lib/core/queries.dart b/lib/core/queries.dart index 50a52e05..2f6bb708 100644 --- a/lib/core/queries.dart +++ b/lib/core/queries.dart @@ -1,8 +1,8 @@ class RTQueries { static String getRestaurantsQuery(int offset) { return ''' -query getRestaurants { - search(location: "Las Vegas", limit: 20, offset: 0) { +query restaurantsQuery { + search(location: "Las Vegas", limit: 20, offset: $offset) { business { id name @@ -17,15 +17,15 @@ query getRestaurants { is_open_now } } + total } } - '''; } static String getReviewsQuery({required String restaurantId, required int offset}) { return ''' -query MyQuery { +query reviewsQuery { reviews(business: "$restaurantId", limit: 10, offset: $offset) { total review { @@ -44,7 +44,7 @@ query MyQuery { static String getRestaurantDetailsQuery({required String restaurantId}) { return ''' -query MyQuery { +query restaurantDetailsQuery { business(id: "$restaurantId") { alias categories { @@ -64,6 +64,16 @@ query MyQuery { price } } +'''; + } + + static String getTotalReviewForRestaurantQuery({required String restaurantId}) { + return ''' +query totalReviewForRestaurantQuery { + reviews(business: "$restaurantId") { + total + } +} '''; } } diff --git a/lib/features/details/details_screen.dart b/lib/features/details/details_screen.dart index af97e3b4..c93950e7 100644 --- a/lib/features/details/details_screen.dart +++ b/lib/features/details/details_screen.dart @@ -35,12 +35,27 @@ class _DetailsScreenState extends State { Restaurant get restaurant => model!.restaurant; DetailsViewModel? model; + final ScrollController scrollController = ScrollController(); @override void initState() { super.initState(); model = context.read(); WidgetsBinding.instance.addPostFrameCallback((_) async => await model!.load()); + scrollController.addListener(_scrollListener); + } + + @override + void dispose() { + scrollController.dispose(); + super.dispose(); + } + + _scrollListener() { + const spaceBeforeEndOfScroll = 50; + if (scrollController.offset >= scrollController.position.maxScrollExtent - spaceBeforeEndOfScroll && !scrollController.position.outOfRange) { + model!.paginateReviews(); + } } @override @@ -95,6 +110,7 @@ class _DetailsScreenState extends State { ], ), body: ListView( + controller: scrollController, children: [ SizedBox( height: 360, @@ -184,10 +200,10 @@ class _DetailsScreenState extends State { ), const _Divider(), Text( - AppLocalizations.of(context)!.restaurantDetailReviews(reviewsCount), + AppLocalizations.of(context)!.restaurantDetailReviews(model!.totalReviews), style: RTTextStyle.caption(), ), - _Reviews(reviewsList: reviewsList), + _Reviews(reviewsList: reviewsList, isPaginating: model!.status.isPaginating), ], ), ), @@ -211,8 +227,8 @@ class _Divider extends StatelessWidget { class _Reviews extends StatefulWidget { final List reviewsList; - - const _Reviews({required this.reviewsList}); + final bool isPaginating; + const _Reviews({required this.reviewsList, required this.isPaginating}); @override State<_Reviews> createState() => _ReviewsState(); } @@ -225,7 +241,23 @@ class _ReviewsState extends State<_Reviews> { return Column( children: List.generate(widget.reviewsList.length, (index) { final bool isFirstItem = index == 0; - return RTReviewWidget(imageNetwork: imageNetwork, isFirstItem: isFirstItem, review: widget.reviewsList[index]); + return Column( + children: [ + RTReviewWidget(imageNetwork: imageNetwork, isFirstItem: isFirstItem, review: widget.reviewsList[index]), + if (index + 1 == widget.reviewsList.length) + Visibility( + visible: widget.isPaginating, + child: const Padding( + padding: EdgeInsets.only(bottom: 12.0), + child: SizedBox( + height: 50, + width: 50, + child: Center(child: CircularProgressIndicator()), + ), + ), + ), + ], + ); }), ); } diff --git a/lib/features/details/details_view_model.dart b/lib/features/details/details_view_model.dart index cf5bf518..95e2f5c9 100644 --- a/lib/features/details/details_view_model.dart +++ b/lib/features/details/details_view_model.dart @@ -3,10 +3,11 @@ import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; -enum DetailsStatus { loading, content, error, updatingFavorite } +enum DetailsStatus { loading, paginating, content, error, updatingFavorite } extension DetailsStatusExt on DetailsStatus { bool get isLoading => this == DetailsStatus.loading; + bool get isPaginating => this == DetailsStatus.paginating; bool get isAddingFavorite => this == DetailsStatus.updatingFavorite; bool get isError => this == DetailsStatus.error; } @@ -14,15 +15,20 @@ extension DetailsStatusExt on DetailsStatus { class DetailsViewModel with ChangeNotifier { DetailsStatus status = DetailsStatus.loading; bool isFavorite = false; - Restaurant restaurant = Restaurant.fixture(); + Restaurant restaurant = const Restaurant(); + ReviewQueryResult? reviewsQuery; List reviews = []; + final paginationSize = 20; final String restaurantId; final FavoriteService favoriteService; final RestaurantRepository restaurantRepository; List _favoriteList = []; + int get totalReviews => reviewsQuery?.total ?? 0; + bool get shouldPaginate => reviews.length < totalReviews && totalReviews > paginationSize; + DetailsViewModel({required this.favoriteService, required this.restaurantRepository, required this.restaurantId}); Future toggleFavorite() async { try { @@ -40,8 +46,10 @@ class DetailsViewModel with ChangeNotifier { Future load() async { try { _emitLoading(); - restaurant = await restaurantRepository.getRestaurantDetails(restaurantId: restaurantId); - reviews = await restaurantRepository.getReviews(restaurantId: restaurantId); + await Future.wait([ + _getRestaurantDetails(), + _getReviews(), + ]); _favoriteList = await favoriteService.loadFavorites(); isFavorite = _favoriteList.contains(restaurantId); _emitContent(); @@ -51,6 +59,29 @@ class DetailsViewModel with ChangeNotifier { } } + Future _getRestaurantDetails() async => restaurant = await restaurantRepository.getRestaurantDetails(restaurantId: restaurantId); + Future _getReviews() async { + try { + reviewsQuery = await restaurantRepository.getReviews(restaurantId: restaurantId); + reviews.addAll(reviewsQuery?.review ?? []); + } catch (e) { + print(e); + } + } + + Future paginateReviews() async { + if (status.isPaginating || !shouldPaginate) return; + try { + _emitIsPaginating(); + final paginated = await restaurantRepository.getReviews(restaurantId: restaurantId, offset: reviews.length); + reviews.addAll(paginated?.review ?? []); + } catch (e) { + print(e); + } finally { + _emitContent(); + } + } + void _emitContent() { status = DetailsStatus.content; notifyListeners(); @@ -70,4 +101,9 @@ class DetailsViewModel with ChangeNotifier { status = DetailsStatus.error; notifyListeners(); } + + void _emitIsPaginating() { + status = DetailsStatus.paginating; + notifyListeners(); + } } diff --git a/lib/features/restaurants/pages/restaurants/restaurants_page.dart b/lib/features/restaurants/pages/restaurants/restaurants_page.dart index b770e4ed..a3843f7c 100644 --- a/lib/features/restaurants/pages/restaurants/restaurants_page.dart +++ b/lib/features/restaurants/pages/restaurants/restaurants_page.dart @@ -14,16 +14,32 @@ class RestaurantsPage extends StatefulWidget { class _RestaurantsPageState extends State { RestaurantsViewModel? model; + final ScrollController scrollController = ScrollController(); @override void initState() { super.initState(); model = context.read(); + scrollController.addListener(_scrollListener); + } + + @override + void dispose() { + scrollController.dispose(); + super.dispose(); + } + + _scrollListener() { + const spaceBeforeEndOfScroll = 50; + if (scrollController.offset >= scrollController.position.maxScrollExtent - spaceBeforeEndOfScroll && !scrollController.position.outOfRange) { + model!.paginateRestaurants(); + } } @override Widget build(BuildContext context) { model = context.watch(); + if (model!.restaurantsStatus.isLoading) return const RTShimmerLoading(); if (model!.restaurantsStatus.isError) return const RTErrorWidget(); @@ -33,26 +49,42 @@ class _RestaurantsPageState extends State { return RefreshIndicator( onRefresh: () => model!.load(), child: ListView.builder( + controller: scrollController, itemCount: model!.restaurantsList.length, itemBuilder: (context, index) { final isFirstItem = index == 0; - - return RTItemWidget( - key: Key('restaurant-$index'), - isFirstItem: isFirstItem, - imageNetwork: inject(), - restaurant: model!.restaurantsList[index], - openDetails: () async { - await Navigator.push( - context, - MaterialPageRoute( - builder: (BuildContext context) => DetailsScreen.create( - restaurantId: model!.restaurantsList[index].id, + return Column( + children: [ + RTItemWidget( + key: Key('restaurant-$index'), + isFirstItem: isFirstItem, + imageNetwork: inject(), + restaurant: model!.restaurantsList[index], + openDetails: () async { + await Navigator.push( + context, + MaterialPageRoute( + builder: (BuildContext context) => DetailsScreen.create( + restaurantId: model!.restaurantsList[index].id, + ), + ), + ); + }, + onFinishNavigation: () => model!.loadFavorites(), + ), + if (index + 1 == model!.restaurantsList.length) + Visibility( + visible: model!.restaurantsStatus.isPaginating, + child: const Padding( + padding: EdgeInsets.only(bottom: 12.0), + child: SizedBox( + height: 50, + width: 50, + child: Center(child: CircularProgressIndicator()), + ), ), ), - ); - }, - onFinishNavigation: () => model!.loadFavorites(), + ], ); }, ), diff --git a/lib/features/restaurants/restaurants_view_model.dart b/lib/features/restaurants/restaurants_view_model.dart index c0d5d67f..817a013f 100644 --- a/lib/features/restaurants/restaurants_view_model.dart +++ b/lib/features/restaurants/restaurants_view_model.dart @@ -3,10 +3,11 @@ import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; -enum RestaurantsStatus { loading, content, error, empty } +enum RestaurantsStatus { paginating, loading, content, error, empty } extension RestaurantsStatusExt on RestaurantsStatus { bool get isLoading => this == RestaurantsStatus.loading; + bool get isPaginating => this == RestaurantsStatus.paginating; bool get isError => this == RestaurantsStatus.error; bool get isEmpty => this == RestaurantsStatus.empty; } @@ -22,16 +23,19 @@ extension FavoritesStatusExt on FavoritesStatus { class RestaurantsViewModel with ChangeNotifier { final RestaurantRepository restaurantRepository; final FavoriteService favoritesService; + final int paginationSize = 20; RestaurantsViewModel({required this.favoritesService, required this.restaurantRepository}); RestaurantsStatus restaurantsStatus = RestaurantsStatus.loading; FavoritesStatus favoritesStatus = FavoritesStatus.loading; - RestaurantQueryResult? _restaurants; + RestaurantQueryResult? _restaurantsQuery; List _favorites = []; + int get allRestaurantsQueryTotal => _restaurantsQuery?.total ?? 0; List get favoritesRestaurantList => _favorites; - List get restaurantsList => _restaurants?.restaurants ?? []; + List get restaurantsList => _restaurantsQuery?.restaurants ?? []; + bool get shouldPaginate => restaurantsList.length < allRestaurantsQueryTotal && allRestaurantsQueryTotal > paginationSize; Future load() async { await loadRestaurants(); @@ -41,7 +45,7 @@ class RestaurantsViewModel with ChangeNotifier { Future loadRestaurants() async { try { _emitRestaurantLoading(); - _restaurants = await restaurantRepository.getRestaurants(); + _restaurantsQuery = await restaurantRepository.getRestaurants(); restaurantsList.isEmpty ? _emitRestaurantEmpty() : _emitRestaurantContent(); } catch (e) { print(e); @@ -62,6 +66,19 @@ class RestaurantsViewModel with ChangeNotifier { } } + Future paginateRestaurants() async { + if (restaurantsStatus.isPaginating || !shouldPaginate) return; + try { + _emitRestaurantPaginating(); + final paginated = await restaurantRepository.getRestaurants(offset: restaurantsList.length); + restaurantsList.addAll(paginated?.restaurants ?? []); + } catch (e) { + print(e); + } finally { + _emitRestaurantContent(); + } + } + void _emitRestaurantContent() { restaurantsStatus = RestaurantsStatus.content; notifyListeners(); @@ -72,6 +89,11 @@ class RestaurantsViewModel with ChangeNotifier { notifyListeners(); } + void _emitRestaurantPaginating() { + restaurantsStatus = RestaurantsStatus.paginating; + notifyListeners(); + } + void _emitRestaurantError() { restaurantsStatus = RestaurantsStatus.error; notifyListeners(); diff --git a/lib/models/restaurant.dart b/lib/models/restaurant.dart index 8812a72b..fb97df13 100644 --- a/lib/models/restaurant.dart +++ b/lib/models/restaurant.dart @@ -161,3 +161,17 @@ class RestaurantQueryResult { Map toJson() => _$RestaurantQueryResultToJson(this); } + +@JsonSerializable() +class ReviewQueryResult { + final int? total; + @JsonKey(name: 'review') + final List? review; + + const ReviewQueryResult({this.total, this.review}); + + factory ReviewQueryResult.fromJson(Map json) => _$ReviewQueryResultFromJson(json); + factory ReviewQueryResult.fixture() => ReviewQueryResult(total: 1, review: [Review.fixture()]); + + Map toJson() => _$ReviewQueryResultToJson(this); +} diff --git a/lib/models/restaurant.g.dart b/lib/models/restaurant.g.dart index 4280320b..82d540ea 100644 --- a/lib/models/restaurant.g.dart +++ b/lib/models/restaurant.g.dart @@ -109,3 +109,17 @@ Map _$RestaurantQueryResultToJson( 'total': instance.total, 'business': instance.restaurants, }; + +ReviewQueryResult _$ReviewQueryResultFromJson(Map json) => + ReviewQueryResult( + total: json['total'] as int?, + review: (json['review'] as List?) + ?.map((e) => Review.fromJson(e as Map)) + .toList(), + ); + +Map _$ReviewQueryResultToJson(ReviewQueryResult instance) => + { + 'total': instance.total, + 'review': instance.review, + }; diff --git a/lib/repositories/restaurant_repository.dart b/lib/repositories/restaurant_repository.dart index 37b14c02..00d67bca 100644 --- a/lib/repositories/restaurant_repository.dart +++ b/lib/repositories/restaurant_repository.dart @@ -15,16 +15,14 @@ class RestaurantRepository { return RestaurantQueryResult.fromJson(response.data!['data']['search']); } - Future> getReviews({required String restaurantId, int offset = 0}) async { + Future getReviews({required String restaurantId, int offset = 0}) async { final response = await dio.post>( '/v3/graphql', data: RTQueries.getReviewsQuery(restaurantId: restaurantId, offset: offset), ); - final result = response.data!['data']['reviews']['review']; - if (result is List) { - return result.map((json) => Review.fromJson(json)).toList(); - } - return []; + final result = response.data!['data']['reviews']; + + return ReviewQueryResult.fromJson(result); } Future getRestaurantDetails({required String restaurantId, int offset = 0}) async { @@ -33,7 +31,6 @@ class RestaurantRepository { data: RTQueries.getRestaurantDetailsQuery(restaurantId: restaurantId), ); final result = response.data!['data']['business']; - return Restaurant.fromJson(result); } } diff --git a/test/golden_test/details_screen_test.dart b/test/golden_test/details_screen_test.dart index f96c8cf6..8a8efc9b 100644 --- a/test/golden_test/details_screen_test.dart +++ b/test/golden_test/details_screen_test.dart @@ -36,7 +36,7 @@ void main() { testGoldens('when [DetailsScreen] loads should show the title, favorite icon, and other details', (WidgetTester tester) async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); - when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value([Review.fixture()])); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResult.fixture())); await loadAppFonts(); @@ -49,7 +49,7 @@ void main() { testGoldens('when [DetailsScreen] loads a favorite restaurant should show the favorite icon filled', (WidgetTester tester) async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); - when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value([Review.fixture()])); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResult.fixture())); await loadAppFonts(); await tester.pumpDeviceBuilder(deviceBuilder); @@ -61,7 +61,7 @@ void main() { testGoldens('when [DetailsScreen] loads a non favorite restaurant should show the favorite icon not filled', (WidgetTester tester) async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); - when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value([Review.fixture()])); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResult.fixture())); await loadAppFonts(); await tester.pumpDeviceBuilder(deviceBuilder); @@ -76,7 +76,7 @@ void main() { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); when(() => favoritesService.addFavorite(any())).thenAnswer((_) => Future.value()); when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); - when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value([Review.fixture()])); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResult.fixture())); await loadAppFonts(); await tester.pumpDeviceBuilder(deviceBuilder); @@ -92,7 +92,7 @@ void main() { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); when(() => favoritesService.removeFavorite(any())).thenAnswer((_) => Future.value()); when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); - when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value([Review.fixture()])); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResult.fixture())); await loadAppFonts(); diff --git a/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart b/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart index 1ed1aab8..4f37f9bf 100644 --- a/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart +++ b/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart @@ -36,7 +36,7 @@ void main() { test('when [load] is called should call once time the [loadFavorites] on [FavoritesService]', () async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); - when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value([Review.fixture()])); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResult.fixture())); final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); await sut.load(); @@ -48,7 +48,7 @@ void main() { the [status] should be [DetailsStatus.content]''', () async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); - when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value([Review.fixture()])); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResult.fixture())); final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); await sut.load(); @@ -60,7 +60,7 @@ void main() { when(() => favoritesService.loadFavorites()).thenThrow('error mock'); final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); - when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value([Review.fixture()])); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResult.fixture())); await sut.load(); @@ -72,7 +72,7 @@ void main() { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([restaurantId])); final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); - when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value([Review.fixture()])); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResult.fixture())); await sut.load(); @@ -96,7 +96,7 @@ void main() { when(() => favoritesService.addFavorite(any())).thenAnswer((_) => Future.value()); when(() => favoritesService.removeFavorite(any())).thenAnswer((_) => Future.value()); when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); - when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value([Review.fixture()])); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResult.fixture())); final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); diff --git a/test/widget_tests/restaurant_details_screen_test.dart b/test/widget_tests/restaurant_details_screen_test.dart index 04841b3c..91ba41ef 100644 --- a/test/widget_tests/restaurant_details_screen_test.dart +++ b/test/widget_tests/restaurant_details_screen_test.dart @@ -37,7 +37,7 @@ void main() { should create a have the favorite Icon, the name of restaurant''', (WidgetTester tester) async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); - when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value([Review.fixture()])); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResult.fixture())); await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); @@ -63,7 +63,7 @@ void main() { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([restaurantId])); when(() => favoritesService.removeFavorite(any())).thenAnswer((_) => Future.value()); when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); - when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value([Review.fixture()])); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResult.fixture())); await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); From 34d910c2ef89fd2d3bf45957426a966ba1f0fe85 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Mon, 19 Feb 2024 14:45:48 -0300 Subject: [PATCH 58/89] feat: refactor dto in separated files --- lib/components/rt_item_widget.dart | 4 +- lib/components/rt_review_widget.dart | 5 +- lib/features/details/details_screen.dart | 8 +- lib/features/details/details_view_model.dart | 8 +- .../restaurants/restaurants_view_model.dart | 10 +- lib/models/category_dto.dart | 19 ++ lib/models/category_dto.g.dart | 18 ++ lib/models/dto.dart | 8 + lib/models/hours_dto.dart | 16 ++ lib/models/hours_dto.g.dart | 15 ++ lib/models/location_dto.dart | 16 ++ lib/models/location_dto.g.dart | 16 ++ lib/models/restaurant.dart | 177 ------------------ lib/models/restaurant.g.dart | 125 ------------- lib/models/restaurant_dto.dart | 72 +++++++ lib/models/restaurant_dto.g.dart | 42 +++++ lib/models/restaurant_query_result_dto.dart | 18 ++ lib/models/restaurant_query_result_dto.g.dart | 23 +++ lib/models/review_dto.dart | 24 +++ lib/models/review_dto.g.dart | 23 +++ lib/models/review_query_result_dto.dart | 18 ++ lib/models/review_query_result_dto.g.dart | 23 +++ lib/models/user_dto.dart | 22 +++ lib/models/user_dto.g.dart | 19 ++ lib/repositories/restaurant_repository.dart | 14 +- test/golden_test/details_screen_test.dart | 30 +-- test/golden_test/favorites_page_test.dart | 10 +- test/golden_test/restauran_tour_test.dart | 8 +- .../restaurant_details_view_model_test.dart | 22 +-- .../restaurant_list_view_model_test.dart | 24 +-- test/widget_tests/favorites_page_test.dart | 16 +- test/widget_tests/restauran_tour_test.dart | 6 +- .../restaurant_details_screen_test.dart | 16 +- test/widget_tests/restaurants_page_test.dart | 6 +- 34 files changed, 485 insertions(+), 396 deletions(-) create mode 100644 lib/models/category_dto.dart create mode 100644 lib/models/category_dto.g.dart create mode 100644 lib/models/dto.dart create mode 100644 lib/models/hours_dto.dart create mode 100644 lib/models/hours_dto.g.dart create mode 100644 lib/models/location_dto.dart create mode 100644 lib/models/location_dto.g.dart delete mode 100644 lib/models/restaurant.dart delete mode 100644 lib/models/restaurant.g.dart create mode 100644 lib/models/restaurant_dto.dart create mode 100644 lib/models/restaurant_dto.g.dart create mode 100644 lib/models/restaurant_query_result_dto.dart create mode 100644 lib/models/restaurant_query_result_dto.g.dart create mode 100644 lib/models/review_dto.dart create mode 100644 lib/models/review_dto.g.dart create mode 100644 lib/models/review_query_result_dto.dart create mode 100644 lib/models/review_query_result_dto.g.dart create mode 100644 lib/models/user_dto.dart create mode 100644 lib/models/user_dto.g.dart diff --git a/lib/components/rt_item_widget.dart b/lib/components/rt_item_widget.dart index 252dce6a..83852b30 100644 --- a/lib/components/rt_item_widget.dart +++ b/lib/components/rt_item_widget.dart @@ -4,7 +4,7 @@ import 'package:flutter_svg/svg.dart'; import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/core/rt_colors.dart'; import 'package:restaurantour/core/rt_text_style.dart'; -import 'package:restaurantour/models/restaurant.dart'; +import 'package:restaurantour/models/dto.dart'; class RTItemWidget extends StatelessWidget { const RTItemWidget({ @@ -16,7 +16,7 @@ class RTItemWidget extends StatelessWidget { required this.openDetails, }); final bool isFirstItem; - final Restaurant restaurant; + final RestaurantDto restaurant; final VoidCallback? onFinishNavigation; final Future Function() openDetails; final RTImageNetwork imageNetwork; diff --git a/lib/components/rt_review_widget.dart b/lib/components/rt_review_widget.dart index 576c03fc..28702565 100644 --- a/lib/components/rt_review_widget.dart +++ b/lib/components/rt_review_widget.dart @@ -3,13 +3,12 @@ import 'package:flutter_svg/svg.dart'; import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/core/rt_colors.dart'; import 'package:restaurantour/core/rt_text_style.dart'; - -import 'package:restaurantour/models/restaurant.dart'; +import 'package:restaurantour/models/dto.dart'; class RTReviewWidget extends StatelessWidget { const RTReviewWidget({super.key, required this.review, required this.isFirstItem, required this.imageNetwork}); final bool isFirstItem; - final Review review; + final ReviewDto review; final RTImageNetwork imageNetwork; int get rating => review.rating ?? 0; List get starRate => List.generate(rating > 5 ? 5 : rating.toInt(), (_) => SvgPicture.asset('assets/svg/star.svg')); diff --git a/lib/features/details/details_screen.dart b/lib/features/details/details_screen.dart index c93950e7..a79df859 100644 --- a/lib/features/details/details_screen.dart +++ b/lib/features/details/details_screen.dart @@ -7,7 +7,7 @@ import 'package:restaurantour/core/rt_colors.dart'; import 'package:restaurantour/core/rt_text_style.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:restaurantour/features/details/details_view_model.dart'; -import 'package:restaurantour/models/restaurant.dart'; +import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; @@ -31,8 +31,8 @@ class _DetailsScreenState extends State { final RTImageNetwork imageNetwork = inject(); int get reviewsCount => model!.reviews.length; - List get reviewsList => model!.reviews; - Restaurant get restaurant => model!.restaurant; + List get reviewsList => model!.reviews; + RestaurantDto get restaurant => model!.restaurant; DetailsViewModel? model; final ScrollController scrollController = ScrollController(); @@ -226,7 +226,7 @@ class _Divider extends StatelessWidget { } class _Reviews extends StatefulWidget { - final List reviewsList; + final List reviewsList; final bool isPaginating; const _Reviews({required this.reviewsList, required this.isPaginating}); @override diff --git a/lib/features/details/details_view_model.dart b/lib/features/details/details_view_model.dart index 95e2f5c9..0a25631d 100644 --- a/lib/features/details/details_view_model.dart +++ b/lib/features/details/details_view_model.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; +import 'package:restaurantour/models/dto.dart'; enum DetailsStatus { loading, paginating, content, error, updatingFavorite } @@ -15,9 +15,9 @@ extension DetailsStatusExt on DetailsStatus { class DetailsViewModel with ChangeNotifier { DetailsStatus status = DetailsStatus.loading; bool isFavorite = false; - Restaurant restaurant = const Restaurant(); - ReviewQueryResult? reviewsQuery; - List reviews = []; + RestaurantDto restaurant = const RestaurantDto(); + ReviewQueryResultDto? reviewsQuery; + List reviews = []; final paginationSize = 20; final String restaurantId; diff --git a/lib/features/restaurants/restaurants_view_model.dart b/lib/features/restaurants/restaurants_view_model.dart index 817a013f..85805650 100644 --- a/lib/features/restaurants/restaurants_view_model.dart +++ b/lib/features/restaurants/restaurants_view_model.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; +import 'package:restaurantour/models/dto.dart'; enum RestaurantsStatus { paginating, loading, content, error, empty } @@ -29,12 +29,12 @@ class RestaurantsViewModel with ChangeNotifier { RestaurantsStatus restaurantsStatus = RestaurantsStatus.loading; FavoritesStatus favoritesStatus = FavoritesStatus.loading; - RestaurantQueryResult? _restaurantsQuery; - List _favorites = []; + RestaurantQueryResultDto? _restaurantsQuery; + List _favorites = []; int get allRestaurantsQueryTotal => _restaurantsQuery?.total ?? 0; - List get favoritesRestaurantList => _favorites; - List get restaurantsList => _restaurantsQuery?.restaurants ?? []; + List get favoritesRestaurantList => _favorites; + List get restaurantsList => _restaurantsQuery?.restaurants ?? []; bool get shouldPaginate => restaurantsList.length < allRestaurantsQueryTotal && allRestaurantsQueryTotal > paginationSize; Future load() async { diff --git a/lib/models/category_dto.dart b/lib/models/category_dto.dart new file mode 100644 index 00000000..5f081057 --- /dev/null +++ b/lib/models/category_dto.dart @@ -0,0 +1,19 @@ +import 'package:json_annotation/json_annotation.dart'; + +part 'category_dto.g.dart'; + +@JsonSerializable() +class CategoryDto { + final String? alias; + final String? title; + + CategoryDto({ + this.alias, + this.title, + }); + + factory CategoryDto.fromJson(Map json) => _$CategoryDtoFromJson(json); + factory CategoryDto.fixture() => CategoryDto(alias: 'newamerican', title: 'New American'); + + Map toJson() => _$CategoryDtoToJson(this); +} diff --git a/lib/models/category_dto.g.dart b/lib/models/category_dto.g.dart new file mode 100644 index 00000000..5baf0144 --- /dev/null +++ b/lib/models/category_dto.g.dart @@ -0,0 +1,18 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'category_dto.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +CategoryDto _$CategoryDtoFromJson(Map json) => CategoryDto( + alias: json['alias'] as String?, + title: json['title'] as String?, + ); + +Map _$CategoryDtoToJson(CategoryDto instance) => + { + 'alias': instance.alias, + 'title': instance.title, + }; diff --git a/lib/models/dto.dart b/lib/models/dto.dart new file mode 100644 index 00000000..4311cbea --- /dev/null +++ b/lib/models/dto.dart @@ -0,0 +1,8 @@ +export 'package:restaurantour/models/category_dto.dart'; +export 'package:restaurantour/models/hours_dto.dart'; +export 'package:restaurantour/models/location_dto.dart'; +export 'package:restaurantour/models/restaurant_dto.dart'; +export 'package:restaurantour/models/restaurant_query_result_dto.dart'; +export 'package:restaurantour/models/review_dto.dart'; +export 'package:restaurantour/models/review_query_result_dto.dart'; +export 'package:restaurantour/models/user_dto.dart'; diff --git a/lib/models/hours_dto.dart b/lib/models/hours_dto.dart new file mode 100644 index 00000000..6b0a0ca5 --- /dev/null +++ b/lib/models/hours_dto.dart @@ -0,0 +1,16 @@ +import 'package:json_annotation/json_annotation.dart'; + +part 'hours_dto.g.dart'; + +@JsonSerializable() +class HoursDto { + @JsonKey(name: 'is_open_now') + final bool? isOpenNow; + + const HoursDto({this.isOpenNow}); + + factory HoursDto.fromJson(Map json) => _$HoursDtoFromJson(json); + factory HoursDto.fixture() => const HoursDto(isOpenNow: true); + + Map toJson() => _$HoursDtoToJson(this); +} diff --git a/lib/models/hours_dto.g.dart b/lib/models/hours_dto.g.dart new file mode 100644 index 00000000..de420029 --- /dev/null +++ b/lib/models/hours_dto.g.dart @@ -0,0 +1,15 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'hours_dto.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +HoursDto _$HoursDtoFromJson(Map json) => HoursDto( + isOpenNow: json['is_open_now'] as bool?, + ); + +Map _$HoursDtoToJson(HoursDto instance) => { + 'is_open_now': instance.isOpenNow, + }; diff --git a/lib/models/location_dto.dart b/lib/models/location_dto.dart new file mode 100644 index 00000000..dea210a2 --- /dev/null +++ b/lib/models/location_dto.dart @@ -0,0 +1,16 @@ +import 'package:json_annotation/json_annotation.dart'; + +part 'location_dto.g.dart'; + +@JsonSerializable() +class LocationDto { + @JsonKey(name: 'formatted_address') + final String? formattedAddress; + + LocationDto({this.formattedAddress}); + + factory LocationDto.fromJson(Map json) => _$LocationDtoFromJson(json); + factory LocationDto.fixture() => LocationDto(formattedAddress: 'address'); + + Map toJson() => _$LocationDtoToJson(this); +} diff --git a/lib/models/location_dto.g.dart b/lib/models/location_dto.g.dart new file mode 100644 index 00000000..03018bd4 --- /dev/null +++ b/lib/models/location_dto.g.dart @@ -0,0 +1,16 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'location_dto.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +LocationDto _$LocationDtoFromJson(Map json) => LocationDto( + formattedAddress: json['formatted_address'] as String?, + ); + +Map _$LocationDtoToJson(LocationDto instance) => + { + 'formatted_address': instance.formattedAddress, + }; diff --git a/lib/models/restaurant.dart b/lib/models/restaurant.dart deleted file mode 100644 index fb97df13..00000000 --- a/lib/models/restaurant.dart +++ /dev/null @@ -1,177 +0,0 @@ -import 'package:json_annotation/json_annotation.dart'; - -part 'restaurant.g.dart'; - -@JsonSerializable() -class Category { - final String? alias; - final String? title; - - Category({ - this.alias, - this.title, - }); - - factory Category.fromJson(Map json) => _$CategoryFromJson(json); - factory Category.fixture() => Category(alias: 'newamerican', title: 'New American'); - - Map toJson() => _$CategoryToJson(this); -} - -@JsonSerializable() -class Hours { - @JsonKey(name: 'is_open_now') - final bool? isOpenNow; - - const Hours({this.isOpenNow}); - - factory Hours.fromJson(Map json) => _$HoursFromJson(json); - factory Hours.fixture() => const Hours(isOpenNow: true); - - Map toJson() => _$HoursToJson(this); -} - -@JsonSerializable() -class User { - final String? id; - @JsonKey(name: 'image_url') - final String? imageUrl; - final String? name; - - const User({this.id, this.imageUrl, this.name}); - - factory User.fromJson(Map json) => _$UserFromJson(json); - factory User.fixture() => const User( - id: 'userId', - name: 'George M.', - imageUrl: 'https://cloudflare-ipfs.com/ipfs/Qmd3W5DuhgHirLHGVixi6V76LhCkZUz6pnFt5AJBiyvHye/avatar/400.jpg', - ); - - Map toJson() => _$UserToJson(this); -} - -@JsonSerializable() -class Review { - final String? id; - final int? rating; - final String? text; - final User? user; - - const Review({this.text, this.id, this.rating, this.user}); - - factory Review.fromJson(Map json) => _$ReviewFromJson(json); - factory Review.fixture() => Review( - id: 'reviewId', - rating: 3, - text: 'Review text goes here. Review text goes here. This is a review. This is a review that is 3 lines long.', - user: User.fixture(), - ); - - Map toJson() => _$ReviewToJson(this); -} - -@JsonSerializable() -class Location { - @JsonKey(name: 'formatted_address') - final String? formattedAddress; - - Location({this.formattedAddress}); - - factory Location.fromJson(Map json) => _$LocationFromJson(json); - factory Location.fixture() => Location(formattedAddress: 'address'); - - Map toJson() => _$LocationToJson(this); -} - -@JsonSerializable() -class Restaurant { - final String? id; - final String? name; - final String? price; - final double? rating; - final List? photos; - final List? categories; - final List? hours; - final List? reviews; - final Location? location; - - const Restaurant({ - this.id, - this.name, - this.price, - this.rating, - this.photos, - this.categories, - this.hours, - this.reviews, - this.location, - }); - - factory Restaurant.fromJson(Map json) => _$RestaurantFromJson(json); - factory Restaurant.fixture() => Restaurant( - id: 'restaurantId', - name: 'Restaurant Name', - price: '\$\$', - rating: 3.5, - photos: ['http://placeimg.com/640/480/business'], - categories: [Category.fixture()], - hours: [Hours.fixture()], - reviews: [Review.fixture()], - location: Location.fixture(), - ); - - Map toJson() => _$RestaurantToJson(this); - - /// Use the first category for the category shown to the user - String get displayCategory { - if (categories != null && categories!.isNotEmpty) { - return categories!.first.title ?? ''; - } - return ''; - } - - /// Use the first image as the image shown to the user - String get heroImage { - if (photos != null && photos!.isNotEmpty) { - return photos!.first; - } - return ''; - } - - /// This logic is probably not correct in all cases but it is ok - /// for this application - bool get isOpen { - if (hours != null && hours!.isNotEmpty) { - return hours!.first.isOpenNow ?? false; - } - return false; - } -} - -@JsonSerializable() -class RestaurantQueryResult { - final int? total; - @JsonKey(name: 'business') - final List? restaurants; - - const RestaurantQueryResult({this.total, this.restaurants}); - - factory RestaurantQueryResult.fromJson(Map json) => _$RestaurantQueryResultFromJson(json); - factory RestaurantQueryResult.fixture() => RestaurantQueryResult(restaurants: [Restaurant.fixture()]); - - Map toJson() => _$RestaurantQueryResultToJson(this); -} - -@JsonSerializable() -class ReviewQueryResult { - final int? total; - @JsonKey(name: 'review') - final List? review; - - const ReviewQueryResult({this.total, this.review}); - - factory ReviewQueryResult.fromJson(Map json) => _$ReviewQueryResultFromJson(json); - factory ReviewQueryResult.fixture() => ReviewQueryResult(total: 1, review: [Review.fixture()]); - - Map toJson() => _$ReviewQueryResultToJson(this); -} diff --git a/lib/models/restaurant.g.dart b/lib/models/restaurant.g.dart deleted file mode 100644 index 82d540ea..00000000 --- a/lib/models/restaurant.g.dart +++ /dev/null @@ -1,125 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'restaurant.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -Category _$CategoryFromJson(Map json) => Category( - alias: json['alias'] as String?, - title: json['title'] as String?, - ); - -Map _$CategoryToJson(Category instance) => { - 'alias': instance.alias, - 'title': instance.title, - }; - -Hours _$HoursFromJson(Map json) => Hours( - isOpenNow: json['is_open_now'] as bool?, - ); - -Map _$HoursToJson(Hours instance) => { - 'is_open_now': instance.isOpenNow, - }; - -User _$UserFromJson(Map json) => User( - id: json['id'] as String?, - imageUrl: json['image_url'] as String?, - name: json['name'] as String?, - ); - -Map _$UserToJson(User instance) => { - 'id': instance.id, - 'image_url': instance.imageUrl, - 'name': instance.name, - }; - -Review _$ReviewFromJson(Map json) => Review( - text: json['text'] as String?, - id: json['id'] as String?, - rating: json['rating'] as int?, - user: json['user'] == null - ? null - : User.fromJson(json['user'] as Map), - ); - -Map _$ReviewToJson(Review instance) => { - 'id': instance.id, - 'rating': instance.rating, - 'text': instance.text, - 'user': instance.user, - }; - -Location _$LocationFromJson(Map json) => Location( - formattedAddress: json['formatted_address'] as String?, - ); - -Map _$LocationToJson(Location instance) => { - 'formatted_address': instance.formattedAddress, - }; - -Restaurant _$RestaurantFromJson(Map json) => Restaurant( - id: json['id'] as String?, - name: json['name'] as String?, - price: json['price'] as String?, - rating: (json['rating'] as num?)?.toDouble(), - photos: - (json['photos'] as List?)?.map((e) => e as String).toList(), - categories: (json['categories'] as List?) - ?.map((e) => Category.fromJson(e as Map)) - .toList(), - hours: (json['hours'] as List?) - ?.map((e) => Hours.fromJson(e as Map)) - .toList(), - reviews: (json['reviews'] as List?) - ?.map((e) => Review.fromJson(e as Map)) - .toList(), - location: json['location'] == null - ? null - : Location.fromJson(json['location'] as Map), - ); - -Map _$RestaurantToJson(Restaurant instance) => - { - 'id': instance.id, - 'name': instance.name, - 'price': instance.price, - 'rating': instance.rating, - 'photos': instance.photos, - 'categories': instance.categories, - 'hours': instance.hours, - 'reviews': instance.reviews, - 'location': instance.location, - }; - -RestaurantQueryResult _$RestaurantQueryResultFromJson( - Map json) => - RestaurantQueryResult( - total: json['total'] as int?, - restaurants: (json['business'] as List?) - ?.map((e) => Restaurant.fromJson(e as Map)) - .toList(), - ); - -Map _$RestaurantQueryResultToJson( - RestaurantQueryResult instance) => - { - 'total': instance.total, - 'business': instance.restaurants, - }; - -ReviewQueryResult _$ReviewQueryResultFromJson(Map json) => - ReviewQueryResult( - total: json['total'] as int?, - review: (json['review'] as List?) - ?.map((e) => Review.fromJson(e as Map)) - .toList(), - ); - -Map _$ReviewQueryResultToJson(ReviewQueryResult instance) => - { - 'total': instance.total, - 'review': instance.review, - }; diff --git a/lib/models/restaurant_dto.dart b/lib/models/restaurant_dto.dart new file mode 100644 index 00000000..416e1eb5 --- /dev/null +++ b/lib/models/restaurant_dto.dart @@ -0,0 +1,72 @@ +import 'package:json_annotation/json_annotation.dart'; +import 'package:restaurantour/models/category_dto.dart'; +import 'package:restaurantour/models/hours_dto.dart'; +import 'package:restaurantour/models/location_dto.dart'; +import 'package:restaurantour/models/review_dto.dart'; + +part 'restaurant_dto.g.dart'; + +@JsonSerializable() +class RestaurantDto { + final String? id; + final String? name; + final String? price; + final double? rating; + final List? photos; + final List? categories; + final List? hours; + final List? reviews; + final LocationDto? location; + + const RestaurantDto({ + this.id, + this.name, + this.price, + this.rating, + this.photos, + this.categories, + this.hours, + this.reviews, + this.location, + }); + + factory RestaurantDto.fromJson(Map json) => _$RestaurantDtoFromJson(json); + factory RestaurantDto.fixture() => RestaurantDto( + id: 'restaurantId', + name: 'Restaurant Name', + price: '\$\$', + rating: 3.5, + photos: ['http://placeimg.com/640/480/business'], + categories: [CategoryDto.fixture()], + hours: [HoursDto.fixture()], + reviews: [ReviewDto.fixture()], + location: LocationDto.fixture(), + ); + + Map toJson() => _$RestaurantDtoToJson(this); + + /// Use the first category for the category shown to the user + String get displayCategory { + if (categories != null && categories!.isNotEmpty) { + return categories!.first.title ?? ''; + } + return ''; + } + + /// Use the first image as the image shown to the user + String get heroImage { + if (photos != null && photos!.isNotEmpty) { + return photos!.first; + } + return ''; + } + + /// This logic is probably not correct in all cases but it is ok + /// for this application + bool get isOpen { + if (hours != null && hours!.isNotEmpty) { + return hours!.first.isOpenNow ?? false; + } + return false; + } +} diff --git a/lib/models/restaurant_dto.g.dart b/lib/models/restaurant_dto.g.dart new file mode 100644 index 00000000..1a4bf1dd --- /dev/null +++ b/lib/models/restaurant_dto.g.dart @@ -0,0 +1,42 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'restaurant_dto.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +RestaurantDto _$RestaurantDtoFromJson(Map json) => + RestaurantDto( + id: json['id'] as String?, + name: json['name'] as String?, + price: json['price'] as String?, + rating: (json['rating'] as num?)?.toDouble(), + photos: + (json['photos'] as List?)?.map((e) => e as String).toList(), + categories: (json['categories'] as List?) + ?.map((e) => CategoryDto.fromJson(e as Map)) + .toList(), + hours: (json['hours'] as List?) + ?.map((e) => HoursDto.fromJson(e as Map)) + .toList(), + reviews: (json['reviews'] as List?) + ?.map((e) => ReviewDto.fromJson(e as Map)) + .toList(), + location: json['location'] == null + ? null + : LocationDto.fromJson(json['location'] as Map), + ); + +Map _$RestaurantDtoToJson(RestaurantDto instance) => + { + 'id': instance.id, + 'name': instance.name, + 'price': instance.price, + 'rating': instance.rating, + 'photos': instance.photos, + 'categories': instance.categories, + 'hours': instance.hours, + 'reviews': instance.reviews, + 'location': instance.location, + }; diff --git a/lib/models/restaurant_query_result_dto.dart b/lib/models/restaurant_query_result_dto.dart new file mode 100644 index 00000000..16eb2896 --- /dev/null +++ b/lib/models/restaurant_query_result_dto.dart @@ -0,0 +1,18 @@ +import 'package:json_annotation/json_annotation.dart'; +import 'package:restaurantour/models/restaurant_dto.dart'; + +part 'restaurant_query_result_dto.g.dart'; + +@JsonSerializable() +class RestaurantQueryResultDto { + final int? total; + @JsonKey(name: 'business') + final List? restaurants; + + const RestaurantQueryResultDto({this.total, this.restaurants}); + + factory RestaurantQueryResultDto.fromJson(Map json) => _$RestaurantQueryResultDtoFromJson(json); + factory RestaurantQueryResultDto.fixture() => RestaurantQueryResultDto(restaurants: [RestaurantDto.fixture()]); + + Map toJson() => _$RestaurantQueryResultDtoToJson(this); +} diff --git a/lib/models/restaurant_query_result_dto.g.dart b/lib/models/restaurant_query_result_dto.g.dart new file mode 100644 index 00000000..85c7d90d --- /dev/null +++ b/lib/models/restaurant_query_result_dto.g.dart @@ -0,0 +1,23 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'restaurant_query_result_dto.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +RestaurantQueryResultDto _$RestaurantQueryResultDtoFromJson( + Map json) => + RestaurantQueryResultDto( + total: json['total'] as int?, + restaurants: (json['business'] as List?) + ?.map((e) => RestaurantDto.fromJson(e as Map)) + .toList(), + ); + +Map _$RestaurantQueryResultDtoToJson( + RestaurantQueryResultDto instance) => + { + 'total': instance.total, + 'business': instance.restaurants, + }; diff --git a/lib/models/review_dto.dart b/lib/models/review_dto.dart new file mode 100644 index 00000000..86836705 --- /dev/null +++ b/lib/models/review_dto.dart @@ -0,0 +1,24 @@ +import 'package:json_annotation/json_annotation.dart'; +import 'package:restaurantour/models/user_dto.dart'; + +part 'review_dto.g.dart'; + +@JsonSerializable() +class ReviewDto { + final String? id; + final int? rating; + final String? text; + final UserDto? user; + + const ReviewDto({this.text, this.id, this.rating, this.user}); + + factory ReviewDto.fromJson(Map json) => _$ReviewDtoFromJson(json); + factory ReviewDto.fixture() => ReviewDto( + id: 'reviewId', + rating: 3, + text: 'Review text goes here. Review text goes here. This is a review. This is a review that is 3 lines long.', + user: UserDto.fixture(), + ); + + Map toJson() => _$ReviewDtoToJson(this); +} diff --git a/lib/models/review_dto.g.dart b/lib/models/review_dto.g.dart new file mode 100644 index 00000000..f8d6977e --- /dev/null +++ b/lib/models/review_dto.g.dart @@ -0,0 +1,23 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'review_dto.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +ReviewDto _$ReviewDtoFromJson(Map json) => ReviewDto( + text: json['text'] as String?, + id: json['id'] as String?, + rating: json['rating'] as int?, + user: json['user'] == null + ? null + : UserDto.fromJson(json['user'] as Map), + ); + +Map _$ReviewDtoToJson(ReviewDto instance) => { + 'id': instance.id, + 'rating': instance.rating, + 'text': instance.text, + 'user': instance.user, + }; diff --git a/lib/models/review_query_result_dto.dart b/lib/models/review_query_result_dto.dart new file mode 100644 index 00000000..5c50690b --- /dev/null +++ b/lib/models/review_query_result_dto.dart @@ -0,0 +1,18 @@ +import 'package:json_annotation/json_annotation.dart'; +import 'package:restaurantour/models/review_dto.dart'; + +part 'review_query_result_dto.g.dart'; + +@JsonSerializable() +class ReviewQueryResultDto { + final int? total; + @JsonKey(name: 'review') + final List? review; + + const ReviewQueryResultDto({this.total, this.review}); + + factory ReviewQueryResultDto.fromJson(Map json) => _$ReviewQueryResultDtoFromJson(json); + factory ReviewQueryResultDto.fixture() => ReviewQueryResultDto(total: 1, review: [ReviewDto.fixture()]); + + Map toJson() => _$ReviewQueryResultDtoToJson(this); +} diff --git a/lib/models/review_query_result_dto.g.dart b/lib/models/review_query_result_dto.g.dart new file mode 100644 index 00000000..15e9e151 --- /dev/null +++ b/lib/models/review_query_result_dto.g.dart @@ -0,0 +1,23 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'review_query_result_dto.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +ReviewQueryResultDto _$ReviewQueryResultDtoFromJson( + Map json) => + ReviewQueryResultDto( + total: json['total'] as int?, + review: (json['review'] as List?) + ?.map((e) => ReviewDto.fromJson(e as Map)) + .toList(), + ); + +Map _$ReviewQueryResultDtoToJson( + ReviewQueryResultDto instance) => + { + 'total': instance.total, + 'review': instance.review, + }; diff --git a/lib/models/user_dto.dart b/lib/models/user_dto.dart new file mode 100644 index 00000000..e7193986 --- /dev/null +++ b/lib/models/user_dto.dart @@ -0,0 +1,22 @@ +import 'package:json_annotation/json_annotation.dart'; + +part 'user_dto.g.dart'; + +@JsonSerializable() +class UserDto { + final String? id; + @JsonKey(name: 'image_url') + final String? imageUrl; + final String? name; + + const UserDto({this.id, this.imageUrl, this.name}); + + factory UserDto.fromJson(Map json) => _$UserDtoFromJson(json); + factory UserDto.fixture() => const UserDto( + id: 'userId', + name: 'George M.', + imageUrl: 'https://cloudflare-ipfs.com/ipfs/Qmd3W5DuhgHirLHGVixi6V76LhCkZUz6pnFt5AJBiyvHye/avatar/400.jpg', + ); + + Map toJson() => _$UserDtoToJson(this); +} diff --git a/lib/models/user_dto.g.dart b/lib/models/user_dto.g.dart new file mode 100644 index 00000000..f00ef06f --- /dev/null +++ b/lib/models/user_dto.g.dart @@ -0,0 +1,19 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'user_dto.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +UserDto _$UserDtoFromJson(Map json) => UserDto( + id: json['id'] as String?, + imageUrl: json['image_url'] as String?, + name: json['name'] as String?, + ); + +Map _$UserDtoToJson(UserDto instance) => { + 'id': instance.id, + 'image_url': instance.imageUrl, + 'name': instance.name, + }; diff --git a/lib/repositories/restaurant_repository.dart b/lib/repositories/restaurant_repository.dart index 00d67bca..2c64119a 100644 --- a/lib/repositories/restaurant_repository.dart +++ b/lib/repositories/restaurant_repository.dart @@ -1,36 +1,36 @@ import 'package:dio/dio.dart'; import 'package:restaurantour/core/queries.dart'; -import 'package:restaurantour/models/restaurant.dart'; +import 'package:restaurantour/models/dto.dart'; class RestaurantRepository { final Dio dio; RestaurantRepository({required this.dio}); - Future getRestaurants({int offset = 0}) async { + Future getRestaurants({int offset = 0}) async { final response = await dio.post>( '/v3/graphql', data: RTQueries.getRestaurantsQuery(offset), ); - return RestaurantQueryResult.fromJson(response.data!['data']['search']); + return RestaurantQueryResultDto.fromJson(response.data!['data']['search']); } - Future getReviews({required String restaurantId, int offset = 0}) async { + Future getReviews({required String restaurantId, int offset = 0}) async { final response = await dio.post>( '/v3/graphql', data: RTQueries.getReviewsQuery(restaurantId: restaurantId, offset: offset), ); final result = response.data!['data']['reviews']; - return ReviewQueryResult.fromJson(result); + return ReviewQueryResultDto.fromJson(result); } - Future getRestaurantDetails({required String restaurantId, int offset = 0}) async { + Future getRestaurantDetails({required String restaurantId, int offset = 0}) async { final response = await dio.post>( '/v3/graphql', data: RTQueries.getRestaurantDetailsQuery(restaurantId: restaurantId), ); final result = response.data!['data']['business']; - return Restaurant.fromJson(result); + return RestaurantDto.fromJson(result); } } diff --git a/test/golden_test/details_screen_test.dart b/test/golden_test/details_screen_test.dart index 8a8efc9b..14765036 100644 --- a/test/golden_test/details_screen_test.dart +++ b/test/golden_test/details_screen_test.dart @@ -5,9 +5,9 @@ import 'package:golden_toolkit/golden_toolkit.dart'; import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/features/details/details_screen.dart'; -import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; +import 'package:restaurantour/models/dto.dart'; import '../mocks/mocks.dart'; import '../widget_for_tests.dart'; @@ -30,13 +30,13 @@ void main() { final deviceBuilder = DeviceBuilder() ..overrideDevicesForAllScenarios(devices: [Device.iphone11.copyWith(size: const Size(414, 1100))]) ..addScenario( - widget: widgetBuilder(DetailsScreen.create(restaurantId: Restaurant.fixture().id)), + widget: widgetBuilder(DetailsScreen.create(restaurantId: RestaurantDto.fixture().id)), ); testGoldens('when [DetailsScreen] loads should show the title, favorite icon, and other details', (WidgetTester tester) async { - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); - when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); - when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResult.fixture())); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); + when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResultDto.fixture())); await loadAppFonts(); @@ -47,9 +47,9 @@ void main() { }); testGoldens('when [DetailsScreen] loads a favorite restaurant should show the favorite icon filled', (WidgetTester tester) async { - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); - when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); - when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResult.fixture())); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); + when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResultDto.fixture())); await loadAppFonts(); await tester.pumpDeviceBuilder(deviceBuilder); @@ -60,8 +60,8 @@ void main() { testGoldens('when [DetailsScreen] loads a non favorite restaurant should show the favorite icon not filled', (WidgetTester tester) async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); - when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResult.fixture())); + when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResultDto.fixture())); await loadAppFonts(); await tester.pumpDeviceBuilder(deviceBuilder); @@ -75,8 +75,8 @@ void main() { and tap to favorite update the status and show the favorite icon filled''', (WidgetTester tester) async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); when(() => favoritesService.addFavorite(any())).thenAnswer((_) => Future.value()); - when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); - when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResult.fixture())); + when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResultDto.fixture())); await loadAppFonts(); await tester.pumpDeviceBuilder(deviceBuilder); @@ -89,10 +89,10 @@ void main() { testGoldens('''when [DetailsScreen] loads a favorite restaurant and tap to remove favorite update the status and show the favorite icon not filled''', (WidgetTester tester) async { - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); when(() => favoritesService.removeFavorite(any())).thenAnswer((_) => Future.value()); - when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); - when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResult.fixture())); + when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResultDto.fixture())); await loadAppFonts(); diff --git a/test/golden_test/favorites_page_test.dart b/test/golden_test/favorites_page_test.dart index a80ad416..882187d4 100644 --- a/test/golden_test/favorites_page_test.dart +++ b/test/golden_test/favorites_page_test.dart @@ -6,7 +6,7 @@ import 'package:provider/provider.dart'; import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page.dart'; import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; -import 'package:restaurantour/models/restaurant.dart'; +import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; @@ -43,8 +43,8 @@ void main() { testGoldens('''when successfully fetch the [RestaurantQueryResult] and has data, and also load the favorites fetch the data should create a [RTItemWidget] for each favorite [Restaurant]''', (WidgetTester tester) async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); await loadAppFonts(); await tester.pumpDeviceBuilder(deviceBuilder); @@ -55,7 +55,7 @@ void main() { testGoldens('''when get some error while fetch the favorites, should render [RTErrorWidget] to inform to the user that something fails''', (WidgetTester tester) async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); when(() => favoritesService.loadFavorites()).thenThrow('error mock'); await loadAppFonts(); @@ -68,7 +68,7 @@ void main() { testGoldens('''when successfully fetch the [RestaurantQueryResult] and has no data, and also when load the favorites and has no favorites, should render [RTEmptyWidget] to inform to the user that has no results''', (WidgetTester tester) async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResult(restaurants: []))); + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResultDto(restaurants: []))); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); await loadAppFonts(); diff --git a/test/golden_test/restauran_tour_test.dart b/test/golden_test/restauran_tour_test.dart index d7395081..c604ba40 100644 --- a/test/golden_test/restauran_tour_test.dart +++ b/test/golden_test/restauran_tour_test.dart @@ -4,7 +4,7 @@ import 'package:get_it/get_it.dart'; import 'package:golden_toolkit/golden_toolkit.dart'; import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/components/rt_components.dart'; -import 'package:restaurantour/models/restaurant.dart'; +import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/restauran_tour.dart'; import 'package:restaurantour/services/favorite_service.dart'; @@ -34,7 +34,7 @@ void main() { autoUpdateGoldenFiles = true; testGoldens('when [RestaurantTour] loads should show the title on the page and fetch the data', (WidgetTester tester) async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); await loadAppFonts(); @@ -46,8 +46,8 @@ void main() { }); testGoldens('when [RestaurantTour] loads should show the title on the page and fetch the data', (WidgetTester tester) async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); await loadAppFonts(); await tester.pumpDeviceBuilder(deviceBuilder); diff --git a/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart b/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart index 4f37f9bf..ff3189d9 100644 --- a/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart +++ b/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart @@ -3,7 +3,7 @@ import 'package:get_it/get_it.dart'; import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/features/details/details_view_model.dart'; -import 'package:restaurantour/models/restaurant.dart'; +import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; @@ -35,8 +35,8 @@ void main() { test('when [load] is called should call once time the [loadFavorites] on [FavoritesService]', () async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); - when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResult.fixture())); + when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResultDto.fixture())); final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); await sut.load(); @@ -47,8 +47,8 @@ void main() { test('''when [load] get successfully the data from favoriteService the [status] should be [DetailsStatus.content]''', () async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); - when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResult.fixture())); + when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResultDto.fixture())); final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); await sut.load(); @@ -59,8 +59,8 @@ void main() { test('when [load] get some error from favoriteService the [status] should be [DetailsStatus.error]', () async { when(() => favoritesService.loadFavorites()).thenThrow('error mock'); final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); - when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); - when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResult.fixture())); + when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResultDto.fixture())); await sut.load(); @@ -71,8 +71,8 @@ void main() { [detailsViewModel.isFavorite] should be [true]''', () async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([restaurantId])); final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); - when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); - when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResult.fixture())); + when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResultDto.fixture())); await sut.load(); @@ -95,8 +95,8 @@ void main() { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([restaurantId])); when(() => favoritesService.addFavorite(any())).thenAnswer((_) => Future.value()); when(() => favoritesService.removeFavorite(any())).thenAnswer((_) => Future.value()); - when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); - when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResult.fixture())); + when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResultDto.fixture())); final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); diff --git a/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart b/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart index 4bacb830..7d96c77f 100644 --- a/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart +++ b/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart @@ -3,7 +3,7 @@ import 'package:get_it/get_it.dart'; import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; -import 'package:restaurantour/models/restaurant.dart'; +import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; @@ -27,7 +27,7 @@ void main() { group('tests on restaurantViewModel.load() ->', () { test('''when [RestaurantViewModel] is created the [restaurantsStatus] should starts with [RestaurantStatus.loading] and no call to [restaurantRepository.getRestaurants] should be triggered''', () async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); @@ -36,7 +36,7 @@ void main() { }); test('when [load] is called should call once time the [getRestaurants] on [RestaurantRepository]', () async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); @@ -46,7 +46,7 @@ void main() { }); test('when [load] get successfully the data from repository the [restaurantsStatus] should be [RestaurantStatus.content]', () async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); @@ -57,7 +57,7 @@ void main() { test('''when [load] get successfully the data from repository but the [Restaurant] list is [empty] the [restaurantsStatus] should be [RestaurantStatus.empty]''', () async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResult(restaurants: []))); + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResultDto(restaurants: []))); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); @@ -91,7 +91,7 @@ void main() { group('tests on restaurantViewModel.loadFavorites() ->', () { test('''when [RestaurantViewModel] is created the [favoritesStatus] should starts with [FavoriteStatus.loading] and no call to [favoritesService.loadFavorites] should be triggered''', () async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); @@ -111,7 +111,7 @@ void main() { test('''when [RestaurantViewModel] is created the [Restaurant] list has items, if [loadFavorites] get successfully the data from favoritesService the [favoritesStatus] should be [FavoriteStatus.empty]''', () async { - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.loadFavorites(); @@ -122,8 +122,8 @@ void main() { test('''when [load] get successfully the data from repository but the [Restaurant] list is [empty], when [loadFavorites] get successfully the data from favoritesService the [favoritesStatus] should be [FavoriteStatus.empty]''', () async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResult(restaurants: []))); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResultDto(restaurants: []))); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.load(); @@ -135,7 +135,7 @@ void main() { test('''when [load] get successfully the data from repository and [loadFavorites] get successfully the data from favoritesService but finds no matching ID in the lists, the [favoritesStatus] should be [FavoriteStatus.empty]''', () async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value(['another-restaurant-id'])); final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); @@ -148,8 +148,8 @@ void main() { test('''when [load] get successfully the data from repository and [loadFavorites] get successfully the data from favoritesService and finds a matching ID in the lists, the [favoritesStatus] should be [FavoriteStatus.content]''', () async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.load(); diff --git a/test/widget_tests/favorites_page_test.dart b/test/widget_tests/favorites_page_test.dart index 5eb808c5..bbdf57e3 100644 --- a/test/widget_tests/favorites_page_test.dart +++ b/test/widget_tests/favorites_page_test.dart @@ -8,7 +8,7 @@ import 'package:provider/provider.dart'; import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page.dart'; import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; -import 'package:restaurantour/models/restaurant.dart'; +import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; @@ -42,8 +42,8 @@ void main() { testWidgets('''when successfully fetch the [RestaurantQueryResult] and has data, and also load the favorites fetch the data should create a [RTItemWidget] for each favorite [Restaurant]''', (WidgetTester tester) async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); @@ -57,7 +57,7 @@ void main() { testWidgets('''when get some error while fetch the favorites, should render [RTErrorWidget] to inform to the user that something fails''', (WidgetTester tester) async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); when(() => favoritesService.loadFavorites()).thenThrow('error mock'); await tester.pumpWidget(widgetBuilder()); @@ -71,7 +71,7 @@ void main() { testWidgets('''when successfully fetch the [RestaurantQueryResult] and has no data, and also when load the favorites and has no favorites, should render [RTEmptyWidget] to inform to the user that has no results''', (WidgetTester tester) async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResult(restaurants: []))); + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResultDto(restaurants: []))); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); @@ -84,7 +84,7 @@ void main() { testWidgets('''when successfully fetch the [RestaurantQueryResult] and has data, but when load the favorites and has no favorites, should render [RTEmptyWidget] to inform to the user that has no results''', (WidgetTester tester) async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); @@ -97,8 +97,8 @@ void main() { testWidgets('''when successfully fetch the [RestaurantQueryResult] and has no data, but when load the favorites and has favorites, should render [RTEmptyWidget] to inform to the user that has no results''', (WidgetTester tester) async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResult(restaurants: []))); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResultDto(restaurants: []))); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); diff --git a/test/widget_tests/restauran_tour_test.dart b/test/widget_tests/restauran_tour_test.dart index c719cca2..33524bfa 100644 --- a/test/widget_tests/restauran_tour_test.dart +++ b/test/widget_tests/restauran_tour_test.dart @@ -2,7 +2,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:get_it/get_it.dart'; import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/components/rt_components.dart'; -import 'package:restaurantour/models/restaurant.dart'; +import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/restauran_tour.dart'; import 'package:restaurantour/services/favorite_service.dart'; @@ -25,7 +25,7 @@ void main() { }); testWidgets('when [RestaurantTour] loads should show the title on the page and fetch the data', (WidgetTester tester) async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); await tester.pumpWidget(const RestauranTour()); @@ -35,7 +35,7 @@ void main() { }); testWidgets('when [RestaurantTour] loads should show the tabs [All Restaurants] and [My Favorites] on the page and fetch the data', (WidgetTester tester) async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); await tester.pumpWidget(const RestauranTour()); diff --git a/test/widget_tests/restaurant_details_screen_test.dart b/test/widget_tests/restaurant_details_screen_test.dart index 91ba41ef..67fff088 100644 --- a/test/widget_tests/restaurant_details_screen_test.dart +++ b/test/widget_tests/restaurant_details_screen_test.dart @@ -6,9 +6,9 @@ import 'package:get_it/get_it.dart'; import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/features/details/details_screen.dart'; -import 'package:restaurantour/models/restaurant.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; +import 'package:restaurantour/models/dto.dart'; import '../mocks/mocks.dart'; @@ -30,14 +30,14 @@ void main() { Widget widgetBuilder() => MaterialApp( localizationsDelegates: localizationsDelegates, debugShowCheckedModeBanner: false, - home: DetailsScreen.create(restaurantId: Restaurant.fixture().id), + home: DetailsScreen.create(restaurantId: RestaurantDto.fixture().id), ); testWidgets('''when successfully load the [DetailsScreen] should create a have the favorite Icon, the name of restaurant''', (WidgetTester tester) async { - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([Restaurant.fixture().id ?? ''])); - when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); - when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResult.fixture())); + when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); + when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResultDto.fixture())); await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); @@ -59,11 +59,11 @@ void main() { testWidgets('''if successfully load the [DetailsScreen] and the restaurant is already favorite, when tap on favorite button should call the service to remove from favorites passing the id''', (WidgetTester tester) async { - final restaurantId = Restaurant.fixture().id!; + final restaurantId = RestaurantDto.fixture().id!; when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([restaurantId])); when(() => favoritesService.removeFavorite(any())).thenAnswer((_) => Future.value()); - when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(Restaurant.fixture())); - when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResult.fixture())); + when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); + when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResultDto.fixture())); await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); diff --git a/test/widget_tests/restaurants_page_test.dart b/test/widget_tests/restaurants_page_test.dart index db196b1f..76644622 100644 --- a/test/widget_tests/restaurants_page_test.dart +++ b/test/widget_tests/restaurants_page_test.dart @@ -8,7 +8,7 @@ import 'package:provider/provider.dart'; import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_page.dart'; import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; -import 'package:restaurantour/models/restaurant.dart'; +import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; @@ -42,7 +42,7 @@ void main() { testWidgets('''when successfully fetch the [RestaurantQueryResult] and has data, should create a [RTItemWidget] for each [Restaurant]''', (WidgetTester tester) async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResult.fixture())); + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); await tester.pumpWidget(widgetBuilder()); @@ -68,7 +68,7 @@ void main() { testWidgets('''when successfully fetch the [RestaurantQueryResult] and has no data, should render [RTEmptyWidget] to inform to the user that has no results''', (WidgetTester tester) async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResult(restaurants: []))); + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResultDto(restaurants: []))); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); await tester.pumpWidget(widgetBuilder()); From 16f59eaafad02d2f216b16f57ca588a1b05845da Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Mon, 19 Feb 2024 22:14:47 -0300 Subject: [PATCH 59/89] fix: fail to run on android --- .metadata | 24 +++++++++++-- android/app/build.gradle | 23 ++++++------- android/build.gradle | 5 ++- android/gradle.properties | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 3 +- android/settings.gradle | 34 ++++++++++++++----- test/widget_test.dart | 29 ++++++++++++++++ 7 files changed, 92 insertions(+), 28 deletions(-) create mode 100644 test/widget_test.dart diff --git a/.metadata b/.metadata index 0f055bf1..e65cd322 100644 --- a/.metadata +++ b/.metadata @@ -4,7 +4,27 @@ # This file should be version controlled and should not be manually edited. version: - revision: ffb2ecea5223acdd139a5039be2f9c796962833d - channel: stable + revision: "67457e669f79e9f8d13d7a68fe09775fefbb79f4" + channel: "stable" project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 67457e669f79e9f8d13d7a68fe09775fefbb79f4 + base_revision: 67457e669f79e9f8d13d7a68fe09775fefbb79f4 + - platform: android + create_revision: 67457e669f79e9f8d13d7a68fe09775fefbb79f4 + base_revision: 67457e669f79e9f8d13d7a68fe09775fefbb79f4 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/android/app/build.gradle b/android/app/build.gradle index e47cb81d..5cd8452f 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,3 +1,9 @@ +plugins { + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" +} + def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { @@ -6,11 +12,6 @@ if (localPropertiesFile.exists()) { } } -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' @@ -21,12 +22,10 @@ if (flutterVersionName == null) { flutterVersionName = '1.0' } -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - android { + namespace "com.example.restaurantour" compileSdkVersion flutter.compileSdkVersion + ndkVersion flutter.ndkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -44,6 +43,8 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "com.example.restaurantour" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. minSdkVersion flutter.minSdkVersion targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() @@ -63,6 +64,4 @@ flutter { source '../..' } -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" -} +dependencies {} diff --git a/android/build.gradle b/android/build.gradle index 24047dce..e83fb5da 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,12 +1,11 @@ buildscript { - ext.kotlin_version = '1.3.50' + ext.kotlin_version = '1.7.10' repositories { google() mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:4.1.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } @@ -26,6 +25,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/android/gradle.properties b/android/gradle.properties index 94adc3a3..598d13fe 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,3 +1,3 @@ -org.gradle.jvmargs=-Xmx1536M +org.gradle.jvmargs=-Xmx4G android.useAndroidX=true android.enableJetifier=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index bc6a58af..3c472b99 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Fri Jun 23 08:50:38 CEST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip diff --git a/android/settings.gradle b/android/settings.gradle index 44e62bcf..7cd71285 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,11 +1,29 @@ -include ':app' +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + } + settings.ext.flutterSdkPath = flutterSdkPath() -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() + includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + repositories { + google() + mavenCentral() + gradlePluginPortal() + } -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" + plugins { + id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false + } +} + +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "7.3.0" apply false +} + +include ":app" diff --git a/test/widget_test.dart b/test/widget_test.dart new file mode 100644 index 00000000..e3811806 --- /dev/null +++ b/test/widget_test.dart @@ -0,0 +1,29 @@ +// This is a basic Flutter widget test. +// +// To perform an interaction with a widget in your test, use the WidgetTester +// utility in the flutter_test package. For example, you can send tap and scroll +// gestures. You can also use WidgetTester to find child widgets in the widget +// tree, read text, and verify that the values of widget properties are correct. + +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:restaurantour/restauran_tour.dart'; + +void main() { + testWidgets('Counter increments smoke test', (WidgetTester tester) async { + // Build our app and trigger a frame. + await tester.pumpWidget(const RestauranTour()); + + // Verify that our counter starts at 0. + expect(find.text('0'), findsOneWidget); + expect(find.text('1'), findsNothing); + + // Tap the '+' icon and trigger a frame. + await tester.tap(find.byIcon(Icons.add)); + await tester.pump(); + + // Verify that our counter has incremented. + expect(find.text('0'), findsNothing); + expect(find.text('1'), findsOneWidget); + }); +} From 4994fc8327cc13ddd6a897da1434b752df066808 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Mon, 19 Feb 2024 22:15:23 -0300 Subject: [PATCH 60/89] feat: add try_again button to error_screen --- lib/components/rt_error_widget.dart | 17 ++++++++-- .../pages/restaurants/restaurants_page.dart | 2 +- lib/l10n/app_en.arb | 3 +- .../goldens/favorite_page_error.png | Bin 20203 -> 19327 bytes test/widget_test.dart | 29 ------------------ 5 files changed, 18 insertions(+), 33 deletions(-) delete mode 100644 test/widget_test.dart diff --git a/lib/components/rt_error_widget.dart b/lib/components/rt_error_widget.dart index 60c798a5..387a3fbc 100644 --- a/lib/components/rt_error_widget.dart +++ b/lib/components/rt_error_widget.dart @@ -1,9 +1,11 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:restaurantour/core/rt_text_style.dart'; class RTErrorWidget extends StatelessWidget { - const RTErrorWidget({super.key}); + final Future Function()? onTryAgain; + const RTErrorWidget({super.key, this.onTryAgain}); @override Widget build(BuildContext context) { @@ -12,12 +14,23 @@ class RTErrorWidget extends StatelessWidget { child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - SizedBox(height: 100, child: SvgPicture.asset('assets/svg/404.svg')), + SizedBox(height: 80, child: SvgPicture.asset('assets/svg/404.svg')), const SizedBox(height: 40), Text( AppLocalizations.of(context)!.errorMessage, textAlign: TextAlign.center, ), + if (onTryAgain != null) + Padding( + padding: const EdgeInsets.only(top: 12.0), + child: ElevatedButton( + onPressed: () => onTryAgain!(), + child: Text( + AppLocalizations.of(context)!.rtTryAgain, + style: RTTextStyle.button(), + ), + ), + ), ], ), ); diff --git a/lib/features/restaurants/pages/restaurants/restaurants_page.dart b/lib/features/restaurants/pages/restaurants/restaurants_page.dart index a3843f7c..2adffb0a 100644 --- a/lib/features/restaurants/pages/restaurants/restaurants_page.dart +++ b/lib/features/restaurants/pages/restaurants/restaurants_page.dart @@ -42,7 +42,7 @@ class _RestaurantsPageState extends State { if (model!.restaurantsStatus.isLoading) return const RTShimmerLoading(); - if (model!.restaurantsStatus.isError) return const RTErrorWidget(); + if (model!.restaurantsStatus.isError) return RTErrorWidget(onTryAgain: () => model!.load()); if (model!.restaurantsStatus.isEmpty) return const RTEmptyWidget(); diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index c0b314a5..4e8be3e8 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -15,5 +15,6 @@ "restaurantListAllRestaurantsTabClosed": "Closed", "restaurantListAllRestaurantsTabOpenNow": "Open Now", "restaurantListMyFavoritesTab": "My Favorites", - "restaurantListRestauranTour": "RestauranTour" + "restaurantListRestauranTour": "RestauranTour", + "rtTryAgain": "Try Again" } \ No newline at end of file diff --git a/test/golden_test/goldens/favorite_page_error.png b/test/golden_test/goldens/favorite_page_error.png index 7de5f160a99347b1e9d72f0e1ec51c3c5d5cdf27..99886e48ab68eec9017237c74072f83b8e79a041 100644 GIT binary patch literal 19327 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 z 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 P Date: Mon, 19 Feb 2024 23:03:45 -0300 Subject: [PATCH 61/89] feat: use makefile to agregate scripts, sort locales --- Makefile | 14 ++++++++++++++ lib/l10n/app_en.arb | 4 ++-- 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..8c93bd95 --- /dev/null +++ b/Makefile @@ -0,0 +1,14 @@ +tests : + flutter test + +update-goldens : + flutter test --update-goldens + +l10n : + flutter gen-l10n && arb_utils sort lib/l10n/app_en.arb + +gen : + flutter packages pub run build_runner build --delete-conflicting-outputs + +get : + flutter pub get \ No newline at end of file diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 4e8be3e8..af19243f 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -1,7 +1,7 @@ { - "restaurantDetailAddress": "Address", - "errorMessage": "Oops! Looks like we couldn't fetch the data. Please check your connection and try again later.", "emptyMessage": "Oops! It seems like there are no items to display at the moment. Check back later for updates or add some items to your list to get started!", + "errorMessage": "Oops! Looks like we couldn't fetch the data. Please check your connection and try again later.", + "restaurantDetailAddress": "Address", "restaurantDetailOverallRating": "Overall Rating", "restaurantDetailReviews": "{count,plural, =1{{count} Review} other{{count} Reviews}}", "@restaurantDetailReviews": { From b78615db8762b4df3b68efbe26949fc89ff0e28d Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Tue, 20 Feb 2024 09:56:33 -0300 Subject: [PATCH 62/89] feat: add integration test --- .gitignore | 1 + Makefile | 14 ++++++++- integration_test/app_test.dart | 26 ++++++++++++++++ ios/Podfile.lock | 6 ++++ pubspec.lock | 55 +++++++++++++++++++++++++++++++--- pubspec.yaml | 2 ++ 6 files changed, 99 insertions(+), 5 deletions(-) create mode 100644 integration_test/app_test.dart diff --git a/.gitignore b/.gitignore index d2a108d5..fe7fa86a 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ .svn/ # automated_tests related **/failures/ +**/coverage/ # IntelliJ related *.iml *.ipr diff --git a/Makefile b/Makefile index 8c93bd95..5d637265 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,21 @@ +# TESTS: + +all-tests : tests integration-tests + tests : - flutter test + flutter test --coverage + +integration-tests : + flutter test integration_test/app_test.dart + +lcov : + genhtml -q -o coverage coverage/lcov.info && open coverage/index.html update-goldens : flutter test --update-goldens +# CODE GENERATION + l10n : flutter gen-l10n && arb_utils sort lib/l10n/app_en.arb diff --git a/integration_test/app_test.dart b/integration_test/app_test.dart new file mode 100644 index 00000000..ac53db18 --- /dev/null +++ b/integration_test/app_test.dart @@ -0,0 +1,26 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:integration_test/integration_test.dart'; +import 'package:restaurantour/core/inject.dart'; +import 'package:restaurantour/restauran_tour.dart'; + +void main() { + IntegrationTestWidgetsFlutterBinding.ensureInitialized(); + + group('end-to-end test', () { + testWidgets('navigate between tabs', (tester) async { + await setupInjection(); + await tester.pumpWidget(const RestauranTour()); + + // Verify if the app loads + expect(find.byKey(const Key('all-restaurants-tab')), findsOneWidget); + expect(find.byKey(const Key('my-favorites-tab')), findsOneWidget); + + // Navigate between tabs + await tester.tap(find.byKey(const Key('my-favorites-tab'))); + await tester.pumpAndSettle(); + await tester.tap(find.byKey(const Key('all-restaurants-tab'))); + await tester.pumpAndSettle(); + }); + }); +} diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 5c50a6c3..e1dc72a9 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,21 +1,27 @@ PODS: - Flutter (1.0.0) + - integration_test (0.0.1): + - Flutter - shared_preferences_foundation (0.0.1): - Flutter - FlutterMacOS DEPENDENCIES: - Flutter (from `Flutter`) + - integration_test (from `.symlinks/plugins/integration_test/ios`) - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) EXTERNAL SOURCES: Flutter: :path: Flutter + integration_test: + :path: ".symlinks/plugins/integration_test/ios" shared_preferences_foundation: :path: ".symlinks/plugins/shared_preferences_foundation/darwin" SPEC CHECKSUMS: Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 + integration_test: 13825b8a9334a850581300559b8839134b124670 shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695 PODFILE CHECKSUM: 075ddf6b19cdcced44581bd8fbdfb58404a78f8a diff --git a/pubspec.lock b/pubspec.lock index 6ff8e620..6aa55240 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -205,10 +205,10 @@ packages: dependency: transitive description: name: file - sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" + sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" url: "https://pub.dev" source: hosted - version: "7.0.0" + version: "6.1.4" fixnum: dependency: transitive description: @@ -230,6 +230,11 @@ packages: url: "https://pub.dev" source: hosted version: "5.1.0" + flutter_driver: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" flutter_lints: dependency: "direct dev" description: @@ -269,6 +274,11 @@ packages: url: "https://pub.dev" source: hosted version: "3.2.0" + fuchsia_remote_debug_protocol: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" get_it: dependency: "direct main" description: @@ -317,6 +327,11 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.2" + integration_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" intl: dependency: "direct main" description: @@ -481,10 +496,10 @@ packages: dependency: transitive description: name: platform - sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" + sha256: ae68c7bfcd7383af3629daafb32fb4e8681c7154428da4febcff06200585f102 url: "https://pub.dev" source: hosted - version: "3.1.4" + version: "3.1.2" plugin_platform_interface: dependency: transitive description: @@ -501,6 +516,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.5.1" + process: + dependency: transitive + description: + name: process + sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" + url: "https://pub.dev" + source: hosted + version: "4.2.4" provider: dependency: "direct main" description: @@ -666,6 +689,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.0" + sync_http: + dependency: transitive + description: + name: sync_http + sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961" + url: "https://pub.dev" + source: hosted + version: "0.3.1" term_glyph: dependency: transitive description: @@ -730,6 +761,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: c538be99af830f478718b51630ec1b6bee5e74e52c8a802d328d9e71d35d2583 + url: "https://pub.dev" + source: hosted + version: "11.10.0" watcher: dependency: transitive description: @@ -754,6 +793,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.4.0" + webdriver: + dependency: transitive + description: + name: webdriver + sha256: "3c923e918918feeb90c4c9fdf1fe39220fa4c0e8e2c0fffaded174498ef86c49" + url: "https://pub.dev" + source: hosted + version: "3.0.2" win32: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index b3f43983..9571f015 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -33,6 +33,8 @@ dev_dependencies: flutter_lints: ^1.0.2 json_serializable: ^6.7.1 mocktail: ^1.0.3 + integration_test: + sdk: flutter flutter: uses-material-design: true From f1710490759ecef9496a45c7c7436de33088d0bd Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Tue, 20 Feb 2024 10:59:56 -0300 Subject: [PATCH 63/89] feat: refactor code, add theme on goldentests and update images, and use gorouter to navigations --- Makefile | 5 ++- integration_test/app_test.dart | 4 +- lib/app.dart | 26 +++++++++++++ lib/core/inject.dart | 3 ++ lib/core/routes.dart | 35 ++++++++++++++++++ lib/core/theme.dart | 13 +++++++ lib/features/details/details_screen.dart | 3 ++ .../pages/favorites/favorites_page.dart | 11 ++---- .../pages/restaurants/restaurants_page.dart | 11 ++---- .../restaurants/restaurants_screen.dart | 2 + lib/main.dart | 4 +- lib/restauran_tour.dart | 31 ---------------- pubspec.lock | 8 ++++ pubspec.yaml | 1 + .../goldens/details_screen_added_favorite.png | Bin 32625 -> 32364 bytes .../goldens/details_screen_content.png | Bin 32625 -> 32364 bytes .../goldens/details_screen_favorite.png | Bin 32625 -> 32364 bytes .../goldens/details_screen_not_favorite.png | Bin 32930 -> 32625 bytes .../details_screen_removed_favorite.png | Bin 32930 -> 32625 bytes .../goldens/favorite_page_content.png | Bin 13441 -> 13396 bytes .../goldens/favorite_page_empty.png | Bin 22787 -> 21723 bytes .../goldens/favorite_page_error.png | Bin 19327 -> 18587 bytes test/golden_test/restauran_tour_test.dart | 7 ++-- test/mocks/mocks.dart | 4 +- test/widget_for_tests.dart | 2 + test/widget_tests/restauran_tour_test.dart | 7 ++-- 26 files changed, 120 insertions(+), 57 deletions(-) create mode 100644 lib/app.dart create mode 100644 lib/core/routes.dart create mode 100644 lib/core/theme.dart delete mode 100644 lib/restauran_tour.dart diff --git a/Makefile b/Makefile index 5d637265..8751cc78 100644 --- a/Makefile +++ b/Makefile @@ -11,9 +11,12 @@ integration-tests : lcov : genhtml -q -o coverage coverage/lcov.info && open coverage/index.html -update-goldens : +update-goldens : remove-goldens-failures flutter test --update-goldens +remove-goldens-failures : + rm test/golden_test/failures/* + # CODE GENERATION l10n : diff --git a/integration_test/app_test.dart b/integration_test/app_test.dart index ac53db18..24f94450 100644 --- a/integration_test/app_test.dart +++ b/integration_test/app_test.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:integration_test/integration_test.dart'; import 'package:restaurantour/core/inject.dart'; -import 'package:restaurantour/restauran_tour.dart'; +import 'package:restaurantour/app.dart'; void main() { IntegrationTestWidgetsFlutterBinding.ensureInitialized(); @@ -10,7 +10,7 @@ void main() { group('end-to-end test', () { testWidgets('navigate between tabs', (tester) async { await setupInjection(); - await tester.pumpWidget(const RestauranTour()); + await tester.pumpWidget(const App()); // Verify if the app loads expect(find.byKey(const Key('all-restaurants-tab')), findsOneWidget); diff --git a/lib/app.dart b/lib/app.dart new file mode 100644 index 00000000..5ce639ff --- /dev/null +++ b/lib/app.dart @@ -0,0 +1,26 @@ +import 'package:flutter/material.dart'; +import 'package:restaurantour/core/inject.dart'; +import 'package:restaurantour/core/routes.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:restaurantour/core/theme.dart'; + +class App extends StatelessWidget { + const App({super.key}); + + @override + Widget build(BuildContext context) { + final goRouter = inject(); + return MaterialApp.router( + routerConfig: goRouter.router, + debugShowCheckedModeBanner: false, + localizationsDelegates: const [ + AppLocalizations.delegate, + GlobalMaterialLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + ], + theme: RTThemeData.themeData, + ); + } +} diff --git a/lib/core/inject.dart b/lib/core/inject.dart index 81975541..c0373963 100644 --- a/lib/core/inject.dart +++ b/lib/core/inject.dart @@ -1,6 +1,7 @@ import 'package:dio/dio.dart'; import 'package:get_it/get_it.dart'; import 'package:restaurantour/components/rt_components.dart'; +import 'package:restaurantour/core/routes.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -35,4 +36,6 @@ Future setupInjection() async { inject.registerLazySingleton(() => FavoriteService(sharedPreferences: inject())); inject.registerLazySingleton(() => RTImageNetwork()); + + inject.registerLazySingleton(() => GoRouterConfig()); } diff --git a/lib/core/routes.dart b/lib/core/routes.dart new file mode 100644 index 00000000..b54ac69c --- /dev/null +++ b/lib/core/routes.dart @@ -0,0 +1,35 @@ +import 'package:go_router/go_router.dart'; +import 'package:restaurantour/features/details/details_screen.dart'; +import 'package:restaurantour/features/restaurants/restaurants_screen.dart'; + +class RTRoute { + final String name; + final String path; + final List params; + + RTRoute({required this.name, required this.path, this.params = const []}); +} + +class GoRouterConfig { + static RTRoute home = RTRoute(name: 'home', path: '/'); + static RTRoute details = RTRoute(name: 'details', path: '/details/:restaurant_id', params: ['restaurant_id']); + + final router = GoRouter( + initialLocation: '/', + routes: [ + GoRoute( + name: GoRouterConfig.home.name, + path: GoRouterConfig.home.path, + builder: (context, state) => RestaurantsScreen.create(), + ), + GoRoute( + name: GoRouterConfig.details.name, + path: GoRouterConfig.details.path, + builder: (context, state) { + final restaurantId = state.pathParameters[details.params[0]]; + return DetailsScreen.create(restaurantId: restaurantId); + }, + ), + ], + ); +} diff --git a/lib/core/theme.dart b/lib/core/theme.dart new file mode 100644 index 00000000..299d127d --- /dev/null +++ b/lib/core/theme.dart @@ -0,0 +1,13 @@ +import 'package:flutter/material.dart'; +import 'package:restaurantour/core/rt_colors.dart'; + +class RTThemeData { + static final themeData = ThemeData( + visualDensity: VisualDensity.adaptivePlatformDensity, + colorScheme: const ColorScheme.light( + primary: RTColors.primaryFill, + onSurface: RTColors.secondaryText, + background: RTColors.background, + ), + ); +} diff --git a/lib/features/details/details_screen.dart b/lib/features/details/details_screen.dart index a79df859..793928e8 100644 --- a/lib/features/details/details_screen.dart +++ b/lib/features/details/details_screen.dart @@ -3,6 +3,7 @@ import 'package:flutter_svg/svg.dart'; import 'package:provider/provider.dart'; import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/core/inject.dart'; +import 'package:restaurantour/core/routes.dart'; import 'package:restaurantour/core/rt_colors.dart'; import 'package:restaurantour/core/rt_text_style.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; @@ -13,6 +14,8 @@ import 'package:restaurantour/services/favorite_service.dart'; class DetailsScreen extends StatefulWidget { const DetailsScreen({super.key}); + static String route = GoRouterConfig.details.name; + static String restaurantIdParams = GoRouterConfig.details.params.first; static Widget create({required String? restaurantId}) => ChangeNotifierProvider( create: (context) => DetailsViewModel( diff --git a/lib/features/restaurants/pages/favorites/favorites_page.dart b/lib/features/restaurants/pages/favorites/favorites_page.dart index e15288e6..0c3d9322 100644 --- a/lib/features/restaurants/pages/favorites/favorites_page.dart +++ b/lib/features/restaurants/pages/favorites/favorites_page.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; import 'package:provider/provider.dart'; import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/core/inject.dart'; @@ -42,13 +43,9 @@ class _FavoritesPageState extends State { imageNetwork: inject(), restaurant: model!.favoritesRestaurantList[index], openDetails: () async { - await Navigator.push( - context, - MaterialPageRoute( - builder: (BuildContext context) => DetailsScreen.create( - restaurantId: model!.favoritesRestaurantList[index].id, - ), - ), + context.pushNamed( + DetailsScreen.route, + pathParameters: {DetailsScreen.restaurantIdParams: model!.favoritesRestaurantList[index].id ?? ''}, ); }, onFinishNavigation: model!.loadFavorites, diff --git a/lib/features/restaurants/pages/restaurants/restaurants_page.dart b/lib/features/restaurants/pages/restaurants/restaurants_page.dart index 2adffb0a..38e0cb20 100644 --- a/lib/features/restaurants/pages/restaurants/restaurants_page.dart +++ b/lib/features/restaurants/pages/restaurants/restaurants_page.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; import 'package:provider/provider.dart'; import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/core/inject.dart'; @@ -61,13 +62,9 @@ class _RestaurantsPageState extends State { imageNetwork: inject(), restaurant: model!.restaurantsList[index], openDetails: () async { - await Navigator.push( - context, - MaterialPageRoute( - builder: (BuildContext context) => DetailsScreen.create( - restaurantId: model!.restaurantsList[index].id, - ), - ), + context.pushNamed( + DetailsScreen.route, + pathParameters: {DetailsScreen.restaurantIdParams: model!.restaurantsList[index].id ?? ''}, ); }, onFinishNavigation: () => model!.loadFavorites(), diff --git a/lib/features/restaurants/restaurants_screen.dart b/lib/features/restaurants/restaurants_screen.dart index 3bab271d..6386bb0e 100644 --- a/lib/features/restaurants/restaurants_screen.dart +++ b/lib/features/restaurants/restaurants_screen.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:provider/provider.dart'; +import 'package:restaurantour/core/routes.dart'; import 'package:restaurantour/core/rt_colors.dart'; import 'package:restaurantour/core/inject.dart'; import 'package:restaurantour/core/rt_text_style.dart'; @@ -12,6 +13,7 @@ import 'package:restaurantour/services/favorite_service.dart'; class RestaurantsScreen extends StatefulWidget { const RestaurantsScreen({super.key}); + static RTRoute route = GoRouterConfig.home; static Widget create() => ChangeNotifierProvider( create: (context) => RestaurantsViewModel( diff --git a/lib/main.dart b/lib/main.dart index f58d03d0..7c1ddf33 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; import 'package:restaurantour/core/inject.dart'; -import 'package:restaurantour/restauran_tour.dart'; +import 'package:restaurantour/app.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await setupInjection(); - runApp(const RestauranTour()); + runApp(const App()); } diff --git a/lib/restauran_tour.dart b/lib/restauran_tour.dart deleted file mode 100644 index bbaa0615..00000000 --- a/lib/restauran_tour.dart +++ /dev/null @@ -1,31 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:restaurantour/core/rt_colors.dart'; -import 'package:restaurantour/features/restaurants/restaurants_screen.dart'; -import 'package:flutter_localizations/flutter_localizations.dart'; -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; - -class RestauranTour extends StatelessWidget { - const RestauranTour({super.key}); - - @override - Widget build(BuildContext context) { - return MaterialApp( - debugShowCheckedModeBanner: false, - localizationsDelegates: const [ - AppLocalizations.delegate, - GlobalMaterialLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - ], - theme: ThemeData( - visualDensity: VisualDensity.adaptivePlatformDensity, - colorScheme: const ColorScheme.light( - primary: RTColors.primaryFill, - onSurface: RTColors.secondaryText, - background: RTColors.background, - ), - ), - home: RestaurantsScreen.create(), - ); - } -} diff --git a/pubspec.lock b/pubspec.lock index 6aa55240..c794565c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -295,6 +295,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.2" + go_router: + dependency: "direct main" + description: + name: go_router + sha256: "170c46e237d6eb0e6e9f0e8b3f56101e14fb64f787016e42edd74c39cf8b176a" + url: "https://pub.dev" + source: hosted + version: "13.2.0" golden_toolkit: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 9571f015..3a136415 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -19,6 +19,7 @@ dependencies: sdk: flutter flutter_svg: ^2.0.9 get_it: ^7.6.7 + go_router: ^13.2.0 golden_toolkit: ^0.15.0 intl: any json_annotation: ^4.8.1 diff --git a/test/golden_test/goldens/details_screen_added_favorite.png b/test/golden_test/goldens/details_screen_added_favorite.png index 1256012ded763bfdd8eb046f9f443d3b7744348c..b1d43cbc148834c22a43165554d525a0e9ed650d 100644 GIT binary patch literal 32364 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%0D)(O5Ixr4Z&_p3rNby!Pm~n$_I>d! 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%0D)(O5Ixr4Z&_p3rNby!Pm~n$_I>d! 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%0D)(O5Ixr4Z&_p3rNby!Pm~n$_I>d! zEp%|3CQC>2q&85-eDYg8)!w|x-J#kW016d+J-%VL)3VIEZ&udpvWY~iM1k3Db5xo` z7ol|E`SH`IeCsevr|>$iw~6&@m)fO0EX)dgc(xOTpR-j`vqM5|1O-hF<}%1}Ffz_Y zV(AyxM$2fnx`y357&m19Se8i)ZNB{V`}5BBcHitYrPR=z_@99RP0(-YRM?IFb8U8@ zWP;`m^P_RP;7uPR&Ca?SL;cd0su52f+P0T{K@53Ro&lcXWj zurXCvFnxJs9L1spH}#X+UpfCA%WaZAn5W6|lUvePYNg;=Ac1wyl*D$peudBXc5P0i zt4Yf0U{)FKn-q8)dtP;-nD|C%f&!!F9n3C6>qV~W$${tc#ccvQOk{?%LB4)Aj8-ADUt`$b-d z$1>m(LA&3)lT|MA7VR;p?vss)stk{656##${h00!O(wao-=GMCItB1)Okh|B?*8^^ zF@|$taqMZhd*K`{Ye%Z#5#JZ!of;;7m$JXH`?)(wB14-)Ctv#XHjX>;0!EFY3T4Bu zG!h1I*V%bOARy>>#PVn!rbrCd^stEfo|I4e#d4WulSrPZoufB^nA>B}(W-hMY3#q* zUpeht;2=?L+t$y#ZK7;Y=~rh^*QbETan*HiMBUc2p&g=Kq}AqCkKHsrv78ZJ9mN`R z8CMJ%Tr|ZqlwUUZ!T4TYlwRtNmAC{0Mz!<8^l%t(ad&+r+$Rmv@T^vIv3=sJUIG#L zNqHH@l{(PHEG0@dMl&F=Y6R_2?16C;b=vs|v|ln5x8(88g7zg3S|f)$8BhuoR_A|z zG7@LO!s0k_b4X54U&PRI_Jc#W=*?j_dZsP%-rQbg*o= zhDPYsPaHiB$jB8$HytxfU0ofwW(UhX`DNwg^358rr%+Fxk}HS*wDgJ69ubVccMB?u1#diHM8 zc%WRwedcK@--VSG>ZQ{ZG5?}Z#MJqK7RL4NJM-O4Fm|otZ#WJGny0Y9PNYX|<^kJp zI+RjdiBl->soJqoL%+u$Oyg#3Z;3lvcBN$HYv<<&n7)64y-hEg>vO!L0LK&>7lhM^ z+H{ggW|iL z?ypU00`A6ZnP(v_Esbb`o)wTKUNwrkU++t3kdl&)RofSUq2mA+kLq{Z>0@qhkTL%F z%V9nBYQx>eLs^v>jqu{+r~582mbbFieT7vB1|M=z?kG~6~Sk!kA7BFtt^#D<$?4EbkFyb z)zZPYIo^8z0EDdrS4T8k6m$ipYdTQ9k97m7NYJ)l2{~MZD3Q9%?B|Km0n$+WcYdoR zbA(BmL1SZMz9zcJ$k>>Ih9+N$nmPN0tn}$<(6<~IO?d_TMK(_Xr+}9z5l?Rt$y^{at6oO{R z_67WrN=mM!a$??_$aIW*9MVW9?fG@)=Ch>FKn?`;s{o|!ojs)-TH#*;ju+y%(FO*( zr*FQ74H4Hjn*5EAv1{kh6^!R#v`xIz)MY=!&9j} zm&H!tren7`hFg$~W`~~mOFRXFi$?2h$2@}}8=H~L$o5#a0#W4fXMPjhdd{C>*w?A4 zutyxnBDJ0+3OV9(FqEy^QB*}mg=A9qxl0t(YU$|m&nsyvACVF6cu*yD6A$cB?n5-% zc}B7|hif{Y;}pj1v8$^zn||*vKNKgv1S(fZna`i%G%sL4)Xp_~xIS7V52lCRD7P5p zH}&BdMBVqy_zu4sj|;>r*|6r(o&=PwHrhl2d%Vb%sGa|s4UEFW?h!ZaaDnC51b8MW z-vtAP$$PszbFQ0H623E zE~FFqY(I6UNaXO;ujLS;zxc!BSes#_ad)JprDM2SZ?5)ka{(5ta3_X+`B%_Qn~7Yf z57@hNr}-OC~gH{MsYMAuHNvOw@Mz=1}qr^iWXNF>;dKh+_gSZ-rcE|cOHK#7PdC@82uOHaMM zE`_t~L4R`dJ+^4iRA-V?fV+uoE|l`v0wK$0vgm8SRp*1@!8`%;#ap)AG3+`TK(&q$ zvNwQf1fJ|uP*UPJe=wpSWN&KK8Mpx#XNQAlA_gJoaP}l9I2h<3jiT;_M@14W0+s$7 zbBz`ymtyuiTI(m?akXWywNAcJ3pnk_P;jcLDbon6w-kPl9%4xpmykeA3tU$Dt__oj zQErK2N76F9T(M~e$U4Rxt!{R`@^3g1|El)^hhi)z{8e{)f`CK%Y?i_wV7TzRFDB=Y z7=Hj-by)wGya7SK*=tztnN56RI26mD8$>jPCba7s6Lj|=YazOMQ*-9vX$+Sp#z3e1 zg?gRQfd%%Q2j+#;<*^?vm8E{{$>zNR_$$8(+%zQO z9Wd~Psv09bQr{RmJKrEAgl#pc|BLIqFvLU|ppo@jn-P+J%ctUm2yYEtq=`1pp#?Nf z=(v@}v9QZc5)xe?lTR{70#WBrbF=Km#s*A8d8X#$7ojC53S6+jb@n!(}~Way!^~2!pHUU&+S~DKZb#!slC0 zSeCB;1*Wl!o>K)jUNgwIySPz2~(8oQ( zzqKWet@%19sQ18z6mehJW6Ee)j9@GRg@PLimj83#JOV`wYJ#r3L z73#bXC0!@0c9#U+{rQ%eLIZhl-N_F__O2ILXi;yr8DaeZKJULOqDtNV0)en;hl*Y` zEPnIe2CZY5Ear~s)aPHv*pJo1niXTdfi8wd$T|}{j5NgJdaRVXDQ!_6Ra`?l>asXu zKYsR=GC|C-2;~c6^jA~U5a?F3c6YSCJ6oU_&4L6ka-5`AvL0tG%*^J36{r`-K4*9v z^1_de-3KkG!btH=w(5Kb7#msP)=g&1(#-A0CaenxCJ~ygZ%p4KljfmttHqw7JVOST4(t z(`f)k?-iS@u?9J-n!-ynLp~f1mgzP(0YsdZ?U5NymcO`qy03uH)oMY10d1~cu_COc{; z^p#dhg-)!NS(i#ThErVw_#Flg=*Ab;7r0<2wsWQc6R9mI#KZt2{kyoUkd&_gA^_Bb z6MQ^x&TDp0RJk6k>4Qq640i?6Obole0?>%zP;CV+RveF77>HD66b%kR^fCwK$V3RPEGS*emD zYAqq+x1TVikoX9ZAY`5Y{QAv2wZ`Z9hB-wzS$I13Ecq(U|m_B$}M84sa)|0s>k~J*ja}9GC;c zf)nm$!NuPR0bU`yE50b)v5pzoe`^+!#oYR%tu?aL(h` zJ8-afVHJ}{yXg#RDEoWo?p^o{t;oMpy~RY~9RN~624|K2bc@88fs*o(uC8vDLJWJ~ zX|3;R1&&GBTNyCK`wDO+u<*~XtXS7=#`Zcxp7uMN+$qBC`k;?ea)I3i&~Cd$5k8sx z`SZfY2DgXD;gi-jICF<|#AWdUBw#*{5isA7t)Ktw0{M5z%dcG<>KS(GaD>S2QqN@p z9|W>{kFJ=EMa8BA!&U79x^kMU5Z;JBpf#R(WW@*2iMy(C8KAUoPbWFQb<#SQBQ6K& zWHKJddI1InmtvY8eRUO_w@Eq|x9OblbXm~N4Zt;Bx;AKb0xEeNh=;pgoO!yfO~6Ea zT-a4FYERH4Q^Uz(hdmRIl)q;VV~5m1D#NV~#5k%CfIj-F+mLU2|Flh@(Ru@%<2K{f zh=~aeYXFCF9U5@Qae(N_!Uk#m)o-2;voBBx;XYlC62l zY^hWTy54fj1)D5blpMU=?)dTg1WNNrTA2E~1_Y3Iq8gpdzio$$Rsb8BZ@#4Bm8WEV{>1$YbOp#U@JuH8@E7oWoji7! zvx`eveRxbfUrDv=hF!BF{9@|75^6oRXN~h5<9xWF1%SangkQ^Z&T7Xs;E$9Nek4`7 zSoh96t9F|E1ZDo$BZdUvxDJ!16C61dGR{84nc}=6R#EKp+a>{LEFJWG2>}x_2~A^V9ubS( zi3Pr=hqgO|ZSLj#L1TA8i%XAOMYB;Wv9 zvupZI8o&dYpftXK-@kt!3R6xL7y>qu_a6cS_g9uuS3nE4dJ3Cvr6)`MLd|b;p5TV- zU0Tir+JqNoba)39Y9n=)y z^1|!@lE=8-M;{cl_HPdZCxr+RS0Uo`{{o+kfBD)3;$)oM+_ZsjknDaG0KxK8*(vdS zgigR$0YtPpP7il?9M4Q&t^6DdfxviVjhUT1=*q#QSdSMG zB%pOBrF~sr^*yli2YlD~O|7TEDgtTX#9`@w>&+3-j8`c^ZyOR4V&%LBrV?k!uXb4q z|7XzyGxoBk)CTBgQ%?9GGoJADD?)%0(Js`0S&I*_n`4x`5GwZeqt(p%OLsurNTwd3 zt{mVm~1M*fwZ7AiN7BW1OOa%jml9`faA(}TzfQT zO{6S_*;{AGaquY|Y|eObOu_yGC>A!uX>~v+-u>;OnkR*qMoan zCP-a*pf%uNh2O=36|6tID{(MgTM;~fy64W)&@zKO7NmT3&7wkwsaiIe&4t{}ugBJ3 z1koE3-pjy{huOv_p|eXq$HDab^&%**u2q&4DM&nP^EEqAZ}YWEG?ErT-s}ZtKj21E z1^oq%5=GGRyBC7uk_kkhA;*!Y7H8*fd%dJF-p3Y#j-$`v4 zmIubJQy%YUSgywset)^!f$FB}An+lKmDtyadaM=VJcq!X2sm(fCV&aHGe0&3T(|CAcNooXSbq4~O&txv=jq=nvsl4!xlVXmPNuBAQt-_6Zhn1r#9R z-@bi&b+9DEvL~4dCi-?O0Hoj_fJf^~YYHX@AFq#9Xad-oAZ%L%E>!JzUX4mk3k=Q$ zly^Ih1jW&Bz!S{^AUKduV1S2tmtKV)s7nNZh6mX>m9Jj+2|NHN43KAPfhWYcoqxc} z%LWL&u{x_tBO{||z=>34Icwqwn8n3|-t+p=4do$(rmo-d`Czp+2g0aM0q(jw$ObCH zA0BjSZEdYqwW~F5$70_EUc>9|90K&#GyhwMR=^YLQ^FdmPYL>#2Wu?k*YjFi`gV zepet(aJ+D+IcKRnSn7GRs=8VMUUA)F07n_&_&gxa0H>;(|p9GUoA6z`)Kj=;%&$yMNpsMS||l=gaO^5Z&E-E#{%&1!*OIh zdo=Qg)Ww-JK>AvM2x5led>qjAQIugY$^BA#Pv@nQgSq+n*S>W?cq674mBI5b?A=KA zFHl_SRuy*yta-kEM)s%M^ywy-hbeBS{!xp{+AY(jORA{@rPHwnkt&5p-JPYt_|i=$ zW@~8n1Gn$BfomLW@Gbgh4X`&~D+F;TFq4RfYg|Fk>UMtOM$8~$1SCmaq{lR>rEavo z4&P@NRTOMeImORmkeQ1!4xe0(*KFpp7U2`k#4+an49LC7N~zZOBmGs=hq|jDXaq4K zTsC*T!}v;m-xai3YxzCmO-1hg?CW)JDsLI!>{AFnJa4Qd(={6n(sqZRidjW$bb?ap zPVen8)w#iG!b+DnLELuM@A2SVT;tezK^?eaYQ6S}I{YsshSv{I`$@91v-QeflYYDt z^7->K?csdh$B%zi6Jzht(sIP0*z5v1bde9ZxRjUnGcz-14k^%c*k^%%7gnxY@L3d% ztH?m*@yX1%49kCa+l%r3ZDlZfseL0TY}9NnTlt2hH@$^ITx7f3)_Q>LF!JS7G+w`Y zOiE)1h=X;Dt>&9~sl+W=_wp{OX$0dtu7NzXvmiaz4>d|QU)YFu$k)O9sJLx_yD?YlZym%Um)MjrBKy0RYSja`MjJKUgCQc^0t zFE;>v^a%gaqerY-xoQ;_OiWBKt*r?)2O?b9c^^K+`~3NHacOBguj-BWAfM?O8e+@+ zro-3!N@Z`}qJMJl=?OAcPmki)*Med7wk-J6n2JnvoRY`yzuGsu(0^Xvp>p#1^XnI5 zYlkHzrG80CN!zwpd8Cy81*i1LpFcNb!zhQURDzzrAFte;0UN`4g@is`ngF*lQ8eqq zQ6=D2{`Fn}6UNFeW=1$gAoX+Ty3(aJ4G}pj1a}uX{-z&;gXcQ)&}R1b$-~M_j3=45 zoNq*igj|f5Q$L?4y+=ygcK7O+kdW7(@#JJ=N`FI`7#a0n1(1?Pa`H8VguIBoX9hO% zE8gN|WP~&0|F1oKH>#*U070h-gQ2uY zZvTbB9Ap#%@4ywnyAxbFB>2_X_&1|4FeGHJW9G`5!yn@>_a%s)u>^v!Ef7*oQ!{HR zU%9t8^xz(?t^d{&?{2#@0ehR+-D%T^tX~?3a%7}^ELLiG?kC8BH*-Tm(r@#Ax3tVA zKAip~^#GD6Z1*81CPrr;1c9agQZOecXSo9pDd_@Tpa=ma0|S!MM8bRTcNt4s$gPNm zweMwv?etIHLBis=G1U%aWMqgAc5)&_$6ZqODZY57VxYq2(=ns$C-IxZs0bimX!wW- zNa%inB9VD~frocb%Ar=r4b5QI8gXB`-sjlN#wKCgbihaa3KJuoFp#jAB>3o;$)`LC z59C}Cr5Oo>#9+09b^seWk$}wzD-{CD$SD1iS31Prpz?iG23f$~k8SIv3?V5%@U44- z6^|-1jC&{pW|JULcE2GqVx|g*U8znUL?dtM}IW-cF&7(+{6~RO=f4~ zmwlI!$z;Lb?{=`U38irm9L%osJ*5OS`Wf(p2q3gObncz3t0A!3#?B11v|+|I9)Eq_ z@}_)}l-1C<%U<BNNT;>k>dT;- zsHs=9Odp0lx9Ld~vJM3r>R;e=wi%HBLi71170)Zsgj5SBgoH@4WdJCdmiM$o+VaJU z+Lk7Y0CI+uL* z@jzeX^agG>glRX77X-ZMQxpRW-W%j^mJcdFqBX5YSi@$<)1)7B?Y``tsPN1c%`_wxSGnJ2NB^pcH^;dzAuXjpq+dl&woiCaud&CAFo@RAY32v zcf8!@CMoGkaO1U+FW;q@#KrGJir=&`{{H>@HS6x$F+XalNZV*ArM0zn4lG?1Snk$u zhNlR?ma?Za7f-*OI~aZPa-6P092ljkWfH_&&^1^vn?-kZX!$+*ac1N~4ThZqtPJ@G z`aB6?VPRcwzqv(X)b#UfKMra>fvF9&Clu2v+@m(Aunrm=)B-Jfj%t?KwZ|9Gp(c5f z67PtUW7IQK;*+J%rDSRrVrJ3J!nfHu@fB_l)H;FC_W(mOS?#XvU2lIX1QG+Iq$GWC z#C%Nfa!cYeNGVf5O+ z&_JjFa`4vqLEyvASCUUJl>D-q{@i1o(#=^1%l4c%p64;ivM|K^?A&Q(hZ*v;XR5B0 z6Kga@Z75_f_r2dD)4E@l>XM3%j_dq#X@ws*4Np%;*DLOwFD_?UYe%{!;#< zBfkmxa~THwVE~WMp=JG5vQG=KuK}{+FSI0H7wz$jHpQ@q_$BfKOpITx2SJJuWoTkU)5c!M z;0HoNls&0Z1d!j&&1usC7scfz&)2Kn-fs0igES0J`vo$0#J=cg0Uv%)l${{13bW{l zd)Wt4{PkY-Q;QkE^^H(6<1gY|Ya`aVx zbl`EtKyKN`4#`)QF1Q-V-FP41i>Jm)UR+s80J+5=awSqd@~8VT`=g63CdtiyLLSq4 z8EF!dvkIT8@-=`MAP|Zqjt8Qm_>qz7kbs(p9(^cz;V-oOl!p$%Gsj^|@n-|%BO@a} z%-(-^;=REMF&hT&Um_-MPGefxzc1xxIt#n~c zs zDZniZ)H*y>(JE9Uoon?C_I>~UiRUVmM$qmWhtiPa>6Blv_9x;AWsJ#Df1rZuq|Uy91ydk-j~HL z#qyy3g3dgEqT}-D&A5_`%<5}uGli_X!1g7VJmxmDrhy0E*YGrAL*j=PJ064W14yiCN#3CvhHfpYJm7p-W_BqS^FsKg=g*RfD)#^)&wB%h+1%qK!{T_*I5rq2x3O z0d}r`>Qm&mZxG0v<-R+8e0}kvzBFfEhu!5W5%}~sCKy7Rg;a=Zx#u2V&e@p1>^2j_1%&pl~DX-v0{dL%Oa29%rsS5K88yuG~*-s};8LZQf2 zszXCUo~AtyGIMY!TEc*K<59NQ>{h-keDQH=E?272`zzPgems3|G^7q*dL@DS1dx5# z%%?k_Lqf_M{~LOg#}kk+(c3b~yh%GUGOyK?cB}F9t1s!yG$5=#gS_ozq><0~I>8}C zwIXpBm%>Ys4pC3Tl#q~HU^CgnP_3DD;sz2zepJ z*xT{19~)U~@cK^WaN{oDQGA8-FX6Wn?zz1|kEg$;Q|oaDb2bqbR}K$ca!p*zC5^sd zojAJOE%H6VJ$msithZT<<{?f4wreumK^`F08 z|BKqk%TY*;*E&1c%(z=ko%!B$T5@C#&4NsP`AtJZNSrRFGQ(8!uK-PH8Q%NKa?AuH;}V}GO@?`WPB5~G&D80cNRJ#G!Anr zY`WM1tmQx^rlG(=`TM4dv>XDqqxavRUfr)R`VsXkcl-za!S#&+@5wPU22A+GN$~{8 zlZ26ehNb#aJ^xS~7X7aQ6=*iUtbXLae5bCcz^w6uUj3Tz(f$Tv*b5aI9ewQ--b_kK zd7!>3<#BNz_#F1sS08n0IWBv;~i}G8fCsD`2gA zA#`cinqISlYNZ9YQOiR-f(>wr{3Huj+r_Q~Xg?~udDUPINnzP-a z79s~N1*D&3l%q8~VAg{`1Z{?YhsJOWw%?a@zDFnO7X685sWXwO zD^bEq$Y!wUb96Mh^;nBCt$Je?qx%#~5*# zukPg;*z3M}#h4)A7@AV&o#!?IUgDDux3x$T^(Bh(Px!(&*TOh&asymlj(NC!#NW(6 z7P$_%MfDm7x_J&Wd~<#>t+#n0MBEhW8Sct?N+3L1RFCMjC-WOeI-zz82DBKt7o{L;pF-dEMyP>&rZYTp}HI;Md~Gpcvi$9jpmu7*4_CDGxK@|nMZ zdjx69u zgWDD>pF?we_gYJu3;I>q)~K8^Gzzk zpyvCb5XzR#2#J=(A&cLpu85lzH>lA2p%2=y-*>8{QhD+kafItA<6-{0V4g? zLa0>p$8EB~_O+=JMaUhh?(2#j<<^sOkUOTX$Ilbo&89DuDy5-0pA{RanuP<=q>$gU zL1Dka0+QVt-8Ha}11GJi*d&Mi-myRvMkYNry_Kf#9?5BmHY@2UKV-<40qs6;zHH=4ESSkZTZiw25zt zU7H4<@2WtW7CUIG?l?J4!4@dHO&>r)=qJ5H+zN(6f!2Q$GW)x4PJ`N!#}PMHnj2((rIaN-CvmjW9eBXp(KPJidP0P_iN^g-S9#3?Do0*tJF&qzWGED2KU6g z3bj=B<)imTp^OOLu6Hm zgp@6NWRL7|xg;|rDMFIWGRxkgsI2TwlFZA9>oPBX&-dr|{oTL&KKHrLx&OF-_qorx zJI6UG<2_!l=Xi|gt8c7#-YfqXA4Iym{tx5(O%DpE1Ylh$7~FY($#JFO)3vnQ;UyVb z^aQ>;2pxn-PK5_a;Q?&i9=8zANyi#kjpmE9AK zRh33)f4jg4Vw(i?RByfPJq^zt;}PQf@!P4=-WQj~j?lCA7bNtv7LAxJ5Z+yLZp#tw z-d&jyq(Forv2Z-=5uq+xoY%%{^o3pM3(JQBGZH#;<<<&quM>Fe$ozaZ827 za&YT?fyUCuxs+5`j^{TsR~#1Jl|_|d2lK0v4N~tALYxobxYSrBtY0B#*e7sj)gq6@ z(A~_uv;FhjhHM`G?*l)Z6Q)_im|QGN9otB*j0tSnW9*xqMK@MLOfO4HO+u9GHrq@d zlt2Q3rt(w>&s0x5pdGjp`{hTlv23xcS92NjO>J$@%WSMDn=CEY?}r+CNZ7t? z?dZ_K+sR$Ia^)2aRmc~B+?eVqYu8gUwowISLDaC+#@4c8GE5jUFj+RP{Q$+otsPsw zTWV?_ECy&0`3k!{ZCgd7wnC{ z%gf-sv&4_QdE|U}lYoEJZdhj89dqJ?Pb(u5SQz7+wcrnr3^9e7HJAN=yM+2$n42RA zfXL0k7@R!hT~GWFHN@#0lS0{7tye6T>##ZV1}C9YZ(1>HavyhsEk^KPd?~zX_d~w7 zP#4plEH>a{g#5%$hv?V01)0>#&W@L|3K&-f_ux{Rn>|=FM9P;(AKrPVu=?vuUp&9| zdj{kun3-HIPUUEi>}(T4G8>P_W!+K&1=df4FDKn_iI0HSv30l)nv~wx$;p}ZlJ7dm z$6@s$LifiH#!Zu+3Zd1MN;W{<%fi$!Y6&HabS*t)xe}+JqA3BlSpVtWW zqD_AZvrfKobaOOI)3>hkJsx&Bs9D`@CODctW~wG!v$5fY8$C=#MWz4GI~))$;ZW#XQGyT-BhTVpK)T6lQD9OS z5IXs(jlI^7zzEDTCpU-w<;$1D>jJQ%r-ySx=_Zs~teM`oExP{cH8~J?*>^S^Im5`W z#|trW(`nHQ4Nr@sWn4`zU&3PYLQP7>3UYK~(SPNA@%`BKyPWzvlcyj}f~Scep#dcyrN*OkV2L z`g+%dca_9HAtz|5121|KQG`n35`xA0=Cfu0_^ zhx?uH6|Q#oCW+ah$tBete#74WL>c;X{>lY}0j*d%`It5_F_8@6Oz*`}D2(7)MErRH zjHmPeBMo)IjRE$t-hv;OBqUmZ!5A|B!^+P7WXR3hqP4l*o9+Pyaw;2C^nFh}jdC+^ z?LV8$!m$tMni!_P$M?L$%Wum^hHQx-P+NY_vit)vN)py! z46rB7V1UcyxbHY{-`qTC54&Rqt9WpIpDQv?iO&6v)TiAHnp zl_4zkDfOLOP3UY4h7t_&clWt(C+qh)*x1IaPjEI~GqD_|>Favv$L1w$K1eBS-OD6= zpD6f?7;ShbF{46Z^4|DA+m4@AB9dw*=!-^NHYH--xOwD`q~owGRAwKnrmS6en)zMN zZ@zVR_kzu+U#Ejv;);E>+LNoS9#`-<8Pc08%#m_k-KAKa!Cd$}FQ=KUsJ-!Z2 zvuU?^KeyXUd~|TO*5%-Vf~~+QGA6p`UE#Ze9Bo3v#*CFGeV8~Q>+D%oEP<4s2?LRo z7rrlEJLR}tB)*`FztA^PY+m3r~ryc*guvPQnv^QN{M?qK09-+F!dd=uuX=gx1EqfTG3&8KV8x?5Id zFv5hhEm`oq^lz!v|lY(t~E#IP69vN(NsgoWu*oVV+(qGr*X zyfCKWLC^b+B(HU3-2 zDX16~KA3-bP+~N6go^4>M8pvX2Z!F!>!mOH>NHeTKK1;_M$>cWpMa9O_yMdQW?`T= zjC|uTie0FuT#kUkPPGS&bDG^B7y=T-SYb!E{mAO=?RCJ_DnM76J3Ue3^JsI^dvJJo zzPJ(-{SQ}~wslJ9*b<+D(aYpyRo%~XaiyhVdHMMSg%RF7O66oL0EScFBBhF{C!0-|RQ6Fzlx2H@`qirqKlQ_O*!ifcs+P8H?NeJ~4=PE5 z?3AqKuR4UlYf$h_&gvZ!G_Gj?WP|>J;K2a_llHiYh_l@~0PSD08)gFhwQGFfRDXZJ z_xh|bqo7gLGa7DJ;yN=g!{Zt!p6MX*8>YvK_H$Y^*eyUEM>$x13SI~-_8jAUsk+5J z)vBteU!NM)xYGlK-W>7fjDn(KnnJ{Jo8BT0@SQybLE?_dUa*+d)dwWRy&896-G!=u$JL4jc}2Iq9c42$DmyW9K2e8hF~8r_ zT(=D08HJL5adl!%Wgzj{vmlre#(7?4?SPnewqDpVyQ;^ znFD!HVVXYg)SDtlfbaeS%I4yH=TC1ba`dwqLHXp?`x@4-R<0%+6!@)Oe?u>p7e?1H z4a*)5WUuvon^LGjq_E-<-0-opdp|sOTuUckKLh{}Y_EquFEA4G;yFME>^vxW4R}%B zz1rgd2XW!j4xpGt=Bt}iI~X2dKn$inLS^^NN&3jH-_CHhHJu!{7!2xh->U%$gyE%Q zOq(YU(J+PoY43I>nL5CnKF_&P3dP3^-&UPpoV=(<*P1{&v>~-5X)ykDnpoO(>iWnG zA~e?$5grrMx%xMhPjF)kyiPyi)8#n=~6mjlLyNQaKup3VWRznsm+po;NEsa_F}ou)p$eC#ZBQ}$J?|@ zTTz;TG-cgNc`MFX>qL^$^2p^;Q@we!5hft~C{p2i`7*h&ESOEo3mZgAM{|Brr_D^O;#v9KuDIlwUAM;R85@9Y~=)ZdN=FQN7 zL(2QwtFBY^C>w|}YfwdHj6ARRSvz#{9-sO2{EItVB_)^8TT)BPo$w6ksF4H=*t$%D zv+an{Mx|Yna|=;OSRy1d`Xq`Q!qjuC$|o@U@mKCu^2`~i@|eV|F9Bj08c})vyHr9` z`Sq|f+}zx)QWc&1!duzjm_(f}URw%z16Uj&Yk5Sa{UxK*N>MCFMvi-;*JIx)Ug5eH zYQPr5F4qX({03M-rfE?nLuZXVy~=9_CY}r46Zs?MD6S`9Qh8CWr!>ZrNZ$11$rI*) zXt^sGVkx*6(qR9%K=X#)2Ru}ijnTAF;^N@A>Zq@_Bal79t^4tq5US_Oa6OTyU&#W_ zp~lbO;);M;vfWz_&TKFEqCM!p?spDtBW2Wl8_fKPS#*YIAF6vI}AFvm^B(ZrnaU+2H-!Z2TJM&+pRSIVLi;<=Jp{a3AxA&%$-2e< z(MXX!IrFH~;(Nw7Xq+ws=*moxp3kMu2i?uD`O;h_SqCOhhp{IRfzyE!9)#iMIt$(= z{{GTVV|Cnpsd2J@LB>mCzVUiYD(1BR;DGUsn&$X?!=ED`WTZ#RzEt(ucjcII0Tz5C zKlOh3@_MP!M>AfD5-k~HX{-Pe{^G)3n~*br9L!GP3GvVQQ1r%jCNAyOypr30;7z6E z%VR3q9vdTzPCAKW7TdkH2Lio`XD_viz*i)WpWINhj6%*pgyU613u1xP%5YHV9*y1Y z9CIXx(@d<0i=+HV_|%OjR@=j;2g^+mI@STlr|~}9v(BXhKBF&P4+JVdR%HML>lTyT zRTSofa;xpNq$-M?GPB3dwI5xxOU->~HeE|CXM1J^w^%GhQX8eoPIjjPpikXoKl>fp# z39*Yy501$Lrec?c#gocva6Nam<#6?{#L*pKWkc)eWOKfitEkLz_~yO@kdo!u65#tt zu<`+fhYna@{P51t-|yn23JYQO2DFXx2~H-aG1=0*L|oVu9KLYJTthmf9j~ zbSr?tn%Y#HFP0gN~5X1$TyqP4*zbK(@&&zL$a@Jt7z1-S0V%#GR zuBbx+r!yvX{ Y1Qm8Its#VJF2OigAP)t15L3wRz>NnL#t3@i)$1?md9c3)bjqMk zq^ip!Rl@O^Y_E2`8M(vwM`jR@O67Ng&{L*r1CR<)Ve?+)(dtw}l`O>j6ditpcVnsF zo49Igar>llgGxa0rM)*15HvMSa)kj{96Za^u1m7z%Eo>k{>}op&s)d?&=6nt*k({a znDW)b56Quc!c!zJCSFoY#wLu^37$LTN*`8m`sU>v8Nu6c0-OJ0N!yKg%pzdgO1fE` z5|rJKE9={?g7v7xAT=?OIjHkh3&a{BxU?uHvE$e4n1kl-W?T8_v12eX0Vaf&&}h~- zw|Q^F9MEGHL;BwwC>6w-Wl%t7O>4yYUrp$*-zs_^U4(<_U`{g?L?-T5vszY(o{6)h zZNfJp!Sj-&_VNNhBcuV4nWB;sg|D@AKvhk`u}HI{rBqNu0JbFzZ_8h2RW!d$Q@3i# zZGf);@NOnF$(pz?^HB>^vtQO*h?}|)zyGk4Pv9=p1Qg#iY-etTwe1J)CB>C3Gl7h@XSWz3Eu0CWVi>K0D@*n1=- zA#np0|Ed46Zt3Wt0g50L+E5`M^X;vKHmTU}8*;ZA;OP}%Tg3rLo`SyP<@%IDe*cRh zRt=S~XGmc5g7{C^*uzuP#X|4yl@~zA57=h+DaC59h1b(nT3*Zn{`;Dtz5|8&htH7g zDe?`<8oMl7iUeIS3`Z$gdY#W0sd#{Nf6P8!He3e>_+hPkSpm;7Q$lbV3{^5byzT#8yf+T9-GC^hh%vN$~ zEvl`(eU)=j@kzlgZ6j|Hhp)FmMT00~0Guauwo7R}=(zzX;Q@r#=)L=sfkJ-Ajg*^C zJ9TMs({yhOpsWh&J|W7!!{3c|#cLx@(cfm-ggph;!am>=;CTy0Tl=@*cz6nX6E z^yV50wpzhC3?U~k=$b+nf&Q(D9fvDTeb)6NI+_|4=`r%_AG|;F*QW2|Nno&D3B%ei znUde=b{gLqk_`x0Sx63WuYh?g(FAeZ(SsoTYy@EmD2E@T*8uW$IJxQC^_bA^jZ&?t z`5Q58iqQJnqJeXz{i!n<0(@S4R;r8_BmYQABb)>9qxeSWX=g8W@aG@V?9$B9Eoc8b z(-|Xrzw_rX!G3l;KUt?0rp;S`CTDgqjU0wzuIz5P?Gkq$AYcDJ>Dwn@UnhdOnF}Cq zs16_N@Ecy$R3h|8>w)_p+1C5TZp(%HO?6q0as!?dbHf|c-%&xzRG}v070b})G!$~$ezHmb z2?w-wY0Oh{tjzaa`23|MtpdC1(DGiJlauple0gs=@1P`#k^teHi)cIQGI>>r% zSGY{x8`$_cNe((GC1-q(_RX7**I9ieNdX2BOgYmzHS=tQQN4Mt)n4n4^o2r`dZh;s zL>3np-DU5`L+1&md--=-jiaOY3KzbrU?L(TuPZ1V%*)H`EqJ@zdkKF9yH2XHuHvF8 zG_cv5oZi2MdKUbF#QGa)1s5oUnisPEH#DLkAEbh!(m22*;Q2@w7y;^IKv6RGv|6v) zDSx;&5Xy&-=0d1BB7DI@+P4 z#V~=fx`r-`8=7#W1XFTi1N2is4CH%W+4!H>_}d_W;H%L33}+U|5whs%H3gU*0@1Fh zB|%0QhTg0%c9Glb=3o63MA0=D*)dpWQLVM)@!8&CsEPvEx~5`B!#u-U#%LDtMzr06 zw&2}p33HE-)jY%c@&GOBB$(;E!UgJxn%WxS-y_az<|iV;c~2c%3XSIjzhPsC(UlKQ z1OxZwem3Mst)bW1vu7I$O)#Y+W#kRC6B_91B11p|-30j==poAHC@|6w!caRjYPni; zJ0G3Z8Kb_SQvghndA!#kHz#M4RnZMoP^yzX4WM#7`7dS;RiN+w{$St(Op@JnjZE$8 z;!yF$1zn?p!ns2}AUCQwCf?vQQAwV8C*s$a$XqqS|Dc8JdUADh3y3ukukAXo0MQa8 zc+jHvW!GSpdhVyU5$J*L% zSzs-cq8|d`cX8iBl4p059MpXBpdaA9TNM?+3X0m);7_l~-SY2HATBUQ4lEVQNp*rk zbcnmG^EBpXjB0}5dkD{mUKlJJ?@&_dY7`ixKoQUnt8*h2AjWGAZDoSik{T ztnTkMJkClu{C0_AmSD7~XARS~*O{DdO}LW?M-erGfTY}MqI;o?jy`sexs85sN0;G% zJeWRQz!2##=6wbl@B;`GbT6e{k2lA#rcOUdR8doVacvGBj`zw>vhg}>q<(!cf;6Vq zqsSd>RD0C9LRc8s9=-@VSLG;Baft1?EB-gz!@0WvJB3F@1=rTr>O3T*LEN=jz(?FY zr~WpecDs8W7!Xvcic$$c|Hr~k%udso)N9sEZ9m7!$(Fbj-jvIjgcJK_`lR8~w^TV? zL5Cs92+1M;EP}$qt zOZ%=fL2L>Id=zXsZ)%)4!5=UyM{i0k!}6=K(iBw;wP?JO*V1A@t1??THAR?e0Cncy zstDMLT>7ubxj5hMGdgxWWL~s_vqlw?{@L;W#dalB2Pg@ACDkrzV?xpZz&=K+@6Ws3 zB0-3JH_j-KRAnm5C}8k1SE|YbADYUe(RCO8i&yZg9px$vOsb?2LCk$okn_Nj5eVX;+ejWx z@pv7+7dBlr6uacRnYJ(}=d$l2FOX>iBMa9RGMtYI$sCblKIkl1cyZ<&H+Nb}A+6oO z`;Z;4rL=FK#Db8r?hZ%6Jy;ciagC1|^9_IPJ=#G6XJ?uGueehhlsZJz zV`NdQqh6&iw}4Sy@Htv`^q>rs-Kz_%<-J!SB1fQSPWM`!2yI5@lOaUOxxY$Cto@@C-8|I=Z_#a+r*!Y84i z8K}-C0X3{}+n_=5B`D;SRaCCdsHdR%WdIE;Ja!n_WqrdzW*7{eiR|*GB&d&$09O|~ zZx2tTj(uGW>{LepYLxchqy+F;6V8v-dUuZk+IFe!;X1d&FfJqL7x7CPZ-)Hg2^z4a zD8%EPXU1s2Rnq{LS_Hx6={;m0tHx#M!akL=+)zE8_<`5*p_lW-JGJD^rWmv?j*5y} zS=imec##+x0ju`@`}@eN(>>Q6RvQ(SRaLK(LaCp=d>&rywR`|ED7EG1p8>N9eJp(i zZeJEk_jhcosNSR6>w3lvjNjBWybmlUDyHkrnG9`-Nqqy>=Wds2h*qu;Y@s98=UeXS zIM+(Nz;JYZsgE_e%;6d+xIqg2MtogG!7|(uV+sQv^ok#dZPT6(gn=k`?kS z#1!;Fm%a9+QOCRH2&%pU{RJuuK@h-o?bcvO+YtoS(nD$A_eTc1%`jQm*q2pH>Gu$Z z3aNCiO}A!?*Sn@S^UmEqKGS(P-MF^uvfuWxsOTQroYr{$$Sk!a)824RgYtU6awjG! zez@P&B@br(E{V)RzUT$nRlpsUkyTIj@*-Vsh>SZeA zGPZ!TiB=V71V!3V3g=g5Bt2Vxy~%YB&hOOvhX)%?PBo+jlLxL}*n`92BBomd(DJSK z`^gIi$JS;@+nOW4AhX|~VGqU0BdF*R%9u9(zfJj7tVbDnDM7<<`iejL%Y#xL$-tIg z!T(ryb3Yn#V6U2J`gt}MMM+b9m-I?ZIiOacKoZ%hnVFe6E?r`P;mx6dGV(@_m;-E! z1e#qB1v9`ORCD_;f$61GAaS~~y)Y#<;|E}p(RU#^u#Zg~+hRlwXn0jcg^W{5 zAUI>GpS}ApO|=%jYj$YuzRh3-J@Q5=nuSTyAy~b&({LsCQX7-|?!lW3f@vG#2jrpL zgg|U+W%a^rmR4DgQ$$$!8(j$kBa|pET)1F+Sx6M{8D8tc&vS3?c2|C=@7N6i@7oH` z-&D+bbu~3b$W1^~nb{@nbp3*fdTDwe%qt7R!g;U!_eyqO^xzZsg~YWB(^1i~({*viP+#9lve0F+aj4(f(()kuN?>T{xgRGqfXE7pPd2-XzS|do#((>Pt;*b+ zK9(c4kIuY{bK6H$0BoCp5*p8cr?R%T9;`7tp`IcY&C{N24*kIGch9KG97bP}8Wj}w zkAIXpAPS;`U7vdM=C)MOA;+gn!GxVKSBqv;B-EL|Q!?L|ALi?^Fpb)8{zm0>JOpbQ@9_zoi`&L(Vz3%FI@7Ae$$2xxVW4L}Dexk$JRfPYexubaTERkHr+>d{(xpS7HydHm?*5B|XhWs4e z>!Ef>rz)H7&*L*?hPNIy)87erw3}|5{^ef&{eH{`HuS%75s8y(&x(y?=JoMp*8IYA zRG8yakdhVC9m8k(rq_d;lLu!$k2qVXiSDi(ifEb`&t{!T9vx3J$r{WU{i%8R-Me?T zy~QTJCYRG_h-}WPOiH<>%g_8D>j~m6&q-SOs<|VZ3F0p^&1z!zV>cS&nN%@BT=?qm z#>v6K&BN3GsOjm`r*(%O=+;eI7`ENN(k{Zolatra$;T&mB6xVG_c~%kHcL!TEjcpQ z=vANb!X?M%Vd0K4ud8Ejf3Z_?WaiD6+Ek@{)W?E6b~=YTv9>ST=w8vYJWM zHa|$nEL?J>El~cz8aGjyWb=p>Q7tXH1dX(4UX}RB*RNljPmTO-k5j4%`rELbPb>RJ zkgaRPLYkIsIh9Swq|fyH1=iWlPkWz<5c}Hs7y{DL(zxW7f2of4Wj3cddhg`dN~C4I zmDpGLK+s__z|=ove(I!%-N@^CiHY>hEMk#UgC~2sFVS>WSyim&qNEg^kTUpcKaiBw z>BCVOJoDhha^{uQVUDW%JDpS7^Xw9=`)eJ>!f6{KE@mC}u5V17J1@zv5ntlr9c$Gq z?O@wQG$dX9tRHyica=%=``(sx%U4xlk|}O(gm`m8OuSl(A>YL3X-UEBWwKL$nza|E zhnpTv?cKh2Z$e9k$zYVfu1{80R>_HzW^{D}DkkX$6{;%Z32$wOTLxZUWXbEn%;`{P}A-D+D}R^L^pUB39cC28eI z`yNuu483^ag7I*RZiek}3a?InwsC!IIN#Mw;|jkd5!=at4%YeTl6jNH#kWExE?0WL z`ue_j@djgaYiWLyW}0DCetrQ5Wqf>`>HCTXi-@&)h6!!#jW|Wk^jq(C@@XbkOR}Zx zp!XN2N<|}7MiV=E!_P0wWIAGZBFyMIx{Gev|tl* zIaDmlWocfTn&C=m6e>(NHUGALee6_`!EwKz+u4aWpH_#x&KRV0%Q}b3S=%5Nt=vnc zPj{(Z`Z6QpvM3d8aM0<*Wf@n^MBT<@MSPEgviHQIVdct9(ZxTwy@TVQ;CcQVnbDV* zr0?{7^Wi9%=~&On#U)~zVn6h4YCt$ZEdw#flk+3#q1=+m3QzeE5s>sCiU+)6wQ{Q?Kr%Vc(H{c8>^&q$&V1R zbsBoqxRz*h$eQBva$cCZsv8p>ZQRi|M~&2MYD@CpYmoo-&q!VZ?}-ztqP9b+(Ym?T z8bwQ)N1cOD?oM48Xg^5NOuzlOB+OC7h8HWms!#qjO|hAuKvvDo-|atFRB!aqs3a>> z!owv^W=6#0b&CoImQJ$f^!D^bW_7qIt)6G7e=3ll7_%^4qh0!R(1UH~pTE5oOeaiZ zrTzJx&$T*D)@06`U-rzj=uD=0|7BT(=N}`6DG$Q&X?7$SKX<_%t)CnWlz2 zCOuym1T99KDuZ{uWtyp1kd=Klk~_%1LqJDNK9h}&Ev3G`ey_y9SFcJ#C446B%bUc0 zK6xc9XC1L9o?}#PwqZ9x2$#z_o^oAF98vUYDn54kLvQ8dQv_j^lJ3(THr&0Qp3sZb zYIpx~Gn63a`cqtY9;q<+tItdjJ;JNj5l6QE-;)!&9zh&nJVLm=T)&$rzO)9v&GEnW z*La=sXbFNl`*N5>(m9XKamZ5f8fk`p6|W^-bv!n+P-9|Zc-4{Y1j2J5o-VwcM(U zmV5H#No`xsorX-atCZTsxrrqE46{~ML?RVsWgmPe68~MIcG!1s;?sEFL#E=`n4v~{ z7#J8l4EnwW-r0MBZeNk}WX(ltWVBqc@!a2D*NT|+(&Bb13n%p$lCjIWabh0^H1-S1&cwkd4KBHwPjGR+2*B9J4aXCbUhl{IB zKXCuKN3p6&n$$=y7SRDrT6OD(Rou5RXc?B>7bvyg!_TS2D(v@|{c0^%4{4QVS=>O__$YFWzx6t)6dh%5<@Rez1yEt^6r+h^9*>w*_^9Erk)vpW4a zmN3*oA~x~!ll>9oRAHQ{wXWT>^Mff3$=aeq#`TwI8CdH}7$gtl!A#l*hn1)RLXnhL zTyffYwsiFL^+U~RJ9h8p#>Z>dtuyYgjiT1B9>#5dhq-pN*k+lx*C$;)39xabNita1 zb*bTJtSohCda~2($u0qNxz<$u2Ur&vMgj5)Yu6e9lr=7{rrpfV!6AiB?pst;Br(^s zZPV@}r!fXV3)GIgzge`iZ=bO!oQodG`OSLQ-aZx!U&MAOpro*_wpP$~NF7gq6s1-d0O+|o}VKl=KeQk zrlxEHbP617OmvSPJ!%_VX(;J5n_BW0a3a+Y5$AckVOsOdNV|#LU_*j`fz4oJ&?V*s@NzpCp&`id{od&wltUkcbPTotxVe*gG^Q9DT#E(^~`le_{4xM zttmoBqYEZ#7#DY$8c=ae(#%LaIoH#34Na>0H) zdWb-2w6wH0>3)24-^kMOWA6#mTPxG87D=PMv*X?W43kEx-aT<%-mm)2<*yF5V&;dg zT)EOX*o!$VvhJsfb8>R3NqWyu4Ys<@{`5FpGSlQ%u=uyamNE@E+G2Jh*cnK;QDn4e zrLf&lW+mzufb$(sd4yi)zdhxRf(TO!RUx9ot(j(bJb%wk{3hRCU+lQyx71eC6OQWY z0YYW~G+9e*!VIi-1KlmIuDVX+rJGV#N_Xk14+`iOE=GTT8SK{X$8hZ8`SWpD&gA+H zbr|5G^k^^CJvs&oYlC| ztVW%*vjCxIpf>6$S=X?ie-dlj{Jzlzh!;7)P&;7q?_b4|N1J*F2NN8o1}M}Lxh*l5 zLljXjO{TamRRsB2YVvV&b64!;60sTJu&}TgoWu5Q$g{Hu5w*L_$jFH7*=92n*kFsP zRw;D4J2*um`CG!m!f{S>e>aCY38*HjCrfU?LW%#(=Bo8z-KO`^85W&7H>+Nkr<*?A z$;UzQmR!!}5Z2ly>av(URdA#29!J!QR)xR7=99T1MBF~2m^iRYIfzeNtSMbVOBrTpc~ev?JFDAZT4UQK22?K+vI zoS-UKyJGJ7(kH>$@OR5CEl10VQJ3hEZg0s(tgj5@jK#FO#B zvFB4QgOSAF4g}eB^L7zjH&!Ji9HeXws@A{1WAB(#*7PYV4xU;9fy{9?H z%ynZ;d%HG5WzLjSu^UYzi{YM_#>mOK8yMV1^^ZUHZYTxk$HtkY#!pz?EU)KWq0kp_4G}ltQAIK&1MIY z(kcv&dl_!qy4CvU$F*PzKm>JIos!P=`=_>%jXq*M*eFLrwdh_YMaAt*OuUr%t69nS z@84&3;cs$rIefj1dj0lsi3^s)5-CeA$NUPWnOY8pIbCyhMsAoI?F>6`WM3FId#T7) zQDjc0ljcLW`}L49NwB$@P2w;mNYpMFL1x0jZO(GnFBIQHh$U9pb;Hk3cBCR6wie#3 zX7%XD5`PyaYF8y;`s0X65H?PMZjnnPi~Xj(C(=Kcm9<=a&SX%z^6RO<&>_{tRJ)-c zHM!kKuCFw8M0WzeJqb)fpsPFvt6h2@3B!k1i5L1G2wjLZ()*>@-u<&+FM=rE@fn0)m>0WrX({i zV5N*lKS>m{n)YXv>n^M^$S*f&GZ#1fw)@bUCjL4k?FGDk;*x-NZoNJ-eZw%q;ybK+ zQK!%f3}r{ootqv8t}9D+J>DkWFIt@qGeQ9OgzD0t zd9yA~$#u53i?^PfH<8qQF@6g1qU0DNdf=*Qy!EO4b-RFmq!>5E-(B{8h(XA4JbX3taK+5{vzfyD4qfwAs$DC0cy05v zU%q?^)=&-A9Lwe3B)iMcf7zhIuVK9VvrXT(J-!0EI$#Q`tmU}6CA0f}{d$XBccOBT55y~A@ZwXJT2z5<%suye_SZ_ z8grQutdezI=FV?o68tjZ+}kHl*)a=#n$8RJK3H>+&6gudBdu&cRzc^09^octhj2j2 zjgzbmzM8XP_YBu+!u(4Tebe)7v#`~xiLTLo|5HhWuMMs*g}Wt(>50>4&IFQ#`S|+7 zpqg|Nw0yS@1?hIv5U0=Yiuz+3?8EH;ljJx4_hu;mP1*dL!}|Zq*3os2&=6cty}TM9 zZ#!si+zxU+-m3TOT`~5qum^55C;QW?CF(#AtTdiLH5cx>ve0=~5TCg#c^1oM1CDok z`E$5Ge8`QmnBl^j#fdFPy0|`-mi9Jh0`d9WY+bcX`F|k}PfOVMNBNu2Y;hCa?D}~1 zmvaCTP2hW2qLE)^3mj+sfPf_yhSFLEk9Ad*Fz$YFaiBgf0`)G>kt5%O8bMnjqRCJv z+wN4y0n22W*cY>SxY68w1K}a)i2nVy_I4r5Us5WG>Q`J`T$qHdNTrK|LJBxBVJ^J# z^3|lfINS};d@v^5y=byrcT?gy*E`W@R$Kv(@*u+{kEmwmK}i? zwIG>l5bx=zj%6pRLdAoPf}n{3g=XOC7I(AW{>-jd+?npYU^_L^z7XA1eX4YQSJ~}N z^w}Hk+OSmA)hU5Lx%-~4E9?=*I{ea0cBpiTBvIqAcX@evzUu*la;!qQ81tU7>Yx9R z1V%I|D#_Axwv{R41o7tWQ$_1cIccwo+iU*K-2R)R{=XFEe`kRIrwnlaoBZkj(+lvg ztZ3}WcB>2#RRfQg^YiZ7d+p|G#>U2lqcdF}9?TWW6WQ%_vc+Hpge*G53Z@#bk|6`E zwL$5=n7gh*x4TZy&CT_LTi#q}0)EER)AQ=Q__x=>N+?w8K<1hEyCm<}wJQcyB9DlO zNays1w(=p{JeS4siv{Cldr5{_$7Rj{c#o^|Gb6r;;=-V1#*gpnBzW523-)wxS8Yp8 z*3L7Y9%?3mCRy1ddGK;__U2B!w*n>TJobThbDg51;*G3Ui~gA-&hyqF&dP{HdtwH~}3BP}P_P<(H-5YRtKm_}UmRt0P()rjHdw1c{z-`|}uL{)kz z%w;~VWD<#C*Pr88=HgDT83I?Q`RU@G~QtfqbahL@9W5Rg3xxY9_-2Ho_V4_M?!(8ClF-4Mc z{_*ZQ$;x}&-Nq&RePOgH<;|OYIk~yKr%tIa%#1dXjI_MG{M2BRJjz*NFFESRj~@l? z$MiO_h$x4KhB8UIn8PgI!!#c9r_XOEir#d zpkR`Une`iPjzqGJMNOeu;E=JIMdXH@F8+ct#8ABR-E|L%#j$gwzyf|NEm}TEkgPs@ zeOUWuI$d=^clrCc_y}9|Tw;-Q5&PWKU0sndsb7Dc$vXDYI+plwh6vWWFn_h)zNl}z z*0SrJf3p3`D=xYEB3D-y&`2kO`P3%fcY~~->2Q<>=dP@&sTnnu-=}^p2q$N3bv$7_C`ErR;3)BK~Ea~vfo~>Kol0)Jx_SZAhygeR_ zyv78S7jo$iO0LX#d$CC-AHP`@3(d!2AT9=(+Yk@&NyNCq+?47Q5D*JdpOQu=y z{Pggl;L2#+SH1Ihg+Ngv$q|BEYRR=pXvwk=pn#}+jdD6>;&*id7}WW(5(ZAniD0=r z+u_>UD47g!?Q$U^D)_agnuv=j3nHuSs6T$FKL^GD5m+&~(F%Lg24n?A@z$-_`I*s_ z@81>LQP!dy4|JFr;p18Ati!Gs(*L-oAwf+Zu8TTQupAU4BO{0I=O;-~1BBW@sN=|$ z+qY9)z|0^1oaQiPEI#q=xN&XdW5dcIPKxxUOA7Y(*`Pl_ctCr>qo<^&3$9(Wh8yb` z^o=jvHz(yi7})$cNak$69yV&j+w)I*1_y(O2j49z#&W$LNLoz^_PzB~=`G)7TIvat zk8vF>EUO#;m?ifal$ygB)uf}OrS%${G{|Tf z3u^oB-Lb{Rr<+Yrh>w5TrkP_E_0^9r0p;(liM~owKEWy{*G7^~fhIy=4K{g0{@n@L zRvE;JCSBJggr4|YHE$h$Jw6B(@K>tr@2Zf7TpN?Q+1XeyY%uoNopG@ zpY|WgLN1H;DshVEA$bKBj)K;^1+tfv;uaSdl{1Vn1928d`kY` zCrsFmw5;~0p}Kqr$$H1>`90A}QZ0RZek1w)x_nR1^-w)!s4h!WYE#3lY9vPp;ya2# zVzyYMbsG~CG!a!Jh?)a65gt0uQ!4Hr9x~MFk@kd#57z)X-};fN?=W7vOC`;)@~|t9 zHymJ)+aPDf-VAeAC9j4^N-k7LTk$u_sUptv=~$WxpnJ$)WjdngHs!)efhY;WjU4Jn z3~b2&GH`R9tw zNSg*IzXmm3=csj?n7-gLc)V}vDH$eBydYLtL~VUwZTr>Ttr9J}hm>8dtgPUqh*K=p zEW~8yjutK?{>J1;OH1dD{NRYg{%j7F5XY;6)ad#B+uum%(k0Kr`GG^Y)VFyLd$ZzX z7H=?(TeodXYoom#1MgeRluSp)wQJYXvG1OPnZzz3qgjc7Z+UsS>Ll0Y*RcpMBt1%v zjEv-HcN~S_ft4ypMvH-_6agM_MespbKswRR<{kMOazTPM0RK^V7*r@a4#iVLvCx_cfeOo=OqW$ zQRS0B9~V07aw=z|km;^nyGWbZKWS^UBk9G9Eg@oe6<3yLii9Ah2H$;5_j;8j-BA#1 zzPu{<`4YJEIB4^SkTVdHzFO*-J3)CPBh6;!*-i_3Ja-*H0vwY}h(g*04h^||b;!}! zmnKW|Q(*UerG2==Jy;zsA@3_7u^cm7f&Mp-Q6|wtL!yQfX&5?v+6@sQraA3q=a|XM zx*y4(OH0p_Dn_0UKrO>*pz4>Pc*@f|#)G?^k2 zHPT2`o$@|ejeK8_h@H+eArP2Spx#`f<`)!@W{AOO(q)yq_FOav%bGDg16^6;<$OXB ze`}098~lfgBpsjZ>dSXkRbOA93-Y1`uB%E_i6(TP&K4%rzJaFNe0!Fv@=g)BA zJALqOjoQM)^fga4FYYc0trDdkZ`H(%Vy|#w{0kOF@>&WUv!IrTcIUT^{ryY6BS*PN zNE1RJnd3l_zeG^L7m~4+tC(aE%avr#HJ~Ldr zn`EV;czZcShw13GhdQoHQ-@O~dIU!eL*O5>Yq#-#vYm%|v-R5{*PEt~A3w$v-Z{m& zm5ogR^RR>M_j2hiZYTEbnjUVA2^DwTnzHKQfg{A}d!S;7F0b>&U}XQL3QonJ zt>OelnnKBGKSvO4gqm7YtN0o(Jf|V=mWz68!+QuK?O&cTQM|WNT~jj%?xU2vHVCxo zkYNu0K7a9|$yXnqyW)bxX&S|@RgFMO2*M+|6^Lpwu<%q_K`J^pg_@>s>N`QKy@bJV zGtthszXB;Sf}iXNYLml@Qy}>eBiP3 z&zXd%2?+_foL)%$H*?s=S9Zj@kutZu#9SnqF66=_v=Qn4f!vKcRAi+3%a->BPXRjqDH#wL z8&ma5NG&%h57Ac~4?ud;0MO%h={g;)n}%v)kYQAJ0d=WAEXwt9N)1^Sx+oIkbqXB* zj*r(M87k*m8&PUeDUgO%l#qZ%hg_?|%N&4x#2I?>`_|#+%d|ur>)KyjUJ!%H0YOAoy#=W+v8zkZ`EU6_^Z@v5W)H#Mj4(XxIA224jv zpZZgC4w_aYifX@MYvT0sA#66JBNag3Dd?C9fF^KCM#J|N19b2Q+-og4&;Nmfx#3bo zbxFEfGhC2z1?@((u-Fd)Jd%buOIOkdjroojD4hK$!u0gX6Gbbl_XvX9Sy=ceWU&JP z7B@RP`=4{mn2N*}i?jfsX%*0sqAN*mkpHx+k?Wg>4QHcM#sQ z!Q88t>u89(34h*h4>5a1?LM~l7n8a<7-{ZSdx}-|@uOK!cJjp|<AIH@`PXYjah_ z_vcbhzdpN$=(_MPMQfG+aU+)%m<>g1>&Z^db%Y*k#A;iV3qV?jgoWoU_*N4~ylY@M zUc9p-z-_oSOCBPtPgq!(mbUf|X68f$65+$g@AS!{Sp5RF90s9Am=lhh{dTB0te$!r zz=|{|u{uv)!Hy$+r2jaD#32^^otRKU_#u4`qRctYD2*M4-hJ*t%EyinpQ={^KKN+! zn}+zSLqNa%AGrXGVvEW28rSoN+*Vbv5ycla`t-`^-_#`BmzM_kGqExZbb$u8goEHFUuJn)s&#mN67wZvjS zNW&ZiPvW^ZR%x=2n1qaP0aTHlCLBf>gL!xc1f6DYZ(@_sQk-XO21x@$@w_xvCp8jC zPF^5?>^@M&HM2u8cL}$v5yh|1<^wH}epa&N#IV%@tMX79d5RJBrKv$DE%+%`ckZMW zR=o%|I5s)j+4;nuV`=Vp7&Q{;Hvw3IqzzA){@6zmx!vW4DnAfz{0M|s;K{yI48(1d?VfJr zS!vsqRNOdt5jK70|*UBOwYf)=UWgQ@?^fOZO{p`c)A_DBn>yfG8R6D7gCSpnM}q6`>XZpQ}Y`Qg|~? z3TY0oWF@*9xe-J;rG37G-Xq(DSj8P~A^$gS+JjaOY9wiYBUuVmy_3jQ1ITX{6?OOr}4B}jZG7eon= zYGY{Ks{a(&1s+f+lp3gVWbFX28e9iaGB;pjsvyzjq;4i7CUQ(2n{yNOMis)LGotxV+vi~2f zsdVquszd8JX^8-Lpyz+>b_%*1#o$$ZsZ^`0(;;wK!cD1;3XK{`7K^ZFXE_yt9?$Px zKt}@Q-aqEp1{8awW=a-l;3-iag{EA;gmnY>l<4NXG}Y7ssOncSKQ~v7i6WW-*s)=Wk#Q^WH))YqN$`V0FwqxGxVgF^9Fo=)I8mAsQVQd$*%!>ptB;k|J|-bscya7+gP>&y$i|orV9{K%jR8@{qywQn4p9GQ zJV}cmQmB6i*yE+eiE5JRL^_QoV?E*+Zc69{tzt|CVnp5`ZO4IqzT8*NLMs5st36&V z76B!mLPfOR&d3-Js$1BBnk${%McQsQPa2w4k zi5QzDkOC)#rpX|V#EbN%f{+bfTarSB`wyL#`%a!bi6eo747voLh0Vq=mFxjbQdqa9a5{L!F;MLAeC&`E(KYj!=i4p;cW5cX&KFfvz zl!Nl2_3d_@!$(H30LY$2jyMEvlBmW?h(x_bLRwzc!~jeNCj}BtY=#b8#_$FlLZ=Hw z5%0i~DGG)V-Mil%LRG}>bfXkh#g9p2tj%x>x$~%zc-=n$(~8gq(6x~OU^2M=&`CV% zO=oSyaAZ(vDr^j7mU_-Ctf-@-LrN0p+PJH9otAjD!}GuqigC@`^L|a1swp~2;PWZ{ zc1xs`h18%7rWSo5Jd}TYz-FC=+8`3%v0}V3GL=xO4GyNJ9(m3ps)_~nkIphP>RQ*m z8EqU77$joJSOc^YZ?oXql&sx=stk;;tc>5`ckCfop&gZ5IRN;QlVR4Ls{(&2R*w>D zI&%lCj(7wMEV*0tu~$g?3PJ3j$PjSk3SW_Msp;*22RDi zy$%ab+elfUxZm5c~lhgms9}yBdudcp3S~l=LQh;9Bvpr)o zGZ(=&r=my7-qG=?4gB+ayjjK1LgE?+vF2G(VZ1Qc%fKq;_Ta&4xOcZ~+2V%w9lfsN zd%Xk48DIL8A3JtzjrQ7sVWD&8Zq0)O3`AFdUCfcAM|tktf55Myp@F~N^Yv|zsW7~8 zqqwDoDLOi(FQGU;Ukt)P1f*}y#trw~CMT`2op#r|V9VDOINBi%tUEofErTA*+i+Z- z5)o0=?0oDQPc1zm#A^LmFAUt!f1C@@3MpEs^ z9~vCngH2*`JH#r787BEM=#l$gm2Y8T*_5N@b>TUaN_w7@6!n^*{}zfQmUL=r>S;W~ zIOGv_KE6$83B3ROxtxmKbI(5+$G*yVN=Z#tM^|%7h2CRie93XN*wgb8b+?|B6bFU= z2s=BKW8H2>M#|RJ&pbUj9@AXFl|K<^sG(eQ`(OL@r7$>?ORB3G*icQW*tvUpPU>kk zuyD&QOjA#rM~GGF>kzk zP<3n1zpFHwD@4QPUr~eYMK?+H^nB)Cqjh$uCW2O(cZb`rH{%l%b(&#;fpJs0Xew}M zGW)_Qg?U~VA-r0NdwaJ1I6I1e52)}TzkZe0icw9#bv7sc1x<{DjPDe2#y6HXu5`q*B@WC#I*%pm@KvD+uD5X>M-zeDdTYSR%`XX|vb{W32kO zpww>L*?EM7X!j1SXJjm}y0Al!2^;j|WPhFI^5R`)aR+6S_Af6F90ld_pejDJ=;0~7 zVz*-zm0^->D|6MZ_GK5OIA|`+Q2+&zj#YisM}~%;;Ykpd_9%Bw_#dEogPJr}r$7Xj zkcbSiQ>S*jF3%loOx8B}kJ+Uf+__dS{tav{~7p%*U9x$V&dU?$mk{-*psQQ zE6a)%!LQlYYgFyno*kB;fK9A?!g1tMA=4DT=x_VoN(9lPqVq-4>jPDdlsesUX4Dw?W|8q{zY z4%2nO6?HE!EtCp8eEX|7w}_ETZTaNHyOycyE5jX{UqWB6et2KHpO%razxvjyA;|u> zI`V~4_IhvF#^s|~R#S6j(B|5;w>maqrz}??20aQ3V}n;*;hHl#P97Vms;a&am$)}T zJ6J5ZEEk}~yiTLh(z4+2!3|uG&m0l|`Dnm0LxImMLC1MN``fSjf;1=KABv2Mq9L&K z9wjCwZZ#O`C`g!U0ogccV{Xom5sc4BjE!B7%u@p1f6KOQ4_>@@v306&_d`TN+;2-_ zYeec)wVUirtMZR)o1geBS^JR}HxQ(m{#CH4va&KmM;FZVppGYzK4P+a*DhL7QPFgx zx^>WWxDOv*Lx4=XNPpo?4__Sg*2kcCjQRG8JEYI9od3GaZQVitMSA7wgO9465no)| zDr~(yJ$VCb*8D&Zbh?g3d+rXb_b-)|rG?H5-$8wEZ54BkvqU%7uTA%^U%x(%;+P;{ zdq}j2_Ve?5gz$E5%Nh<24!xc)FEwpiT3Y<7BcoPFesq`?TU;(K|Lhy;FB)sCgT}wp(7FW8l=~Ai)jr8gZ6vbQ>y1t*$rh zwaPz)+kRoqn)4~YY~*Dw(_seGs<~HQ%%K4P71A#!CszaN5?x$Obna(=+oIYk#eV1- z9@g%Az=PJT`%nOWp@u?(*G}+mrL;Hw&QJf@rx395Ot`b%W)0g_H}2XgC|9RE<9qBG zE4F;X?$Qo~YJA$Y;wo$RW=jlnWXK1L}pxw2H zOwzBeyuP>R9CaJx%k(k&|L%PKKX~N-pWtELzT?NY_4oIyv~OZ(KjwC2?GI2oKYMx} ze*gacSVf|45v!r0;V*B0|6MryKs(&F z$?1)1!b=~Yhmd3Ua>5mXT44it`@g`e1<^c)GFj zgJJtbMfajnYcA`%0fSYrs70CzPreAuk1aCn=I|32`fA;O)PeVRB%q>&u0 zQ&Os`JC7YdPD7CU3!KLhgRk4Qa;-PuEzaG##SJ?60Vq*+2?i}qCE@@+=E?O^XAOz zMG&xKJ*1Va0 zA6ZZ!{{H>@RA974h(al*VUIm81#_&HjZ=OL_tve>LUCpmmUqyT)~s9iCVViH&Mp7Oho1UJw2OYtH z8mrL34Wm=+UpqffPif9_8BeC2J9n<%xUmEr>DcV}bsXjM@$+X|)R>IbWg~4l4^UbV zZZRr%mbEB=YM;M6Lh0p->*e*q%Rs-hO&$58iPtk^1i4J=_O}U#*9-K%7S1 zG=>WP!{^Vxg@%qYG8*mHcEgc7>i&=oXn}E1`x3=qxL&+`c@Gm-QdPBiWxlECg|9D8 zY!MPFMXI?CR5m*|_t@skjbr#9fzU6C>hLjmkO-)XsVLcSvC{YA4wHm}(}{HiW>?DA z_QcJ7TNw)s-#>dse@5+|gJb23y?WER^GZgTFPJlE_wL<$^fkS2Xz1ochYke<2di0) zV(ssGYGy3beTZQPzcBJ||1l++EaXUFg@+I@~rZ)aE7!rb)Q3#BU% zgvXDD%6OjL4@CA>(|C<6^?qq7mzu5i&ls?>ePE~Dz$1|2cK#r1z#&!2JCO4n)M~oe^2HcJ0rsPM3rM^W9PR@2~pw z`SZD?M&~T^cunS#6hCAG(5Cu^hS5{qBO_j5Sl>cHR&0gQ=U#B|UMSN_aZ>|_goH9` zXDAV=sas}7J6$<#ip;@wk?5>_}%=4Nx0sFQ~`k7X}7XIpG`57Ok0^AlK{`GTx35uv$`5QtHA5RpYCW{z~9K9fQ20 zYFseiwVUfYz;kpB$YAWzpYUUU2B`np-TffxYL=>lD45iHIUpA?g~Us-kx932KW`1$kaJ>Oe{ZmRGrQUl6M-4ph}cbo!hxPuY&YyuYJp32>1@o*^!O3@s>zY|y|8v1 zzA}OXf7}30zJ2?KYQO^Ifk_fdCH9?%)!jfL7MGWA=KPcUbw9h` z>nF_lPkPPUvhShXKO3bOj%2c1*y={y{=-v87vB%B`2E9*NpkHCTW_2(@4GV8o~K6a z`=?mH3$=6&an{^C83@ZA^!f%~UulIn<&RjW55aA3w93)?)0`Ib;?=7I99&#<#6!~X z+^}uuPA*~#+Ai3^4A8i30o|S~Y1QLNoQ9_JAQguy?uQvA;Tts3wZunsDwmp(G%m5F z!*NvHQp4KXI&J~m#~o{JJ&g4`i1nx(b|N)A#J~D8bd57KJ)b?>POL|>#jbke43IL1 z0i*PBT*7_Lq@A`SZ9LX+6e;lfo|Te%xP_5%zgCe;LH*1E1nOPH`g4!y89~pulePDXxzvgtq+;wBl-Xy0+7)K z1_l~nWqv;1kynniZ@PPTa&6(%n0weifEd;`AxYUk_Ea$zM!L zN&;nikXh12i`WNsfz6>w6xMwjH+xxZr_vdF5ZBkl!uY&^W$Jnb-G4SeO9+UbNNh z^RIAUTy)wGyECy50Zd*Yq2VJi+NXOPPLn(}9u*LioPW#jMYG#5*~Av~!esajrjZL} z@uCBE%Lg>MkjnvnfNU4Qe3$}CWI9K|U*Q=6v!7Pr_^9;E=TDwsMle&q-s6_!FFEN> z4wHuybm7FA?*YWVA1y6(V9vMugQk%t_8}Q<#7!>A%VS-!xy*)>QRd<;7`H$^@8h4C zn%eQX>FIF((2v1Z-AdX4U`6*&pQQBBUUDrD{VYv+;&OlFLd7(+!oaZ+TgaqxCP~$w zNlzd_?T(mGk(QB5^WU+tE#&?%?;aT7orIg<+tOhZ`oReaLj!{i$OSuJhlIG}VjHES z6amv~S}t@R9U2&j7m60Vu0QnS-LLncN!Jq(k?|f^jC2+WfLlO} z;Y33pmqiz3!&9!yVvTSs8wW$)Jm=&jMjD@Na>xh_>LmN_1Q+7*I{1!;I*Zugbv|us zdf4q(;7t@pr>uI`=UVsQ2jZO^XxJDX{iq;gerOl*(A|AMKmTS_7ntQTI0&x9TxNOD zQX2&#{MSmDxZ_TutGAbv|5f>o-6Gc9Q2Abhn&sfEo;MxfgG};Oo?Twl% zY|Z*+W_*Q>rgm7_(956r=a60xp#v$9-|!Tks@m9)$fPxz(WCE9N|E05mS<0%oW(0` zG9JazIiIn%kHRDb7=H~>fN(1=E>>)WR>lbw^ZUqpln2XP_3a!AZ}t-b*w z4&=xw=XpW$pAV)rI+xz3rWQl%z=B$L@#00I7#5!Wugd9-Qv`!XqrQP;GJs1DF&56C zciD+(D%*WTk3bvMe*RZ~cb~YiP_!2t4OHug=H@-Lo0*FNF7z!d7{G5@E(IRH`2qwK zDNLDx4j=C+-$u9<6-h!2NreYoHcWyg_@u=;H^m|~!VRu4q8NT4lAzo=g|$ROz)*5e zplER`8vEeIqs71xn6p!-PLYS1*y8{vlEy{na!1!vCzNOzQxkpt@F|R5Bj?vYjzgQm=X8v5 zC?3e6??HznEgXT`N-;;4m<$}pvKG&D9vSS7Vw|*@QkX-qkjWzy|JR|J>_-0>DO(-A zURK=Nx|g`!RZMgA5{?iy{VuWhuS6mGM(lAK4Owks&JyWa#^LgOGOFBg)`(|%divJm$%5OA1&?=44m;vyEum!%brkFcltGHW z`Ixd^fK>OZra)8^Ph7|Ez8n61kc&7CXL&eAuTf^bRD!!Jxy6gZdcG+@qcSRBwkBz3qBeNvGzG5$YPkC&4U z&}+hRUi#-USMmU7>u}m46Qsb0U_)?RjII`xST9ULHxP(O78}9`<}KB<`54-D^gyZ_ z_+_N0Kg3!jnRph2F6s(?ay11+t`)*?&s>TloZ3F)@AQk_c> zc-dJcU7i7{go94leZn-LkzNj`NEIx95rj&IHXuH-feXj#u0_X<8;;FsY)LaS1w?esUwMC%|0hb30sd;kItSuR|Dq?np9ddOF@mK zpM?g&2Fd*%tS|OuJiSM?YKEh}-C9jgkj9GqmF0y1amN#&_vzlu3hMCtU&qk?$g*IA zTK>*;#YHwmWC!T7tyv9=>qOB3hTMuHtj^uM3XB3n&j+krMm9EYIJEZh^3tKtV`~LT zpkTjZKJLTrJsYfpFuWhS9}cT}q^Tk3PwW)Xd4_HO6IFo2sM?Ji96*g@c*By84punO z))HiPTl|jGNH+l~y+ey92@StVo@j8=JFJzxMJZbL%%w}~L9%$lVBl#0N{axi17e05 z=8sF4E*0Ydt9L-K4<9~!1BS?9MqE&EJ3h(=9R&#g07t4JG2xt@i6w_XxR3RafYl2e zgy0>#J<=xpTEdwL_#$eV=bX``@H8ID{cQMYs4Zuf>SQ}X(s_eGiLrAej-b1jOdqh~ z)ZfKqF5R}Yya$B|OJWNSpmcFtn4R5+_4KSVHUPceI~!gM zPRtTvEh%nl-b-Ju*m=G`Cg6k_)7i6UQ*DPelm5aHc)`{-^VA7Mf@cg8vjmzzW?_aY zwNhj)nKze2y?9Dk*l3C8MbDm!!=E5j(zu=CRGWAOv`u^u;a`Ub^)7Y46q0p`=|y&(eqR?3e!yvWZ8{VN$*HbOiYx< zeVQ#Y8k!$!0jB6Pr6u{ZI96^q)~=(Xl&#oW_ou-)BNb%|>|7h>r zqjF69J${D@(@?L9Mma>L2_3x-2}usc5F?sMB{?<5u}SGD($Q(88g!75bTXwP6@{fx zj%85EL?cR4nvVN(jd$<0_8;$F`;T|;{m)*@AFc2__w(G>^}D{m@8Ne#BN(GKr!nHB zX{RI&`y`$bU~v4{v9Xk3$Hc^O*F3|4@U;X$LIO|94MhEi?1=yy0 zmhpwni)(KCs^q}*UlpCz)YObqk9}4J05!Se&BK12GRo_& zOv_*Rz~0X2#*UV02&7bP;XR-Z7H8V){rt->{V6|?@pJ39oy{vYZe_4(_V(8UIN)ug zo_jevC7-*w#W^F@Md4;qQ31j~&O6)X%lV|7%=&1-$urhI{+O7S_CCQ)?@;>?U6&3> zicym$4F)c!-fqY<{4BVB(pVPyqw2|#0wk$z4ZnrogrHOSs>bGV5QH}@ADh8CqRG(;ED=wANVW4(c_NlgGZn6G1ql^ry0V#$C^EjaD9t(HFjF= zj?8uETc$56ACeN<>KgWfW4gB_M%-nZQ0AnJyzh49Eowg~u5TBGGWm~AANj-6d&hsU zShQ#^=P&3oOc19V9-Pj0YaAvb_hclfWpS1bgDg&^0#4#6O-ST(nQG_gnjq{NqN(-SoX8u<6}Sl_~<#1fJ;^XiQVJyQeVP@LaNle^2Zy1 z1JbKi+(m%W@|u9lKJwvBmAMO3ntUyHFXKVwsV6QH2Bs0?iM|? z;qasxXz;X`g>01K%qs>-b-TX%KJ;B=?*fzoB}GN6hIe7s*29`9qf0j5p#Ix7%?wRF z7dDudp_)lcb%cKeh){Ov(9R9`143XBf>V1^oZh(_1+TCO zBN^{`aT#lVdVAd{k=m@WOP{|>Zoe+5Zy1bNPNVg*fAD!=h1%aLBdtGPNgQ|Mr`s|P z^yD=fFMAfA`w%GjALaRlWz!z}77y*6y8YQQS&N465oJ)Zpikvs^Y#P;Y_tnmmG3$wL|$*IMp)S+Bu}#sG^SR*2x2MGF-|BfNIK~ zl;Wh7MKZ`kDMQ?#o0TymQG}zWIL^g@3AV~0mZ+tr240tg`VvXRkLd!Uqv7e$;JzxDL#`igM3{8N^PWhOclNITu#9kEt|uZwtOL^`?itzGcUq8)2$ zVatfgCq$AQfJ1F>l2Wa#tYVwf`&0362&SYR=joQ_SKoS~U{&P08$l-gd4J|E6uMj* z9h;nOTHxiq(64PB9rc~Q`L6Y<-fb`BVQ&>N{E89oZ3VfQQyoF_>wnAmhD|1l9rj}( zbYfi+*9Az-%sX|rwDcxF-8=p5P_Ww3ottqcD=I7Rfg6#bNg}*0!*^MRc*}ynhQ&@; zkUesX6Tds72-ZVhomF3mxAqPb2VRW*Gpw}CX&818*xy*%oC;29VIrZ8IpY3lM{L^_ zpYEVshMioa@7E_T{zFxs#&FN~GHVQ@?!LV1)I9@KF&6|Kw^T05u(jB@KUC(bal{M}PLU&TA~KtDpFLX%(HYzl zu`V=sJ%PT8ob6wW)bpo_rnk~t-@llJ#46icPQf&F)fJZH0B)OB%tp><`H#=18s@ znB@7SlmIuZEKcMoXNY}S$!yJaL(U+tl_`2qq&5Tbn8QIaB~@pX?r zA$la428M-=Z@Ch*f4{2K7pN1GeTP{LnU$|U^F%Bg@qT^#^-}_p^vPMN>q+Y`UI_BY z{!L;3q&JZ+t4L%1@q8dkWRssC7Z0;Id2-~<++H_5Kl5v|5_|G!0QWNPBe+C(CnZIE zCne__seWK15-NI|US1!5C*SFgze$PF9C*Am*7aXZ9c}9n_a>Rtgm;ZB_xTzwrJrj5 z+!wv^1_t<#Q+}#_uIJQo@3r62!zR7ONbG zIct&DVl`8HY%(QUU>P6P;vdrkkB#4Y=lN z9CzsaAwBc#Z_w4UDGIp-EQC;~T;XI#cv%*8rk3zK+hT&CK`^J%Th~piKP!ltqZ?AT z>aEO9D>A;*&G>T%9MF+dwvWj}ox$(`2CpVuq0@XJ`qk8Zv9Ym#tDi7DPw3K;gw1zP zX6D~Tt*x&QVco2LUww7n{Q0vuq>fl>iRVIGX}xC^Fl;->AMRV--m680xjnt02*7*l zPB%jDb(A#W@le{F+aw2%bO89zf*LHEZs?R{8{LO(FU)Oon8#5im9?k*i1E9v)TevY z^bJoQKUT$Cb^eIjHNH%N0)!YLnc}v9X$e>yKSwazwH~`aG*@z5hD%~fG{O}U_L-?7EaBs-b)AXYOGY3Mg zy&W01d_{uS`-&$|WF+?QKDKl+^MD%yYZ<|$AO*5vd#ont>!;nmh~-nF*-JDRv+HH8 zI@ifoR#u8t0aFT+Y(hm0&X=%$tcJd>&AiMJ@b@Gkx-Nj@x>4!|s2|hhGs$TmwteUzG_qULQXK+bv-SoA2p6ni7qCL4!yZbC>pZUTWv@fgUWjWw zo>PozmWG0SbgOhfb9)oxZ_=0o^!8cKATIVMp!&4yShZPXfaKwjuA?+nS653+fKX=V zV`Idleih5}^$U#FP%It5G>`aSE3u;pW)b$nFEQ~O6hVJ1sLW3912nEl`09>p3&P_1 zI}7U{oEgYHA1GnAiO)8HxukCfiyCm}mNazfrV>jUNo{P*Z61Ia>PKaKN$RNPNpXqE zu2uyh{+gOfY^4A+-x`9|y?hO0Y`PZBc$Glg^Y4@jpR=&IxIZ7K+@B%il*QSuGH3N^8?1(Ky`)ZY=XNH)*MP>Z;8W8xPQ2s z`ez5kuoZWWE@W;0@Ng9#S{BTFm#y{`iB#*m#4tMbVI#)6#!SGVisL>^JXWL)d*s0r zC%%krTOxSmqHVxC8Zmlml^GRMEN!I}JR>(I|3M*K3jZ(+6Pe+s%=6R#xZL1e3(->4 zCF2Y1wtwwh#rtotD`tMrIBy2vHDy{RTw_B~R>GEK^_&^rd>`zE2i;5|R~VAPc6zkd ztqe{+EjTn@OHoa&pCsfA@c2pBe%8x}UaFKYNHbWH@9l-xbbVOA6)RSR4xNVp* z`2q0*(zq<4oltK4b8@B-+D~__XIRfagYS<#j_-1G9J%)H@gRWDRki|+!e=MKHRKxm zPbo@Di)Ga|`Kl-@JG8xjA-XJ4I+^uTfGtYkSxoOm+XO`q+|{Q65YiaD;rovti|A_v zP)dIW?nhb=W(|#;I8jxAPE-{FXkozUY@MGDVPY<*8@4`C2@FFW9YIXkb4V?>`W~4k zTs0e}UDSX`e9EI2B#AfOjbl#m!>FRYB_X0uzoo40y|ROSMqh9LYS2%AnTFn}RiFpR zNN9I8h5!~y=+X95Rj9e^!x21ZGg&LD#pQH;y@%;ATts^DU#6kcBSoBaEDW$M;n6QL z5+O|66496@mtz96O+|v`d3y^5^CXo0;i=P5yowu)@kq%W|hz6_NXaSa*Dp!z+`*iUbG+2-H{NyhfMdJOzuqxSbS6`qNaf1nMl40 z=N4@r^NFC_YHBRMy9y?_Ze%PW{eMGW39&ua)gCX~2emtD70pKdWnx*~6_?%gZtT|> zd)MqpNiF=OoR~3em^JoW)(A5#`$&RTh9-QETt^j?kvNI0$n2YVwke{X?qqtu^E*|( z3Qgg-JCT)gHmh7AN9Iz#y~iWy%!5%;K|s_x6&pRC0Od#TNw~TC#fy=;i!3bss52ZI z1~@83gbP-O25y7%Pcb-**Q9?NCjZ>E>hHJ6tL#W*9qrA_GWPDAEX5L`vn`<@$|%Rg z$@p@l6ov%O(;Thjpd!+Jq-w;};JT+-dLr~h?<;&yDA6}y1ClO4; zF#b&Y2)uoJ0p`fQ0%y|m{=UuK+KnZuFgmCazh7OR zu2fAMcby}0Y#je-sr6_T2Qp;g%gQ+obdq&7H9flc6{Y1Xg|y|Pu?NG83d{4!{PA)& zT9;5%1ggXQfWR6{2aXcvKccVo^UNi{l`mk+0N6W%TxlEN6bhNRloY$p++6Rblr$P2 zk~z@)MNQ3a-b|Bn4JR8p-OG55;rG^Vi_U=9BH9+}o0zCep%XoW0*5$+ufgLa)-{XI zXu=N_ijo5iB&MttB!4a0*~7(5DBx|f?QnG)L*KU4c0af&#%u3+!Obqe?z!5B$RWPRkQ`t%gIff!?CH1!0fvL~V6$-GnN| zqb^Rg8Kb6g0Q&FUJ6r3@RCDw2#?2ZIJR#B0?28b6xApQ#9E6`w-t= zaAW3KT3!RpTiMtIGWekexVZCUof6exE36CXPafkO;g(qdW+8l~=W#5)AQrp(#0d@9 zZ1JzMFJF#F>=)1xht1Ab2752dWfl(!QzaTY&Ky+jtA-s_IL>G{<+)R`(s|p={^Y7t z>z^`R1$M7GJbnYyMUu5Xm3Sni^* zZb%N|H(P7^Ff+B=vZLwl)W#9`C^%oF;L?Ip*F@jwKVi__BBzwYv5*4qfgyiWHM6o z@JB6khMNgkN!UmTavX!KX4KB>104`H#B<2l2&ox*aQT8k06gjh9D)uhchPO;A%MzI z*V2e+N1kw@O7?mVs-skmt%F6S0n@l@?JlBRqD~kvpM?87OE)5yRp5)~5zBOt-EO8?S z@d}@H@-{k;>pUIhlVwNEn>WEsLe#i-?;hfUKdTH>TQuLFbdorX1b>HR1PYbJm!zGy zCu`Hwi3_4l)PN}r)zhV$??dif(r)=--k6_9YH7&|bbyaU2>LjLqymhsWgG-MJv^?# zSTgXa5XNjrYt_St%Cse>JO>ZFZ@;<=4npu~*ofjzZdOrRoN$nUUR~#`nEx=1$3I}+ z!aX`V>H50y^cNG>chIy4MW_u_pX@6#uO7o?syT#l)0qj+)ynqX!KHx<7A&yrGhPx1 zlPXhFTX0__bUDFb+Gi9sa@tM};3k7(?Zz!=r!Cs97E|++?ROr?PeSFwK(@ z=@qAM_&01k;XJxS!^X_47dvKI!#n$0HxpLsT z2J;xq@WFx~%h(ag+s5z&;togcfWb;?gDmXK&Yy2g2M`>wbWV6^t%6fD&AZD(G-Q0* zn*`IU>*@kIa+bT66Koo4al$X^*s+&1C&B>?D7H-zgAn|nTmauow>7RxrCF4xD_dyo z<{x;rc;1_-M0nfRmA#&-&%2>=-*@;Qj_v;IV?h6Vk>mfr_Wz5hx8b8R2d__TNopW! ddT3_%j4@s_t1h+tj+;=DEM_k>Pcd`Y{cm5ajA#G= literal 32930 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 diff --git a/test/golden_test/goldens/details_screen_removed_favorite.png b/test/golden_test/goldens/details_screen_removed_favorite.png index fa63e65cbacd2bd7e55d06b8292f637355238fa8..3b9ddea0b14f369b4724504343b15f1d4cffcb11 100644 GIT binary patch literal 32625 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 literal 32930 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 diff --git a/test/golden_test/goldens/favorite_page_content.png b/test/golden_test/goldens/favorite_page_content.png index 34e0114f260df27c7247edf31e3e6d2fd6702d00..49338e0eac43e3ef1bfc636cf088d7933e60cfa1 100644 GIT binary patch literal 13396 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 Z>}s=Py0m&oS_y$4tg^=CJf)it{tw8&vJe0O diff --git a/test/golden_test/goldens/favorite_page_empty.png b/test/golden_test/goldens/favorite_page_empty.png index b8fce0f4caef8086337ae84e1fcc3acc756273f2..0fc0bb0df088aa5a78a77d703e0e7ed3d3f4e18d 100644 GIT binary patch literal 21723 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 => restaurantRepository); GetIt.I.registerFactory(() => favoritesService); @@ -29,9 +31,8 @@ void main() { final deviceBuilder = DeviceBuilder() ..overrideDevicesForAllScenarios(devices: [Device.iphone11]) ..addScenario( - widget: const RestauranTour(), + widget: widgetBuilder(RestaurantsScreen.create()), ); - autoUpdateGoldenFiles = true; testGoldens('when [RestaurantTour] loads should show the title on the page and fetch the data', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); diff --git a/test/mocks/mocks.dart b/test/mocks/mocks.dart index a72232b9..2bbc8213 100644 --- a/test/mocks/mocks.dart +++ b/test/mocks/mocks.dart @@ -1,7 +1,7 @@ import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:restaurantour/components/rt_image_network.dart'; - +import 'package:restaurantour/core/routes.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/services/favorite_service.dart'; @@ -14,6 +14,8 @@ class DioMock extends Mock implements Dio {} class RequestOptionsMock extends Mock implements RequestOptions {} +class GoRouterConfigMock extends Mock implements GoRouterConfig {} + class RTImageNetworkMock extends Mock implements RTImageNetwork { @override Widget build({required String location, required Widget errorWidget}) => const Icon(Icons.image); diff --git a/test/widget_for_tests.dart b/test/widget_for_tests.dart index 87369a29..1fb2917e 100644 --- a/test/widget_for_tests.dart +++ b/test/widget_for_tests.dart @@ -1,11 +1,13 @@ import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:restaurantour/core/theme.dart'; Widget widgetBuilder(Widget child) { return MaterialApp( localizationsDelegates: localizationsDelegates, debugShowCheckedModeBanner: false, + theme: RTThemeData.themeData, home: Scaffold(body: child), ); } diff --git a/test/widget_tests/restauran_tour_test.dart b/test/widget_tests/restauran_tour_test.dart index 33524bfa..9939fb32 100644 --- a/test/widget_tests/restauran_tour_test.dart +++ b/test/widget_tests/restauran_tour_test.dart @@ -2,12 +2,13 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:get_it/get_it.dart'; import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/components/rt_components.dart'; +import 'package:restaurantour/features/restaurants/restaurants_screen.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; -import 'package:restaurantour/restauran_tour.dart'; import 'package:restaurantour/services/favorite_service.dart'; import '../mocks/mocks.dart'; +import '../widget_for_tests.dart'; void main() { RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); @@ -28,7 +29,7 @@ void main() { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - await tester.pumpWidget(const RestauranTour()); + await tester.pumpWidget(widgetBuilder(RestaurantsScreen.create())); expect(find.text('RestauranTour'), findsOneWidget); verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); @@ -38,7 +39,7 @@ void main() { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - await tester.pumpWidget(const RestauranTour()); + await tester.pumpWidget(widgetBuilder(RestaurantsScreen.create())); expect(find.text('All Restaurants'), findsOneWidget); expect(find.text('My Favorites'), findsOneWidget); From 8daede15a28bb6b9c7d1bfffe46141b65892d579 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Tue, 20 Feb 2024 12:46:41 -0300 Subject: [PATCH 64/89] feat: load favorites in memory, clean up coverage report --- Makefile | 6 ++- lib/core/queries.dart | 22 +++++++++ .../pages/favorites/favorites_page.dart | 2 +- .../pages/restaurants/restaurants_page.dart | 2 +- .../restaurants/restaurants_view_model.dart | 45 +++++++++++++++---- lib/repositories/restaurant_repository.dart | 9 ++++ .../restaurant_list_view_model_test.dart | 20 +++++---- test/widget_tests/favorites_page_test.dart | 8 ++-- 8 files changed, 90 insertions(+), 24 deletions(-) diff --git a/Makefile b/Makefile index 8751cc78..b065561b 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,11 @@ tests : integration-tests : flutter test integration_test/app_test.dart -lcov : +lcov-ignore : + lcov --remove coverage/lcov.info 'lib/core/*' 'lib/models/*.g.dart' -o coverage/lcov.info + + +lcov : lcov-ignore genhtml -q -o coverage coverage/lcov.info && open coverage/index.html update-goldens : remove-goldens-failures diff --git a/lib/core/queries.dart b/lib/core/queries.dart index 2f6bb708..682a738a 100644 --- a/lib/core/queries.dart +++ b/lib/core/queries.dart @@ -67,6 +67,28 @@ query restaurantDetailsQuery { '''; } + static String getSingleRestaurantQuery({required String restaurantId}) { + return ''' +query singleRestaurantQuery { + business(id: "$restaurantId") { + alias + categories { + alias + title + } + hours { + is_open_now + } + rating + id + photos + name + price + } +} +'''; + } + static String getTotalReviewForRestaurantQuery({required String restaurantId}) { return ''' query totalReviewForRestaurantQuery { diff --git a/lib/features/restaurants/pages/favorites/favorites_page.dart b/lib/features/restaurants/pages/favorites/favorites_page.dart index 0c3d9322..784b0b66 100644 --- a/lib/features/restaurants/pages/favorites/favorites_page.dart +++ b/lib/features/restaurants/pages/favorites/favorites_page.dart @@ -43,7 +43,7 @@ class _FavoritesPageState extends State { imageNetwork: inject(), restaurant: model!.favoritesRestaurantList[index], openDetails: () async { - context.pushNamed( + await context.pushNamed( DetailsScreen.route, pathParameters: {DetailsScreen.restaurantIdParams: model!.favoritesRestaurantList[index].id ?? ''}, ); diff --git a/lib/features/restaurants/pages/restaurants/restaurants_page.dart b/lib/features/restaurants/pages/restaurants/restaurants_page.dart index 38e0cb20..39181c41 100644 --- a/lib/features/restaurants/pages/restaurants/restaurants_page.dart +++ b/lib/features/restaurants/pages/restaurants/restaurants_page.dart @@ -62,7 +62,7 @@ class _RestaurantsPageState extends State { imageNetwork: inject(), restaurant: model!.restaurantsList[index], openDetails: () async { - context.pushNamed( + await context.pushNamed( DetailsScreen.route, pathParameters: {DetailsScreen.restaurantIdParams: model!.restaurantsList[index].id ?? ''}, ); diff --git a/lib/features/restaurants/restaurants_view_model.dart b/lib/features/restaurants/restaurants_view_model.dart index 85805650..2b7f3bf8 100644 --- a/lib/features/restaurants/restaurants_view_model.dart +++ b/lib/features/restaurants/restaurants_view_model.dart @@ -31,6 +31,7 @@ class RestaurantsViewModel with ChangeNotifier { RestaurantQueryResultDto? _restaurantsQuery; List _favorites = []; + List _restaurantsCache = []; int get allRestaurantsQueryTotal => _restaurantsQuery?.total ?? 0; List get favoritesRestaurantList => _favorites; @@ -53,12 +54,28 @@ class RestaurantsViewModel with ChangeNotifier { } } + Future paginateRestaurants() async { + if (restaurantsStatus.isPaginating || !shouldPaginate) return; + try { + _emitRestaurantPaginating(); + final paginated = await restaurantRepository.getRestaurants(offset: restaurantsList.length); + restaurantsList.addAll(paginated?.restaurants ?? []); + } catch (e) { + print(e); + } finally { + _emitRestaurantContent(); + } + } + Future loadFavorites() async { try { _emitFavoriteLoading(); - _favorites = []; final favoritesIds = await favoritesService.loadFavorites(); _favorites = restaurantsList.where((restaurant) => favoritesIds.contains(restaurant.id)).toList(); + final favoritesToFetchInCache = await _findFavoritesNotLoadedInMemory(inMemory: restaurantsList, favoritesIds: favoritesIds); + _favorites.addAll(_restaurantsCache.where((restaurant) => favoritesToFetchInCache.contains(restaurant.id)).toList()); + final favoritesToFetch = await _findFavoritesNotLoadedInMemory(inMemory: _restaurantsCache, favoritesIds: favoritesIds); + await _loadFavoritesInMemory(favoritesToFetch); _favorites.isEmpty ? _emitFavoriteEmpty() : _emitFavoriteContent(); } catch (e) { print(e); @@ -66,16 +83,26 @@ class RestaurantsViewModel with ChangeNotifier { } } - Future paginateRestaurants() async { - if (restaurantsStatus.isPaginating || !shouldPaginate) return; + Future> _findFavoritesNotLoadedInMemory({required List inMemory, required List favoritesIds}) async { + inMemory.map((restaurant) { + if (favoritesIds.contains(restaurant.id)) favoritesIds.remove(restaurant.id); + }).toList(); + return favoritesIds; + } + + Future _loadFavoritesInMemory(List favorites) async { + for (var favoriteId in favorites) { + await _loadSingleFavorite(favoriteId); + } + } + + Future _loadSingleFavorite(String favoriteId) async { try { - _emitRestaurantPaginating(); - final paginated = await restaurantRepository.getRestaurants(offset: restaurantsList.length); - restaurantsList.addAll(paginated?.restaurants ?? []); + final _restaurant = await restaurantRepository.getSingleRestaurant(restaurantId: favoriteId); + _favorites.add(_restaurant); + _restaurantsCache.add(_restaurant); } catch (e) { - print(e); - } finally { - _emitRestaurantContent(); + _favorites.add(RestaurantDto(id: favoriteId)); } } diff --git a/lib/repositories/restaurant_repository.dart b/lib/repositories/restaurant_repository.dart index 2c64119a..d8a462a6 100644 --- a/lib/repositories/restaurant_repository.dart +++ b/lib/repositories/restaurant_repository.dart @@ -33,4 +33,13 @@ class RestaurantRepository { final result = response.data!['data']['business']; return RestaurantDto.fromJson(result); } + + Future getSingleRestaurant({required String restaurantId, int offset = 0}) async { + final response = await dio.post>( + '/v3/graphql', + data: RTQueries.getSingleRestaurantQuery(restaurantId: restaurantId), + ); + final result = response.data!['data']['business']; + return RestaurantDto.fromJson(result); + } } diff --git a/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart b/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart index 7d96c77f..2439d2b6 100644 --- a/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart +++ b/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart @@ -108,20 +108,24 @@ void main() { verify(() => favoritesService.loadFavorites()).called(1); }); - test('''when [RestaurantViewModel] is created the [Restaurant] list has items, + test('''when [RestaurantViewModel] is created the [Restaurant] list has no items, if [loadFavorites] get successfully the data from favoritesService - the [favoritesStatus] should be [FavoriteStatus.empty]''', () async { + but the [Restaurant] don't have all the restaurants of favorites list + them should get each one from repository and the favoritesStatus should be content''', () async { when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); + when(() => restaurantRepository.getSingleRestaurant(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); + final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); await sut.loadFavorites(); - expect(sut.favoritesStatus, FavoritesStatus.empty); + expect(sut.favoritesStatus, FavoritesStatus.content); }); test('''when [load] get successfully the data from repository but the [Restaurant] list is [empty], - when [loadFavorites] get successfully the data from favoritesService the [favoritesStatus] - should be [FavoriteStatus.empty]''', () async { + when [loadFavorites] get successfully the data from favoritesService + but the [Restaurant] don't have all the restaurants of favorites list + them should get each one from repository and the favoritesStatus should be content''', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResultDto(restaurants: []))); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); @@ -129,12 +133,12 @@ void main() { await sut.load(); await sut.loadFavorites(); - expect(sut.favoritesStatus, FavoritesStatus.empty); + expect(sut.favoritesStatus, FavoritesStatus.content); }); test('''when [load] get successfully the data from repository and [loadFavorites] get successfully the data from favoritesService but finds no matching ID in the lists, - the [favoritesStatus] should be [FavoriteStatus.empty]''', () async { + them should get each one from repository and the favoritesStatus should be content''', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value(['another-restaurant-id'])); final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); @@ -142,7 +146,7 @@ void main() { await sut.load(); await sut.loadFavorites(); - expect(sut.favoritesStatus, FavoritesStatus.empty); + expect(sut.favoritesStatus, FavoritesStatus.content); }); test('''when [load] get successfully the data from repository diff --git a/test/widget_tests/favorites_page_test.dart b/test/widget_tests/favorites_page_test.dart index bbdf57e3..2c36f569 100644 --- a/test/widget_tests/favorites_page_test.dart +++ b/test/widget_tests/favorites_page_test.dart @@ -96,15 +96,15 @@ void main() { testWidgets('''when successfully fetch the [RestaurantQueryResult] and has no data, but when load the favorites and has favorites, - should render [RTEmptyWidget] to inform to the user that has no results''', (WidgetTester tester) async { + but the [Restaurant] don't have all the restaurants of favorites list + them should get each one from repository and the favoritesStatus should be content''', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResultDto(restaurants: []))); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); - expect(find.bySubtype(), findsAtLeast(1)); - verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); - verify(() => favoritesService.loadFavorites()).called(1); + expect(find.bySubtype(), findsAtLeast(1)); + expect(find.byKey(const Key('favorite-restaurant-0')), findsOne); }); } From 4a005307ea6f1483e81a53dd98f7286fe685a78a Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Tue, 20 Feb 2024 13:07:58 -0300 Subject: [PATCH 65/89] feat: add tests for favorite_service --- Makefile | 2 +- test/mocks/mocks.dart | 3 ++ .../services/favorites_service_test.dart | 48 +++++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 test/unit_tests/services/favorites_service_test.dart diff --git a/Makefile b/Makefile index b065561b..9cb11767 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ lcov-ignore : lcov --remove coverage/lcov.info 'lib/core/*' 'lib/models/*.g.dart' -o coverage/lcov.info -lcov : lcov-ignore +lcov : tests lcov-ignore genhtml -q -o coverage coverage/lcov.info && open coverage/index.html update-goldens : remove-goldens-failures diff --git a/test/mocks/mocks.dart b/test/mocks/mocks.dart index 2bbc8213..c0aa6611 100644 --- a/test/mocks/mocks.dart +++ b/test/mocks/mocks.dart @@ -5,6 +5,7 @@ import 'package:restaurantour/core/routes.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/services/favorite_service.dart'; +import 'package:shared_preferences/shared_preferences.dart'; class RestaurantRepositoryMock extends Mock implements RestaurantRepository {} @@ -16,6 +17,8 @@ class RequestOptionsMock extends Mock implements RequestOptions {} class GoRouterConfigMock extends Mock implements GoRouterConfig {} +class SharedPreferencesMock extends Mock implements SharedPreferences {} + class RTImageNetworkMock extends Mock implements RTImageNetwork { @override Widget build({required String location, required Widget errorWidget}) => const Icon(Icons.image); diff --git a/test/unit_tests/services/favorites_service_test.dart b/test/unit_tests/services/favorites_service_test.dart new file mode 100644 index 00000000..b5c1ead2 --- /dev/null +++ b/test/unit_tests/services/favorites_service_test.dart @@ -0,0 +1,48 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:get_it/get_it.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:restaurantour/services/favorite_service.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +import '../../mocks/mocks.dart'; + +void main() { + SharedPreferences sharedPreferences = SharedPreferencesMock(); + + setUp(() { + GetIt.I.registerFactory(() => sharedPreferences); + }); + + tearDown(() { + reset(sharedPreferences); + GetIt.I.reset(); + }); + + test('when loadFavorites is called should get the value from service', () async { + when(() => sharedPreferences.getStringList(any())).thenReturn([]); + + final sut = FavoriteService(sharedPreferences: sharedPreferences); + final result = await sut.loadFavorites(); + + expect(result, []); + }); + + test('when addFavorite is called should save the value on service', () async { + when(() => sharedPreferences.setStringList(any(), any())).thenAnswer((_) => Future.value(true)); + + final sut = FavoriteService(sharedPreferences: sharedPreferences); + + await sut.addFavorite('favoriteId'); + verify(() => sharedPreferences.setStringList(any(), ['favoriteId'])).called(1); + }); + + test('when remove is called should remove the value from service', () async { + when(() => sharedPreferences.getStringList(any())).thenReturn(['favoriteId']); + when(() => sharedPreferences.setStringList(any(), any())).thenAnswer((_) => Future.value(true)); + + final sut = FavoriteService(sharedPreferences: sharedPreferences); + + await sut.removeFavorite('favoriteId'); + verify(() => sharedPreferences.setStringList(any(), [])).called(1); + }); +} From 1fbd9a6aaf91330977b118c45439882a72e20c10 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Wed, 28 Feb 2024 16:10:19 -0300 Subject: [PATCH 66/89] feat: update fluter, update golden tests --- .vscode/settings.json | 2 +- ios/Podfile.lock | 4 +- lib/core/theme.dart | 1 + pubspec.lock | 56 +++++++++--------- .../goldens/details_screen_added_favorite.png | Bin 32364 -> 32227 bytes .../goldens/details_screen_content.png | Bin 32364 -> 32227 bytes .../goldens/details_screen_favorite.png | Bin 32364 -> 32227 bytes .../goldens/details_screen_not_favorite.png | Bin 32625 -> 32491 bytes .../details_screen_removed_favorite.png | Bin 32625 -> 32491 bytes .../goldens/favorite_page_content.png | Bin 13396 -> 13261 bytes .../goldens/favorite_page_empty.png | Bin 21723 -> 21599 bytes .../goldens/favorite_page_error.png | Bin 18587 -> 18479 bytes .../goldens/restauran_tour_content.png | Bin 19095 -> 19086 bytes .../goldens/restauran_tour_favorites_tab.png | Bin 19142 -> 19111 bytes test/widget_tests/favorites_page_test.dart | 16 ++--- .../restaurant_details_screen_test.dart | 14 ++--- test/widget_tests/restaurants_page_test.dart | 10 ++-- 17 files changed, 52 insertions(+), 51 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index f285aa4a..534886a5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,5 @@ { - "dart.flutterSdkPath": ".fvm/flutter_sdk", + "dart.flutterSdkPath": "~/fvm/versions/3.13.9", "search.exclude": { "**/.fvm": true }, diff --git a/ios/Podfile.lock b/ios/Podfile.lock index e1dc72a9..0d59166f 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -20,10 +20,10 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/shared_preferences_foundation/darwin" SPEC CHECKSUMS: - Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 + Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 integration_test: 13825b8a9334a850581300559b8839134b124670 shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695 PODFILE CHECKSUM: 075ddf6b19cdcced44581bd8fbdfb58404a78f8a -COCOAPODS: 1.14.3 +COCOAPODS: 1.15.2 diff --git a/lib/core/theme.dart b/lib/core/theme.dart index 299d127d..bef77db7 100644 --- a/lib/core/theme.dart +++ b/lib/core/theme.dart @@ -4,6 +4,7 @@ import 'package:restaurantour/core/rt_colors.dart'; class RTThemeData { static final themeData = ThemeData( visualDensity: VisualDensity.adaptivePlatformDensity, + useMaterial3: true, colorScheme: const ColorScheme.light( primary: RTColors.primaryFill, onSurface: RTColors.secondaryText, diff --git a/pubspec.lock b/pubspec.lock index c794565c..6740e0d9 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -141,10 +141,10 @@ packages: dependency: transitive description: name: collection - sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 url: "https://pub.dev" source: hosted - version: "1.18.0" + version: "1.17.2" convert: dependency: transitive description: @@ -416,18 +416,18 @@ packages: dependency: transitive description: name: meta - sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.9.1" mime: dependency: transitive description: name: mime - sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" + sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "1.0.4" mocktail: dependency: "direct dev" description: @@ -496,18 +496,18 @@ packages: dependency: transitive description: name: petitparser - sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 + sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 url: "https://pub.dev" source: hosted - version: "6.0.2" + version: "5.4.0" platform: dependency: transitive description: name: platform - sha256: ae68c7bfcd7383af3629daafb32fb4e8681c7154428da4febcff06200585f102 + sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "3.1.0" plugin_platform_interface: dependency: transitive description: @@ -600,10 +600,10 @@ packages: dependency: transitive description: name: shared_preferences_web - sha256: "7b15ffb9387ea3e237bb7a66b8a23d2147663d391cafc5c8f37b2e7b4bde5d21" + sha256: d762709c2bbe80626ecc819143013cc820fa49ca5e363620ee20a8b15a3e3daf url: "https://pub.dev" source: hosted - version: "2.2.2" + version: "2.2.1" shared_preferences_windows: dependency: transitive description: @@ -669,18 +669,18 @@ packages: dependency: transitive description: name: stack_trace - sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 url: "https://pub.dev" source: hosted - version: "1.11.1" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.1" stream_transform: dependency: transitive description: @@ -717,10 +717,10 @@ packages: dependency: transitive description: name: test_api - sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" url: "https://pub.dev" source: hosted - version: "0.6.1" + version: "0.6.0" timing: dependency: transitive description: @@ -773,10 +773,10 @@ packages: dependency: transitive description: name: vm_service - sha256: c538be99af830f478718b51630ec1b6bee5e74e52c8a802d328d9e71d35d2583 + sha256: c620a6f783fa22436da68e42db7ebbf18b8c44b9a46ab911f666ff09ffd9153f url: "https://pub.dev" source: hosted - version: "11.10.0" + version: "11.7.1" watcher: dependency: transitive description: @@ -789,10 +789,10 @@ packages: dependency: transitive description: name: web - sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 url: "https://pub.dev" source: hosted - version: "0.3.0" + version: "0.1.4-beta" web_socket_channel: dependency: transitive description: @@ -813,10 +813,10 @@ packages: dependency: transitive description: name: win32 - sha256: "464f5674532865248444b4c3daca12bd9bf2d7c47f759ce2617986e7229494a8" + sha256: b0f37db61ba2f2e9b7a78a1caece0052564d1bc70668156cf3a29d676fe4e574 url: "https://pub.dev" source: hosted - version: "5.2.0" + version: "5.1.1" xdg_directories: dependency: transitive description: @@ -829,10 +829,10 @@ packages: dependency: transitive description: name: xml - sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 + sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" url: "https://pub.dev" source: hosted - version: "6.5.0" + version: "6.3.0" yaml: dependency: transitive description: @@ -842,5 +842,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.2.0 <4.0.0" - flutter: ">=3.16.0" + dart: ">=3.1.0 <4.0.0" + flutter: ">=3.13.0" diff --git a/test/golden_test/goldens/details_screen_added_favorite.png b/test/golden_test/goldens/details_screen_added_favorite.png index b1d43cbc148834c22a43165554d525a0e9ed650d..6b70f0b7d8401ea06de9850ffbbf5ccf2d765007 100644 GIT binary patch literal 32227 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 literal 32625 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 diff --git a/test/golden_test/goldens/details_screen_removed_favorite.png b/test/golden_test/goldens/details_screen_removed_favorite.png index 3b9ddea0b14f369b4724504343b15f1d4cffcb11..9a5a560fc94640366051d7f1d27bc0eb99d1528a 100644 GIT binary patch literal 32491 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 literal 32625 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 diff --git a/test/golden_test/goldens/favorite_page_content.png b/test/golden_test/goldens/favorite_page_content.png index 49338e0eac43e3ef1bfc636cf088d7933e60cfa1..11f3d16ad01316a934dad55450206b119e840ae8 100644 GIT binary patch literal 13261 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�d|b(1{z$B!2*m&rc1%e(ew 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 literal 21723 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 literal 18587 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 E0Mv_$t#@<%T@ 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 z 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 E57Lk*rvLx| literal 19142 zcmeHvc{G-N{N{tAvXnMN6qS@MM6$IAl_)CvmMvv}tl6G6DO*bRr9x7o5ZRR?yQq*g z`@Zk%T=zTkJ7?z1%$alM_s`5Z?|aUB-sE}i<$HfW*XLS3_xtdoiX!8tU7JWG660AV zc{LJ=>OF}>6S097f3wg_r;h(nk<}DWky5HT2Jpi=@~N|zH{c)l4JJM$(jL-T`IDDj zqJ~>tqb|&Jl}uJ%D>^6BN0#m52z~wf z;9Z98dOhJkt}!zQSxzVxe`N^GH9xbLo10sUPn1qIMY5I&zu`|LZDVFWuSR+3#WOp~=eCUslL+p7gzopnx z*f~9egLo9x6KCs(o3rE|XdmRBta*}TH0|}^!2>DB!Jn^e|DO8v>63}Gqog2rC-t_% z=0wR4fm%1K0H0b5co10aKopG7}A!puZ^xD@)>5=7TVGRw95`V79)?eKbcj=fW z>s5VUUwL~#Rpv_Q-{QiYo}8xzkzbx2*69D4%~Kk<+q|pff@Gr_bC6dEzDt=~n(p~b z=R5AjHA`c-y3Ey-=1Olf-Cx}z*-q{#qT+Pvpo*~?=TFU_J(r_+2$$bFkko(J@8$p-EF(k7aAxv+v)P4qZ+DK4jH=F{Q=0_juvRg1<$**|>J3 z#=^=RkL90F5AlQ!U3v4hIlnz#^TRb2Q|s0o|6gx^Z`qmYD-syIS1e>P_xXX$0 z;?0p`#l^*1S=KT`zuzUExJ?}_WDxWIz23e1Bc0Pp_3n*@vGudK6Vs}QkJ8KI#a~NG z((Jkph+DUOjW~LkPdoV_sUbx#PN!j%L(cQgxo3yeUfUY&6x99t<-YHHZ{!c@mCAaO zZjO6XGW+vW_cswA>MB*;f@hoEUh`$fiz>sUOoVoN?Ypi`@gk$8X5sCrKA!%%gl!Zp zIm4K)^ww*J3f~^x_DUJjRMhj~=62q%@!*Gq)vof8ckJQf9wKr=T1vO6*M~{Xxm8C= zMw+#zmik>Qt2>jdm-Xn?h0|1x85Zf;%THBhd*&y$;cmFdz17$1;%&lZ+-OO6X+6rZ zdQs(vFFq%o4_&FuTOc>GW%_r1^Ci!Z8>z&~(iD9#E@iD<<5^x_*37=KeyX?TZ^N_0 z2l07>K+e;bFJE@@;OFLkve9{mp|{a{$06}VKJLyhyF=>>Jane6Cn|@F{7hYAAW1oo zI%tn2B@U{k>X(aP6UJCwTROrxlYxMXVYRa9R|Ft8cj2QG&HbK9&k=3xK5doIF8wl2h3^6%coWA zIqp5c%Uj>&udgz-II~1)XwF>F@lTpD5eVVe3OT?aBP|`(#&YQLcT2jWi7sB!YfiN) z2Kfhxv91wT&6(uI%5cAm=?S|-

LEY%q4XIx&ohAGZH=k}3Ugmm+Y^S3bvB|B(P z^^T5K&rS6n(`%TiJze0Hd*qDot0>iTN=l#NMp8<@Q9TY04mQ(j%X3vP&vP|5)qkkG z@y(O{=hZ&h?j?IBsqraVCDnL5^iitLeM=(S+3gj6f9h)1x8be)6Sb$EGooW-xk!-` zR-di2q;}u8YR+M#Y;taF6WJVU))x?+_w%J>Rb-*9V)G*(rP+#KCpikaB(D{ysHm8& z=5diWC?C}p66NGy+!H7}sCxPGcDK3FqkW~{^vtJv1^7(cj3`%9)YvHZp$YxDBG@$oom-5jyQSC`9g)6gYpe>`+$m4!3Br?d0Rnnz=x zwO)Him45y}V-n4J`t2R1Tr9RLi;l93ujMvNj~DHJwy->PAxzXw&~0}3g-(OS^`HHc zg1VoIP!?yEl%A`!9+#d}3YR*hjwhxPus$p|S0}>tolarpm)MmWAC#0@G(;PGdI80m9@a%sTqsp<~2v5 zh+XyF^W1n&s6RbF*!KZw^FpcK<4AR7*i1{r2gLU3DNYK5O>-iTF!38@|5HDYs-lpduHMoqa%d>K?c{^6O0Ey{@zH!jtt>Ck zf0pV1H+M+<|I~-J8*+1BJG+TE%)Wm={@-`#|ErZ5mDCDvwJx>JGG?XqHtHB0e3a`J zAbt`}e6M}?2Ftb86*EoOTeqI@s&Y>DR{16-@|sqJ0D^igTXT-`Mob1yjd`uHYiKkm zUx=1+t{&-q|!DBwiIvQhZa zj>EK+&`=g0#ejIPwbkLa{N^Y*!y*z$Oj^e1y?g80Jm&POqoov0OiV&TJcN|aouf7! zYs&{Z-&gS86<%@U=j+c)V}&�y^W9liaehvRM&)+)sM!9kx8^qW@W1S{l{Y)pc4) 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 s{1*xTe?USpYX$O1yBw*bjLKw-xJvKIJ(), findsAtLeast(1)); - expect(find.byKey(const Key('favorite-restaurant-0')), findsOne); + expect(find.text('Restaurant Name'), findsAtLeastNWidgets(1)); + expect(find.bySubtype(), findsAtLeastNWidgets(1)); + expect(find.byKey(const Key('favorite-restaurant-0')), findsOneWidget); verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); verify(() => favoritesService.loadFavorites()).called(1); }); @@ -63,7 +63,7 @@ void main() { await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); - expect(find.bySubtype(), findsAtLeast(1)); + expect(find.bySubtype(), findsAtLeastNWidgets(1)); verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); verify(() => favoritesService.loadFavorites()).called(1); }); @@ -76,7 +76,7 @@ void main() { await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); - expect(find.bySubtype(), findsAtLeast(1)); + expect(find.bySubtype(), findsAtLeastNWidgets(1)); verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); verify(() => favoritesService.loadFavorites()).called(1); }); @@ -89,7 +89,7 @@ void main() { await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); - expect(find.bySubtype(), findsAtLeast(1)); + expect(find.bySubtype(), findsAtLeastNWidgets(1)); verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); verify(() => favoritesService.loadFavorites()).called(1); }); @@ -103,8 +103,8 @@ void main() { await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); - expect(find.bySubtype(), findsAtLeast(1)); - expect(find.byKey(const Key('favorite-restaurant-0')), findsOne); + expect(find.bySubtype(), findsAtLeastNWidgets(1)); + expect(find.byKey(const Key('favorite-restaurant-0')), findsOneWidget); }); } diff --git a/test/widget_tests/restaurant_details_screen_test.dart b/test/widget_tests/restaurant_details_screen_test.dart index 67fff088..406dd3c3 100644 --- a/test/widget_tests/restaurant_details_screen_test.dart +++ b/test/widget_tests/restaurant_details_screen_test.dart @@ -42,9 +42,9 @@ void main() { await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); - expect(find.text('Restaurant Name'), findsOne); - expect(find.text('Open Now'), findsOne); - expect(find.bySubtype(), findsAtLeast(1)); + expect(find.text('Restaurant Name'), findsOneWidget); + expect(find.text('Open Now'), findsOneWidget); + expect(find.bySubtype(), findsAtLeastNWidgets(1)); }); testWidgets('''when successfully load the [DetailsScreen] but fails to load favorites @@ -54,7 +54,7 @@ void main() { await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); - expect(find.bySubtype(), findsOne); + expect(find.bySubtype(), findsOneWidget); }); testWidgets('''if successfully load the [DetailsScreen] and the restaurant is already favorite, @@ -70,9 +70,9 @@ void main() { await tester.tap(find.byKey(const Key('favorite-button'))); await tester.pumpAndSettle(); - expect(find.text('Restaurant Name'), findsOne); - expect(find.text('Open Now'), findsOne); - expect(find.bySubtype(), findsAtLeast(1)); + expect(find.text('Restaurant Name'), findsOneWidget); + expect(find.text('Open Now'), findsOneWidget); + expect(find.bySubtype(), findsAtLeastNWidgets(1)); verify(() => favoritesService.removeFavorite(restaurantId)).called(1); verifyNever(() => favoritesService.addFavorite(any())); }); diff --git a/test/widget_tests/restaurants_page_test.dart b/test/widget_tests/restaurants_page_test.dart index 76644622..48deea70 100644 --- a/test/widget_tests/restaurants_page_test.dart +++ b/test/widget_tests/restaurants_page_test.dart @@ -48,9 +48,9 @@ void main() { await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); - expect(find.text('Restaurant Name'), findsAtLeast(1)); - expect(find.bySubtype(), findsAtLeast(1)); - expect(find.byKey(const Key('restaurant-0')), findsOne); + expect(find.text('Restaurant Name'), findsAtLeastNWidgets(1)); + expect(find.bySubtype(), findsAtLeastNWidgets(1)); + expect(find.byKey(const Key('restaurant-0')), findsOneWidget); verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); }); @@ -62,7 +62,7 @@ void main() { await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); - expect(find.bySubtype(), findsAtLeast(1)); + expect(find.bySubtype(), findsAtLeastNWidgets(1)); verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); }); @@ -74,7 +74,7 @@ void main() { await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); - expect(find.bySubtype(), findsAtLeast(1)); + expect(find.bySubtype(), findsAtLeastNWidgets(1)); verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); }); } From 63a21ca765885b996bc29b2397008313fb4e9151 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 2 Mar 2024 15:48:34 -0300 Subject: [PATCH 67/89] feat: fix test description --- test/golden_test/restauran_tour_test.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/golden_test/restauran_tour_test.dart b/test/golden_test/restauran_tour_test.dart index ba31392b..51156596 100644 --- a/test/golden_test/restauran_tour_test.dart +++ b/test/golden_test/restauran_tour_test.dart @@ -34,7 +34,7 @@ void main() { widget: widgetBuilder(RestaurantsScreen.create()), ); - testGoldens('when [RestaurantTour] loads should show the title on the page and fetch the data', (WidgetTester tester) async { + testGoldens('when [RestaurantTour] loads should show the title on the page and fetch the data for all restaurants', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); @@ -46,7 +46,7 @@ void main() { await screenMatchesGolden(tester, "restauran_tour_content"); }); - testGoldens('when [RestaurantTour] loads should show the title on the page and fetch the data', (WidgetTester tester) async { + testGoldens('when [RestaurantTour] loads should show the title on the page and fetch the data for all favorites', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); await loadAppFonts(); From 740e4468dd930863df300881599386a9e5d798dc Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 2 Mar 2024 15:53:24 -0300 Subject: [PATCH 68/89] feat: setup launch.json --- .vscode/launch.json | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 5d0f1d3e..32c31589 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,13 +1,33 @@ { - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { - "name": "app", + "name": "Integration Tests (debug)", "request": "launch", - "type": "dart" + "type": "dart", + "flutterMode": "debug", + "program": "integration_test/app_test.dart" + }, + { + "name": "RestauranTour (debug)", + "request": "launch", + "type": "dart", + "flutterMode": "debug", + "program": "lib/main.dart" + }, + { + "name": "RestauranTour (profile mode)", + "request": "launch", + "type": "dart", + "flutterMode": "profile", + "program": "lib/main.dart" + }, + { + "name": "RestauranTour (release mode)", + "request": "launch", + "type": "dart", + "flutterMode": "release", + "program": "lib/main.dart" } ] } \ No newline at end of file From 2a150571cbf0ff5baf696c179f4679949235ceb9 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 2 Mar 2024 16:06:43 -0300 Subject: [PATCH 69/89] fix: fail to run on android --- .metadata | 10 +++++----- android/build.gradle | 1 + android/gradle.properties | 2 +- android/settings.gradle | 13 ++----------- 4 files changed, 9 insertions(+), 17 deletions(-) diff --git a/.metadata b/.metadata index e65cd322..a072c7d9 100644 --- a/.metadata +++ b/.metadata @@ -4,7 +4,7 @@ # This file should be version controlled and should not be manually edited. version: - revision: "67457e669f79e9f8d13d7a68fe09775fefbb79f4" + revision: "d211f42860350d914a5ad8102f9ec32764dc6d06" channel: "stable" project_type: app @@ -13,11 +13,11 @@ project_type: app migration: platforms: - platform: root - create_revision: 67457e669f79e9f8d13d7a68fe09775fefbb79f4 - base_revision: 67457e669f79e9f8d13d7a68fe09775fefbb79f4 + create_revision: d211f42860350d914a5ad8102f9ec32764dc6d06 + base_revision: d211f42860350d914a5ad8102f9ec32764dc6d06 - platform: android - create_revision: 67457e669f79e9f8d13d7a68fe09775fefbb79f4 - base_revision: 67457e669f79e9f8d13d7a68fe09775fefbb79f4 + create_revision: d211f42860350d914a5ad8102f9ec32764dc6d06 + base_revision: d211f42860350d914a5ad8102f9ec32764dc6d06 # User provided section diff --git a/android/build.gradle b/android/build.gradle index e83fb5da..f7eb7f63 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -6,6 +6,7 @@ buildscript { } dependencies { + classpath 'com.android.tools.build:gradle:7.3.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/android/gradle.properties b/android/gradle.properties index 598d13fe..94adc3a3 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,3 +1,3 @@ -org.gradle.jvmargs=-Xmx4G +org.gradle.jvmargs=-Xmx1536M android.useAndroidX=true android.enableJetifier=true diff --git a/android/settings.gradle b/android/settings.gradle index 7cd71285..55c4ca8b 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -10,20 +10,11 @@ pluginManagement { includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") - repositories { - google() - mavenCentral() - gradlePluginPortal() - } - plugins { id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false } } -plugins { - id "dev.flutter.flutter-plugin-loader" version "1.0.0" - id "com.android.application" version "7.3.0" apply false -} - include ":app" + +apply from: "${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle/app_plugin_loader.gradle" From a7dd867151180041afb490d39a1b6175cdbce714 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 2 Mar 2024 16:24:04 -0300 Subject: [PATCH 70/89] feat: refactor imports --- lib/app.dart | 8 ++------ lib/components/rt_empty_widget.dart | 3 +-- lib/components/rt_error_widget.dart | 6 ++---- lib/components/rt_image_network.dart | 2 +- lib/components/rt_item_widget.dart | 9 +++------ lib/components/rt_review_widget.dart | 8 +++----- lib/components/rt_shimmer_loading.dart | 4 ++-- lib/core/core.dart | 7 +++++++ lib/features/details/details_screen.dart | 16 +++++----------- lib/features/restaurants/restaurants_screen.dart | 9 ++------- lib/{core => theme}/rt_colors.dart | 0 lib/{core => theme}/rt_text_style.dart | 2 +- lib/{core/theme.dart => theme/rt_theme.dart} | 2 +- lib/theme/theme.dart | 3 +++ test/widget_for_tests.dart | 6 ++---- 15 files changed, 35 insertions(+), 50 deletions(-) create mode 100644 lib/core/core.dart rename lib/{core => theme}/rt_colors.dart (100%) rename lib/{core => theme}/rt_text_style.dart (96%) rename lib/{core/theme.dart => theme/rt_theme.dart} (86%) create mode 100644 lib/theme/theme.dart diff --git a/lib/app.dart b/lib/app.dart index 5ce639ff..855b4d50 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -1,9 +1,5 @@ -import 'package:flutter/material.dart'; -import 'package:restaurantour/core/inject.dart'; -import 'package:restaurantour/core/routes.dart'; -import 'package:flutter_localizations/flutter_localizations.dart'; -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; -import 'package:restaurantour/core/theme.dart'; +import 'package:restaurantour/core/core.dart'; +import 'package:restaurantour/theme/theme.dart'; class App extends StatelessWidget { const App({super.key}); diff --git a/lib/components/rt_empty_widget.dart b/lib/components/rt_empty_widget.dart index c70411f2..8fdc9014 100644 --- a/lib/components/rt_empty_widget.dart +++ b/lib/components/rt_empty_widget.dart @@ -1,5 +1,4 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:restaurantour/core/core.dart'; class RTEmptyWidget extends StatelessWidget { const RTEmptyWidget({super.key}); diff --git a/lib/components/rt_error_widget.dart b/lib/components/rt_error_widget.dart index 387a3fbc..34200ddf 100644 --- a/lib/components/rt_error_widget.dart +++ b/lib/components/rt_error_widget.dart @@ -1,7 +1,5 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_svg/svg.dart'; -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; -import 'package:restaurantour/core/rt_text_style.dart'; +import 'package:restaurantour/core/core.dart'; +import 'package:restaurantour/theme/theme.dart'; class RTErrorWidget extends StatelessWidget { final Future Function()? onTryAgain; diff --git a/lib/components/rt_image_network.dart b/lib/components/rt_image_network.dart index a72180dc..104ef0eb 100644 --- a/lib/components/rt_image_network.dart +++ b/lib/components/rt_image_network.dart @@ -1,4 +1,4 @@ -import 'package:flutter/widgets.dart'; +import 'package:restaurantour/core/core.dart'; class RTImageNetwork { Widget build({required String location, required Widget errorWidget}) { diff --git a/lib/components/rt_item_widget.dart b/lib/components/rt_item_widget.dart index 83852b30..8a8fce55 100644 --- a/lib/components/rt_item_widget.dart +++ b/lib/components/rt_item_widget.dart @@ -1,10 +1,7 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; -import 'package:flutter_svg/svg.dart'; -import 'package:restaurantour/components/rt_image_network.dart'; -import 'package:restaurantour/core/rt_colors.dart'; -import 'package:restaurantour/core/rt_text_style.dart'; +import 'package:restaurantour/core/core.dart'; +import 'package:restaurantour/theme/theme.dart'; import 'package:restaurantour/models/dto.dart'; +import 'package:restaurantour/components/rt_image_network.dart'; class RTItemWidget extends StatelessWidget { const RTItemWidget({ diff --git a/lib/components/rt_review_widget.dart b/lib/components/rt_review_widget.dart index 28702565..2d0ee470 100644 --- a/lib/components/rt_review_widget.dart +++ b/lib/components/rt_review_widget.dart @@ -1,9 +1,7 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_svg/svg.dart'; -import 'package:restaurantour/components/rt_image_network.dart'; -import 'package:restaurantour/core/rt_colors.dart'; -import 'package:restaurantour/core/rt_text_style.dart'; +import 'package:restaurantour/core/core.dart'; +import 'package:restaurantour/theme/theme.dart'; import 'package:restaurantour/models/dto.dart'; +import 'package:restaurantour/components/rt_image_network.dart'; class RTReviewWidget extends StatelessWidget { const RTReviewWidget({super.key, required this.review, required this.isFirstItem, required this.imageNetwork}); diff --git a/lib/components/rt_shimmer_loading.dart b/lib/components/rt_shimmer_loading.dart index 7bbc0554..49fbf241 100644 --- a/lib/components/rt_shimmer_loading.dart +++ b/lib/components/rt_shimmer_loading.dart @@ -1,6 +1,6 @@ -import 'package:flutter/material.dart'; -import 'package:restaurantour/core/rt_colors.dart'; import 'package:shimmer/shimmer.dart'; +import 'package:restaurantour/core/core.dart'; +import 'package:restaurantour/theme/theme.dart'; class RTShimmerLoading extends StatelessWidget { const RTShimmerLoading({super.key}); diff --git a/lib/core/core.dart b/lib/core/core.dart new file mode 100644 index 00000000..07ec8f4c --- /dev/null +++ b/lib/core/core.dart @@ -0,0 +1,7 @@ +export 'package:flutter_svg/svg.dart'; +export 'package:flutter/material.dart'; +export 'package:provider/provider.dart'; +export 'package:restaurantour/core/inject.dart'; +export 'package:restaurantour/core/routes.dart'; +export 'package:flutter_localizations/flutter_localizations.dart'; +export 'package:flutter_gen/gen_l10n/app_localizations.dart'; diff --git a/lib/features/details/details_screen.dart b/lib/features/details/details_screen.dart index 793928e8..267aa8b1 100644 --- a/lib/features/details/details_screen.dart +++ b/lib/features/details/details_screen.dart @@ -1,16 +1,10 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_svg/svg.dart'; -import 'package:provider/provider.dart'; -import 'package:restaurantour/components/rt_components.dart'; -import 'package:restaurantour/core/inject.dart'; -import 'package:restaurantour/core/routes.dart'; -import 'package:restaurantour/core/rt_colors.dart'; -import 'package:restaurantour/core/rt_text_style.dart'; -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; -import 'package:restaurantour/features/details/details_view_model.dart'; +import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/models/dto.dart'; -import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/theme/theme.dart'; +import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/services/favorite_service.dart'; +import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/features/details/details_view_model.dart'; class DetailsScreen extends StatefulWidget { const DetailsScreen({super.key}); diff --git a/lib/features/restaurants/restaurants_screen.dart b/lib/features/restaurants/restaurants_screen.dart index 6386bb0e..a49098b3 100644 --- a/lib/features/restaurants/restaurants_screen.dart +++ b/lib/features/restaurants/restaurants_screen.dart @@ -1,15 +1,10 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; -import 'package:provider/provider.dart'; -import 'package:restaurantour/core/routes.dart'; -import 'package:restaurantour/core/rt_colors.dart'; -import 'package:restaurantour/core/inject.dart'; -import 'package:restaurantour/core/rt_text_style.dart'; +import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page.dart'; import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_page.dart'; import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; +import 'package:restaurantour/theme/theme.dart'; class RestaurantsScreen extends StatefulWidget { const RestaurantsScreen({super.key}); diff --git a/lib/core/rt_colors.dart b/lib/theme/rt_colors.dart similarity index 100% rename from lib/core/rt_colors.dart rename to lib/theme/rt_colors.dart diff --git a/lib/core/rt_text_style.dart b/lib/theme/rt_text_style.dart similarity index 96% rename from lib/core/rt_text_style.dart rename to lib/theme/rt_text_style.dart index 20688841..9cdcff00 100644 --- a/lib/core/rt_text_style.dart +++ b/lib/theme/rt_text_style.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:restaurantour/core/rt_colors.dart'; +import 'package:restaurantour/theme/rt_colors.dart'; class RTTextStyle { static headingH4({Color color = RTColors.defaultText}) => TextStyle(fontFamily: 'Lora', fontSize: 28.0, fontWeight: FontWeight.bold, color: color); diff --git a/lib/core/theme.dart b/lib/theme/rt_theme.dart similarity index 86% rename from lib/core/theme.dart rename to lib/theme/rt_theme.dart index bef77db7..b29d413f 100644 --- a/lib/core/theme.dart +++ b/lib/theme/rt_theme.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:restaurantour/core/rt_colors.dart'; +import 'package:restaurantour/theme/rt_colors.dart'; class RTThemeData { static final themeData = ThemeData( diff --git a/lib/theme/theme.dart b/lib/theme/theme.dart new file mode 100644 index 00000000..c10c53b3 --- /dev/null +++ b/lib/theme/theme.dart @@ -0,0 +1,3 @@ +export 'package:restaurantour/theme/rt_colors.dart'; +export 'package:restaurantour/theme/rt_text_style.dart'; +export 'package:restaurantour/theme/rt_theme.dart'; diff --git a/test/widget_for_tests.dart b/test/widget_for_tests.dart index 1fb2917e..e90d70c6 100644 --- a/test/widget_for_tests.dart +++ b/test/widget_for_tests.dart @@ -1,7 +1,5 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; -import 'package:flutter_localizations/flutter_localizations.dart'; -import 'package:restaurantour/core/theme.dart'; +import 'package:restaurantour/core/core.dart'; +import 'package:restaurantour/theme/theme.dart'; Widget widgetBuilder(Widget child) { return MaterialApp( From 5e3f47815ff2c2ada08e63436b240810caaec3e9 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 2 Mar 2024 16:29:17 -0300 Subject: [PATCH 71/89] feat: use appBarTheme --- lib/features/details/details_screen.dart | 15 ++------------- lib/features/restaurants/restaurants_screen.dart | 3 --- lib/theme/rt_theme.dart | 5 +++++ 3 files changed, 7 insertions(+), 16 deletions(-) diff --git a/lib/features/details/details_screen.dart b/lib/features/details/details_screen.dart index 267aa8b1..caed1e03 100644 --- a/lib/features/details/details_screen.dart +++ b/lib/features/details/details_screen.dart @@ -61,31 +61,20 @@ class _DetailsScreenState extends State { if (model!.status.isLoading) { return Scaffold( - appBar: AppBar( - elevation: 2, - surfaceTintColor: RTColors.background, - shadowColor: RTColors.primaryFill, - ), + appBar: AppBar(), body: const Center(child: CircularProgressIndicator()), ); } if (model!.status.isError) { return Scaffold( - appBar: AppBar( - elevation: 2, - surfaceTintColor: RTColors.background, - shadowColor: RTColors.primaryFill, - ), + appBar: AppBar(), body: const RTErrorWidget(), ); } return Scaffold( appBar: AppBar( - elevation: 2, - surfaceTintColor: RTColors.background, - shadowColor: RTColors.primaryFill, title: Text( model!.restaurant.name ?? '', style: RTTextStyle.headingH6(), diff --git a/lib/features/restaurants/restaurants_screen.dart b/lib/features/restaurants/restaurants_screen.dart index a49098b3..55215271 100644 --- a/lib/features/restaurants/restaurants_screen.dart +++ b/lib/features/restaurants/restaurants_screen.dart @@ -39,9 +39,6 @@ class _RestaurantsScreenState extends State { length: 2, child: Scaffold( appBar: AppBar( - elevation: 2, - surfaceTintColor: RTColors.background, - shadowColor: RTColors.primaryFill, title: Text( AppLocalizations.of(context)!.restaurantListRestauranTour, style: RTTextStyle.headingH6(), diff --git a/lib/theme/rt_theme.dart b/lib/theme/rt_theme.dart index b29d413f..fbce7419 100644 --- a/lib/theme/rt_theme.dart +++ b/lib/theme/rt_theme.dart @@ -5,6 +5,11 @@ class RTThemeData { static final themeData = ThemeData( visualDensity: VisualDensity.adaptivePlatformDensity, useMaterial3: true, + appBarTheme: const AppBarTheme( + elevation: 2, + surfaceTintColor: RTColors.background, + shadowColor: RTColors.primaryFill, + ), colorScheme: const ColorScheme.light( primary: RTColors.primaryFill, onSurface: RTColors.secondaryText, From c3f2cbc86f414f8e3ac369e5bd29caf5cd8d6d5f Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 2 Mar 2024 16:50:10 -0300 Subject: [PATCH 72/89] feat: refactor use theme colors --- lib/components/rt_item_widget.dart | 7 +++--- lib/components/rt_review_widget.dart | 6 +++-- lib/components/rt_shimmer_loading.dart | 31 +++++++++++++++++------- lib/features/details/details_screen.dart | 12 +++++---- lib/theme/rt_colors.dart | 2 +- lib/theme/rt_theme.dart | 5 ++++ lib/theme/theme.dart | 1 - 7 files changed, 43 insertions(+), 21 deletions(-) diff --git a/lib/components/rt_item_widget.dart b/lib/components/rt_item_widget.dart index 8a8fce55..d1d432b2 100644 --- a/lib/components/rt_item_widget.dart +++ b/lib/components/rt_item_widget.dart @@ -25,10 +25,11 @@ class RTItemWidget extends StatelessWidget { @override Widget build(BuildContext context) { + final theme = Theme.of(context).colorScheme; return Padding( padding: const EdgeInsets.all(12.0).copyWith(top: isFirstItem ? 16 : 0), child: Material( - color: Colors.white, + color: theme.primaryContainer, borderRadius: const BorderRadius.all(Radius.circular(8)), elevation: 2, child: InkWell( @@ -53,7 +54,7 @@ class RTItemWidget extends StatelessWidget { child: imageNetwork.build( location: heroImage, errorWidget: Container( - color: RTColors.placeholder, + color: theme.secondaryContainer, child: const Icon(Icons.image_not_supported_rounded), ), ), @@ -97,7 +98,7 @@ class RTItemWidget extends StatelessWidget { height: 8, decoration: BoxDecoration( shape: BoxShape.circle, - color: restaurant.isOpen ? RTColors.open : RTColors.closed, + color: restaurant.isOpen ? theme.onPrimary : theme.onError, ), ), ), diff --git a/lib/components/rt_review_widget.dart b/lib/components/rt_review_widget.dart index 2d0ee470..61e70e18 100644 --- a/lib/components/rt_review_widget.dart +++ b/lib/components/rt_review_widget.dart @@ -13,9 +13,11 @@ class RTReviewWidget extends StatelessWidget { @override Widget build(BuildContext context) { + final theme = Theme.of(context).colorScheme; + return Column( children: [ - if (!isFirstItem) const Divider(color: RTColors.dividerLine), + if (!isFirstItem) Divider(color: theme.outline), Padding( padding: const EdgeInsets.symmetric(vertical: 16.0), child: SizedBox( @@ -42,7 +44,7 @@ class RTReviewWidget extends StatelessWidget { child: imageNetwork.build( location: review.user?.imageUrl ?? '', errorWidget: Container( - color: RTColors.placeholder, + color: theme.secondaryContainer, child: const Icon(Icons.person), ), ), diff --git a/lib/components/rt_shimmer_loading.dart b/lib/components/rt_shimmer_loading.dart index 49fbf241..47d93976 100644 --- a/lib/components/rt_shimmer_loading.dart +++ b/lib/components/rt_shimmer_loading.dart @@ -1,6 +1,5 @@ import 'package:shimmer/shimmer.dart'; import 'package:restaurantour/core/core.dart'; -import 'package:restaurantour/theme/theme.dart'; class RTShimmerLoading extends StatelessWidget { const RTShimmerLoading({super.key}); @@ -27,11 +26,13 @@ class TileLoading extends StatelessWidget { @override Widget build(BuildContext context) { + final theme = Theme.of(context).colorScheme; + return Padding( padding: const EdgeInsets.all(12.0), child: Container( decoration: BoxDecoration( - border: Border.all(strokeAlign: 1, color: RTColors.dividerLine), + border: Border.all(strokeAlign: 1, color: theme.outline), borderRadius: const BorderRadius.all(Radius.circular(8)), ), height: 104, @@ -43,9 +44,9 @@ class TileLoading extends StatelessWidget { child: Container( height: 88, width: 88, - decoration: const BoxDecoration( - color: RTColors.placeholder, - borderRadius: BorderRadius.all(Radius.circular(8)), + decoration: BoxDecoration( + color: theme.secondaryContainer, + borderRadius: const BorderRadius.all(Radius.circular(8)), ), ), ), @@ -57,26 +58,38 @@ class TileLoading extends StatelessWidget { children: [ Container( height: 18, - decoration: const BoxDecoration(borderRadius: BorderRadius.all(Radius.circular(8)), color: RTColors.placeholder), + decoration: BoxDecoration( + borderRadius: const BorderRadius.all(Radius.circular(8)), + color: theme.secondaryContainer, + ), ), const SizedBox(height: 4), Container( height: 18, - decoration: const BoxDecoration(borderRadius: BorderRadius.all(Radius.circular(8)), color: RTColors.placeholder), + decoration: BoxDecoration( + borderRadius: const BorderRadius.all(Radius.circular(8)), + color: theme.secondaryContainer, + ), ), const SizedBox(height: 4), Expanded( child: Container( height: 18, width: 40, - decoration: const BoxDecoration(borderRadius: BorderRadius.all(Radius.circular(8)), color: RTColors.placeholder), + decoration: BoxDecoration( + borderRadius: const BorderRadius.all(Radius.circular(8)), + color: theme.secondaryContainer, + ), ), ), const SizedBox(height: 4), Container( height: 12, width: 80, - decoration: const BoxDecoration(borderRadius: BorderRadius.all(Radius.circular(8)), color: RTColors.placeholder), + decoration: BoxDecoration( + borderRadius: const BorderRadius.all(Radius.circular(8)), + color: theme.secondaryContainer, + ), ), ], ), diff --git a/lib/features/details/details_screen.dart b/lib/features/details/details_screen.dart index caed1e03..92efefdb 100644 --- a/lib/features/details/details_screen.dart +++ b/lib/features/details/details_screen.dart @@ -58,6 +58,7 @@ class _DetailsScreenState extends State { @override Widget build(BuildContext context) { model = context.watch(); + final theme = Theme.of(context).colorScheme; if (model!.status.isLoading) { return Scaffold( @@ -89,7 +90,7 @@ class _DetailsScreenState extends State { key: const Key('favorite-button'), icon: Icon( (model!.isFavorite) ? Icons.favorite : Icons.favorite_border, - color: RTColors.primaryFill, + color: theme.primary, ), onPressed: () => model!.toggleFavorite(), ), @@ -146,7 +147,7 @@ class _DetailsScreenState extends State { height: 8, decoration: BoxDecoration( shape: BoxShape.circle, - color: restaurant.isOpen ? RTColors.open : RTColors.closed, + color: restaurant.isOpen ? theme.onPrimary : theme.onError, ), ), ), @@ -204,9 +205,10 @@ class _Divider extends StatelessWidget { @override Widget build(BuildContext context) { - return const Padding( - padding: EdgeInsets.symmetric(vertical: 24.0), - child: Divider(color: RTColors.dividerLine), + final theme = Theme.of(context).colorScheme; + return Padding( + padding: const EdgeInsets.symmetric(vertical: 24.0), + child: Divider(color: theme.outline), ); } } diff --git a/lib/theme/rt_colors.dart b/lib/theme/rt_colors.dart index daac29fa..61c3b57a 100644 --- a/lib/theme/rt_colors.dart +++ b/lib/theme/rt_colors.dart @@ -4,10 +4,10 @@ class RTColors { RTColors._(); static const open = Color(0xff5cd512); - static const star = Color(0xfffeba00); static const closed = Color(0xffd96762); static const background = Color(0xfffafafa); static const placeholder = Color(0xffeeeeee); + static const white = Color(0xffffffff); static const dividerLine = Color(0xffeeeeee); static const primaryFill = Color(0xff000000); static const defaultText = Color(0xff000000); diff --git a/lib/theme/rt_theme.dart b/lib/theme/rt_theme.dart index fbce7419..ce094129 100644 --- a/lib/theme/rt_theme.dart +++ b/lib/theme/rt_theme.dart @@ -14,6 +14,11 @@ class RTThemeData { primary: RTColors.primaryFill, onSurface: RTColors.secondaryText, background: RTColors.background, + primaryContainer: RTColors.white, + secondaryContainer: RTColors.placeholder, + onPrimary: RTColors.open, + onError: RTColors.closed, + outline: RTColors.dividerLine, ), ); } diff --git a/lib/theme/theme.dart b/lib/theme/theme.dart index c10c53b3..bd1c63a7 100644 --- a/lib/theme/theme.dart +++ b/lib/theme/theme.dart @@ -1,3 +1,2 @@ -export 'package:restaurantour/theme/rt_colors.dart'; export 'package:restaurantour/theme/rt_text_style.dart'; export 'package:restaurantour/theme/rt_theme.dart'; From 71ac5135deaafa9dc315284bb588621480b5821d Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 2 Mar 2024 16:50:32 -0300 Subject: [PATCH 73/89] feat: refactor restaurants_view_model --- lib/features/restaurants/restaurants_view_model.dart | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/features/restaurants/restaurants_view_model.dart b/lib/features/restaurants/restaurants_view_model.dart index 2b7f3bf8..d36dafb9 100644 --- a/lib/features/restaurants/restaurants_view_model.dart +++ b/lib/features/restaurants/restaurants_view_model.dart @@ -24,6 +24,9 @@ class RestaurantsViewModel with ChangeNotifier { final RestaurantRepository restaurantRepository; final FavoriteService favoritesService; final int paginationSize = 20; + + final List _restaurantsCache = []; + RestaurantsViewModel({required this.favoritesService, required this.restaurantRepository}); RestaurantsStatus restaurantsStatus = RestaurantsStatus.loading; @@ -31,7 +34,6 @@ class RestaurantsViewModel with ChangeNotifier { RestaurantQueryResultDto? _restaurantsQuery; List _favorites = []; - List _restaurantsCache = []; int get allRestaurantsQueryTotal => _restaurantsQuery?.total ?? 0; List get favoritesRestaurantList => _favorites; @@ -71,10 +73,13 @@ class RestaurantsViewModel with ChangeNotifier { try { _emitFavoriteLoading(); final favoritesIds = await favoritesService.loadFavorites(); + _favorites = restaurantsList.where((restaurant) => favoritesIds.contains(restaurant.id)).toList(); final favoritesToFetchInCache = await _findFavoritesNotLoadedInMemory(inMemory: restaurantsList, favoritesIds: favoritesIds); + _favorites.addAll(_restaurantsCache.where((restaurant) => favoritesToFetchInCache.contains(restaurant.id)).toList()); final favoritesToFetch = await _findFavoritesNotLoadedInMemory(inMemory: _restaurantsCache, favoritesIds: favoritesIds); + await _loadFavoritesInMemory(favoritesToFetch); _favorites.isEmpty ? _emitFavoriteEmpty() : _emitFavoriteContent(); } catch (e) { From 159977f9ed597e38483d1ee781fc803bb7b1fc22 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 2 Mar 2024 16:54:02 -0300 Subject: [PATCH 74/89] feat: paralelize api calls --- lib/features/restaurants/restaurants_view_model.dart | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/features/restaurants/restaurants_view_model.dart b/lib/features/restaurants/restaurants_view_model.dart index d36dafb9..a905611e 100644 --- a/lib/features/restaurants/restaurants_view_model.dart +++ b/lib/features/restaurants/restaurants_view_model.dart @@ -96,9 +96,11 @@ class RestaurantsViewModel with ChangeNotifier { } Future _loadFavoritesInMemory(List favorites) async { + List loadFavoritesList = []; for (var favoriteId in favorites) { - await _loadSingleFavorite(favoriteId); + loadFavoritesList.add(_loadSingleFavorite(favoriteId)); } + await Future.wait(loadFavoritesList); } Future _loadSingleFavorite(String favoriteId) async { From 8d54374fe11e224f4641b15c245d2c1d533cbf06 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 2 Mar 2024 18:07:14 -0300 Subject: [PATCH 75/89] feat: refactor theme colors --- lib/components/rt_item_widget.dart | 8 +- lib/components/rt_review_widget.dart | 6 +- lib/components/rt_shimmer_loading.dart | 15 ++-- lib/features/details/details_screen.dart | 10 +-- lib/theme/rt_theme.dart | 88 +++++++++++++++++-- test/widget_tests/favorites_page_test.dart | 2 + .../restaurant_details_screen_test.dart | 2 + test/widget_tests/restaurants_page_test.dart | 2 + 8 files changed, 109 insertions(+), 24 deletions(-) diff --git a/lib/components/rt_item_widget.dart b/lib/components/rt_item_widget.dart index d1d432b2..af365426 100644 --- a/lib/components/rt_item_widget.dart +++ b/lib/components/rt_item_widget.dart @@ -25,11 +25,11 @@ class RTItemWidget extends StatelessWidget { @override Widget build(BuildContext context) { - final theme = Theme.of(context).colorScheme; + final theme = Theme.of(context).extension()!; return Padding( padding: const EdgeInsets.all(12.0).copyWith(top: isFirstItem ? 16 : 0), child: Material( - color: theme.primaryContainer, + color: theme.whiteColor, borderRadius: const BorderRadius.all(Radius.circular(8)), elevation: 2, child: InkWell( @@ -54,7 +54,7 @@ class RTItemWidget extends StatelessWidget { child: imageNetwork.build( location: heroImage, errorWidget: Container( - color: theme.secondaryContainer, + color: theme.placeholderColor, child: const Icon(Icons.image_not_supported_rounded), ), ), @@ -98,7 +98,7 @@ class RTItemWidget extends StatelessWidget { height: 8, decoration: BoxDecoration( shape: BoxShape.circle, - color: restaurant.isOpen ? theme.onPrimary : theme.onError, + color: restaurant.isOpen ? theme.openColor : theme.closedColor, ), ), ), diff --git a/lib/components/rt_review_widget.dart b/lib/components/rt_review_widget.dart index 61e70e18..40e45c6f 100644 --- a/lib/components/rt_review_widget.dart +++ b/lib/components/rt_review_widget.dart @@ -13,11 +13,11 @@ class RTReviewWidget extends StatelessWidget { @override Widget build(BuildContext context) { - final theme = Theme.of(context).colorScheme; + final theme = Theme.of(context).extension()!; return Column( children: [ - if (!isFirstItem) Divider(color: theme.outline), + if (!isFirstItem) Divider(color: theme.dividerLineColor), Padding( padding: const EdgeInsets.symmetric(vertical: 16.0), child: SizedBox( @@ -44,7 +44,7 @@ class RTReviewWidget extends StatelessWidget { child: imageNetwork.build( location: review.user?.imageUrl ?? '', errorWidget: Container( - color: theme.secondaryContainer, + color: theme.placeholderColor, child: const Icon(Icons.person), ), ), diff --git a/lib/components/rt_shimmer_loading.dart b/lib/components/rt_shimmer_loading.dart index 47d93976..026f07ce 100644 --- a/lib/components/rt_shimmer_loading.dart +++ b/lib/components/rt_shimmer_loading.dart @@ -1,3 +1,4 @@ +import 'package:restaurantour/theme/theme.dart'; import 'package:shimmer/shimmer.dart'; import 'package:restaurantour/core/core.dart'; @@ -26,13 +27,13 @@ class TileLoading extends StatelessWidget { @override Widget build(BuildContext context) { - final theme = Theme.of(context).colorScheme; + final theme = Theme.of(context).extension()!; return Padding( padding: const EdgeInsets.all(12.0), child: Container( decoration: BoxDecoration( - border: Border.all(strokeAlign: 1, color: theme.outline), + border: Border.all(strokeAlign: 1, color: theme.dividerLineColor), borderRadius: const BorderRadius.all(Radius.circular(8)), ), height: 104, @@ -45,7 +46,7 @@ class TileLoading extends StatelessWidget { height: 88, width: 88, decoration: BoxDecoration( - color: theme.secondaryContainer, + color: theme.placeholderColor, borderRadius: const BorderRadius.all(Radius.circular(8)), ), ), @@ -60,7 +61,7 @@ class TileLoading extends StatelessWidget { height: 18, decoration: BoxDecoration( borderRadius: const BorderRadius.all(Radius.circular(8)), - color: theme.secondaryContainer, + color: theme.placeholderColor, ), ), const SizedBox(height: 4), @@ -68,7 +69,7 @@ class TileLoading extends StatelessWidget { height: 18, decoration: BoxDecoration( borderRadius: const BorderRadius.all(Radius.circular(8)), - color: theme.secondaryContainer, + color: theme.placeholderColor, ), ), const SizedBox(height: 4), @@ -78,7 +79,7 @@ class TileLoading extends StatelessWidget { width: 40, decoration: BoxDecoration( borderRadius: const BorderRadius.all(Radius.circular(8)), - color: theme.secondaryContainer, + color: theme.placeholderColor, ), ), ), @@ -88,7 +89,7 @@ class TileLoading extends StatelessWidget { width: 80, decoration: BoxDecoration( borderRadius: const BorderRadius.all(Radius.circular(8)), - color: theme.secondaryContainer, + color: theme.placeholderColor, ), ), ], diff --git a/lib/features/details/details_screen.dart b/lib/features/details/details_screen.dart index 92efefdb..12240a64 100644 --- a/lib/features/details/details_screen.dart +++ b/lib/features/details/details_screen.dart @@ -58,7 +58,7 @@ class _DetailsScreenState extends State { @override Widget build(BuildContext context) { model = context.watch(); - final theme = Theme.of(context).colorScheme; + final theme = Theme.of(context).extension()!; if (model!.status.isLoading) { return Scaffold( @@ -90,7 +90,7 @@ class _DetailsScreenState extends State { key: const Key('favorite-button'), icon: Icon( (model!.isFavorite) ? Icons.favorite : Icons.favorite_border, - color: theme.primary, + color: theme.primaryFillColor, ), onPressed: () => model!.toggleFavorite(), ), @@ -147,7 +147,7 @@ class _DetailsScreenState extends State { height: 8, decoration: BoxDecoration( shape: BoxShape.circle, - color: restaurant.isOpen ? theme.onPrimary : theme.onError, + color: restaurant.isOpen ? theme.openColor : theme.closedColor, ), ), ), @@ -205,10 +205,10 @@ class _Divider extends StatelessWidget { @override Widget build(BuildContext context) { - final theme = Theme.of(context).colorScheme; + final theme = Theme.of(context).extension()!; return Padding( padding: const EdgeInsets.symmetric(vertical: 24.0), - child: Divider(color: theme.outline), + child: Divider(color: theme.dividerLineColor), ); } } diff --git a/lib/theme/rt_theme.dart b/lib/theme/rt_theme.dart index ce094129..c14e3c39 100644 --- a/lib/theme/rt_theme.dart +++ b/lib/theme/rt_theme.dart @@ -2,6 +2,18 @@ import 'package:flutter/material.dart'; import 'package:restaurantour/theme/rt_colors.dart'; class RTThemeData { + static get _themeExtension => RTThemeExtension( + openColor: RTColors.open, + closedColor: RTColors.closed, + backgroundColor: RTColors.background, + placeholderColor: RTColors.placeholder, + whiteColor: RTColors.white, + dividerLineColor: RTColors.dividerLine, + primaryFillColor: RTColors.primaryFill, + defaultTextColor: RTColors.defaultText, + secondaryTextColor: RTColors.secondaryText, + ); + static final themeData = ThemeData( visualDensity: VisualDensity.adaptivePlatformDensity, useMaterial3: true, @@ -14,11 +26,77 @@ class RTThemeData { primary: RTColors.primaryFill, onSurface: RTColors.secondaryText, background: RTColors.background, - primaryContainer: RTColors.white, - secondaryContainer: RTColors.placeholder, - onPrimary: RTColors.open, - onError: RTColors.closed, - outline: RTColors.dividerLine, ), + extensions: [ + _themeExtension, + ], ); } + +class RTThemeExtension extends ThemeExtension { + RTThemeExtension({ + required this.openColor, + required this.closedColor, + required this.backgroundColor, + required this.placeholderColor, + required this.whiteColor, + required this.dividerLineColor, + required this.primaryFillColor, + required this.defaultTextColor, + required this.secondaryTextColor, + }); + + final Color openColor; + final Color closedColor; + final Color backgroundColor; + final Color placeholderColor; + final Color whiteColor; + final Color dividerLineColor; + final Color primaryFillColor; + final Color defaultTextColor; + final Color secondaryTextColor; + + @override + ThemeExtension copyWith({ + Color? openColor, + Color? closedColor, + Color? backgroundColor, + Color? placeholderColor, + Color? whiteColor, + Color? dividerLineColor, + Color? primaryFillColor, + Color? defaultTextColor, + Color? secondaryTextColor, + }) { + return RTThemeExtension( + openColor: openColor ?? this.openColor, + closedColor: closedColor ?? this.closedColor, + backgroundColor: backgroundColor ?? this.backgroundColor, + placeholderColor: placeholderColor ?? this.placeholderColor, + whiteColor: whiteColor ?? this.whiteColor, + dividerLineColor: dividerLineColor ?? this.dividerLineColor, + primaryFillColor: primaryFillColor ?? this.primaryFillColor, + defaultTextColor: defaultTextColor ?? this.defaultTextColor, + secondaryTextColor: secondaryTextColor ?? this.secondaryTextColor, + ); + } + + @override + ThemeExtension lerp(covariant ThemeExtension? other, double t) { + if (other is! RTThemeExtension) { + return this; + } + + return RTThemeExtension( + openColor: Color.lerp(openColor, other.openColor, t)!, + closedColor: Color.lerp(closedColor, other.closedColor, t)!, + backgroundColor: Color.lerp(backgroundColor, other.backgroundColor, t)!, + placeholderColor: Color.lerp(placeholderColor, other.placeholderColor, t)!, + whiteColor: Color.lerp(whiteColor, other.whiteColor, t)!, + dividerLineColor: Color.lerp(dividerLineColor, other.dividerLineColor, t)!, + primaryFillColor: Color.lerp(primaryFillColor, other.primaryFillColor, t)!, + defaultTextColor: Color.lerp(defaultTextColor, other.defaultTextColor, t)!, + secondaryTextColor: Color.lerp(secondaryTextColor, other.secondaryTextColor, t)!, + ); + } +} diff --git a/test/widget_tests/favorites_page_test.dart b/test/widget_tests/favorites_page_test.dart index 69ef4b88..0fa91431 100644 --- a/test/widget_tests/favorites_page_test.dart +++ b/test/widget_tests/favorites_page_test.dart @@ -11,6 +11,7 @@ import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; +import 'package:restaurantour/theme/theme.dart'; import '../mocks/mocks.dart'; @@ -30,6 +31,7 @@ void main() { Widget widgetBuilder() => MaterialApp( localizationsDelegates: localizationsDelegates, debugShowCheckedModeBanner: false, + theme: RTThemeData.themeData, home: ChangeNotifierProvider( create: (context) { final model = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); diff --git a/test/widget_tests/restaurant_details_screen_test.dart b/test/widget_tests/restaurant_details_screen_test.dart index 406dd3c3..f5a3bc1a 100644 --- a/test/widget_tests/restaurant_details_screen_test.dart +++ b/test/widget_tests/restaurant_details_screen_test.dart @@ -9,6 +9,7 @@ import 'package:restaurantour/features/details/details_screen.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; import 'package:restaurantour/models/dto.dart'; +import 'package:restaurantour/theme/theme.dart'; import '../mocks/mocks.dart'; @@ -30,6 +31,7 @@ void main() { Widget widgetBuilder() => MaterialApp( localizationsDelegates: localizationsDelegates, debugShowCheckedModeBanner: false, + theme: RTThemeData.themeData, home: DetailsScreen.create(restaurantId: RestaurantDto.fixture().id), ); diff --git a/test/widget_tests/restaurants_page_test.dart b/test/widget_tests/restaurants_page_test.dart index 48deea70..ac7f92b6 100644 --- a/test/widget_tests/restaurants_page_test.dart +++ b/test/widget_tests/restaurants_page_test.dart @@ -11,6 +11,7 @@ import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; +import 'package:restaurantour/theme/theme.dart'; import '../mocks/mocks.dart'; @@ -30,6 +31,7 @@ void main() { Widget widgetBuilder() => MaterialApp( localizationsDelegates: localizationsDelegates, debugShowCheckedModeBanner: false, + theme: RTThemeData.themeData, home: ChangeNotifierProvider( create: (context) { final model = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); From ccf7cf418e0cd71c96f519d4722c1cb6e5b3000e Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 2 Mar 2024 21:44:37 -0300 Subject: [PATCH 76/89] feat: center title to android and ios --- lib/theme/rt_theme.dart | 1 + .../goldens/details_screen_added_favorite.png | Bin 32227 -> 32227 bytes .../goldens/details_screen_content.png | Bin 32227 -> 32227 bytes .../goldens/details_screen_favorite.png | Bin 32227 -> 32227 bytes .../goldens/details_screen_not_favorite.png | Bin 32491 -> 32489 bytes .../details_screen_removed_favorite.png | Bin 32491 -> 32489 bytes .../goldens/restauran_tour_content.png | Bin 19086 -> 19082 bytes .../goldens/restauran_tour_favorites_tab.png | Bin 19111 -> 19107 bytes 8 files changed, 1 insertion(+) diff --git a/lib/theme/rt_theme.dart b/lib/theme/rt_theme.dart index c14e3c39..0e29299b 100644 --- a/lib/theme/rt_theme.dart +++ b/lib/theme/rt_theme.dart @@ -19,6 +19,7 @@ class RTThemeData { useMaterial3: true, appBarTheme: const AppBarTheme( elevation: 2, + centerTitle: true, surfaceTintColor: RTColors.background, shadowColor: RTColors.primaryFill, ), diff --git a/test/golden_test/goldens/details_screen_added_favorite.png b/test/golden_test/goldens/details_screen_added_favorite.png index 6b70f0b7d8401ea06de9850ffbbf5ccf2d765007..519e2ab207df3fe33e2bbce5ff494bb30af2dee0 100644 GIT binary patch literal 32227 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 diff --git a/test/golden_test/goldens/details_screen_removed_favorite.png b/test/golden_test/goldens/details_screen_removed_favorite.png index 9a5a560fc94640366051d7f1d27bc0eb99d1528a..4075acd49eae9ec025a29f93ff869b99136eea4f 100644 GIT binary patch literal 32489 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 diff --git a/test/golden_test/goldens/restauran_tour_content.png b/test/golden_test/goldens/restauran_tour_content.png index 56148d80c0d5a09861914c5a5f29fc571f6d2deb..8277775adaba2f422a20ecae020ec0e4c30dc38f 100644 GIT binary patch literal 19082 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 z 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 E57Lk*rvLx| From bef6da20d883a6356da8a432a33800ae0532bd6d Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 2 Mar 2024 23:00:39 -0300 Subject: [PATCH 77/89] feat: add logger and refactor imports --- analysis_options.yaml | 1 - lib/components/rt_item_widget.dart | 4 +- lib/components/rt_review_widget.dart | 4 +- lib/components/rt_shimmer_loading.dart | 2 +- lib/core/core.dart | 8 +- lib/core/inject.dart | 5 +- lib/core/logger.dart | 78 +++++++++++++++++++ lib/features/details/details_screen.dart | 8 +- lib/features/details/details_view_model.dart | 29 ++++--- .../pages/favorites/favorites_page.dart | 5 +- .../pages/restaurants/restaurants_page.dart | 5 +- .../restaurants/restaurants_view_model.dart | 18 +++-- lib/main.dart | 6 +- test/golden_test/details_screen_test.dart | 11 +-- test/golden_test/favorites_page_test.dart | 9 +-- test/golden_test/restauran_tour_test.dart | 9 +-- test/test.dart | 6 ++ .../restaurant_details_view_model_test.dart | 6 +- .../restaurant_list_view_model_test.dart | 6 +- .../services/favorites_service_test.dart | 6 +- test/widget_tests/favorites_page_test.dart | 10 +-- test/widget_tests/restauran_tour_test.dart | 5 +- .../restaurant_details_screen_test.dart | 8 +- test/widget_tests/restaurants_page_test.dart | 10 +-- 24 files changed, 158 insertions(+), 101 deletions(-) create mode 100644 lib/core/logger.dart create mode 100644 test/test.dart diff --git a/analysis_options.yaml b/analysis_options.yaml index adc7c5bf..8a88ba21 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -9,5 +9,4 @@ linter: rules: ## The following rules are excluded only to keep compatibility with our previous lint set (pedantic). ## There's room to discuss them individually and raise PRs adjusting our codebase. - avoid_print: false require_trailing_commas: true \ No newline at end of file diff --git a/lib/components/rt_item_widget.dart b/lib/components/rt_item_widget.dart index af365426..f30e42bd 100644 --- a/lib/components/rt_item_widget.dart +++ b/lib/components/rt_item_widget.dart @@ -1,7 +1,7 @@ +import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/core/core.dart'; -import 'package:restaurantour/theme/theme.dart'; import 'package:restaurantour/models/dto.dart'; -import 'package:restaurantour/components/rt_image_network.dart'; +import 'package:restaurantour/theme/theme.dart'; class RTItemWidget extends StatelessWidget { const RTItemWidget({ diff --git a/lib/components/rt_review_widget.dart b/lib/components/rt_review_widget.dart index 40e45c6f..ea1f7c67 100644 --- a/lib/components/rt_review_widget.dart +++ b/lib/components/rt_review_widget.dart @@ -1,7 +1,7 @@ +import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/core/core.dart'; -import 'package:restaurantour/theme/theme.dart'; import 'package:restaurantour/models/dto.dart'; -import 'package:restaurantour/components/rt_image_network.dart'; +import 'package:restaurantour/theme/theme.dart'; class RTReviewWidget extends StatelessWidget { const RTReviewWidget({super.key, required this.review, required this.isFirstItem, required this.imageNetwork}); diff --git a/lib/components/rt_shimmer_loading.dart b/lib/components/rt_shimmer_loading.dart index 026f07ce..add46461 100644 --- a/lib/components/rt_shimmer_loading.dart +++ b/lib/components/rt_shimmer_loading.dart @@ -1,6 +1,6 @@ +import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/theme/theme.dart'; import 'package:shimmer/shimmer.dart'; -import 'package:restaurantour/core/core.dart'; class RTShimmerLoading extends StatelessWidget { const RTShimmerLoading({super.key}); diff --git a/lib/core/core.dart b/lib/core/core.dart index 07ec8f4c..e64eecec 100644 --- a/lib/core/core.dart +++ b/lib/core/core.dart @@ -1,7 +1,9 @@ -export 'package:flutter_svg/svg.dart'; export 'package:flutter/material.dart'; +export 'package:flutter_gen/gen_l10n/app_localizations.dart'; +export 'package:flutter_localizations/flutter_localizations.dart'; +export 'package:flutter_svg/svg.dart'; +export 'package:get_it/get_it.dart'; +export 'package:go_router/go_router.dart'; export 'package:provider/provider.dart'; export 'package:restaurantour/core/inject.dart'; export 'package:restaurantour/core/routes.dart'; -export 'package:flutter_localizations/flutter_localizations.dart'; -export 'package:flutter_gen/gen_l10n/app_localizations.dart'; diff --git a/lib/core/inject.dart b/lib/core/inject.dart index c0373963..800d53d8 100644 --- a/lib/core/inject.dart +++ b/lib/core/inject.dart @@ -1,15 +1,18 @@ import 'package:dio/dio.dart'; +import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:get_it/get_it.dart'; import 'package:restaurantour/components/rt_components.dart'; +import 'package:restaurantour/core/logger.dart'; import 'package:restaurantour/core/routes.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; import 'package:shared_preferences/shared_preferences.dart'; -import 'package:flutter_dotenv/flutter_dotenv.dart'; GetIt inject = GetIt.instance; Future setupInjection() async { + RTLogger.i(message: 'Setup injection'); + await dotenv.load(fileName: ".env"); final _apiKey = dotenv.env['API_KEY']; diff --git a/lib/core/logger.dart b/lib/core/logger.dart new file mode 100644 index 00000000..35d13f02 --- /dev/null +++ b/lib/core/logger.dart @@ -0,0 +1,78 @@ +import 'dart:developer' as dev; + +import 'package:flutter/foundation.dart'; + +enum RTLoggerType { + debug, + error, + info, + log, + warning, +} + +extension RTLoggerTypeExt on RTLoggerType { + String get icon => [ + '🐛', // Debug + '🚨', // Error + '💡', // Info + '🪧', // Log + '🚧', // Warning + ][index]; + + String get label => [ + 'Debug', + 'Error', + 'Info', + 'Log', + 'Warning', + ][index]; + + String get _color => [ + "\u001b[32m", // Debug + "\u001b[31m", // Error + "\u001b[36m", // Info + "\u001b[37m", // Log + "\u001b[33m", // Warning + ][index]; + + String get _end => "\x1B[0m"; + + void log(String message) => dev.log(_color + icon + ' ' + label + ': ' + message + _end); +} + +class RTLogger { + static void _log({ + required RTLoggerType type, + required String message, + Object? exception, + Object? stackTrace, + Object? extraData, + }) { + if (kDebugMode) { + final exceptionText = exception != null ? '\nException:\n$exception' : ''; + final stackTraceText = stackTrace != null ? '\nStackTrace:\n$stackTrace' : ''; + final extraDataText = extraData != null ? '\nExtraData:\n$extraData' : ''; + type.log('$message $exceptionText $stackTraceText $extraDataText'); + } + } + + static void d({required String message, Object? exception, Object? stackTrace, Object? extraData}) { + _log(type: RTLoggerType.debug, message: message, exception: exception, stackTrace: stackTrace, extraData: extraData); + } + + static void e({required String message, required Object exception, Object? stackTrace, Object? extraData}) { + _log(type: RTLoggerType.error, message: message, exception: exception, stackTrace: stackTrace, extraData: extraData); + } + + static void i({required String message, Object? extraData}) { + _log(type: RTLoggerType.info, message: message, extraData: extraData); + } + + static void l({required String message, Object? extraData}) { + _log(type: RTLoggerType.log, message: message, extraData: extraData); + } + + static void w({required String message, Object? extraData}) { + _log(type: RTLoggerType.warning, message: message, extraData: extraData); + } +} diff --git a/lib/features/details/details_screen.dart b/lib/features/details/details_screen.dart index 12240a64..2df0ffd9 100644 --- a/lib/features/details/details_screen.dart +++ b/lib/features/details/details_screen.dart @@ -1,10 +1,10 @@ +import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/core/core.dart'; +import 'package:restaurantour/features/details/details_view_model.dart'; import 'package:restaurantour/models/dto.dart'; -import 'package:restaurantour/theme/theme.dart'; -import 'package:restaurantour/components/rt_components.dart'; -import 'package:restaurantour/services/favorite_service.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; -import 'package:restaurantour/features/details/details_view_model.dart'; +import 'package:restaurantour/services/favorite_service.dart'; +import 'package:restaurantour/theme/theme.dart'; class DetailsScreen extends StatefulWidget { const DetailsScreen({super.key}); diff --git a/lib/features/details/details_view_model.dart b/lib/features/details/details_view_model.dart index 0a25631d..4c230b0c 100644 --- a/lib/features/details/details_view_model.dart +++ b/lib/features/details/details_view_model.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart'; +import 'package:restaurantour/core/logger.dart'; +import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; -import 'package:restaurantour/models/dto.dart'; enum DetailsStatus { loading, paginating, content, error, updatingFavorite } @@ -36,8 +37,8 @@ class DetailsViewModel with ChangeNotifier { isFavorite ? await favoriteService.removeFavorite(restaurantId) : await favoriteService.addFavorite(restaurantId); isFavorite = !isFavorite; - } catch (e) { - print(e); + } catch (exception, stackTrace) { + RTLogger.e(message: 'Fail to toggle favorite', exception: exception, stackTrace: stackTrace); } finally { _emitContent(); } @@ -53,19 +54,27 @@ class DetailsViewModel with ChangeNotifier { _favoriteList = await favoriteService.loadFavorites(); isFavorite = _favoriteList.contains(restaurantId); _emitContent(); - } catch (e) { - print(e); + } catch (exception, stackTrace) { + RTLogger.e(message: 'Fail to Load Restaurant Details', exception: exception, stackTrace: stackTrace); _emitError(); } } - Future _getRestaurantDetails() async => restaurant = await restaurantRepository.getRestaurantDetails(restaurantId: restaurantId); + Future _getRestaurantDetails() async { + try { + restaurant = await restaurantRepository.getRestaurantDetails(restaurantId: restaurantId); + } catch (exception, stackTrace) { + RTLogger.e(message: 'Fail to get Restaurant Details', exception: exception, stackTrace: stackTrace); + rethrow; + } + } + Future _getReviews() async { try { reviewsQuery = await restaurantRepository.getReviews(restaurantId: restaurantId); reviews.addAll(reviewsQuery?.review ?? []); - } catch (e) { - print(e); + } catch (exception, stackTrace) { + RTLogger.e(message: 'Fail to get Restaurant Reviews', exception: exception, stackTrace: stackTrace); } } @@ -75,8 +84,8 @@ class DetailsViewModel with ChangeNotifier { _emitIsPaginating(); final paginated = await restaurantRepository.getReviews(restaurantId: restaurantId, offset: reviews.length); reviews.addAll(paginated?.review ?? []); - } catch (e) { - print(e); + } catch (exception, stackTrace) { + RTLogger.e(message: 'Fail to paginate reviews', exception: exception, stackTrace: stackTrace); } finally { _emitContent(); } diff --git a/lib/features/restaurants/pages/favorites/favorites_page.dart b/lib/features/restaurants/pages/favorites/favorites_page.dart index 784b0b66..1654d4fc 100644 --- a/lib/features/restaurants/pages/favorites/favorites_page.dart +++ b/lib/features/restaurants/pages/favorites/favorites_page.dart @@ -1,8 +1,5 @@ -import 'package:flutter/material.dart'; -import 'package:go_router/go_router.dart'; -import 'package:provider/provider.dart'; import 'package:restaurantour/components/rt_components.dart'; -import 'package:restaurantour/core/inject.dart'; +import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/details/details_screen.dart'; import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; diff --git a/lib/features/restaurants/pages/restaurants/restaurants_page.dart b/lib/features/restaurants/pages/restaurants/restaurants_page.dart index 39181c41..48a9e3d3 100644 --- a/lib/features/restaurants/pages/restaurants/restaurants_page.dart +++ b/lib/features/restaurants/pages/restaurants/restaurants_page.dart @@ -1,8 +1,5 @@ -import 'package:flutter/material.dart'; -import 'package:go_router/go_router.dart'; -import 'package:provider/provider.dart'; import 'package:restaurantour/components/rt_components.dart'; -import 'package:restaurantour/core/inject.dart'; +import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/details/details_screen.dart'; import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; diff --git a/lib/features/restaurants/restaurants_view_model.dart b/lib/features/restaurants/restaurants_view_model.dart index a905611e..c7aaaecc 100644 --- a/lib/features/restaurants/restaurants_view_model.dart +++ b/lib/features/restaurants/restaurants_view_model.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart'; +import 'package:restaurantour/core/logger.dart'; +import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; -import 'package:restaurantour/models/dto.dart'; enum RestaurantsStatus { paginating, loading, content, error, empty } @@ -50,8 +51,8 @@ class RestaurantsViewModel with ChangeNotifier { _emitRestaurantLoading(); _restaurantsQuery = await restaurantRepository.getRestaurants(); restaurantsList.isEmpty ? _emitRestaurantEmpty() : _emitRestaurantContent(); - } catch (e) { - print(e); + } catch (exception, stackTrace) { + RTLogger.e(message: 'Fail to load Restaurants', exception: exception, stackTrace: stackTrace); _emitRestaurantError(); } } @@ -62,8 +63,8 @@ class RestaurantsViewModel with ChangeNotifier { _emitRestaurantPaginating(); final paginated = await restaurantRepository.getRestaurants(offset: restaurantsList.length); restaurantsList.addAll(paginated?.restaurants ?? []); - } catch (e) { - print(e); + } catch (exception, stackTrace) { + RTLogger.e(message: 'Fail to paginate Restaurants', exception: exception, stackTrace: stackTrace); } finally { _emitRestaurantContent(); } @@ -82,8 +83,8 @@ class RestaurantsViewModel with ChangeNotifier { await _loadFavoritesInMemory(favoritesToFetch); _favorites.isEmpty ? _emitFavoriteEmpty() : _emitFavoriteContent(); - } catch (e) { - print(e); + } catch (exception, stackTrace) { + RTLogger.e(message: 'Fail to load Favorites', exception: exception, stackTrace: stackTrace); _emitFavoriteError(); } } @@ -108,7 +109,8 @@ class RestaurantsViewModel with ChangeNotifier { final _restaurant = await restaurantRepository.getSingleRestaurant(restaurantId: favoriteId); _favorites.add(_restaurant); _restaurantsCache.add(_restaurant); - } catch (e) { + } catch (exception, stackTrace) { + RTLogger.e(message: 'Fail to load detail of Favorite', exception: exception, stackTrace: stackTrace); _favorites.add(RestaurantDto(id: favoriteId)); } } diff --git a/lib/main.dart b/lib/main.dart index 7c1ddf33..70851c1a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,10 +1,12 @@ import 'package:flutter/material.dart'; -import 'package:restaurantour/core/inject.dart'; import 'package:restaurantour/app.dart'; +import 'package:restaurantour/core/inject.dart'; +import 'package:restaurantour/core/logger.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); - await setupInjection(); + await setupInjection(); + RTLogger.i(message: 'Start app'); runApp(const App()); } diff --git a/test/golden_test/details_screen_test.dart b/test/golden_test/details_screen_test.dart index 14765036..282b92f0 100644 --- a/test/golden_test/details_screen_test.dart +++ b/test/golden_test/details_screen_test.dart @@ -1,16 +1,11 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:get_it/get_it.dart'; -import 'package:golden_toolkit/golden_toolkit.dart'; -import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/components/rt_components.dart'; +import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/details/details_screen.dart'; +import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; -import 'package:restaurantour/models/dto.dart'; -import '../mocks/mocks.dart'; -import '../widget_for_tests.dart'; +import '../test.dart'; void main() { RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); diff --git a/test/golden_test/favorites_page_test.dart b/test/golden_test/favorites_page_test.dart index 882187d4..02fc2b3a 100644 --- a/test/golden_test/favorites_page_test.dart +++ b/test/golden_test/favorites_page_test.dart @@ -1,17 +1,12 @@ -import 'package:flutter_test/flutter_test.dart'; -import 'package:get_it/get_it.dart'; -import 'package:golden_toolkit/golden_toolkit.dart'; -import 'package:mocktail/mocktail.dart'; -import 'package:provider/provider.dart'; import 'package:restaurantour/components/rt_components.dart'; +import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page.dart'; import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; -import '../mocks/mocks.dart'; -import '../widget_for_tests.dart'; +import '../test.dart'; void main() { RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); diff --git a/test/golden_test/restauran_tour_test.dart b/test/golden_test/restauran_tour_test.dart index 51156596..a1dd5f1d 100644 --- a/test/golden_test/restauran_tour_test.dart +++ b/test/golden_test/restauran_tour_test.dart @@ -1,16 +1,11 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:get_it/get_it.dart'; -import 'package:golden_toolkit/golden_toolkit.dart'; -import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/components/rt_components.dart'; +import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/restaurants/restaurants_screen.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; -import '../mocks/mocks.dart'; -import '../widget_for_tests.dart'; +import '../test.dart'; void main() { RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); diff --git a/test/test.dart b/test/test.dart new file mode 100644 index 00000000..27ada411 --- /dev/null +++ b/test/test.dart @@ -0,0 +1,6 @@ +export 'package:flutter_test/flutter_test.dart'; +export 'package:golden_toolkit/golden_toolkit.dart'; +export 'package:mocktail/mocktail.dart'; + +export './mocks/mocks.dart'; +export './widget_for_tests.dart'; diff --git a/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart b/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart index ff3189d9..6efe4bd4 100644 --- a/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart +++ b/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart @@ -1,13 +1,11 @@ -import 'package:flutter_test/flutter_test.dart'; -import 'package:get_it/get_it.dart'; -import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/components/rt_image_network.dart'; +import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/details/details_view_model.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; -import '../../mocks/mocks.dart'; +import '../../test.dart'; void main() { FavoriteService favoritesService = FavoritesServiceMock(); diff --git a/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart b/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart index 2439d2b6..de38f595 100644 --- a/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart +++ b/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart @@ -1,13 +1,11 @@ -import 'package:flutter_test/flutter_test.dart'; -import 'package:get_it/get_it.dart'; -import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/components/rt_image_network.dart'; +import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; -import '../../mocks/mocks.dart'; +import '../../test.dart'; void main() { RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); diff --git a/test/unit_tests/services/favorites_service_test.dart b/test/unit_tests/services/favorites_service_test.dart index b5c1ead2..3b76bd63 100644 --- a/test/unit_tests/services/favorites_service_test.dart +++ b/test/unit_tests/services/favorites_service_test.dart @@ -1,10 +1,8 @@ -import 'package:flutter_test/flutter_test.dart'; -import 'package:get_it/get_it.dart'; -import 'package:mocktail/mocktail.dart'; +import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/services/favorite_service.dart'; import 'package:shared_preferences/shared_preferences.dart'; -import '../../mocks/mocks.dart'; +import '../../test.dart'; void main() { SharedPreferences sharedPreferences = SharedPreferencesMock(); diff --git a/test/widget_tests/favorites_page_test.dart b/test/widget_tests/favorites_page_test.dart index 0fa91431..871ee660 100644 --- a/test/widget_tests/favorites_page_test.dart +++ b/test/widget_tests/favorites_page_test.dart @@ -1,11 +1,5 @@ -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_localizations/flutter_localizations.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:get_it/get_it.dart'; -import 'package:mocktail/mocktail.dart'; -import 'package:provider/provider.dart'; import 'package:restaurantour/components/rt_components.dart'; +import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page.dart'; import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; import 'package:restaurantour/models/dto.dart'; @@ -13,7 +7,7 @@ import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; import 'package:restaurantour/theme/theme.dart'; -import '../mocks/mocks.dart'; +import '../test.dart'; void main() { RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); diff --git a/test/widget_tests/restauran_tour_test.dart b/test/widget_tests/restauran_tour_test.dart index 9939fb32..f22d8b3d 100644 --- a/test/widget_tests/restauran_tour_test.dart +++ b/test/widget_tests/restauran_tour_test.dart @@ -1,14 +1,11 @@ -import 'package:flutter_test/flutter_test.dart'; import 'package:get_it/get_it.dart'; -import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/features/restaurants/restaurants_screen.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; -import '../mocks/mocks.dart'; -import '../widget_for_tests.dart'; +import '../test.dart'; void main() { RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); diff --git a/test/widget_tests/restaurant_details_screen_test.dart b/test/widget_tests/restaurant_details_screen_test.dart index f5a3bc1a..d5ac58bd 100644 --- a/test/widget_tests/restaurant_details_screen_test.dart +++ b/test/widget_tests/restaurant_details_screen_test.dart @@ -1,17 +1,15 @@ -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; -import 'package:flutter_test/flutter_test.dart'; import 'package:get_it/get_it.dart'; -import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/features/details/details_screen.dart'; +import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; -import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/theme/theme.dart'; -import '../mocks/mocks.dart'; +import '../test.dart'; void main() { RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); diff --git a/test/widget_tests/restaurants_page_test.dart b/test/widget_tests/restaurants_page_test.dart index ac7f92b6..ed2af86f 100644 --- a/test/widget_tests/restaurants_page_test.dart +++ b/test/widget_tests/restaurants_page_test.dart @@ -1,11 +1,5 @@ -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_localizations/flutter_localizations.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:get_it/get_it.dart'; -import 'package:mocktail/mocktail.dart'; -import 'package:provider/provider.dart'; import 'package:restaurantour/components/rt_components.dart'; +import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_page.dart'; import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; import 'package:restaurantour/models/dto.dart'; @@ -13,7 +7,7 @@ import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; import 'package:restaurantour/theme/theme.dart'; -import '../mocks/mocks.dart'; +import '../test.dart'; void main() { RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); From 5d75c88c55bf1c15b692346cecce9d44f3eb9675 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sat, 2 Mar 2024 23:22:39 -0300 Subject: [PATCH 78/89] feat: add interceptor logger --- lib/core/core.dart | 1 + lib/core/inject.dart | 3 ++- lib/core/interceptor.dart | 44 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 lib/core/interceptor.dart diff --git a/lib/core/core.dart b/lib/core/core.dart index e64eecec..d4af88a5 100644 --- a/lib/core/core.dart +++ b/lib/core/core.dart @@ -6,4 +6,5 @@ export 'package:get_it/get_it.dart'; export 'package:go_router/go_router.dart'; export 'package:provider/provider.dart'; export 'package:restaurantour/core/inject.dart'; +export 'package:restaurantour/core/interceptor.dart'; export 'package:restaurantour/core/routes.dart'; diff --git a/lib/core/inject.dart b/lib/core/inject.dart index 800d53d8..bb997732 100644 --- a/lib/core/inject.dart +++ b/lib/core/inject.dart @@ -2,6 +2,7 @@ import 'package:dio/dio.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:get_it/get_it.dart'; import 'package:restaurantour/components/rt_components.dart'; +import 'package:restaurantour/core/interceptor.dart'; import 'package:restaurantour/core/logger.dart'; import 'package:restaurantour/core/routes.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; @@ -29,7 +30,7 @@ Future setupInjection() async { 'Content-Type': 'application/graphql', }, ), - ), + )..interceptors.add(LoggerInterceptor()), ); inject.registerLazySingleton(() => RestaurantRepository(dio: inject())); diff --git a/lib/core/interceptor.dart b/lib/core/interceptor.dart new file mode 100644 index 00000000..d3c64da8 --- /dev/null +++ b/lib/core/interceptor.dart @@ -0,0 +1,44 @@ +import 'dart:convert'; + +import 'package:dio/dio.dart'; +import 'package:restaurantour/core/logger.dart'; + +class LoggerInterceptor extends Interceptor { + @override + void onError(DioException err, ErrorInterceptorHandler handler) { + final options = err.requestOptions; + final requestPath = '${options.baseUrl}${options.path}'; + + RTLogger.e(message: 'onError: ${options.method} request => $requestPath', exception: err); + RTLogger.e(message: 'onError: ${err.error}, Message: ${err.message}', exception: err); + + return super.onError(err, handler); + } + + @override + void onRequest(RequestOptions options, RequestInterceptorHandler handler) { + final requestPath = '${options.baseUrl}${options.path}'; + RTLogger.l(message: 'onRequest: ${options.method} request => $requestPath'); + RTLogger.l(message: 'onRequest: Request Headers => ${options.headers}'); + RTLogger.l(message: 'onRequest: Request Data => ${_prettyJsonEncode(options.data)}'); + + return super.onRequest(options, handler); + } + + @override + void onResponse(Response response, ResponseInterceptorHandler handler) { + RTLogger.i(message: 'onResponse: StatusCode: ${response.statusCode}, Data: ${_prettyJsonEncode(response.data)}'); + + return super.onResponse(response, handler); + } + + String _prettyJsonEncode(dynamic data) { + try { + const encoder = JsonEncoder.withIndent(' '); + final jsonString = encoder.convert(data); + return jsonString; + } catch (e) { + return data.toString(); + } + } +} From 3867f692d5548fb344eb7aeb5fb40b7a6637d034 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sun, 3 Mar 2024 13:25:22 -0300 Subject: [PATCH 79/89] feat: refactor colors and makefile --- Makefile | 4 +++- lib/theme/rt_colors.dart | 2 -- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 9cb11767..2cb80302 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,9 @@ integration-tests : flutter test integration_test/app_test.dart lcov-ignore : - lcov --remove coverage/lcov.info 'lib/core/*' 'lib/models/*.g.dart' -o coverage/lcov.info + lcov --remove coverage/lcov.info 'lib/core/*' 'lib/theme/*' 'lib/models/*.g.dart' -o coverage/lcov.info + +show-coverage : tests lcov lcov : tests lcov-ignore diff --git a/lib/theme/rt_colors.dart b/lib/theme/rt_colors.dart index 61c3b57a..4cb14dab 100644 --- a/lib/theme/rt_colors.dart +++ b/lib/theme/rt_colors.dart @@ -1,8 +1,6 @@ import 'package:flutter/material.dart'; class RTColors { - RTColors._(); - static const open = Color(0xff5cd512); static const closed = Color(0xffd96762); static const background = Color(0xfffafafa); From 0f202acaddd2251da790b655d43fc3d2fe559020 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sun, 3 Mar 2024 14:30:20 -0300 Subject: [PATCH 80/89] feat: refactor to use individual view_model for restaurants and favorites, use event_bus to comunicate between details and favorites --- lib/components/rt_item_widget.dart | 9 +- lib/core/inject.dart | 3 + lib/core/routes.dart | 2 +- lib/features/details/details_screen.dart | 2 + lib/features/details/details_view_model.dart | 13 +- .../pages/favorites/favorites_page.dart | 11 +- .../favorites/favorites_page_view_model.dart} | 95 +++------ .../pages/restaurants/restaurants_page.dart | 11 +- .../restaurants_page_view_model.dart | 85 ++++++++ .../restaurants/restaurants_screen.dart | 43 ++-- lib/services/event_bus_service.dart | 11 + lib/services/favorite_service.dart | 2 +- test/golden_test/details_screen_test.dart | 14 +- test/golden_test/favorites_page_test.dart | 19 +- test/golden_test/restauran_tour_test.dart | 11 +- test/mocks/mocks.dart | 5 +- .../details_view_model_test.dart} | 76 +++++-- .../favorites_page_view_model_test.dart | 195 ++++++++++++++++++ .../restaurant_page_view_model_test.dart | 92 +++++++++ .../restaurant_list_view_model_test.dart | 193 ----------------- .../services/favorites_service_test.dart | 2 +- test/widget_tests/favorites_page_test.dart | 31 +-- test/widget_tests/restauran_tour_test.dart | 8 +- .../restaurant_details_screen_test.dart | 10 +- test/widget_tests/restaurants_page_test.dart | 14 +- 25 files changed, 584 insertions(+), 373 deletions(-) rename lib/features/restaurants/{restaurants_view_model.dart => pages/favorites/favorites_page_view_model.dart} (55%) create mode 100644 lib/features/restaurants/pages/restaurants/restaurants_page_view_model.dart create mode 100644 lib/services/event_bus_service.dart rename test/unit_tests/{restaurant_details/restaurant_details_view_model_test.dart => details/details_view_model_test.dart} (67%) create mode 100644 test/unit_tests/favorites/favorites_page_view_model_test.dart create mode 100644 test/unit_tests/restaurants/restaurant_page_view_model_test.dart delete mode 100644 test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart diff --git a/lib/components/rt_item_widget.dart b/lib/components/rt_item_widget.dart index f30e42bd..9b191893 100644 --- a/lib/components/rt_item_widget.dart +++ b/lib/components/rt_item_widget.dart @@ -8,14 +8,12 @@ class RTItemWidget extends StatelessWidget { super.key, required this.restaurant, required this.isFirstItem, - this.onFinishNavigation, required this.imageNetwork, required this.openDetails, }); final bool isFirstItem; final RestaurantDto restaurant; - final VoidCallback? onFinishNavigation; - final Future Function() openDetails; + final Function() openDetails; final RTImageNetwork imageNetwork; double get rating => restaurant.rating ?? 0; @@ -33,10 +31,7 @@ class RTItemWidget extends StatelessWidget { borderRadius: const BorderRadius.all(Radius.circular(8)), elevation: 2, child: InkWell( - onTap: () async { - await openDetails(); - if (onFinishNavigation != null) onFinishNavigation!(); - }, + onTap: openDetails, child: SizedBox( height: 104, child: Padding( diff --git a/lib/core/inject.dart b/lib/core/inject.dart index bb997732..151bd8d2 100644 --- a/lib/core/inject.dart +++ b/lib/core/inject.dart @@ -6,6 +6,7 @@ import 'package:restaurantour/core/interceptor.dart'; import 'package:restaurantour/core/logger.dart'; import 'package:restaurantour/core/routes.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/services/event_bus_service.dart'; import 'package:restaurantour/services/favorite_service.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -35,6 +36,8 @@ Future setupInjection() async { inject.registerLazySingleton(() => RestaurantRepository(dio: inject())); + inject.registerLazySingleton(() => EventBusService()); + inject.registerLazySingleton(() => sharedPref); inject.registerLazySingleton(() => FavoriteService(sharedPreferences: inject())); diff --git a/lib/core/routes.dart b/lib/core/routes.dart index b54ac69c..3b1bebf4 100644 --- a/lib/core/routes.dart +++ b/lib/core/routes.dart @@ -20,7 +20,7 @@ class GoRouterConfig { GoRoute( name: GoRouterConfig.home.name, path: GoRouterConfig.home.path, - builder: (context, state) => RestaurantsScreen.create(), + builder: (context, state) => const RestaurantsScreen(), ), GoRoute( name: GoRouterConfig.details.name, diff --git a/lib/features/details/details_screen.dart b/lib/features/details/details_screen.dart index 2df0ffd9..f7d3ea02 100644 --- a/lib/features/details/details_screen.dart +++ b/lib/features/details/details_screen.dart @@ -3,6 +3,7 @@ import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/details/details_view_model.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/services/event_bus_service.dart'; import 'package:restaurantour/services/favorite_service.dart'; import 'package:restaurantour/theme/theme.dart'; @@ -16,6 +17,7 @@ class DetailsScreen extends StatefulWidget { restaurantId: restaurantId ?? '', restaurantRepository: inject(), favoriteService: inject(), + eventBus: inject(), ), child: const DetailsScreen(), ); diff --git a/lib/features/details/details_view_model.dart b/lib/features/details/details_view_model.dart index 4c230b0c..a6490e02 100644 --- a/lib/features/details/details_view_model.dart +++ b/lib/features/details/details_view_model.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:restaurantour/core/logger.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/services/event_bus_service.dart'; import 'package:restaurantour/services/favorite_service.dart'; enum DetailsStatus { loading, paginating, content, error, updatingFavorite } @@ -24,19 +25,25 @@ class DetailsViewModel with ChangeNotifier { final String restaurantId; final FavoriteService favoriteService; final RestaurantRepository restaurantRepository; - + final EventBusService eventBus; List _favoriteList = []; int get totalReviews => reviewsQuery?.total ?? 0; bool get shouldPaginate => reviews.length < totalReviews && totalReviews > paginationSize; - DetailsViewModel({required this.favoriteService, required this.restaurantRepository, required this.restaurantId}); + DetailsViewModel({ + required this.favoriteService, + required this.restaurantRepository, + required this.restaurantId, + required this.eventBus, + }); Future toggleFavorite() async { try { _emitChangingFavorite(); isFavorite ? await favoriteService.removeFavorite(restaurantId) : await favoriteService.addFavorite(restaurantId); isFavorite = !isFavorite; + eventBus.fire(restaurantId); } catch (exception, stackTrace) { RTLogger.e(message: 'Fail to toggle favorite', exception: exception, stackTrace: stackTrace); } finally { @@ -51,7 +58,7 @@ class DetailsViewModel with ChangeNotifier { _getRestaurantDetails(), _getReviews(), ]); - _favoriteList = await favoriteService.loadFavorites(); + _favoriteList = await favoriteService.getFavorites(); isFavorite = _favoriteList.contains(restaurantId); _emitContent(); } catch (exception, stackTrace) { diff --git a/lib/features/restaurants/pages/favorites/favorites_page.dart b/lib/features/restaurants/pages/favorites/favorites_page.dart index 1654d4fc..1dc2e37d 100644 --- a/lib/features/restaurants/pages/favorites/favorites_page.dart +++ b/lib/features/restaurants/pages/favorites/favorites_page.dart @@ -1,7 +1,7 @@ import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/details/details_screen.dart'; -import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; +import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page_view_model.dart'; class FavoritesPage extends StatefulWidget { const FavoritesPage({super.key}); @@ -11,7 +11,7 @@ class FavoritesPage extends StatefulWidget { } class _FavoritesPageState extends State { - RestaurantsViewModel? model; + FavoritesViewModel? model; @override void initState() { @@ -23,11 +23,11 @@ class _FavoritesPageState extends State { Widget build(BuildContext context) { model = context.watch(); - if (model!.favoritesStatus.isLoading) return const RTShimmerLoading(); + if (model!.status.isLoading) return const RTShimmerLoading(); - if (model!.favoritesStatus.isError) return const RTErrorWidget(); + if (model!.status.isError) return const RTErrorWidget(); - if (model!.favoritesStatus.isEmpty) return const RTEmptyWidget(); + if (model!.status.isEmpty) return const RTEmptyWidget(); return ListView.builder( itemCount: model!.favoritesRestaurantList.length, @@ -45,7 +45,6 @@ class _FavoritesPageState extends State { pathParameters: {DetailsScreen.restaurantIdParams: model!.favoritesRestaurantList[index].id ?? ''}, ); }, - onFinishNavigation: model!.loadFavorites, ); }, ); diff --git a/lib/features/restaurants/restaurants_view_model.dart b/lib/features/restaurants/pages/favorites/favorites_page_view_model.dart similarity index 55% rename from lib/features/restaurants/restaurants_view_model.dart rename to lib/features/restaurants/pages/favorites/favorites_page_view_model.dart index c7aaaecc..eb3508ff 100644 --- a/lib/features/restaurants/restaurants_view_model.dart +++ b/lib/features/restaurants/pages/favorites/favorites_page_view_model.dart @@ -1,18 +1,10 @@ -import 'package:flutter/material.dart'; +import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/core/logger.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/services/event_bus_service.dart'; import 'package:restaurantour/services/favorite_service.dart'; -enum RestaurantsStatus { paginating, loading, content, error, empty } - -extension RestaurantsStatusExt on RestaurantsStatus { - bool get isLoading => this == RestaurantsStatus.loading; - bool get isPaginating => this == RestaurantsStatus.paginating; - bool get isError => this == RestaurantsStatus.error; - bool get isEmpty => this == RestaurantsStatus.empty; -} - enum FavoritesStatus { loading, content, error, empty } extension FavoritesStatusExt on FavoritesStatus { @@ -21,17 +13,19 @@ extension FavoritesStatusExt on FavoritesStatus { bool get isEmpty => this == FavoritesStatus.empty; } -class RestaurantsViewModel with ChangeNotifier { +class FavoritesViewModel with ChangeNotifier { final RestaurantRepository restaurantRepository; final FavoriteService favoritesService; + final EventBusService eventBus; final int paginationSize = 20; final List _restaurantsCache = []; - RestaurantsViewModel({required this.favoritesService, required this.restaurantRepository}); + FavoritesViewModel({required this.favoritesService, required this.restaurantRepository, required this.eventBus}) { + _init(); + } - RestaurantsStatus restaurantsStatus = RestaurantsStatus.loading; - FavoritesStatus favoritesStatus = FavoritesStatus.loading; + FavoritesStatus status = FavoritesStatus.loading; RestaurantQueryResultDto? _restaurantsQuery; List _favorites = []; @@ -39,41 +33,28 @@ class RestaurantsViewModel with ChangeNotifier { int get allRestaurantsQueryTotal => _restaurantsQuery?.total ?? 0; List get favoritesRestaurantList => _favorites; List get restaurantsList => _restaurantsQuery?.restaurants ?? []; - bool get shouldPaginate => restaurantsList.length < allRestaurantsQueryTotal && allRestaurantsQueryTotal > paginationSize; - Future load() async { + Future _init() async { + eventBus.stream.listen((event) => loadFavorites()); await loadRestaurants(); await loadFavorites(); } Future loadRestaurants() async { try { - _emitRestaurantLoading(); + _emitLoading(); _restaurantsQuery = await restaurantRepository.getRestaurants(); - restaurantsList.isEmpty ? _emitRestaurantEmpty() : _emitRestaurantContent(); + restaurantsList.isEmpty ? _emitEmpty() : _emitContent(); } catch (exception, stackTrace) { RTLogger.e(message: 'Fail to load Restaurants', exception: exception, stackTrace: stackTrace); - _emitRestaurantError(); - } - } - - Future paginateRestaurants() async { - if (restaurantsStatus.isPaginating || !shouldPaginate) return; - try { - _emitRestaurantPaginating(); - final paginated = await restaurantRepository.getRestaurants(offset: restaurantsList.length); - restaurantsList.addAll(paginated?.restaurants ?? []); - } catch (exception, stackTrace) { - RTLogger.e(message: 'Fail to paginate Restaurants', exception: exception, stackTrace: stackTrace); - } finally { - _emitRestaurantContent(); + _emitError(); } } Future loadFavorites() async { try { - _emitFavoriteLoading(); - final favoritesIds = await favoritesService.loadFavorites(); + _emitLoading(); + final favoritesIds = await favoritesService.getFavorites(); _favorites = restaurantsList.where((restaurant) => favoritesIds.contains(restaurant.id)).toList(); final favoritesToFetchInCache = await _findFavoritesNotLoadedInMemory(inMemory: restaurantsList, favoritesIds: favoritesIds); @@ -82,10 +63,10 @@ class RestaurantsViewModel with ChangeNotifier { final favoritesToFetch = await _findFavoritesNotLoadedInMemory(inMemory: _restaurantsCache, favoritesIds: favoritesIds); await _loadFavoritesInMemory(favoritesToFetch); - _favorites.isEmpty ? _emitFavoriteEmpty() : _emitFavoriteContent(); + _favorites.isEmpty ? _emitEmpty() : _emitContent(); } catch (exception, stackTrace) { RTLogger.e(message: 'Fail to load Favorites', exception: exception, stackTrace: stackTrace); - _emitFavoriteError(); + _emitError(); } } @@ -106,6 +87,7 @@ class RestaurantsViewModel with ChangeNotifier { Future _loadSingleFavorite(String favoriteId) async { try { + RTLogger.w(message: 'Loading single favorite $favoriteId'); final _restaurant = await restaurantRepository.getSingleRestaurant(restaurantId: favoriteId); _favorites.add(_restaurant); _restaurantsCache.add(_restaurant); @@ -115,48 +97,23 @@ class RestaurantsViewModel with ChangeNotifier { } } - void _emitRestaurantContent() { - restaurantsStatus = RestaurantsStatus.content; - notifyListeners(); - } - - void _emitRestaurantLoading() { - restaurantsStatus = RestaurantsStatus.loading; - notifyListeners(); - } - - void _emitRestaurantPaginating() { - restaurantsStatus = RestaurantsStatus.paginating; - notifyListeners(); - } - - void _emitRestaurantError() { - restaurantsStatus = RestaurantsStatus.error; - notifyListeners(); - } - - void _emitRestaurantEmpty() { - restaurantsStatus = RestaurantsStatus.empty; - notifyListeners(); - } - - void _emitFavoriteContent() { - favoritesStatus = FavoritesStatus.content; + void _emitContent() { + status = FavoritesStatus.content; notifyListeners(); } - void _emitFavoriteLoading() { - favoritesStatus = FavoritesStatus.loading; + void _emitLoading() { + status = FavoritesStatus.loading; notifyListeners(); } - void _emitFavoriteError() { - favoritesStatus = FavoritesStatus.error; + void _emitError() { + status = FavoritesStatus.error; notifyListeners(); } - void _emitFavoriteEmpty() { - favoritesStatus = FavoritesStatus.empty; + void _emitEmpty() { + status = FavoritesStatus.empty; notifyListeners(); } } diff --git a/lib/features/restaurants/pages/restaurants/restaurants_page.dart b/lib/features/restaurants/pages/restaurants/restaurants_page.dart index 48a9e3d3..6a58efe4 100644 --- a/lib/features/restaurants/pages/restaurants/restaurants_page.dart +++ b/lib/features/restaurants/pages/restaurants/restaurants_page.dart @@ -1,7 +1,7 @@ import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/details/details_screen.dart'; -import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; +import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_page_view_model.dart'; class RestaurantsPage extends StatefulWidget { const RestaurantsPage({super.key}); @@ -40,12 +40,12 @@ class _RestaurantsPageState extends State { if (model!.restaurantsStatus.isLoading) return const RTShimmerLoading(); - if (model!.restaurantsStatus.isError) return RTErrorWidget(onTryAgain: () => model!.load()); + if (model!.restaurantsStatus.isError) return RTErrorWidget(onTryAgain: model!.loadRestaurants); if (model!.restaurantsStatus.isEmpty) return const RTEmptyWidget(); return RefreshIndicator( - onRefresh: () => model!.load(), + onRefresh: model!.loadRestaurants, child: ListView.builder( controller: scrollController, itemCount: model!.restaurantsList.length, @@ -58,13 +58,12 @@ class _RestaurantsPageState extends State { isFirstItem: isFirstItem, imageNetwork: inject(), restaurant: model!.restaurantsList[index], - openDetails: () async { - await context.pushNamed( + openDetails: () { + context.pushNamed( DetailsScreen.route, pathParameters: {DetailsScreen.restaurantIdParams: model!.restaurantsList[index].id ?? ''}, ); }, - onFinishNavigation: () => model!.loadFavorites(), ), if (index + 1 == model!.restaurantsList.length) Visibility( diff --git a/lib/features/restaurants/pages/restaurants/restaurants_page_view_model.dart b/lib/features/restaurants/pages/restaurants/restaurants_page_view_model.dart new file mode 100644 index 00000000..9738bfc1 --- /dev/null +++ b/lib/features/restaurants/pages/restaurants/restaurants_page_view_model.dart @@ -0,0 +1,85 @@ +import 'package:flutter/material.dart'; +import 'package:restaurantour/core/logger.dart'; +import 'package:restaurantour/models/dto.dart'; +import 'package:restaurantour/repositories/restaurant_repository.dart'; + +enum RestaurantsStatus { paginating, loading, content, error, empty } + +extension RestaurantsStatusExt on RestaurantsStatus { + bool get isLoading => this == RestaurantsStatus.loading; + bool get isPaginating => this == RestaurantsStatus.paginating; + bool get isError => this == RestaurantsStatus.error; + bool get isEmpty => this == RestaurantsStatus.empty; +} + +class RestaurantsViewModel with ChangeNotifier { + final RestaurantRepository restaurantRepository; + + final int paginationSize = 20; + + RestaurantsViewModel({required this.restaurantRepository}) { + _init(); + } + + RestaurantsStatus restaurantsStatus = RestaurantsStatus.loading; + + RestaurantQueryResultDto? _restaurantsQuery; + + int get allRestaurantsQueryTotal => _restaurantsQuery?.total ?? 0; + + List get restaurantsList => _restaurantsQuery?.restaurants ?? []; + bool get shouldPaginate => restaurantsList.length < allRestaurantsQueryTotal && allRestaurantsQueryTotal > paginationSize; + + Future _init() async { + await loadRestaurants(); + } + + Future loadRestaurants() async { + try { + _emitRestaurantLoading(); + _restaurantsQuery = await restaurantRepository.getRestaurants(); + restaurantsList.isEmpty ? _emitRestaurantEmpty() : _emitRestaurantContent(); + } catch (exception, stackTrace) { + RTLogger.e(message: 'Fail to load Restaurants', exception: exception, stackTrace: stackTrace); + _emitRestaurantError(); + } + } + + Future paginateRestaurants() async { + if (restaurantsStatus.isPaginating || !shouldPaginate) return; + try { + _emitRestaurantPaginating(); + final paginated = await restaurantRepository.getRestaurants(offset: restaurantsList.length); + restaurantsList.addAll(paginated?.restaurants ?? []); + } catch (exception, stackTrace) { + RTLogger.e(message: 'Fail to paginate Restaurants', exception: exception, stackTrace: stackTrace); + } finally { + _emitRestaurantContent(); + } + } + + void _emitRestaurantContent() { + restaurantsStatus = RestaurantsStatus.content; + notifyListeners(); + } + + void _emitRestaurantLoading() { + restaurantsStatus = RestaurantsStatus.loading; + notifyListeners(); + } + + void _emitRestaurantPaginating() { + restaurantsStatus = RestaurantsStatus.paginating; + notifyListeners(); + } + + void _emitRestaurantError() { + restaurantsStatus = RestaurantsStatus.error; + notifyListeners(); + } + + void _emitRestaurantEmpty() { + restaurantsStatus = RestaurantsStatus.empty; + notifyListeners(); + } +} diff --git a/lib/features/restaurants/restaurants_screen.dart b/lib/features/restaurants/restaurants_screen.dart index 55215271..2b2c2791 100644 --- a/lib/features/restaurants/restaurants_screen.dart +++ b/lib/features/restaurants/restaurants_screen.dart @@ -1,8 +1,10 @@ import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page.dart'; +import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page_view_model.dart'; import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_page.dart'; -import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; +import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_page_view_model.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/services/event_bus_service.dart'; import 'package:restaurantour/services/favorite_service.dart'; import 'package:restaurantour/theme/theme.dart'; @@ -10,14 +12,6 @@ class RestaurantsScreen extends StatefulWidget { const RestaurantsScreen({super.key}); static RTRoute route = GoRouterConfig.home; - static Widget create() => ChangeNotifierProvider( - create: (context) => RestaurantsViewModel( - favoritesService: inject(), - restaurantRepository: inject(), - ), - child: const RestaurantsScreen(), - ); - @override State createState() => _RestaurantsScreenState(); } @@ -25,13 +19,6 @@ class RestaurantsScreen extends StatefulWidget { class _RestaurantsScreenState extends State { RestaurantsViewModel? model; - @override - void initState() { - super.initState(); - model = context.read(); - WidgetsBinding.instance.addPostFrameCallback((_) async => await model!.load()); - } - @override Widget build(BuildContext context) { return Scaffold( @@ -62,11 +49,27 @@ class _RestaurantsScreenState extends State { ], ), ), - body: const TabBarView( - children: [ - RestaurantsPage(), - FavoritesPage(), + body: MultiProvider( + providers: [ + ChangeNotifierProvider( + create: (context) => FavoritesViewModel( + eventBus: inject(), + favoritesService: inject(), + restaurantRepository: inject(), + ), + ), + ChangeNotifierProvider( + create: (context) => RestaurantsViewModel( + restaurantRepository: inject(), + ), + ), ], + child: const TabBarView( + children: [ + RestaurantsPage(), + FavoritesPage(), + ], + ), ), ), ), diff --git a/lib/services/event_bus_service.dart b/lib/services/event_bus_service.dart new file mode 100644 index 00000000..85665351 --- /dev/null +++ b/lib/services/event_bus_service.dart @@ -0,0 +1,11 @@ +import 'dart:async'; + +class EventBusService { + final StreamController _streamController = StreamController.broadcast(); + + StreamController get streamController => _streamController; + + Stream get stream => _streamController.stream; + + void fire(dynamic event) => _streamController.add(event); +} diff --git a/lib/services/favorite_service.dart b/lib/services/favorite_service.dart index fc3f3005..a677bc20 100644 --- a/lib/services/favorite_service.dart +++ b/lib/services/favorite_service.dart @@ -6,7 +6,7 @@ class FavoriteService { FavoriteService({required this.sharedPreferences}); - Future> loadFavorites() async { + Future> getFavorites() async { List? favoriteItems = sharedPreferences.getStringList(favoritesKey); favoriteItems ??= []; return favoriteItems; diff --git a/test/golden_test/details_screen_test.dart b/test/golden_test/details_screen_test.dart index 282b92f0..05646aa3 100644 --- a/test/golden_test/details_screen_test.dart +++ b/test/golden_test/details_screen_test.dart @@ -3,6 +3,7 @@ import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/details/details_screen.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/services/event_bus_service.dart'; import 'package:restaurantour/services/favorite_service.dart'; import '../test.dart'; @@ -10,8 +11,11 @@ import '../test.dart'; void main() { RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); FavoriteService favoritesService = FavoritesServiceMock(); + EventBusService eventBusService = EventBusServiceMock(); + setUp(() { GetIt.I.registerFactory(() => restaurantRepository); + GetIt.I.registerFactory(() => eventBusService); GetIt.I.registerFactory(() => favoritesService); GetIt.I.registerFactory(() => RTImageNetworkMock()); }); @@ -29,7 +33,7 @@ void main() { ); testGoldens('when [DetailsScreen] loads should show the title, favorite icon, and other details', (WidgetTester tester) async { - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResultDto.fixture())); @@ -42,7 +46,7 @@ void main() { }); testGoldens('when [DetailsScreen] loads a favorite restaurant should show the favorite icon filled', (WidgetTester tester) async { - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResultDto.fixture())); await loadAppFonts(); @@ -54,7 +58,7 @@ void main() { }); testGoldens('when [DetailsScreen] loads a non favorite restaurant should show the favorite icon not filled', (WidgetTester tester) async { - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResultDto.fixture())); await loadAppFonts(); @@ -68,7 +72,7 @@ void main() { group('toggleFavorite', () { testGoldens('''when [DetailsScreen] loads a non favorite restaurant and tap to favorite update the status and show the favorite icon filled''', (WidgetTester tester) async { - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); when(() => favoritesService.addFavorite(any())).thenAnswer((_) => Future.value()); when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResultDto.fixture())); @@ -84,7 +88,7 @@ void main() { testGoldens('''when [DetailsScreen] loads a favorite restaurant and tap to remove favorite update the status and show the favorite icon not filled''', (WidgetTester tester) async { - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); when(() => favoritesService.removeFavorite(any())).thenAnswer((_) => Future.value()); when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResultDto.fixture())); diff --git a/test/golden_test/favorites_page_test.dart b/test/golden_test/favorites_page_test.dart index 02fc2b3a..8fcbf525 100644 --- a/test/golden_test/favorites_page_test.dart +++ b/test/golden_test/favorites_page_test.dart @@ -1,9 +1,10 @@ import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page.dart'; -import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; +import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page_view_model.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/services/event_bus_service.dart'; import 'package:restaurantour/services/favorite_service.dart'; import '../test.dart'; @@ -26,11 +27,11 @@ void main() { ..addScenario( widget: widgetBuilder( ChangeNotifierProvider( - create: (context) { - final model = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - model.load(); - return model; - }, + create: (context) => FavoritesViewModel( + favoritesService: favoritesService, + restaurantRepository: restaurantRepository, + eventBus: EventBusService(), + ), child: const FavoritesPage(), ), ), @@ -39,7 +40,7 @@ void main() { testGoldens('''when successfully fetch the [RestaurantQueryResult] and has data, and also load the favorites fetch the data should create a [RTItemWidget] for each favorite [Restaurant]''', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); await loadAppFonts(); await tester.pumpDeviceBuilder(deviceBuilder); @@ -51,7 +52,7 @@ void main() { testGoldens('''when get some error while fetch the favorites, should render [RTErrorWidget] to inform to the user that something fails''', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); - when(() => favoritesService.loadFavorites()).thenThrow('error mock'); + when(() => favoritesService.getFavorites()).thenThrow('error mock'); await loadAppFonts(); await tester.pumpDeviceBuilder(deviceBuilder); @@ -64,7 +65,7 @@ void main() { and also when load the favorites and has no favorites, should render [RTEmptyWidget] to inform to the user that has no results''', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResultDto(restaurants: []))); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); await loadAppFonts(); await tester.pumpDeviceBuilder(deviceBuilder); diff --git a/test/golden_test/restauran_tour_test.dart b/test/golden_test/restauran_tour_test.dart index a1dd5f1d..fe0f6cb0 100644 --- a/test/golden_test/restauran_tour_test.dart +++ b/test/golden_test/restauran_tour_test.dart @@ -3,6 +3,7 @@ import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/restaurants/restaurants_screen.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/services/event_bus_service.dart'; import 'package:restaurantour/services/favorite_service.dart'; import '../test.dart'; @@ -10,11 +11,15 @@ import '../test.dart'; void main() { RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); FavoriteService favoritesService = FavoritesServiceMock(); + EventBusService eventBusService = EventBusServiceMock(); setUp(() { + GetIt.I.registerFactory(() => eventBusService); GetIt.I.registerFactory(() => restaurantRepository); GetIt.I.registerFactory(() => favoritesService); GetIt.I.registerFactory(() => RTImageNetworkMock()); + + when(() => eventBusService.stream).thenAnswer((_) => const Stream.empty()); }); tearDown(() { @@ -26,12 +31,12 @@ void main() { final deviceBuilder = DeviceBuilder() ..overrideDevicesForAllScenarios(devices: [Device.iphone11]) ..addScenario( - widget: widgetBuilder(RestaurantsScreen.create()), + widget: widgetBuilder(const RestaurantsScreen()), ); testGoldens('when [RestaurantTour] loads should show the title on the page and fetch the data for all restaurants', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); await loadAppFonts(); @@ -43,7 +48,7 @@ void main() { testGoldens('when [RestaurantTour] loads should show the title on the page and fetch the data for all favorites', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); await loadAppFonts(); await tester.pumpDeviceBuilder(deviceBuilder); diff --git a/test/mocks/mocks.dart b/test/mocks/mocks.dart index c0aa6611..19336db1 100644 --- a/test/mocks/mocks.dart +++ b/test/mocks/mocks.dart @@ -1,9 +1,10 @@ import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; +import 'package:mocktail/mocktail.dart'; import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/core/routes.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; -import 'package:mocktail/mocktail.dart'; +import 'package:restaurantour/services/event_bus_service.dart'; import 'package:restaurantour/services/favorite_service.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -13,6 +14,8 @@ class FavoritesServiceMock extends Mock implements FavoriteService {} class DioMock extends Mock implements Dio {} +class EventBusServiceMock extends Mock implements EventBusService {} + class RequestOptionsMock extends Mock implements RequestOptions {} class GoRouterConfigMock extends Mock implements GoRouterConfig {} diff --git a/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart b/test/unit_tests/details/details_view_model_test.dart similarity index 67% rename from test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart rename to test/unit_tests/details/details_view_model_test.dart index 6efe4bd4..8f5956b7 100644 --- a/test/unit_tests/restaurant_details/restaurant_details_view_model_test.dart +++ b/test/unit_tests/details/details_view_model_test.dart @@ -3,6 +3,7 @@ import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/details/details_view_model.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/services/event_bus_service.dart'; import 'package:restaurantour/services/favorite_service.dart'; import '../../test.dart'; @@ -10,6 +11,7 @@ import '../../test.dart'; void main() { FavoriteService favoritesService = FavoritesServiceMock(); RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); + EventBusService eventBusService = EventBusServiceMock(); setUp(() { GetIt.I.registerFactory(() => favoritesService); @@ -25,29 +27,44 @@ void main() { test('''when [DetailsViewModel] is created the [status] should starts with [DetailsStatus.loading] and no call to [favoritesService.loadFavorites] should be triggered''', () async { - final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); + final sut = DetailsViewModel( + favoriteService: favoritesService, + restaurantId: restaurantId, + restaurantRepository: restaurantRepository, + eventBus: eventBusService, + ); expect(sut.status, DetailsStatus.loading); - verifyNever(() => favoritesService.loadFavorites()); + verifyNever(() => favoritesService.getFavorites()); }); test('when [load] is called should call once time the [loadFavorites] on [FavoritesService]', () async { - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResultDto.fixture())); - final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); + final sut = DetailsViewModel( + favoriteService: favoritesService, + restaurantId: restaurantId, + restaurantRepository: restaurantRepository, + eventBus: eventBusService, + ); await sut.load(); - verify(() => favoritesService.loadFavorites()).called(1); + verify(() => favoritesService.getFavorites()).called(1); }); test('''when [load] get successfully the data from favoriteService the [status] should be [DetailsStatus.content]''', () async { - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResultDto.fixture())); - final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); + final sut = DetailsViewModel( + favoriteService: favoritesService, + restaurantId: restaurantId, + restaurantRepository: restaurantRepository, + eventBus: eventBusService, + ); await sut.load(); @@ -55,8 +72,13 @@ void main() { }); test('when [load] get some error from favoriteService the [status] should be [DetailsStatus.error]', () async { - when(() => favoritesService.loadFavorites()).thenThrow('error mock'); - final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); + when(() => favoritesService.getFavorites()).thenThrow('error mock'); + final sut = DetailsViewModel( + favoriteService: favoritesService, + restaurantId: restaurantId, + restaurantRepository: restaurantRepository, + eventBus: eventBusService, + ); when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResultDto.fixture())); @@ -67,8 +89,13 @@ void main() { test('''when [load] get successfully the data from favoriteService and finds a matching ID in the favorite list [detailsViewModel.isFavorite] should be [true]''', () async { - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([restaurantId])); - final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([restaurantId])); + final sut = DetailsViewModel( + favoriteService: favoritesService, + restaurantId: restaurantId, + restaurantRepository: restaurantRepository, + eventBus: eventBusService, + ); when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResultDto.fixture())); @@ -79,8 +106,13 @@ void main() { test('''when [load] get successfully the data from favoriteService and finds no matching ID in the favorite list [detailsViewModel.isFavorite] should be [false]''', () async { - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value(['new-restaurant'])); - final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value(['new-restaurant'])); + final sut = DetailsViewModel( + favoriteService: favoritesService, + restaurantId: restaurantId, + restaurantRepository: restaurantRepository, + eventBus: eventBusService, + ); await sut.load(); @@ -90,13 +122,18 @@ void main() { test('''when [load] get successfully the data from favoriteService and the [Restaurant] is favorite and when [toggleFavorite] is called should call [favoritesService.removeFavorite] once time and [detailsViewModel.isFavorite] should be changed to [false]''', () async { - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([restaurantId])); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([restaurantId])); when(() => favoritesService.addFavorite(any())).thenAnswer((_) => Future.value()); when(() => favoritesService.removeFavorite(any())).thenAnswer((_) => Future.value()); when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResultDto.fixture())); - final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); + final sut = DetailsViewModel( + favoriteService: favoritesService, + restaurantId: restaurantId, + restaurantRepository: restaurantRepository, + eventBus: eventBusService, + ); await sut.load(); expect(sut.isFavorite, true); @@ -111,10 +148,15 @@ void main() { test('''when [load] get successfully the data from favoriteService and the [Restaurant] is not favorite and when [toggleFavorite] is called should call [favoritesService.addFavorite] once time and [detailsViewModel.isFavorite] should be changed to [true]''', () async { - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value(['favorite-restaurant'])); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value(['favorite-restaurant'])); when(() => favoritesService.addFavorite(any())).thenAnswer((_) => Future.value()); when(() => favoritesService.removeFavorite(any())).thenAnswer((_) => Future.value()); - final sut = DetailsViewModel(favoriteService: favoritesService, restaurantId: restaurantId, restaurantRepository: restaurantRepository); + final sut = DetailsViewModel( + favoriteService: favoritesService, + restaurantId: restaurantId, + restaurantRepository: restaurantRepository, + eventBus: eventBusService, + ); await sut.load(); expect(sut.isFavorite, false); diff --git a/test/unit_tests/favorites/favorites_page_view_model_test.dart b/test/unit_tests/favorites/favorites_page_view_model_test.dart new file mode 100644 index 00000000..cd8d7a99 --- /dev/null +++ b/test/unit_tests/favorites/favorites_page_view_model_test.dart @@ -0,0 +1,195 @@ +import 'package:restaurantour/components/rt_image_network.dart'; +import 'package:restaurantour/core/core.dart'; +import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page_view_model.dart'; +import 'package:restaurantour/models/dto.dart'; +import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/services/event_bus_service.dart'; +import 'package:restaurantour/services/favorite_service.dart'; + +import '../../test.dart'; + +void main() { + RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); + FavoriteService favoritesService = FavoritesServiceMock(); + EventBusService eventBusService = EventBusServiceMock(); + + setUp(() { + GetIt.I.registerFactory(() => restaurantRepository); + GetIt.I.registerFactory(() => favoritesService); + GetIt.I.registerFactory(() => RTImageNetworkMock()); + when(() => eventBusService.stream).thenAnswer((_) => const Stream.empty()); + }); + + tearDown(() { + reset(restaurantRepository); + reset(favoritesService); + GetIt.I.reset(); + }); + + group('tests on restaurantViewModel.load() ->', () { + test('''when [RestaurantViewModel] is created the [FavoritesStatus] should starts with [RestaurantStatus.loading] + and one call to [restaurantRepository.getRestaurants] should be triggered''', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); + final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); + + expect(sut.status, FavoritesStatus.loading); + verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); + }); + + test('when [load] is called should call one more time the [getRestaurants] on [RestaurantRepository]', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); + final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); + + await sut.loadRestaurants(); + + verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(2); + }); + + test('when [load] get successfully the data from repository the [FavoritesStatus] should be [RestaurantStatus.content]', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); + final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); + + await sut.loadRestaurants(); + + expect(sut.status, FavoritesStatus.content); + }); + + test('''when [load] get successfully the data from repository but the [Restaurant] list is [empty] + the [FavoritesStatus] should be [RestaurantStatus.empty]''', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResultDto(restaurants: []))); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); + final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); + + await sut.loadRestaurants(); + + expect(sut.status, FavoritesStatus.empty); + }); + + test('when [load] get some error from repository the [FavoritesStatus] should be [RestaurantStatus.error]', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenThrow('error mock'); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); + final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); + + expect(sut.status, FavoritesStatus.error); + }); + + test('''when [load] get some error from repository + no more calls should be triggered to [restaurantRepository.getRestaurants]''', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenThrow('error mock'); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); + final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); + + await sut.loadRestaurants(); + + verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(2); + }); + }); + + group('tests on restaurantViewModel.loadFavorites() ->', () { + test('''when [RestaurantViewModel] is created the [favoritesStatus] should starts with [FavoriteStatus.loading] + and no call to [favoritesService.loadFavorites] should be triggered''', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); + final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); + + expect(sut.status, FavoritesStatus.loading); + verifyNever(() => favoritesService.getFavorites()); + }); + + test('when [loadFavorites] is called should call only once one more time the [getRestaurants] on [FavoritesService]', () async { + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); + final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); + + await sut.loadFavorites(); + + verify(() => favoritesService.getFavorites()).called(2); + }); + + test('''when [RestaurantViewModel] is created the [Restaurant] list has no items, + if [loadFavorites] get successfully the data from favoritesService + but the [Restaurant] don't have all the restaurants of favorites list + them should get each one from repository and the favoritesStatus should be content''', () async { + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); + when(() => restaurantRepository.getSingleRestaurant(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); + + final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); + + await sut.loadFavorites(); + + expect(sut.status, FavoritesStatus.content); + }); + + test('''when [load] get successfully the data from repository but the [Restaurant] list is [empty], + when [loadFavorites] get successfully the data from favoritesService + but the [Restaurant] don't have all the restaurants of favorites list + them should get each one from repository and the favoritesStatus should be content''', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResultDto(restaurants: []))); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); + final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); + + await sut.loadRestaurants(); + await sut.loadFavorites(); + + expect(sut.status, FavoritesStatus.content); + }); + + test('''when [load] get successfully the data from repository + and [loadFavorites] get successfully the data from favoritesService but finds no matching ID in the lists, + them should get each one from repository and the favoritesStatus should be content''', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value(['another-restaurant-id'])); + final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); + + await sut.loadRestaurants(); + await sut.loadFavorites(); + + expect(sut.status, FavoritesStatus.content); + }); + + test('''when [load] get successfully the data from repository + and [loadFavorites] get successfully the data from favoritesService and finds a matching ID in the lists, + the [favoritesStatus] should be [FavoriteStatus.content]''', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); + final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); + + await sut.loadRestaurants(); + await sut.loadFavorites(); + + expect(sut.status, FavoritesStatus.content); + }); + + test('''when [loadFavorites] get successfully the data from favoritesService but the list is [empty] + the [favoritesStatus] should be [FavoriteStatus.empty]''', () async { + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); + final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); + + await sut.loadFavorites(); + + expect(sut.status, FavoritesStatus.empty); + }); + + test('''when [loadFavorites] get some error from favoritesService + the [favoritesStatus] should be [FavoriteStatus.error]''', () async { + when(() => favoritesService.getFavorites()).thenThrow('error mock'); + final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); + + await sut.loadFavorites(); + + expect(sut.status, FavoritesStatus.error); + }); + + test('''when [loadFavorites] get some error from favoritesService + no more calls should be triggered to [favoritesService.loadFavorites]''', () async { + when(() => favoritesService.getFavorites()).thenThrow('error mock'); + final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); + + await sut.loadFavorites(); + + verify(() => favoritesService.getFavorites()).called(2); + }); + }); +} diff --git a/test/unit_tests/restaurants/restaurant_page_view_model_test.dart b/test/unit_tests/restaurants/restaurant_page_view_model_test.dart new file mode 100644 index 00000000..acc4da54 --- /dev/null +++ b/test/unit_tests/restaurants/restaurant_page_view_model_test.dart @@ -0,0 +1,92 @@ +import 'package:restaurantour/components/rt_image_network.dart'; +import 'package:restaurantour/core/core.dart'; +import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_page_view_model.dart'; +import 'package:restaurantour/models/dto.dart'; +import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/services/event_bus_service.dart'; +import 'package:restaurantour/services/favorite_service.dart'; + +import '../../test.dart'; + +void main() { + EventBusService eventBusService = EventBusServiceMock(); + RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); + FavoriteService favoritesService = FavoritesServiceMock(); + + setUp(() { + GetIt.I.registerFactory(() => eventBusService); + GetIt.I.registerFactory(() => restaurantRepository); + GetIt.I.registerFactory(() => favoritesService); + GetIt.I.registerFactory(() => RTImageNetworkMock()); + }); + + tearDown(() { + reset(restaurantRepository); + reset(favoritesService); + GetIt.I.reset(); + }); + + group('tests on restaurantViewModel.load() ->', () { + test('''when [RestaurantViewModel] is created the [restaurantsStatus] should starts with [RestaurantStatus.loading] + and should call to [restaurantRepository.getRestaurants]''', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); + final sut = RestaurantsViewModel(restaurantRepository: restaurantRepository); + + expect(sut.restaurantsStatus, RestaurantsStatus.loading); + verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); + }); + + test('when [load] is called should call once more time the [getRestaurants] on [RestaurantRepository]', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); + final sut = RestaurantsViewModel(restaurantRepository: restaurantRepository); + + await sut.loadRestaurants(); + + verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(2); + }); + + test('when [load] get successfully the data from repository the [restaurantsStatus] should be [RestaurantStatus.content]', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); + final sut = RestaurantsViewModel(restaurantRepository: restaurantRepository); + + await sut.loadRestaurants(); + + expect(sut.restaurantsStatus, RestaurantsStatus.content); + }); + + test('''when [load] get successfully the data from repository but the [Restaurant] list is [empty] + the [restaurantsStatus] should be [RestaurantStatus.empty]''', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResultDto(restaurants: []))); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); + final sut = RestaurantsViewModel(restaurantRepository: restaurantRepository); + + await sut.loadRestaurants(); + + expect(sut.restaurantsStatus, RestaurantsStatus.empty); + }); + + test('when [load] get some error from repository the [restaurantsStatus] should be [RestaurantStatus.error]', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenThrow('error mock'); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); + final sut = RestaurantsViewModel(restaurantRepository: restaurantRepository); + + await sut.loadRestaurants(); + + expect(sut.restaurantsStatus, RestaurantsStatus.error); + }); + + test('''when [load] get some error from repository + no more calls should be triggered to [restaurantRepository.getRestaurants]''', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenThrow('error mock'); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); + final sut = RestaurantsViewModel(restaurantRepository: restaurantRepository); + + await sut.loadRestaurants(); + + verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(2); + }); + }); +} diff --git a/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart b/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart deleted file mode 100644 index de38f595..00000000 --- a/test/unit_tests/restaurants_list/restaurant_list_view_model_test.dart +++ /dev/null @@ -1,193 +0,0 @@ -import 'package:restaurantour/components/rt_image_network.dart'; -import 'package:restaurantour/core/core.dart'; -import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; -import 'package:restaurantour/models/dto.dart'; -import 'package:restaurantour/repositories/restaurant_repository.dart'; -import 'package:restaurantour/services/favorite_service.dart'; - -import '../../test.dart'; - -void main() { - RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); - FavoriteService favoritesService = FavoritesServiceMock(); - setUp(() { - GetIt.I.registerFactory(() => restaurantRepository); - GetIt.I.registerFactory(() => favoritesService); - GetIt.I.registerFactory(() => RTImageNetworkMock()); - }); - - tearDown(() { - reset(restaurantRepository); - reset(favoritesService); - GetIt.I.reset(); - }); - - group('tests on restaurantViewModel.load() ->', () { - test('''when [RestaurantViewModel] is created the [restaurantsStatus] should starts with [RestaurantStatus.loading] - and no call to [restaurantRepository.getRestaurants] should be triggered''', () async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - - expect(sut.restaurantsStatus, RestaurantsStatus.loading); - verifyNever(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))); - }); - - test('when [load] is called should call once time the [getRestaurants] on [RestaurantRepository]', () async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - - await sut.load(); - - verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); - }); - - test('when [load] get successfully the data from repository the [restaurantsStatus] should be [RestaurantStatus.content]', () async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - - await sut.load(); - - expect(sut.restaurantsStatus, RestaurantsStatus.content); - }); - - test('''when [load] get successfully the data from repository but the [Restaurant] list is [empty] - the [restaurantsStatus] should be [RestaurantStatus.empty]''', () async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResultDto(restaurants: []))); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - - await sut.load(); - - expect(sut.restaurantsStatus, RestaurantsStatus.empty); - }); - - test('when [load] get some error from repository the [restaurantsStatus] should be [RestaurantStatus.error]', () async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenThrow('error mock'); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - - await sut.load(); - - expect(sut.restaurantsStatus, RestaurantsStatus.error); - }); - - test('''when [load] get some error from repository - no more calls should be triggered to [restaurantRepository.getRestaurants]''', () async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenThrow('error mock'); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - - await sut.load(); - - verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); - }); - }); - - group('tests on restaurantViewModel.loadFavorites() ->', () { - test('''when [RestaurantViewModel] is created the [favoritesStatus] should starts with [FavoriteStatus.loading] - and no call to [favoritesService.loadFavorites] should be triggered''', () async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - - expect(sut.favoritesStatus, FavoritesStatus.loading); - verifyNever(() => favoritesService.loadFavorites()); - }); - - test('when [loadFavorites] is called should call only once time the [getRestaurants] on [FavoritesService]', () async { - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - - await sut.loadFavorites(); - - verify(() => favoritesService.loadFavorites()).called(1); - }); - - test('''when [RestaurantViewModel] is created the [Restaurant] list has no items, - if [loadFavorites] get successfully the data from favoritesService - but the [Restaurant] don't have all the restaurants of favorites list - them should get each one from repository and the favoritesStatus should be content''', () async { - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); - when(() => restaurantRepository.getSingleRestaurant(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); - - final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - - await sut.loadFavorites(); - - expect(sut.favoritesStatus, FavoritesStatus.content); - }); - - test('''when [load] get successfully the data from repository but the [Restaurant] list is [empty], - when [loadFavorites] get successfully the data from favoritesService - but the [Restaurant] don't have all the restaurants of favorites list - them should get each one from repository and the favoritesStatus should be content''', () async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResultDto(restaurants: []))); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); - final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - - await sut.load(); - await sut.loadFavorites(); - - expect(sut.favoritesStatus, FavoritesStatus.content); - }); - - test('''when [load] get successfully the data from repository - and [loadFavorites] get successfully the data from favoritesService but finds no matching ID in the lists, - them should get each one from repository and the favoritesStatus should be content''', () async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value(['another-restaurant-id'])); - final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - - await sut.load(); - await sut.loadFavorites(); - - expect(sut.favoritesStatus, FavoritesStatus.content); - }); - - test('''when [load] get successfully the data from repository - and [loadFavorites] get successfully the data from favoritesService and finds a matching ID in the lists, - the [favoritesStatus] should be [FavoriteStatus.content]''', () async { - when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); - final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - - await sut.load(); - await sut.loadFavorites(); - - expect(sut.favoritesStatus, FavoritesStatus.content); - }); - - test('''when [loadFavorites] get successfully the data from favoritesService but the list is [empty] - the [favoritesStatus] should be [FavoriteStatus.empty]''', () async { - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); - final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - - await sut.loadFavorites(); - - expect(sut.favoritesStatus, FavoritesStatus.empty); - }); - - test('''when [loadFavorites] get some error from favoritesService - the [favoritesStatus] should be [FavoriteStatus.error]''', () async { - when(() => favoritesService.loadFavorites()).thenThrow('error mock'); - final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - - await sut.loadFavorites(); - - expect(sut.favoritesStatus, FavoritesStatus.error); - }); - - test('''when [loadFavorites] get some error from favoritesService - no more calls should be triggered to [favoritesService.loadFavorites]''', () async { - when(() => favoritesService.loadFavorites()).thenThrow('error mock'); - final sut = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - - await sut.loadFavorites(); - - verify(() => favoritesService.loadFavorites()).called(1); - }); - }); -} diff --git a/test/unit_tests/services/favorites_service_test.dart b/test/unit_tests/services/favorites_service_test.dart index 3b76bd63..884d0718 100644 --- a/test/unit_tests/services/favorites_service_test.dart +++ b/test/unit_tests/services/favorites_service_test.dart @@ -20,7 +20,7 @@ void main() { when(() => sharedPreferences.getStringList(any())).thenReturn([]); final sut = FavoriteService(sharedPreferences: sharedPreferences); - final result = await sut.loadFavorites(); + final result = await sut.getFavorites(); expect(result, []); }); diff --git a/test/widget_tests/favorites_page_test.dart b/test/widget_tests/favorites_page_test.dart index 871ee660..ed856c91 100644 --- a/test/widget_tests/favorites_page_test.dart +++ b/test/widget_tests/favorites_page_test.dart @@ -1,9 +1,10 @@ import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page.dart'; -import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; +import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page_view_model.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/services/event_bus_service.dart'; import 'package:restaurantour/services/favorite_service.dart'; import 'package:restaurantour/theme/theme.dart'; @@ -27,11 +28,11 @@ void main() { debugShowCheckedModeBanner: false, theme: RTThemeData.themeData, home: ChangeNotifierProvider( - create: (context) { - final model = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - model.load(); - return model; - }, + create: (context) => FavoritesViewModel( + favoritesService: favoritesService, + restaurantRepository: restaurantRepository, + eventBus: EventBusService(), + ), child: const FavoritesPage(), ), ); @@ -39,7 +40,7 @@ void main() { testWidgets('''when successfully fetch the [RestaurantQueryResult] and has data, and also load the favorites fetch the data should create a [RTItemWidget] for each favorite [Restaurant]''', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); @@ -48,46 +49,46 @@ void main() { expect(find.bySubtype(), findsAtLeastNWidgets(1)); expect(find.byKey(const Key('favorite-restaurant-0')), findsOneWidget); verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); - verify(() => favoritesService.loadFavorites()).called(1); + verify(() => favoritesService.getFavorites()).called(1); }); testWidgets('''when get some error while fetch the favorites, should render [RTErrorWidget] to inform to the user that something fails''', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); - when(() => favoritesService.loadFavorites()).thenThrow('error mock'); + when(() => favoritesService.getFavorites()).thenThrow('error mock'); await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); expect(find.bySubtype(), findsAtLeastNWidgets(1)); verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); - verify(() => favoritesService.loadFavorites()).called(1); + verify(() => favoritesService.getFavorites()).called(1); }); testWidgets('''when successfully fetch the [RestaurantQueryResult] and has no data, and also when load the favorites and has no favorites, should render [RTEmptyWidget] to inform to the user that has no results''', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResultDto(restaurants: []))); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); expect(find.bySubtype(), findsAtLeastNWidgets(1)); verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); - verify(() => favoritesService.loadFavorites()).called(1); + verify(() => favoritesService.getFavorites()).called(1); }); testWidgets('''when successfully fetch the [RestaurantQueryResult] and has data, but when load the favorites and has no favorites, should render [RTEmptyWidget] to inform to the user that has no results''', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); expect(find.bySubtype(), findsAtLeastNWidgets(1)); verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); - verify(() => favoritesService.loadFavorites()).called(1); + verify(() => favoritesService.getFavorites()).called(1); }); testWidgets('''when successfully fetch the [RestaurantQueryResult] and has no data, @@ -95,7 +96,7 @@ void main() { but the [Restaurant] don't have all the restaurants of favorites list them should get each one from repository and the favoritesStatus should be content''', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResultDto(restaurants: []))); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); diff --git a/test/widget_tests/restauran_tour_test.dart b/test/widget_tests/restauran_tour_test.dart index f22d8b3d..6bd15d2f 100644 --- a/test/widget_tests/restauran_tour_test.dart +++ b/test/widget_tests/restauran_tour_test.dart @@ -24,9 +24,9 @@ void main() { testWidgets('when [RestaurantTour] loads should show the title on the page and fetch the data', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); - await tester.pumpWidget(widgetBuilder(RestaurantsScreen.create())); + await tester.pumpWidget(widgetBuilder(const RestaurantsScreen())); expect(find.text('RestauranTour'), findsOneWidget); verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); @@ -34,9 +34,9 @@ void main() { testWidgets('when [RestaurantTour] loads should show the tabs [All Restaurants] and [My Favorites] on the page and fetch the data', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); - await tester.pumpWidget(widgetBuilder(RestaurantsScreen.create())); + await tester.pumpWidget(widgetBuilder(const RestaurantsScreen())); expect(find.text('All Restaurants'), findsOneWidget); expect(find.text('My Favorites'), findsOneWidget); diff --git a/test/widget_tests/restaurant_details_screen_test.dart b/test/widget_tests/restaurant_details_screen_test.dart index d5ac58bd..105166b6 100644 --- a/test/widget_tests/restaurant_details_screen_test.dart +++ b/test/widget_tests/restaurant_details_screen_test.dart @@ -6,15 +6,19 @@ import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/features/details/details_screen.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; +import 'package:restaurantour/services/event_bus_service.dart'; import 'package:restaurantour/services/favorite_service.dart'; import 'package:restaurantour/theme/theme.dart'; import '../test.dart'; void main() { + EventBusService eventBusService = EventBusServiceMock(); RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); FavoriteService favoritesService = FavoritesServiceMock(); setUp(() { + GetIt.I.registerFactory(() => eventBusService); + GetIt.I.registerFactory(() => restaurantRepository); GetIt.I.registerFactory(() => favoritesService); GetIt.I.registerFactory(() => RTImageNetworkMock()); @@ -35,7 +39,7 @@ void main() { testWidgets('''when successfully load the [DetailsScreen] should create a have the favorite Icon, the name of restaurant''', (WidgetTester tester) async { - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResultDto.fixture())); @@ -49,7 +53,7 @@ void main() { testWidgets('''when successfully load the [DetailsScreen] but fails to load favorites should display the error screen''', (WidgetTester tester) async { - when(() => favoritesService.loadFavorites()).thenThrow('error mock'); + when(() => favoritesService.getFavorites()).thenThrow('error mock'); await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); @@ -60,7 +64,7 @@ void main() { testWidgets('''if successfully load the [DetailsScreen] and the restaurant is already favorite, when tap on favorite button should call the service to remove from favorites passing the id''', (WidgetTester tester) async { final restaurantId = RestaurantDto.fixture().id!; - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([restaurantId])); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([restaurantId])); when(() => favoritesService.removeFavorite(any())).thenAnswer((_) => Future.value()); when(() => restaurantRepository.getRestaurantDetails(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(RestaurantDto.fixture())); when(() => restaurantRepository.getReviews(restaurantId: any(named: 'restaurantId'))).thenAnswer((_) => Future.value(ReviewQueryResultDto.fixture())); diff --git a/test/widget_tests/restaurants_page_test.dart b/test/widget_tests/restaurants_page_test.dart index ed2af86f..fcd39f66 100644 --- a/test/widget_tests/restaurants_page_test.dart +++ b/test/widget_tests/restaurants_page_test.dart @@ -1,7 +1,7 @@ import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_page.dart'; -import 'package:restaurantour/features/restaurants/restaurants_view_model.dart'; +import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_page_view_model.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; @@ -27,11 +27,7 @@ void main() { debugShowCheckedModeBanner: false, theme: RTThemeData.themeData, home: ChangeNotifierProvider( - create: (context) { - final model = RestaurantsViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository); - model.load(); - return model; - }, + create: (context) => RestaurantsViewModel(restaurantRepository: restaurantRepository), child: const RestaurantsPage(), ), ); @@ -39,7 +35,7 @@ void main() { testWidgets('''when successfully fetch the [RestaurantQueryResult] and has data, should create a [RTItemWidget] for each [Restaurant]''', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); @@ -53,7 +49,7 @@ void main() { testWidgets('''when get some error while fetch the [RestaurantQueryResult], should render [RTErrorWidget] to inform to the user that something fails''', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenThrow('error mock'); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); @@ -65,7 +61,7 @@ void main() { testWidgets('''when successfully fetch the [RestaurantQueryResult] and has no data, should render [RTEmptyWidget] to inform to the user that has no results''', (WidgetTester tester) async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(const RestaurantQueryResultDto(restaurants: []))); - when(() => favoritesService.loadFavorites()).thenAnswer((_) => Future.value([])); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); await tester.pumpWidget(widgetBuilder()); await tester.pumpAndSettle(); From 6cfdb4eee11a47623b60f0b926ee72d8a6e711f5 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sun, 3 Mar 2024 18:01:59 -0300 Subject: [PATCH 81/89] feat: setup pipe --- .github/workflows/dart.yml | 20 +++++++++++ Makefile | 3 ++ .../favorites/favorites_page_view_model.dart | 1 - test/flutter_test_config.dart | 24 ++++++++++++++ .../local_file_comparator_with_threshold.dart | 33 +++++++++++++++++++ 5 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/dart.yml create mode 100644 test/flutter_test_config.dart create mode 100644 test/utils/local_file_comparator_with_threshold.dart diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml new file mode 100644 index 00000000..539f58de --- /dev/null +++ b/.github/workflows/dart.yml @@ -0,0 +1,20 @@ +name: PR Changes + +on: + pull_request: + +jobs: + run_tests: + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + - uses: subosito/flutter-action@v2 + with: + flutter-version: '3.13.9' + - run: dart pub global activate arb_utils + - run: flutter pub get + - run: flutter clean + - run: make gen + - run: make l10n + - run: make tests-ci-cd + diff --git a/Makefile b/Makefile index 2cb80302..9440a44a 100644 --- a/Makefile +++ b/Makefile @@ -5,6 +5,9 @@ all-tests : tests integration-tests tests : flutter test --coverage +tests-ci-cd : + rm -rf coverage && flutter test --coverage --dart-define=runningOnCICD=true + integration-tests : flutter test integration_test/app_test.dart diff --git a/lib/features/restaurants/pages/favorites/favorites_page_view_model.dart b/lib/features/restaurants/pages/favorites/favorites_page_view_model.dart index eb3508ff..875fb90d 100644 --- a/lib/features/restaurants/pages/favorites/favorites_page_view_model.dart +++ b/lib/features/restaurants/pages/favorites/favorites_page_view_model.dart @@ -17,7 +17,6 @@ class FavoritesViewModel with ChangeNotifier { final RestaurantRepository restaurantRepository; final FavoriteService favoritesService; final EventBusService eventBus; - final int paginationSize = 20; final List _restaurantsCache = []; diff --git a/test/flutter_test_config.dart b/test/flutter_test_config.dart new file mode 100644 index 00000000..d5d03e74 --- /dev/null +++ b/test/flutter_test_config.dart @@ -0,0 +1,24 @@ +import 'dart:async'; + +import 'package:flutter_test/flutter_test.dart'; + +import 'utils/local_file_comparator_with_threshold.dart'; + +const runningOnCICD = bool.fromEnvironment('runningOnCICD', defaultValue: false); + +const _kGoldenTestsThreshold = 0.01 / 100; + +Future testExecutable(FutureOr Function() testMain) async { + if (goldenFileComparator is LocalFileComparator) { + final testUrl = (goldenFileComparator as LocalFileComparator).basedir; + + goldenFileComparator = LocalFileComparatorWithThreshold(Uri.parse('$testUrl/test.dart'), runningOnCICD ? _kGoldenTestsThreshold : 0.0); + } else { + throw Exception( + 'Expected `goldenFileComparator` to be of type `LocalFileComparator`, ' + 'but it is of type `${goldenFileComparator.runtimeType}`', + ); + } + + await testMain(); +} diff --git a/test/utils/local_file_comparator_with_threshold.dart b/test/utils/local_file_comparator_with_threshold.dart new file mode 100644 index 00000000..f411af53 --- /dev/null +++ b/test/utils/local_file_comparator_with_threshold.dart @@ -0,0 +1,33 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter_test/flutter_test.dart'; + +class LocalFileComparatorWithThreshold extends LocalFileComparator { + final double threshold; + + LocalFileComparatorWithThreshold(Uri testFile, this.threshold) + : assert(threshold >= 0 && threshold <= 1), + super(testFile); + @override + Future compare(Uint8List imageBytes, Uri golden) async { + final result = await GoldenFileComparator.compareLists( + imageBytes, + await getGoldenBytes(golden), + ); + + if (!result.passed && result.diffPercent <= threshold) { + debugPrint( + 'A difference of ${result.diffPercent * 100}% was found, but it is ' + 'acceptable since it is not greater than the threshold of ' + '${threshold * 100}%', + ); + + return true; + } + + if (!result.passed) { + final error = await generateFailureOutput(result, golden, basedir); + throw FlutterError(error); + } + return result.passed; + } +} From f80b0aa297785c0a609c88743b9e213504bc7068 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sun, 3 Mar 2024 21:30:32 -0300 Subject: [PATCH 82/89] feat: refactor use rt_size --- lib/components/rt_empty_widget.dart | 11 ++- lib/components/rt_error_widget.dart | 12 +-- lib/components/rt_item_widget.dart | 26 +++--- lib/components/rt_review_widget.dart | 16 ++-- lib/components/rt_shimmer_loading.dart | 51 +++++----- lib/features/details/details_screen.dart | 46 ++++----- .../pages/favorites/favorites_page.dart | 12 +-- .../favorites/favorites_page_view_model.dart | 2 +- .../pages/restaurants/restaurants_page.dart | 13 +-- lib/l10n/app_en.arb | 2 +- lib/services/event_bus_service.dart | 2 +- lib/theme/rt_colors.dart | 3 + lib/theme/rt_sizes.dart | 93 +++++++++++++++++++ lib/theme/rt_text_style.dart | 1 + lib/theme/rt_theme.dart | 17 +++- lib/theme/theme.dart | 1 + test/golden_test/restauran_tour_test.dart | 2 - .../favorites_page_view_model_test.dart | 1 - 18 files changed, 213 insertions(+), 98 deletions(-) create mode 100644 lib/theme/rt_sizes.dart diff --git a/lib/components/rt_empty_widget.dart b/lib/components/rt_empty_widget.dart index 8fdc9014..6a200e0d 100644 --- a/lib/components/rt_empty_widget.dart +++ b/lib/components/rt_empty_widget.dart @@ -1,4 +1,5 @@ import 'package:restaurantour/core/core.dart'; +import 'package:restaurantour/theme/theme.dart'; class RTEmptyWidget extends StatelessWidget { const RTEmptyWidget({super.key}); @@ -6,15 +7,15 @@ class RTEmptyWidget extends StatelessWidget { @override Widget build(BuildContext context) { return Padding( - padding: const EdgeInsets.symmetric(horizontal: 18.0), + padding: EdgeInsets.symmetric(horizontal: RTSizesType.xxl.size), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - const SizedBox( - height: 80, - child: Icon(Icons.search, size: 80), + SizedBox( + height: RTSizesType.xxxg.size, + child: Icon(Icons.search, size: RTSizesType.xxxg.size), ), - const SizedBox(height: 20), + RTSizesType.xxxl.spacer, Text( AppLocalizations.of(context)!.emptyMessage, textAlign: TextAlign.center, diff --git a/lib/components/rt_error_widget.dart b/lib/components/rt_error_widget.dart index 34200ddf..3252efbc 100644 --- a/lib/components/rt_error_widget.dart +++ b/lib/components/rt_error_widget.dart @@ -8,24 +8,24 @@ class RTErrorWidget extends StatelessWidget { @override Widget build(BuildContext context) { return Padding( - padding: const EdgeInsets.all(18.0), + padding: EdgeInsets.all(RTSizesType.xxl.size), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - SizedBox(height: 80, child: SvgPicture.asset('assets/svg/404.svg')), - const SizedBox(height: 40), + SizedBox(height: RTSizesType.xxxg.size, child: SvgPicture.asset('assets/svg/404.svg')), + RTSizesType.xg.spacer, Text( AppLocalizations.of(context)!.errorMessage, textAlign: TextAlign.center, ), if (onTryAgain != null) Padding( - padding: const EdgeInsets.only(top: 12.0), - child: ElevatedButton( + padding: EdgeInsets.only(top: RTSizesType.m.size), + child: TextButton( onPressed: () => onTryAgain!(), child: Text( AppLocalizations.of(context)!.rtTryAgain, - style: RTTextStyle.button(), + style: RTTextStyle.textButton(), ), ), ), diff --git a/lib/components/rt_item_widget.dart b/lib/components/rt_item_widget.dart index 9b191893..f349a353 100644 --- a/lib/components/rt_item_widget.dart +++ b/lib/components/rt_item_widget.dart @@ -25,25 +25,25 @@ class RTItemWidget extends StatelessWidget { Widget build(BuildContext context) { final theme = Theme.of(context).extension()!; return Padding( - padding: const EdgeInsets.all(12.0).copyWith(top: isFirstItem ? 16 : 0), + padding: EdgeInsets.all(RTSizesType.m.size).copyWith(top: isFirstItem ? RTSizesType.xl.size : 0), child: Material( color: theme.whiteColor, - borderRadius: const BorderRadius.all(Radius.circular(8)), - elevation: 2, + borderRadius: BorderRadius.all(RTSizesType.s.radius), + elevation: RTSizesType.xxxs.size, child: InkWell( onTap: openDetails, child: SizedBox( - height: 104, + height: RTSizesType.xgg.size, child: Padding( - padding: const EdgeInsets.all(8.0), + padding: EdgeInsets.all(RTSizesType.s.size), child: Row( mainAxisSize: MainAxisSize.min, children: [ ClipRRect( - borderRadius: const BorderRadius.all(Radius.circular(8)), + borderRadius: BorderRadius.all(RTSizesType.s.radius), child: SizedBox( - width: 88, - height: 88, + width: RTSizesType.gg.size, + height: RTSizesType.gg.size, child: Hero( tag: restaurant.name ?? '', child: imageNetwork.build( @@ -56,7 +56,7 @@ class RTItemWidget extends StatelessWidget { ), ), ), - const SizedBox(width: 12), + RTSizesType.m.spacer, Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -85,12 +85,12 @@ class RTItemWidget extends StatelessWidget { : AppLocalizations.of(context)!.restaurantListAllRestaurantsTabClosed, style: RTTextStyle.overline(), ), - const SizedBox(width: 8), + RTSizesType.s.spacer, Padding( - padding: const EdgeInsets.only(top: 3.0), + padding: EdgeInsets.only(top: RTSizesType.xxxs.size), child: Container( - width: 8, - height: 8, + width: RTSizesType.s.size, + height: RTSizesType.s.size, decoration: BoxDecoration( shape: BoxShape.circle, color: restaurant.isOpen ? theme.openColor : theme.closedColor, diff --git a/lib/components/rt_review_widget.dart b/lib/components/rt_review_widget.dart index ea1f7c67..9365c31a 100644 --- a/lib/components/rt_review_widget.dart +++ b/lib/components/rt_review_widget.dart @@ -19,28 +19,28 @@ class RTReviewWidget extends StatelessWidget { children: [ if (!isFirstItem) Divider(color: theme.dividerLineColor), Padding( - padding: const EdgeInsets.symmetric(vertical: 16.0), + padding: EdgeInsets.symmetric(vertical: RTSizesType.xl.size), child: SizedBox( - height: 140, + height: RTSizesType.xxxgg.size, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row(children: starRate), - const SizedBox(height: 8), + RTSizesType.s.spacer, Text( review.text ?? '', maxLines: 3, overflow: TextOverflow.ellipsis, style: RTTextStyle.body1(), ), - const SizedBox(height: 8), + RTSizesType.s.spacer, Row( children: [ SizedBox( - width: 40, - height: 40, + width: RTSizesType.xg.size, + height: RTSizesType.xg.size, child: ClipRRect( - borderRadius: BorderRadius.circular(300), + borderRadius: BorderRadius.circular(RTSizesType.xxxxgg.size), child: imageNetwork.build( location: review.user?.imageUrl ?? '', errorWidget: Container( @@ -50,7 +50,7 @@ class RTReviewWidget extends StatelessWidget { ), ), ), - const SizedBox(width: 8), + RTSizesType.s.spacer, Text( review.user?.name ?? '', style: RTTextStyle.caption(), diff --git a/lib/components/rt_shimmer_loading.dart b/lib/components/rt_shimmer_loading.dart index add46461..a1e5d9c1 100644 --- a/lib/components/rt_shimmer_loading.dart +++ b/lib/components/rt_shimmer_loading.dart @@ -7,12 +7,13 @@ class RTShimmerLoading extends StatelessWidget { @override Widget build(BuildContext context) { + final theme = Theme.of(context).extension()!; return IgnorePointer( child: Shimmer.fromColors( - baseColor: const Color(0xFFD8D8D8), - highlightColor: const Color(0xFFFFFFFF), + baseColor: theme.shimmerBaseColor, + highlightColor: theme.shimmerHighlightColor, child: Padding( - padding: const EdgeInsets.only(top: 6.0), + padding: EdgeInsets.only(top: RTSizesType.xs.size), child: ListView( children: List.generate(15, (index) => const TileLoading()), ), @@ -30,65 +31,65 @@ class TileLoading extends StatelessWidget { final theme = Theme.of(context).extension()!; return Padding( - padding: const EdgeInsets.all(12.0), + padding: EdgeInsets.all(RTSizesType.m.size), child: Container( decoration: BoxDecoration( - border: Border.all(strokeAlign: 1, color: theme.dividerLineColor), - borderRadius: const BorderRadius.all(Radius.circular(8)), + border: Border.all(strokeAlign: RTSizesType.xxxxs.size, color: theme.dividerLineColor), + borderRadius: BorderRadius.all(RTSizesType.s.radius), ), - height: 104, + height: RTSizesType.xgg.size, child: Row( mainAxisAlignment: MainAxisAlignment.start, children: [ Padding( - padding: const EdgeInsets.all(8.0), + padding: EdgeInsets.all(RTSizesType.s.size), child: Container( - height: 88, - width: 88, + height: RTSizesType.gg.size, + width: RTSizesType.gg.size, decoration: BoxDecoration( color: theme.placeholderColor, - borderRadius: const BorderRadius.all(Radius.circular(8)), + borderRadius: BorderRadius.all(RTSizesType.s.radius), ), ), ), Expanded( child: Padding( - padding: const EdgeInsets.all(12.0), + padding: EdgeInsets.all(RTSizesType.m.size), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( - height: 18, + height: RTSizesType.xxl.size, decoration: BoxDecoration( - borderRadius: const BorderRadius.all(Radius.circular(8)), + borderRadius: BorderRadius.all(RTSizesType.s.radius), color: theme.placeholderColor, ), ), - const SizedBox(height: 4), + RTSizesType.xxs.spacer, Container( - height: 18, + height: RTSizesType.xxl.size, decoration: BoxDecoration( - borderRadius: const BorderRadius.all(Radius.circular(8)), + borderRadius: BorderRadius.all(RTSizesType.s.radius), color: theme.placeholderColor, ), ), - const SizedBox(height: 4), + RTSizesType.xxs.spacer, Expanded( child: Container( - height: 18, - width: 40, + height: RTSizesType.xxl.size, + width: RTSizesType.xg.size, decoration: BoxDecoration( - borderRadius: const BorderRadius.all(Radius.circular(8)), + borderRadius: BorderRadius.all(RTSizesType.s.radius), color: theme.placeholderColor, ), ), ), - const SizedBox(height: 4), + RTSizesType.xxs.spacer, Container( - height: 12, - width: 80, + height: RTSizesType.m.size, + width: RTSizesType.xxxg.size, decoration: BoxDecoration( - borderRadius: const BorderRadius.all(Radius.circular(8)), + borderRadius: BorderRadius.all(RTSizesType.s.radius), color: theme.placeholderColor, ), ), diff --git a/lib/features/details/details_screen.dart b/lib/features/details/details_screen.dart index f7d3ea02..5a11fad6 100644 --- a/lib/features/details/details_screen.dart +++ b/lib/features/details/details_screen.dart @@ -51,7 +51,7 @@ class _DetailsScreenState extends State { } _scrollListener() { - const spaceBeforeEndOfScroll = 50; + final spaceBeforeEndOfScroll = RTSizesType.xxg.size; if (scrollController.offset >= scrollController.position.maxScrollExtent - spaceBeforeEndOfScroll && !scrollController.position.outOfRange) { model!.paginateReviews(); } @@ -84,9 +84,13 @@ class _DetailsScreenState extends State { ), actions: [ model!.status.isAddingFavorite - ? const Padding( - padding: EdgeInsets.only(right: 14.0), - child: SizedBox(width: 18, height: 18, child: CircularProgressIndicator(strokeWidth: 2)), + ? Padding( + padding: EdgeInsets.only(right: RTSizesType.l.size), + child: SizedBox( + width: RTSizesType.xxl.size, + height: RTSizesType.xxl.size, + child: CircularProgressIndicator(strokeWidth: RTSizesType.xxxs.size), + ), ) : IconButton( key: const Key('favorite-button'), @@ -102,17 +106,17 @@ class _DetailsScreenState extends State { controller: scrollController, children: [ SizedBox( - height: 360, + height: RTSizesType.xxxxxgg.size, child: Hero( tag: restaurant.name ?? '', child: imageNetwork.build( location: restaurant.heroImage, - errorWidget: const Icon(Icons.image_not_supported_rounded, size: 120), + errorWidget: Icon(Icons.image_not_supported_rounded, size: RTSizesType.xxgg.size), ), ), ), Padding( - padding: const EdgeInsets.all(24.0), + padding: EdgeInsets.all(RTSizesType.g.size), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -126,7 +130,7 @@ class _DetailsScreenState extends State { restaurant.price ?? '', style: RTTextStyle.caption(), ), - const SizedBox(width: 4), + RTSizesType.xxs.spacer, Text( restaurant.displayCategory, style: RTTextStyle.caption(), @@ -141,12 +145,12 @@ class _DetailsScreenState extends State { : AppLocalizations.of(context)!.restaurantListAllRestaurantsTabClosed, style: RTTextStyle.overline(), ), - const SizedBox(width: 8), + RTSizesType.s.spacer, Padding( - padding: const EdgeInsets.only(top: 3.0), + padding: EdgeInsets.only(top: RTSizesType.xxxs.size), child: Container( - width: 8, - height: 8, + width: RTSizesType.s.size, + height: RTSizesType.s.size, decoration: BoxDecoration( shape: BoxShape.circle, color: restaurant.isOpen ? theme.openColor : theme.closedColor, @@ -162,7 +166,7 @@ class _DetailsScreenState extends State { AppLocalizations.of(context)!.restaurantDetailAddress, style: RTTextStyle.caption(), ), - const SizedBox(height: 24), + RTSizesType.g.spacer, Text( restaurant.location?.formattedAddress ?? '', style: RTTextStyle.body2(), @@ -173,7 +177,7 @@ class _DetailsScreenState extends State { style: RTTextStyle.caption(), ), Padding( - padding: const EdgeInsets.only(top: 16.0), + padding: EdgeInsets.only(top: RTSizesType.xl.size), child: Row( children: [ Text( @@ -181,7 +185,7 @@ class _DetailsScreenState extends State { style: RTTextStyle.headingH4(), ), Padding( - padding: const EdgeInsets.only(top: 12.0), + padding: EdgeInsets.only(top: RTSizesType.m.size), child: SvgPicture.asset('assets/svg/star.svg'), ), ], @@ -209,7 +213,7 @@ class _Divider extends StatelessWidget { Widget build(BuildContext context) { final theme = Theme.of(context).extension()!; return Padding( - padding: const EdgeInsets.symmetric(vertical: 24.0), + padding: EdgeInsets.symmetric(vertical: RTSizesType.g.size), child: Divider(color: theme.dividerLineColor), ); } @@ -237,12 +241,12 @@ class _ReviewsState extends State<_Reviews> { if (index + 1 == widget.reviewsList.length) Visibility( visible: widget.isPaginating, - child: const Padding( - padding: EdgeInsets.only(bottom: 12.0), + child: Padding( + padding: EdgeInsets.only(bottom: RTSizesType.m.size), child: SizedBox( - height: 50, - width: 50, - child: Center(child: CircularProgressIndicator()), + height: RTSizesType.xxg.size, + width: RTSizesType.xxg.size, + child: const Center(child: CircularProgressIndicator()), ), ), ), diff --git a/lib/features/restaurants/pages/favorites/favorites_page.dart b/lib/features/restaurants/pages/favorites/favorites_page.dart index 1dc2e37d..3ad56576 100644 --- a/lib/features/restaurants/pages/favorites/favorites_page.dart +++ b/lib/features/restaurants/pages/favorites/favorites_page.dart @@ -39,12 +39,12 @@ class _FavoritesPageState extends State { isFirstItem: isFirstItem, imageNetwork: inject(), restaurant: model!.favoritesRestaurantList[index], - openDetails: () async { - await context.pushNamed( - DetailsScreen.route, - pathParameters: {DetailsScreen.restaurantIdParams: model!.favoritesRestaurantList[index].id ?? ''}, - ); - }, + openDetails: () => context.pushNamed( + DetailsScreen.route, + pathParameters: { + DetailsScreen.restaurantIdParams: model!.favoritesRestaurantList[index].id ?? '', + }, + ), ); }, ); diff --git a/lib/features/restaurants/pages/favorites/favorites_page_view_model.dart b/lib/features/restaurants/pages/favorites/favorites_page_view_model.dart index 875fb90d..f100bb46 100644 --- a/lib/features/restaurants/pages/favorites/favorites_page_view_model.dart +++ b/lib/features/restaurants/pages/favorites/favorites_page_view_model.dart @@ -34,7 +34,7 @@ class FavoritesViewModel with ChangeNotifier { List get restaurantsList => _restaurantsQuery?.restaurants ?? []; Future _init() async { - eventBus.stream.listen((event) => loadFavorites()); + eventBus.registerOnEvent(loadFavorites); await loadRestaurants(); await loadFavorites(); } diff --git a/lib/features/restaurants/pages/restaurants/restaurants_page.dart b/lib/features/restaurants/pages/restaurants/restaurants_page.dart index 6a58efe4..1c769596 100644 --- a/lib/features/restaurants/pages/restaurants/restaurants_page.dart +++ b/lib/features/restaurants/pages/restaurants/restaurants_page.dart @@ -2,6 +2,7 @@ import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/details/details_screen.dart'; import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_page_view_model.dart'; +import 'package:restaurantour/theme/theme.dart'; class RestaurantsPage extends StatefulWidget { const RestaurantsPage({super.key}); @@ -28,7 +29,7 @@ class _RestaurantsPageState extends State { } _scrollListener() { - const spaceBeforeEndOfScroll = 50; + final spaceBeforeEndOfScroll = RTSizesType.xxg.size; if (scrollController.offset >= scrollController.position.maxScrollExtent - spaceBeforeEndOfScroll && !scrollController.position.outOfRange) { model!.paginateRestaurants(); } @@ -68,12 +69,12 @@ class _RestaurantsPageState extends State { if (index + 1 == model!.restaurantsList.length) Visibility( visible: model!.restaurantsStatus.isPaginating, - child: const Padding( - padding: EdgeInsets.only(bottom: 12.0), + child: Padding( + padding: EdgeInsets.only(bottom: RTSizesType.m.size), child: SizedBox( - height: 50, - width: 50, - child: Center(child: CircularProgressIndicator()), + height: RTSizesType.xxg.size, + width: RTSizesType.xxg.size, + child: const Center(child: CircularProgressIndicator()), ), ), ), diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index af19243f..5395a841 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -16,5 +16,5 @@ "restaurantListAllRestaurantsTabOpenNow": "Open Now", "restaurantListMyFavoritesTab": "My Favorites", "restaurantListRestauranTour": "RestauranTour", - "rtTryAgain": "Try Again" + "rtTryAgain": "Try Again ?" } \ No newline at end of file diff --git a/lib/services/event_bus_service.dart b/lib/services/event_bus_service.dart index 85665351..5d3959e7 100644 --- a/lib/services/event_bus_service.dart +++ b/lib/services/event_bus_service.dart @@ -5,7 +5,7 @@ class EventBusService { StreamController get streamController => _streamController; - Stream get stream => _streamController.stream; + void registerOnEvent(Function() func) => streamController.stream.listen((_) => func()); void fire(dynamic event) => _streamController.add(event); } diff --git a/lib/theme/rt_colors.dart b/lib/theme/rt_colors.dart index 4cb14dab..ef7f8539 100644 --- a/lib/theme/rt_colors.dart +++ b/lib/theme/rt_colors.dart @@ -9,5 +9,8 @@ class RTColors { static const dividerLine = Color(0xffeeeeee); static const primaryFill = Color(0xff000000); static const defaultText = Color(0xff000000); + static const defaultTextButtonColor = Color(0xFF2196F3); static const secondaryText = Color(0xff606060); + static const shimmerBaseColor = Color(0xFFD8D8D8); + static const shimmerHighlightColor = Color(0xFFFFFFFF); } diff --git a/lib/theme/rt_sizes.dart b/lib/theme/rt_sizes.dart new file mode 100644 index 00000000..1738bd2a --- /dev/null +++ b/lib/theme/rt_sizes.dart @@ -0,0 +1,93 @@ +import 'package:restaurantour/core/core.dart'; + +/// Sizes available: XXXXS-1px, XXXS-2px, XXS-4px, XS-6px, S-8px, M-12px, L-14px, XL-16px, XXL-18px, XXXL-20px, G-24, XG-40px, XXG-50px, XXXG-80px, GG-88px, XGG-104px, XXGG-120px, XXXGG-140px, XXXXGG-300px, XXXXXGG-360px +enum RTSizesType { + /// 1 + xxxxs, + + /// 2 + xxxs, + + /// 4 + xxs, + + /// 6 + xs, + + /// 8 + s, + + /// 12 + m, + + /// 14 + l, + + /// 16 + xl, + + /// 18 + xxl, + + /// 20 + xxxl, + + /// 24 + g, + + /// 40 + xg, + + /// 50 + xxg, + + /// 80 + xxxg, + + /// 88 + gg, + + /// 104 + xgg, + + /// 120 + xxgg, + + /// 140 + xxxgg, + + /// 300 + xxxxgg, + + /// 360 + xxxxxgg, +} + +extension RTSizesTypeExt on RTSizesType { + double get size => [ + 1.0, // xxxxs + 2.0, // xxxs + 4.0, // xxs + 6.0, // xs + 8.0, // s + 12.0, // m + 14.0, // l + 16.0, // xl + 18.0, // xxl + 20.0, // xxxl + 24.0, // g + 40.0, // xg + 50.0, // xxg + 80.0, // xxxg + 88.0, // gg + 104.0, // xgg + 120.0, // xxgg + 140.0, // xxxgg, + 300.0, // xxxxgg, + 360.0, // xxxxxgg, + ][index]; + + Widget get spacer => SizedBox(height: size, width: size); + + Radius get radius => Radius.circular(size); +} diff --git a/lib/theme/rt_text_style.dart b/lib/theme/rt_text_style.dart index 9cdcff00..8eab8476 100644 --- a/lib/theme/rt_text_style.dart +++ b/lib/theme/rt_text_style.dart @@ -6,6 +6,7 @@ class RTTextStyle { static headingH6({Color color = RTColors.defaultText}) => TextStyle(fontFamily: 'Lora', fontSize: 18.0, fontWeight: FontWeight.bold, color: color); static subtitle1({Color color = RTColors.defaultText}) => TextStyle(fontFamily: 'Lora', fontSize: 16.0, fontWeight: FontWeight.w500, color: color); static button({Color? color}) => TextStyle(fontFamily: 'OpenSans', fontSize: 14.0, fontWeight: FontWeight.w600, color: color); + static textButton({Color color = RTColors.defaultTextButtonColor}) => TextStyle(fontFamily: 'OpenSans', fontSize: 14.0, fontWeight: FontWeight.w600, color: color); static caption({Color color = RTColors.defaultText}) => TextStyle(fontFamily: 'OpenSans', fontSize: 12.0, fontWeight: FontWeight.w400, color: color); static body1({Color color = RTColors.defaultText}) => TextStyle(fontFamily: 'OpenSans', fontSize: 16.0, fontWeight: FontWeight.w400, color: color); static body2({Color color = RTColors.defaultText}) => TextStyle(fontFamily: 'OpenSans', fontSize: 14.0, fontWeight: FontWeight.w600, color: color); diff --git a/lib/theme/rt_theme.dart b/lib/theme/rt_theme.dart index 0e29299b..8422fad1 100644 --- a/lib/theme/rt_theme.dart +++ b/lib/theme/rt_theme.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:restaurantour/theme/rt_colors.dart'; +import 'package:restaurantour/theme/rt_sizes.dart'; class RTThemeData { static get _themeExtension => RTThemeExtension( @@ -12,13 +13,15 @@ class RTThemeData { primaryFillColor: RTColors.primaryFill, defaultTextColor: RTColors.defaultText, secondaryTextColor: RTColors.secondaryText, + shimmerBaseColor: RTColors.shimmerBaseColor, + shimmerHighlightColor: RTColors.shimmerHighlightColor, ); static final themeData = ThemeData( visualDensity: VisualDensity.adaptivePlatformDensity, useMaterial3: true, - appBarTheme: const AppBarTheme( - elevation: 2, + appBarTheme: AppBarTheme( + elevation: RTSizesType.xxxs.size, centerTitle: true, surfaceTintColor: RTColors.background, shadowColor: RTColors.primaryFill, @@ -45,6 +48,8 @@ class RTThemeExtension extends ThemeExtension { required this.primaryFillColor, required this.defaultTextColor, required this.secondaryTextColor, + required this.shimmerBaseColor, + required this.shimmerHighlightColor, }); final Color openColor; @@ -56,6 +61,8 @@ class RTThemeExtension extends ThemeExtension { final Color primaryFillColor; final Color defaultTextColor; final Color secondaryTextColor; + final Color shimmerBaseColor; + final Color shimmerHighlightColor; @override ThemeExtension copyWith({ @@ -68,6 +75,8 @@ class RTThemeExtension extends ThemeExtension { Color? primaryFillColor, Color? defaultTextColor, Color? secondaryTextColor, + Color? shimmerBaseColor, + Color? shimmerHighlightColor, }) { return RTThemeExtension( openColor: openColor ?? this.openColor, @@ -79,6 +88,8 @@ class RTThemeExtension extends ThemeExtension { primaryFillColor: primaryFillColor ?? this.primaryFillColor, defaultTextColor: defaultTextColor ?? this.defaultTextColor, secondaryTextColor: secondaryTextColor ?? this.secondaryTextColor, + shimmerBaseColor: shimmerBaseColor ?? this.shimmerBaseColor, + shimmerHighlightColor: shimmerHighlightColor ?? this.shimmerHighlightColor, ); } @@ -98,6 +109,8 @@ class RTThemeExtension extends ThemeExtension { primaryFillColor: Color.lerp(primaryFillColor, other.primaryFillColor, t)!, defaultTextColor: Color.lerp(defaultTextColor, other.defaultTextColor, t)!, secondaryTextColor: Color.lerp(secondaryTextColor, other.secondaryTextColor, t)!, + shimmerBaseColor: Color.lerp(shimmerBaseColor, other.shimmerBaseColor, t)!, + shimmerHighlightColor: Color.lerp(shimmerHighlightColor, other.shimmerHighlightColor, t)!, ); } } diff --git a/lib/theme/theme.dart b/lib/theme/theme.dart index bd1c63a7..28619b2f 100644 --- a/lib/theme/theme.dart +++ b/lib/theme/theme.dart @@ -1,2 +1,3 @@ +export 'package:restaurantour/theme/rt_sizes.dart'; export 'package:restaurantour/theme/rt_text_style.dart'; export 'package:restaurantour/theme/rt_theme.dart'; diff --git a/test/golden_test/restauran_tour_test.dart b/test/golden_test/restauran_tour_test.dart index fe0f6cb0..17de79f6 100644 --- a/test/golden_test/restauran_tour_test.dart +++ b/test/golden_test/restauran_tour_test.dart @@ -18,8 +18,6 @@ void main() { GetIt.I.registerFactory(() => restaurantRepository); GetIt.I.registerFactory(() => favoritesService); GetIt.I.registerFactory(() => RTImageNetworkMock()); - - when(() => eventBusService.stream).thenAnswer((_) => const Stream.empty()); }); tearDown(() { diff --git a/test/unit_tests/favorites/favorites_page_view_model_test.dart b/test/unit_tests/favorites/favorites_page_view_model_test.dart index cd8d7a99..4e9bf650 100644 --- a/test/unit_tests/favorites/favorites_page_view_model_test.dart +++ b/test/unit_tests/favorites/favorites_page_view_model_test.dart @@ -17,7 +17,6 @@ void main() { GetIt.I.registerFactory(() => restaurantRepository); GetIt.I.registerFactory(() => favoritesService); GetIt.I.registerFactory(() => RTImageNetworkMock()); - when(() => eventBusService.stream).thenAnswer((_) => const Stream.empty()); }); tearDown(() { From da7af39f6cfa5dd23f4a0f5502a7d53fccbfe1dd Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Sun, 3 Mar 2024 21:39:15 -0300 Subject: [PATCH 83/89] feat: update goldens --- .../goldens/details_screen_added_favorite.png | Bin 32227 -> 32261 bytes .../goldens/details_screen_content.png | Bin 32227 -> 32261 bytes .../goldens/details_screen_favorite.png | Bin 32227 -> 32261 bytes .../goldens/details_screen_not_favorite.png | Bin 32489 -> 32523 bytes .../details_screen_removed_favorite.png | Bin 32489 -> 32523 bytes .../goldens/favorite_page_content.png | Bin 13261 -> 13314 bytes .../goldens/restauran_tour_content.png | Bin 19082 -> 19122 bytes .../goldens/restauran_tour_favorites_tab.png | Bin 19107 -> 19146 bytes 8 files changed, 0 insertions(+), 0 deletions(-) diff --git a/test/golden_test/goldens/details_screen_added_favorite.png b/test/golden_test/goldens/details_screen_added_favorite.png index 519e2ab207df3fe33e2bbce5ff494bb30af2dee0..111028e62a74e0b0e830d557a2c3653ed8d6be49 100644 GIT binary patch literal 32261 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 literal 32227 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 literal 32227 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 literal 32227 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 literal 32489 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 literal 32489 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%0DB zb8gvk64;N#B`4$4$2L>g_jrm*?M30wFD%e(W?|_T=IOymoJXZ9VmR)`mMl_g<1hq^s)cLN>7O3!ihD{&T|BRi?|aqi=e!ZY%$# zH4+jT0Q%5>qC5+liPEC0>V8=010b7O84 z>a^0aX4PSsjsL2vtK6lK6Dp|n>)plOJE?uES{8Y03wH;~+%y+8ZH%7BcU+i{~>T-421)FD7hHIBc6^9C9v3DNa3mTWj*8x*s&6wsRw-SP_^ard!fEkx&R&$g?adj9;m zK&$=Wui~Z*i?}0BQ-@0vHSP#`2&zg*`-|n@)Ofa zq_HtctC3yG`gPH2an5+YNwNn>dBDVkrOl8_hIzZczdu6}IZbM5luilL@YA^t=XSn{jKEF z@wTjgHFk`|%JF;6VX865IF1}SLJTN$sE|>IK=c`Z1#hN^Qr&FZgrdKIDD3D^M=xEv z#FbCqKR9?Bg=bY4`|~NmFJdmd;+G*%FgcC{-OZ?FRE@88^pz1>wtswqOhZ?sQEUa z`l*bNC{o=XrvLAdec$yO#sjw&=f?L73I@Et@}Y-9p`<2b^gk8Q493*m*ShFo_orqT zLlNn@W%swIf?C^+jop-<g;?B+|>R6b$a?W)H9&FKcOoZR_~y)qor)T09!ikZ#euym1&}v02c87d8;h<$j|R) zTc#E1vq|G)4F4AWWfUXiYo>*m?4UMVvl60Rw?i zBWSj>v6TXuV9H;-`+3mZQiHw;Us%!F=}J8xO3K-G<^ARE<+;v*nimSLi=!C~+{d1R z{)ctsxpdmMkLOaEP&3vv+j)4Zu-&%lIYfXkORWjlX9rN-fzD@bYuKAa{Wh_4@T|Qbf@qRM#8SzNECYdcvi>9WLXt zm;k^9%-G}uP_6du-06u0r`ycSs|IKYVYRTiIRcl^CUe+uwuP3KHeBp>u;wgYx@Gg` zLi~cE5ONe=r#Ie_2PJ9^SUaZ4y24DWUII*m5RhGZdV4FgPbw&INLlXzk`l|{!0=!@ ztWDB`6ync*gx1s3lZ4Nfbe=u{F|PlahR%`J8^GR_su-8n>VhR%LVpDCh)SU=<4RUj zRV^tmFBj0tvfhjF(~pZ0FE+ExA2vPO8fM;} zU0dMc5qkK>#=_cHrw3azgfL9)-j(JrqfdKQbS;c~td^??<$ZsC;{H6a8CSXo9;Rld zDDnkM^`0etVUU*T@F^BX6@O}-n~1}l3}6t;c60Tezw(uI?WCl z@i_S%jdr%JFNCmAJfJ#YyhsU)s`<%Yr@=R2Bz9?g0qov**M%v64pFb`U+x4&NBdWj zLD@J-^78V8_(Baat9^NDVKk%j7IxVyr2xL8N1tivx;?{P&=J@hVh~q{GDsr#&%-*o z%9k&1wHx}a-}fiT%?#UW&ss#7<=Ir_2KGH5VcBg$(`%+~Re7 ze41tVNi4G}T6izgUqh4o_RQ+;;wcq-^Oikl8F93yXjqKLUU&qd{=?7XEy8i2vftHJF0~D~sdR*7<75*(Tnbag&UO`3YAOF0IAt=l>l#gfeo_ zn&AP#!1nlL)+$bAeg)z4I9bgU5-J0S$b(%9UL?!E)3?#-=7&C{RD`rbqkW70!L
  • I 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 K6_Zcu-TMy$U{^{2 literal 19082 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 mp}6@8o6!yhN@oRC?IE6x56^||#a}c Date: Mon, 4 Mar 2024 10:35:11 -0300 Subject: [PATCH 84/89] feat: refactor event_bus to dispose stream and rename view_models --- lib/core/core.dart | 1 + lib/features/details/details_view_model.dart | 5 +- .../pages/favorites/favorites_page.dart | 2 +- ...w_model.dart => favorites_view_model.dart} | 31 +++++++--- .../pages/restaurants/restaurants_page.dart | 2 +- ...model.dart => restaurants_view_model.dart} | 8 ++- .../restaurants/restaurants_screen.dart | 8 +-- lib/services/event_bus_service.dart | 18 ++++-- test/golden_test/favorites_page_test.dart | 4 +- test/golden_test/restauran_tour_test.dart | 1 + .../favorites_page_view_model_test.dart | 60 +++++++++++-------- .../restaurant_page_view_model_test.dart | 12 ++-- test/widget_tests/favorites_page_test.dart | 5 +- .../restaurant_details_screen_test.dart | 1 + test/widget_tests/restaurants_page_test.dart | 5 +- 15 files changed, 101 insertions(+), 62 deletions(-) rename lib/features/restaurants/pages/favorites/{favorites_page_view_model.dart => favorites_view_model.dart} (83%) rename lib/features/restaurants/pages/restaurants/{restaurants_page_view_model.dart => restaurants_view_model.dart} (93%) diff --git a/lib/core/core.dart b/lib/core/core.dart index d4af88a5..90f1386e 100644 --- a/lib/core/core.dart +++ b/lib/core/core.dart @@ -7,4 +7,5 @@ export 'package:go_router/go_router.dart'; export 'package:provider/provider.dart'; export 'package:restaurantour/core/inject.dart'; export 'package:restaurantour/core/interceptor.dart'; +export 'package:restaurantour/core/logger.dart'; export 'package:restaurantour/core/routes.dart'; diff --git a/lib/features/details/details_view_model.dart b/lib/features/details/details_view_model.dart index a6490e02..4d208339 100644 --- a/lib/features/details/details_view_model.dart +++ b/lib/features/details/details_view_model.dart @@ -1,5 +1,4 @@ -import 'package:flutter/material.dart'; -import 'package:restaurantour/core/logger.dart'; +import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/event_bus_service.dart'; @@ -43,7 +42,7 @@ class DetailsViewModel with ChangeNotifier { isFavorite ? await favoriteService.removeFavorite(restaurantId) : await favoriteService.addFavorite(restaurantId); isFavorite = !isFavorite; - eventBus.fire(restaurantId); + eventBus.fire(EventBusType.toggleFavorite); } catch (exception, stackTrace) { RTLogger.e(message: 'Fail to toggle favorite', exception: exception, stackTrace: stackTrace); } finally { diff --git a/lib/features/restaurants/pages/favorites/favorites_page.dart b/lib/features/restaurants/pages/favorites/favorites_page.dart index 3ad56576..ef98a20a 100644 --- a/lib/features/restaurants/pages/favorites/favorites_page.dart +++ b/lib/features/restaurants/pages/favorites/favorites_page.dart @@ -1,7 +1,7 @@ import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/details/details_screen.dart'; -import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page_view_model.dart'; +import 'package:restaurantour/features/restaurants/pages/favorites/favorites_view_model.dart'; class FavoritesPage extends StatefulWidget { const FavoritesPage({super.key}); diff --git a/lib/features/restaurants/pages/favorites/favorites_page_view_model.dart b/lib/features/restaurants/pages/favorites/favorites_view_model.dart similarity index 83% rename from lib/features/restaurants/pages/favorites/favorites_page_view_model.dart rename to lib/features/restaurants/pages/favorites/favorites_view_model.dart index f100bb46..04752dd3 100644 --- a/lib/features/restaurants/pages/favorites/favorites_page_view_model.dart +++ b/lib/features/restaurants/pages/favorites/favorites_view_model.dart @@ -1,5 +1,4 @@ import 'package:restaurantour/core/core.dart'; -import 'package:restaurantour/core/logger.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/event_bus_service.dart'; @@ -20,8 +19,9 @@ class FavoritesViewModel with ChangeNotifier { final List _restaurantsCache = []; - FavoritesViewModel({required this.favoritesService, required this.restaurantRepository, required this.eventBus}) { - _init(); + FavoritesViewModel({required this.favoritesService, required this.restaurantRepository, required this.eventBus}); + FavoritesViewModel.create({required this.favoritesService, required this.restaurantRepository, required this.eventBus}) { + _onCreate(); } FavoritesStatus status = FavoritesStatus.loading; @@ -33,13 +33,26 @@ class FavoritesViewModel with ChangeNotifier { List get favoritesRestaurantList => _favorites; List get restaurantsList => _restaurantsQuery?.restaurants ?? []; - Future _init() async { - eventBus.registerOnEvent(loadFavorites); - await loadRestaurants(); - await loadFavorites(); + StreamSubscription? eventBusSubscription; + + Future _onCreate() async { + await getRestaurants(); + await getFavorites(); + } + + @override + void addListener(VoidCallback listener) { + super.addListener(listener); + eventBusSubscription = eventBus.stream.listen((event) => event.onEvent(eventType: EventBusType.toggleFavorite, function: () => getFavorites())); + } + + @override + dispose() { + if (eventBusSubscription != null) eventBusSubscription!.cancel(); + super.dispose(); } - Future loadRestaurants() async { + Future getRestaurants() async { try { _emitLoading(); _restaurantsQuery = await restaurantRepository.getRestaurants(); @@ -50,7 +63,7 @@ class FavoritesViewModel with ChangeNotifier { } } - Future loadFavorites() async { + Future getFavorites() async { try { _emitLoading(); final favoritesIds = await favoritesService.getFavorites(); diff --git a/lib/features/restaurants/pages/restaurants/restaurants_page.dart b/lib/features/restaurants/pages/restaurants/restaurants_page.dart index 1c769596..8907f22f 100644 --- a/lib/features/restaurants/pages/restaurants/restaurants_page.dart +++ b/lib/features/restaurants/pages/restaurants/restaurants_page.dart @@ -1,7 +1,7 @@ import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/details/details_screen.dart'; -import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_page_view_model.dart'; +import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_view_model.dart'; import 'package:restaurantour/theme/theme.dart'; class RestaurantsPage extends StatefulWidget { diff --git a/lib/features/restaurants/pages/restaurants/restaurants_page_view_model.dart b/lib/features/restaurants/pages/restaurants/restaurants_view_model.dart similarity index 93% rename from lib/features/restaurants/pages/restaurants/restaurants_page_view_model.dart rename to lib/features/restaurants/pages/restaurants/restaurants_view_model.dart index 9738bfc1..6060e572 100644 --- a/lib/features/restaurants/pages/restaurants/restaurants_page_view_model.dart +++ b/lib/features/restaurants/pages/restaurants/restaurants_view_model.dart @@ -17,8 +17,10 @@ class RestaurantsViewModel with ChangeNotifier { final int paginationSize = 20; - RestaurantsViewModel({required this.restaurantRepository}) { - _init(); + RestaurantsViewModel({required this.restaurantRepository}); + + RestaurantsViewModel.create({required this.restaurantRepository}) { + _onCreate(); } RestaurantsStatus restaurantsStatus = RestaurantsStatus.loading; @@ -30,7 +32,7 @@ class RestaurantsViewModel with ChangeNotifier { List get restaurantsList => _restaurantsQuery?.restaurants ?? []; bool get shouldPaginate => restaurantsList.length < allRestaurantsQueryTotal && allRestaurantsQueryTotal > paginationSize; - Future _init() async { + Future _onCreate() async { await loadRestaurants(); } diff --git a/lib/features/restaurants/restaurants_screen.dart b/lib/features/restaurants/restaurants_screen.dart index 2b2c2791..94090f43 100644 --- a/lib/features/restaurants/restaurants_screen.dart +++ b/lib/features/restaurants/restaurants_screen.dart @@ -1,8 +1,8 @@ import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page.dart'; -import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page_view_model.dart'; +import 'package:restaurantour/features/restaurants/pages/favorites/favorites_view_model.dart'; import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_page.dart'; -import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_page_view_model.dart'; +import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_view_model.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/event_bus_service.dart'; import 'package:restaurantour/services/favorite_service.dart'; @@ -52,14 +52,14 @@ class _RestaurantsScreenState extends State { body: MultiProvider( providers: [ ChangeNotifierProvider( - create: (context) => FavoritesViewModel( + create: (context) => FavoritesViewModel.create( eventBus: inject(), favoritesService: inject(), restaurantRepository: inject(), ), ), ChangeNotifierProvider( - create: (context) => RestaurantsViewModel( + create: (context) => RestaurantsViewModel.create( restaurantRepository: inject(), ), ), diff --git a/lib/services/event_bus_service.dart b/lib/services/event_bus_service.dart index 5d3959e7..db61f4ca 100644 --- a/lib/services/event_bus_service.dart +++ b/lib/services/event_bus_service.dart @@ -1,11 +1,21 @@ import 'dart:async'; +export 'dart:async'; + +enum EventBusType { toggleFavorite } + +extension EventBusTypeExt on EventBusType { + void onEvent({required EventBusType eventType, dynamic function}) { + if (this == eventType) function(); + } +} + class EventBusService { - final StreamController _streamController = StreamController.broadcast(); + final StreamController _streamController = StreamController.broadcast(); - StreamController get streamController => _streamController; + StreamController get streamController => _streamController; - void registerOnEvent(Function() func) => streamController.stream.listen((_) => func()); + Stream get stream => _streamController.stream; - void fire(dynamic event) => _streamController.add(event); + void fire(EventBusType event) => _streamController.add(event); } diff --git a/test/golden_test/favorites_page_test.dart b/test/golden_test/favorites_page_test.dart index 8fcbf525..ae09e8f4 100644 --- a/test/golden_test/favorites_page_test.dart +++ b/test/golden_test/favorites_page_test.dart @@ -1,7 +1,7 @@ import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page.dart'; -import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page_view_model.dart'; +import 'package:restaurantour/features/restaurants/pages/favorites/favorites_view_model.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/event_bus_service.dart'; @@ -27,7 +27,7 @@ void main() { ..addScenario( widget: widgetBuilder( ChangeNotifierProvider( - create: (context) => FavoritesViewModel( + create: (context) => FavoritesViewModel.create( favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: EventBusService(), diff --git a/test/golden_test/restauran_tour_test.dart b/test/golden_test/restauran_tour_test.dart index 17de79f6..93c6abad 100644 --- a/test/golden_test/restauran_tour_test.dart +++ b/test/golden_test/restauran_tour_test.dart @@ -18,6 +18,7 @@ void main() { GetIt.I.registerFactory(() => restaurantRepository); GetIt.I.registerFactory(() => favoritesService); GetIt.I.registerFactory(() => RTImageNetworkMock()); + when(() => eventBusService.stream).thenAnswer((_) => const Stream.empty()); }); tearDown(() { diff --git a/test/unit_tests/favorites/favorites_page_view_model_test.dart b/test/unit_tests/favorites/favorites_page_view_model_test.dart index 4e9bf650..6094b812 100644 --- a/test/unit_tests/favorites/favorites_page_view_model_test.dart +++ b/test/unit_tests/favorites/favorites_page_view_model_test.dart @@ -1,6 +1,6 @@ import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/core/core.dart'; -import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page_view_model.dart'; +import 'package:restaurantour/features/restaurants/pages/favorites/favorites_view_model.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/event_bus_service.dart'; @@ -27,23 +27,33 @@ void main() { group('tests on restaurantViewModel.load() ->', () { test('''when [RestaurantViewModel] is created the [FavoritesStatus] should starts with [RestaurantStatus.loading] - and one call to [restaurantRepository.getRestaurants] should be triggered''', () async { + and no call to [restaurantRepository.getRestaurants] should be triggered''', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); expect(sut.status, FavoritesStatus.loading); - verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); + + verifyNever(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))); }); - test('when [load] is called should call one more time the [getRestaurants] on [RestaurantRepository]', () async { + test('when [load] is called should call one time the [getRestaurants] on [RestaurantRepository]', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); - await sut.loadRestaurants(); + await sut.getRestaurants(); - verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(2); + verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); + }); + + test('''when [FavoritesViewModel] is created using the [FavoritesViewModel.create] constructor + the method [load] called should call one time the [getRestaurants] on [RestaurantRepository]''', () async { + when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); + when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); + FavoritesViewModel.create(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); + + verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); }); test('when [load] get successfully the data from repository the [FavoritesStatus] should be [RestaurantStatus.content]', () async { @@ -51,7 +61,7 @@ void main() { when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); - await sut.loadRestaurants(); + await sut.getRestaurants(); expect(sut.status, FavoritesStatus.content); }); @@ -62,7 +72,7 @@ void main() { when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); - await sut.loadRestaurants(); + await sut.getRestaurants(); expect(sut.status, FavoritesStatus.empty); }); @@ -70,20 +80,20 @@ void main() { test('when [load] get some error from repository the [FavoritesStatus] should be [RestaurantStatus.error]', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenThrow('error mock'); when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); - final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); + final sut = FavoritesViewModel.create(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); expect(sut.status, FavoritesStatus.error); }); - test('''when [load] get some error from repository + test('''when [getRestaurants] get some error from repository no more calls should be triggered to [restaurantRepository.getRestaurants]''', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenThrow('error mock'); when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); - await sut.loadRestaurants(); + await sut.getRestaurants(); - verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(2); + verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); }); }); @@ -102,9 +112,9 @@ void main() { when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); - await sut.loadFavorites(); + await sut.getFavorites(); - verify(() => favoritesService.getFavorites()).called(2); + verify(() => favoritesService.getFavorites()).called(1); }); test('''when [RestaurantViewModel] is created the [Restaurant] list has no items, @@ -116,7 +126,7 @@ void main() { final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); - await sut.loadFavorites(); + await sut.getFavorites(); expect(sut.status, FavoritesStatus.content); }); @@ -129,8 +139,8 @@ void main() { when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); - await sut.loadRestaurants(); - await sut.loadFavorites(); + await sut.getRestaurants(); + await sut.getFavorites(); expect(sut.status, FavoritesStatus.content); }); @@ -142,8 +152,8 @@ void main() { when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value(['another-restaurant-id'])); final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); - await sut.loadRestaurants(); - await sut.loadFavorites(); + await sut.getRestaurants(); + await sut.getFavorites(); expect(sut.status, FavoritesStatus.content); }); @@ -155,8 +165,8 @@ void main() { when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([RestaurantDto.fixture().id ?? ''])); final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); - await sut.loadRestaurants(); - await sut.loadFavorites(); + await sut.getRestaurants(); + await sut.getFavorites(); expect(sut.status, FavoritesStatus.content); }); @@ -166,7 +176,7 @@ void main() { when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); - await sut.loadFavorites(); + await sut.getFavorites(); expect(sut.status, FavoritesStatus.empty); }); @@ -176,7 +186,7 @@ void main() { when(() => favoritesService.getFavorites()).thenThrow('error mock'); final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); - await sut.loadFavorites(); + await sut.getFavorites(); expect(sut.status, FavoritesStatus.error); }); @@ -186,9 +196,9 @@ void main() { when(() => favoritesService.getFavorites()).thenThrow('error mock'); final sut = FavoritesViewModel(favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: eventBusService); - await sut.loadFavorites(); + await sut.getFavorites(); - verify(() => favoritesService.getFavorites()).called(2); + verify(() => favoritesService.getFavorites()).called(1); }); }); } diff --git a/test/unit_tests/restaurants/restaurant_page_view_model_test.dart b/test/unit_tests/restaurants/restaurant_page_view_model_test.dart index acc4da54..2137370c 100644 --- a/test/unit_tests/restaurants/restaurant_page_view_model_test.dart +++ b/test/unit_tests/restaurants/restaurant_page_view_model_test.dart @@ -1,6 +1,6 @@ import 'package:restaurantour/components/rt_image_network.dart'; import 'package:restaurantour/core/core.dart'; -import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_page_view_model.dart'; +import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_view_model.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/event_bus_service.dart'; @@ -28,23 +28,23 @@ void main() { group('tests on restaurantViewModel.load() ->', () { test('''when [RestaurantViewModel] is created the [restaurantsStatus] should starts with [RestaurantStatus.loading] - and should call to [restaurantRepository.getRestaurants]''', () async { + and no call to [restaurantRepository.getRestaurants] should be triggered''', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); final sut = RestaurantsViewModel(restaurantRepository: restaurantRepository); expect(sut.restaurantsStatus, RestaurantsStatus.loading); - verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); + verifyNever(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))); }); - test('when [load] is called should call once more time the [getRestaurants] on [RestaurantRepository]', () async { + test('when [load] is called should call one time the [getRestaurants] on [RestaurantRepository]', () async { when(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).thenAnswer((_) => Future.value(RestaurantQueryResultDto.fixture())); when(() => favoritesService.getFavorites()).thenAnswer((_) => Future.value([])); final sut = RestaurantsViewModel(restaurantRepository: restaurantRepository); await sut.loadRestaurants(); - verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(2); + verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); }); test('when [load] get successfully the data from repository the [restaurantsStatus] should be [RestaurantStatus.content]', () async { @@ -86,7 +86,7 @@ void main() { await sut.loadRestaurants(); - verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(2); + verify(() => restaurantRepository.getRestaurants(offset: any(named: 'offset'))).called(1); }); }); } diff --git a/test/widget_tests/favorites_page_test.dart b/test/widget_tests/favorites_page_test.dart index ed856c91..7cdde165 100644 --- a/test/widget_tests/favorites_page_test.dart +++ b/test/widget_tests/favorites_page_test.dart @@ -1,7 +1,7 @@ import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page.dart'; -import 'package:restaurantour/features/restaurants/pages/favorites/favorites_page_view_model.dart'; +import 'package:restaurantour/features/restaurants/pages/favorites/favorites_view_model.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/event_bus_service.dart'; @@ -13,6 +13,7 @@ import '../test.dart'; void main() { RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); FavoriteService favoritesService = FavoritesServiceMock(); + setUp(() { GetIt.I.registerFactory(() => RTImageNetworkMock()); }); @@ -28,7 +29,7 @@ void main() { debugShowCheckedModeBanner: false, theme: RTThemeData.themeData, home: ChangeNotifierProvider( - create: (context) => FavoritesViewModel( + create: (context) => FavoritesViewModel.create( favoritesService: favoritesService, restaurantRepository: restaurantRepository, eventBus: EventBusService(), diff --git a/test/widget_tests/restaurant_details_screen_test.dart b/test/widget_tests/restaurant_details_screen_test.dart index 105166b6..a6253319 100644 --- a/test/widget_tests/restaurant_details_screen_test.dart +++ b/test/widget_tests/restaurant_details_screen_test.dart @@ -16,6 +16,7 @@ void main() { EventBusService eventBusService = EventBusServiceMock(); RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); FavoriteService favoritesService = FavoritesServiceMock(); + setUp(() { GetIt.I.registerFactory(() => eventBusService); diff --git a/test/widget_tests/restaurants_page_test.dart b/test/widget_tests/restaurants_page_test.dart index fcd39f66..d0ea58a3 100644 --- a/test/widget_tests/restaurants_page_test.dart +++ b/test/widget_tests/restaurants_page_test.dart @@ -1,7 +1,7 @@ import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_page.dart'; -import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_page_view_model.dart'; +import 'package:restaurantour/features/restaurants/pages/restaurants/restaurants_view_model.dart'; import 'package:restaurantour/models/dto.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/favorite_service.dart'; @@ -12,6 +12,7 @@ import '../test.dart'; void main() { RestaurantRepository restaurantRepository = RestaurantRepositoryMock(); FavoriteService favoritesService = FavoritesServiceMock(); + setUp(() { GetIt.I.registerFactory(() => RTImageNetworkMock()); }); @@ -27,7 +28,7 @@ void main() { debugShowCheckedModeBanner: false, theme: RTThemeData.themeData, home: ChangeNotifierProvider( - create: (context) => RestaurantsViewModel(restaurantRepository: restaurantRepository), + create: (context) => RestaurantsViewModel.create(restaurantRepository: restaurantRepository), child: const RestaurantsPage(), ), ); From 8f217f4cf3746a240b0b236e0f5b7034f2fef17b Mon Sep 17 00:00:00 2001 From: Decripter Date: Fri, 8 Mar 2024 10:36:51 -0300 Subject: [PATCH 85/89] feat: use flutter_gen to track asset names, change makefile to add initial setup menu entry --- Makefile | 50 +++++++++++++++++++----- assets/svg/{404.svg => not_found.svg} | 0 lib/components/rt_error_widget.dart | 2 +- lib/components/rt_item_widget.dart | 2 +- lib/components/rt_review_widget.dart | 2 +- lib/core/core.dart | 1 + lib/features/details/details_screen.dart | 2 +- lib/gen/assets.gen.dart | 27 +++++++++++++ lib/gen/fonts.gen.dart | 18 +++++++++ 9 files changed, 90 insertions(+), 14 deletions(-) rename assets/svg/{404.svg => not_found.svg} (100%) create mode 100644 lib/gen/assets.gen.dart create mode 100644 lib/gen/fonts.gen.dart diff --git a/Makefile b/Makefile index 9440a44a..2376bdab 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,34 @@ +# SETUP: +pre-setup : + flutter clean &&\ + dart run build_runner clean && \ + dart pub global activate arb_utils && \ + dart pub global activate flutter_gen + + +setup-env-file : + test -f .env || echo "API_KEY=''" >> .env + +setup : pre-setup get l10n gen asset-gen setup-env-file unit-tests + + +fix-gen : + mkdir -p .dart_tool/flutter_gen/ && echo "name: stub" > .dart_tool/flutter_gen/pubspec.yaml + +try-fix-gen : fix-gen + dart run build_runner build --delete-conflicting-outputs + # TESTS: +tests : unit-tests golden-tests + all-tests : tests integration-tests -tests : - flutter test --coverage +unit-tests : + flutter test -x golden --coverage + +golden-tests : + flutter test -t golden --coverage tests-ci-cd : rm -rf coverage && flutter test --coverage --dart-define=runningOnCICD=true @@ -11,28 +36,33 @@ tests-ci-cd : integration-tests : flutter test integration_test/app_test.dart -lcov-ignore : - lcov --remove coverage/lcov.info 'lib/core/*' 'lib/theme/*' 'lib/models/*.g.dart' -o coverage/lcov.info +update-goldens : remove-goldens-failures + flutter test --update-goldens + +remove-goldens-failures : + rm test/golden_test/failures/* + +# TEST COVERAGE show-coverage : tests lcov +lcov-ignore : + lcov --remove coverage/lcov.info 'lib/core/*' 'lib/theme/*' 'lib/models/*.g.dart' -o coverage/lcov.info lcov : tests lcov-ignore genhtml -q -o coverage coverage/lcov.info && open coverage/index.html -update-goldens : remove-goldens-failures - flutter test --update-goldens - -remove-goldens-failures : - rm test/golden_test/failures/* # CODE GENERATION l10n : flutter gen-l10n && arb_utils sort lib/l10n/app_en.arb +asset-gen : + fluttergen + gen : - flutter packages pub run build_runner build --delete-conflicting-outputs + dart run build_runner build --delete-conflicting-outputs || make try-fix-gen get : flutter pub get \ No newline at end of file diff --git a/assets/svg/404.svg b/assets/svg/not_found.svg similarity index 100% rename from assets/svg/404.svg rename to assets/svg/not_found.svg diff --git a/lib/components/rt_error_widget.dart b/lib/components/rt_error_widget.dart index 3252efbc..3b632e08 100644 --- a/lib/components/rt_error_widget.dart +++ b/lib/components/rt_error_widget.dart @@ -12,7 +12,7 @@ class RTErrorWidget extends StatelessWidget { child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - SizedBox(height: RTSizesType.xxxg.size, child: SvgPicture.asset('assets/svg/404.svg')), + SizedBox(height: RTSizesType.xxxg.size, child: SvgPicture.asset(Assets.svg.notFound)), RTSizesType.xg.spacer, Text( AppLocalizations.of(context)!.errorMessage, diff --git a/lib/components/rt_item_widget.dart b/lib/components/rt_item_widget.dart index f349a353..15b39061 100644 --- a/lib/components/rt_item_widget.dart +++ b/lib/components/rt_item_widget.dart @@ -19,7 +19,7 @@ class RTItemWidget extends StatelessWidget { double get rating => restaurant.rating ?? 0; String get heroImage => restaurant.heroImage; String get priceLabel => restaurant.price ?? ''; - List get starRate => List.generate(rating > 5 ? 5 : rating.toInt(), (_) => SvgPicture.asset('assets/svg/star.svg')); + List get starRate => List.generate(rating > 5 ? 5 : rating.toInt(), (_) => SvgPicture.asset(Assets.svg.star)); @override Widget build(BuildContext context) { diff --git a/lib/components/rt_review_widget.dart b/lib/components/rt_review_widget.dart index 9365c31a..34d6511d 100644 --- a/lib/components/rt_review_widget.dart +++ b/lib/components/rt_review_widget.dart @@ -9,7 +9,7 @@ class RTReviewWidget extends StatelessWidget { final ReviewDto review; final RTImageNetwork imageNetwork; int get rating => review.rating ?? 0; - List get starRate => List.generate(rating > 5 ? 5 : rating.toInt(), (_) => SvgPicture.asset('assets/svg/star.svg')); + List get starRate => List.generate(rating > 5 ? 5 : rating.toInt(), (_) => SvgPicture.asset(Assets.svg.star)); @override Widget build(BuildContext context) { diff --git a/lib/core/core.dart b/lib/core/core.dart index 90f1386e..4604db89 100644 --- a/lib/core/core.dart +++ b/lib/core/core.dart @@ -9,3 +9,4 @@ export 'package:restaurantour/core/inject.dart'; export 'package:restaurantour/core/interceptor.dart'; export 'package:restaurantour/core/logger.dart'; export 'package:restaurantour/core/routes.dart'; +export 'package:restaurantour/gen/assets.gen.dart'; diff --git a/lib/features/details/details_screen.dart b/lib/features/details/details_screen.dart index 5a11fad6..ad96fe3b 100644 --- a/lib/features/details/details_screen.dart +++ b/lib/features/details/details_screen.dart @@ -186,7 +186,7 @@ class _DetailsScreenState extends State { ), Padding( padding: EdgeInsets.only(top: RTSizesType.m.size), - child: SvgPicture.asset('assets/svg/star.svg'), + child: SvgPicture.asset(Assets.svg.star), ), ], ), diff --git a/lib/gen/assets.gen.dart b/lib/gen/assets.gen.dart new file mode 100644 index 00000000..d7babd6a --- /dev/null +++ b/lib/gen/assets.gen.dart @@ -0,0 +1,27 @@ +/// GENERATED CODE - DO NOT MODIFY BY HAND +/// ***************************************************** +/// FlutterGen +/// ***************************************************** + +// coverage:ignore-file +// ignore_for_file: type=lint +// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal,deprecated_member_use + +class $AssetsSvgGen { + const $AssetsSvgGen(); + + /// File path: assets/svg/not_found.svg + String get notFound => 'assets/svg/not_found.svg'; + + /// File path: assets/svg/star.svg + String get star => 'assets/svg/star.svg'; + + /// List of all assets + List get values => [notFound, star]; +} + +class Assets { + Assets._(); + + static const $AssetsSvgGen svg = $AssetsSvgGen(); +} diff --git a/lib/gen/fonts.gen.dart b/lib/gen/fonts.gen.dart new file mode 100644 index 00000000..a993a752 --- /dev/null +++ b/lib/gen/fonts.gen.dart @@ -0,0 +1,18 @@ +/// GENERATED CODE - DO NOT MODIFY BY HAND +/// ***************************************************** +/// FlutterGen +/// ***************************************************** + +// coverage:ignore-file +// ignore_for_file: type=lint +// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal,deprecated_member_use + +class FontFamily { + FontFamily._(); + + /// Font family: Lora + static const String lora = 'Lora'; + + /// Font family: OpenSans + static const String openSans = 'OpenSans'; +} From 7fde339f12cbfcbd6c4a4135bafdd2fa82b52adc Mon Sep 17 00:00:00 2001 From: Decripter Date: Fri, 8 Mar 2024 11:55:25 -0300 Subject: [PATCH 86/89] feat: setup environments prod, stage, and local --- .env_stage | 1 + .vscode/launch.json | 31 +++++++++++++++---------------- lib/core/inject.dart | 12 ++++++++++-- lib/main.dart | 15 +++++++++++++++ pubspec.yaml | 4 ++-- 5 files changed, 43 insertions(+), 20 deletions(-) create mode 100644 .env_stage diff --git a/.env_stage b/.env_stage new file mode 100644 index 00000000..a7d57979 --- /dev/null +++ b/.env_stage @@ -0,0 +1 @@ +API_KEY='' diff --git a/.vscode/launch.json b/.vscode/launch.json index 32c31589..ba1e7bc6 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -2,32 +2,31 @@ "version": "0.2.0", "configurations": [ { - "name": "Integration Tests (debug)", + "name": "Smoke Test (prod)", "request": "launch", "type": "dart", - "flutterMode": "debug", - "program": "integration_test/app_test.dart" + "program": "integration_test/app_test.dart", + "args": [ + "--dart-define=app.flavor=prod" + ] }, { - "name": "RestauranTour (debug)", + "name": "RestauranTour (stage)", "request": "launch", "type": "dart", - "flutterMode": "debug", - "program": "lib/main.dart" + "program": "lib/main.dart", + "args": [ + "--dart-define=app.flavor=stage" + ] }, { - "name": "RestauranTour (profile mode)", + "name": "RestauranTour (prod)", "request": "launch", "type": "dart", - "flutterMode": "profile", - "program": "lib/main.dart" - }, - { - "name": "RestauranTour (release mode)", - "request": "launch", - "type": "dart", - "flutterMode": "release", - "program": "lib/main.dart" + "program": "lib/main.dart", + "args": [ + "--dart-define=app.flavor=prod" + ] } ] } \ No newline at end of file diff --git a/lib/core/inject.dart b/lib/core/inject.dart index 151bd8d2..350b5989 100644 --- a/lib/core/inject.dart +++ b/lib/core/inject.dart @@ -5,6 +5,7 @@ import 'package:restaurantour/components/rt_components.dart'; import 'package:restaurantour/core/interceptor.dart'; import 'package:restaurantour/core/logger.dart'; import 'package:restaurantour/core/routes.dart'; +import 'package:restaurantour/main.dart'; import 'package:restaurantour/repositories/restaurant_repository.dart'; import 'package:restaurantour/services/event_bus_service.dart'; import 'package:restaurantour/services/favorite_service.dart'; @@ -15,9 +16,16 @@ GetIt inject = GetIt.instance; Future setupInjection() async { RTLogger.i(message: 'Setup injection'); - await dotenv.load(fileName: ".env"); + String _apiKey = ''; + const String fileName = kIsProd ? '.env' : '.env_stage'; - final _apiKey = dotenv.env['API_KEY']; + try { + await dotenv.load(fileName: fileName); + _apiKey = dotenv.env['API_KEY'] ?? ''; + if (_apiKey.isEmpty) RTLogger.w(message: 'API_KEY is empty'); + } catch (exception) { + RTLogger.e(message: 'Fail to load API_KEY, looking for $fileName file', exception: exception); + } await inject.reset(); SharedPreferences sharedPref = await SharedPreferences.getInstance(); diff --git a/lib/main.dart b/lib/main.dart index 70851c1a..5702a2c5 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -3,10 +3,25 @@ import 'package:restaurantour/app.dart'; import 'package:restaurantour/core/inject.dart'; import 'package:restaurantour/core/logger.dart'; +const String kAppFlavor = String.fromEnvironment('app.flavor', defaultValue: "prod"); + +const String kFlavorStage = "stage"; +const String kFlavorProd = "prod"; +const String kFlavorLocal = "local"; + +const bool kIsStage = kAppFlavor == kFlavorStage; +const bool kIsProd = kAppFlavor == kFlavorProd; +const bool kIsLocal = kAppFlavor == kFlavorLocal; + void main() async { WidgetsFlutterBinding.ensureInitialized(); + if (kIsStage) RTLogger.d(message: 'Running in Stage mode'); + if (kIsProd) RTLogger.w(message: 'Running in Prod mode'); + if (kIsLocal) RTLogger.i(message: 'Running in Local mode'); + await setupInjection(); + RTLogger.i(message: 'Start app'); runApp(const App()); } diff --git a/pubspec.yaml b/pubspec.yaml index 3a136415..c8cad618 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,11 +1,10 @@ name: restaurantour description: Flutter developer coding challenge starter project. -publish_to: 'none' +publish_to: "none" version: 1.0.0+1 - environment: sdk: ">=2.17.0 <3.0.0" @@ -43,6 +42,7 @@ flutter: assets: - assets/svg/ - .env + - .env_stage fonts: - family: Lora fonts: From 667642da1aa42651cf086c9b29e2ad6a224b40b6 Mon Sep 17 00:00:00 2001 From: Decripter Date: Fri, 8 Mar 2024 15:00:25 -0300 Subject: [PATCH 87/89] feat: update readme --- Makefile | 10 +++- README.md | 165 +++++++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 151 insertions(+), 24 deletions(-) diff --git a/Makefile b/Makefile index 2376bdab..fb562b8a 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,11 @@ # SETUP: +get : + flutter pub get + +setup-fvm-version : + fvm install 3.16.8 && \ + fvm global 3.16.8 + pre-setup : flutter clean &&\ dart run build_runner clean && \ @@ -63,6 +70,3 @@ asset-gen : gen : dart run build_runner build --delete-conflicting-outputs || make try-fix-gen - -get : - flutter pub get \ No newline at end of file diff --git a/README.md b/README.md index 6c2ea7c9..b0334565 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,113 @@ # RestauranTour -Be sure to read **all** of this document carefully, and follow the guidelines within. -## Vendorized Flutter +## Welcom to RestauranTour! -3. We use [fvm](https://fvm.app/) for managing the flutter version within the project. Using terminal, while being on the test repository, install the tools dependencies by running the following commands: +The idea of this project is to help you to choose the best restaurants! - ```sh - dart pub global activate fvm - ``` +### Some features: +- Navigate through the available restaurants and see basic information like `opened status`, `price` and `classification` from other users directly from the list. +- See details of the restaurant, when you open a restaurant the details page will show you more information like `review` from users. +- Save the best! On the details screen you can add to favorites those restaurant make you heartbeat! +- Favorite list shows all the restaurant that you love. - The output of the command will ask to add the folder `./pub-cache/bin` to your PATH variables, if you didn't already. If that is the case, add it to your environment variables, and restart the terminal. +## Setup: - ```sh - export PATH="$PATH":"$HOME/.pub-cache/bin" # Add this to your environment variables - ``` -4. Install the project's flutter version using `fvm`. +To make things easier, we are using Makefile to manage the commands and setup you project. - ```sh - fvm use - ``` +Before start with Make commands, make sure that you have installed the fvm in your system, see [Vendorized Flutter](#vendorized-flutter) before. -5. From now on, you will run all the flutter commands with the `fvm` prefix. Get all the projects dependencies. +#### 1 - make setup-fvm-version - ```sh - fvm flutter pub get - ``` +Now that you have installed the fvm, by running the command `fvm --version` this should return the fvm version installed in your system like this: + ``` +$ fvm --version +2.4.1 +``` +Now we can proceed, well as mentioned before, we will use make for make things for us. To setup the fvm version run the following command: -More information on the approach can be found here: +``` bash +make setup-fvm-version +``` +The curremt version of Flutter is `3.16.8` but don't worry about setup this, `make setup-fvm-version` will do it automatically. -> hhttps://fvm.app/docs/getting_started/installation +> Make setup-fvm-version will run the following commands: `fvm install 3.16.8` and `fvm global 3.16.8` + +This will download the version that we are using on the project, and setup as global. + +### 2 - make setup + +This will setup all things that we need work on the project. +To make sure that everything is working well, `make setup` will run some commands: + +Pre-setup: + +- `flutter clean` # clean the flutter project +- `dart run build_runner clean` # clean the build runner +- `dart pub global activate arb_utils` # activate the arb_utils package to generate locales +- `dart pub global activate flutter_gen` # activate the flutter_gen package for management assets + +Setup: +- `get` # flutter pub get +- `l10n` # generate the locales and sort +- `gen` # generate the models +- `asset-gen` # generate the assets +- `setup-env-file` # generate the `.env` file +- `unit-tests` # run unit tests to ensure everything is working + + ### IDE Setup @@ -181,3 +256,51 @@ Just create a new issue in this repo and we will respond and get back to you qui ## Review The coding challenge is a take-home test upon which we'll be conducting a thorough code review once complete. The review will consist of meeting some more of our mobile engineers and giving a review of the solution you have designed. Please be prepared to share your screen and run/demo the application to the group. During this process, the engineers will be asking questions. + + +## Vendorized Flutter + +We use [fvm](https://fvm.app/) for managing the flutter version within the project. Using terminal, while being on the test repository, install the tools dependencies by running the following commands: + +```sh + dart pub global activate fvm +``` + +The output of the command will ask to add the folder `./pub-cache/bin` to your PATH variables, if you didn't already. If that is the case, add it to your environment variables, and restart the terminal. + +```sh +export PATH="$PATH":"$HOME/.pub-cache/bin" # Add this to your environment variables +``` + + + +More information on the approach can be found here: + +> hhttps://fvm.app/docs/getting_started/installation + +[Back to setup](#setup) + +## Coverage reports - lcov +LCOV is an extension of GCOV, a GNU tool which provides information about +what parts of a program are actually executed (i.e. "covered") while running +a particular test case. The extension consists of a set of Perl scripts +which build on the textual GCOV output to implement the following enhanced +functionality: + +- HTML based output: coverage rates are additionally indicated using bar +graphs and specific colors. + +- Support for large projects: overview pages allow quick browsing of +coverage data by providing three levels of detail: directory view, +file view and source code view. + +LCOV was initially designed to support Linux kernel coverage measurements, +but works as well for coverage measurements on standard user space +applications. + +Install on Linux/MacOs using brew + +Install on Windows + + +[Back to make](#2---make-setup) \ No newline at end of file From 9570e0834b1568bdc4abd66dcd410eea7c8b8893 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Fri, 8 Mar 2024 15:11:14 -0300 Subject: [PATCH 88/89] feat: setup env_stage key --- .env_stage | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env_stage b/.env_stage index a7d57979..538d336f 100644 --- a/.env_stage +++ b/.env_stage @@ -1 +1 @@ -API_KEY='' +API_KEY="KC7Is6ZMmm9pJtce2CCzin4Np4GuCDraZ3M3Pdl6ibKfE96Byt4-RZ2p0c7qj_Dhg8g5BaMPfZ8uYfQ7OEXJoJzC85OULRmwXuaitDLQ5kqthjeFGhTxePA3gu3QZXYx" \ No newline at end of file From 9c2d2cf4158ca48e87c01a81e4b1bbbfafb2cb40 Mon Sep 17 00:00:00 2001 From: Jeilson Araujo Date: Fri, 8 Mar 2024 15:28:38 -0300 Subject: [PATCH 89/89] feat: update tests --- Makefile | 3 ++- .../favorite_service_test.dart} | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) rename test/{unit_tests/services/favorites_service_test.dart => services/favorite_service_test.dart} (98%) diff --git a/Makefile b/Makefile index fb562b8a..bec4a0e6 100644 --- a/Makefile +++ b/Makefile @@ -27,7 +27,8 @@ try-fix-gen : fix-gen # TESTS: -tests : unit-tests golden-tests +tests : + flutter test --coverage all-tests : tests integration-tests diff --git a/test/unit_tests/services/favorites_service_test.dart b/test/services/favorite_service_test.dart similarity index 98% rename from test/unit_tests/services/favorites_service_test.dart rename to test/services/favorite_service_test.dart index 884d0718..d17f6dbe 100644 --- a/test/unit_tests/services/favorites_service_test.dart +++ b/test/services/favorite_service_test.dart @@ -2,7 +2,7 @@ import 'package:restaurantour/core/core.dart'; import 'package:restaurantour/services/favorite_service.dart'; import 'package:shared_preferences/shared_preferences.dart'; -import '../../test.dart'; +import '../test.dart'; void main() { SharedPreferences sharedPreferences = SharedPreferencesMock();
    +All make commands available -From the root directory: +
      +
      +Setup + +
        get # run flutter pub get
      +
        setup-fvm-version # download and setup the fvm flutter version for the project
      +
        pre-setup # clean the project and install some dependencies
      +
        setup-env-file # generate the .env file
      +
        setup # run pre-setup, setup-env-file, run code generation and run unit tests
      +
        try-fix-gen # try run code generation if fail try fix and run code generation again
      +
        fix-gen # perform some steps to fix code generation
      + +
      +
    + +
      +
      +Tests +
        tests # run unit and golden tests
      +
        all-tests # run all type of tests on project, unit, golden and integration
      +
        unit-tests # run only unit tests
      +
        tests-ci-cd #run tests with a flag that enable threshold for golden tests on pipeline
      +
        integration-tests # run integration test
      +
        update-goldens # update the golden images
      +
        remove-goldens-failures # this remove the failure folder of golden tests
      +
      +
    + +
      +
      +Coverage +See Coverage reports + +
        lcov # run the tests and show the coverage report filtered
      +
        show-coverage # run tests and show the coverage report
      +
        lcov-ignore # remove some files from coverage report
      +
      +
    + +
      +
      +Code gen +
        l10n # generate the localization files
      +
        asset-gen # generate the assets file
      +
        gen # generate models using build_runner
      +
      +
    + +