Skip to content

Commit 5c15e02

Browse files
committed
feat: fix comments and add cubit tests
1 parent 78a968f commit 5c15e02

17 files changed

+412
-131
lines changed

.github/hooks/pre-push

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,6 @@
22

33
printf "\e[33;1m%s\e[0m\n" 'Running the Pre-push checks'
44
./scripts/checks.sh
5+
6+
printf "\e[33;1m%s\e[0m\n" 'Running the Pre-push tests'
7+
fvm flutter test

analysis_options.yaml

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -112,18 +112,16 @@ dart_code_metrics:
112112
allowed-duplicated-chains: 3
113113
- prefer-trailing-comma
114114

115-
116-
117115
# Additional information about this file can be found at
118116
# https://dart.dev/guides/language/analysis-options
119117
analyzer:
120118
exclude:
121-
- '**/*.freezed.dart'
122-
- '**/*.g.dart'
123-
- '**/*.gen.dart'
124-
- '**/*.gr.dart'
125-
- 'bricks'
126-
- 'lib/generated_plugin_registrant.dart'
119+
- "**/*.freezed.dart"
120+
- "**/*.g.dart"
121+
- "**/*.gen.dart"
122+
- "**/*.gr.dart"
123+
- "bricks"
124+
- "lib/generated_plugin_registrant.dart"
127125
errors:
128126
invalid_annotation_target: ignore
129127
unused_element: ignore # https://github.com/dart-lang/sdk/issues/49025

lib/core/di/di_repository_module.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ class RepositoryDiModule {
2727
extension _GetItDiModuleExtensions on GetIt {
2828
void _setupProvidersAndUtils() {
2929
registerLazySingleton<HttpService>(
30-
() => HttpServiceDio([AuthInterceptor(get())]));
30+
() => HttpServiceDio([AuthInterceptor(get())]),
31+
);
3132
}
3233

3334
void _setupRepositories() {
Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1+
import 'package:equatable/equatable.dart';
12
import 'package:floor/floor.dart';
23

34
@Entity(tableName: 'projects')
4-
class ProjectDbEntity {
5+
class ProjectDbEntity extends Equatable {
56
@primaryKey
67
final int id;
78
final String name;
@@ -10,12 +11,22 @@ class ProjectDbEntity {
1011
final String imageUrl;
1112
final String language;
1213

13-
ProjectDbEntity({
14+
const ProjectDbEntity({
1415
required this.id,
1516
required this.name,
1617
required this.description,
1718
required this.url,
1819
required this.imageUrl,
1920
required this.language,
2021
});
22+
23+
@override
24+
List<Object?> get props => [
25+
id,
26+
name,
27+
description,
28+
url,
29+
imageUrl,
30+
language,
31+
];
2132
}

pubspec.lock

Lines changed: 97 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pubspec.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ dependencies:
2323
dio: 5.3.2
2424
equatable: 2.0.5
2525
floor: 1.4.2
26-
mocktail: 1.0.1
2726
flutter_bloc: 8.1.3
2827
flutter_dotenv: 5.1.0
2928
flutter_native_splash: 2.3.2
@@ -53,6 +52,8 @@ dev_dependencies:
5352

5453
auto_route_generator: 7.3.1
5554
build_runner: 2.4.6
55+
mocktail: 1.0.1
56+
bloc_test: 9.1.5
5657
dart_code_metrics: 5.7.6
5758
floor_generator: 1.4.2
5859
flutter_flavorizr: 2.2.1

test/common/general_helpers.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import 'package:flutter_template/core/source/common/app_database.dart';
2+
3+
Future<AppDatabase> setupFloorDatabase() async =>
4+
$FloorAppDatabase.inMemoryDatabaseBuilder().build();

test/common/mocks.dart

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import 'package:bloc_test/bloc_test.dart';
2+
import 'package:flutter_template/core/repository/project_repository.dart';
3+
import 'package:flutter_template/core/repository/session_repository.dart';
4+
import 'package:flutter_template/core/source/auth_local_source.dart';
5+
import 'package:flutter_template/core/source/auth_remote_source.dart';
6+
import 'package:flutter_template/core/source/common/http_service.dart';
7+
import 'package:flutter_template/core/source/common/local_shared_preferences_storage.dart';
8+
import 'package:flutter_template/core/source/project_local_source.dart';
9+
import 'package:flutter_template/core/source/project_remote_source.dart';
10+
import 'package:flutter_template/ui/section/error_handler/global_event_handler_cubit.dart';
11+
import 'package:mocktail/mocktail.dart';
12+
13+
//* Services
14+
class HttpServiceMock extends Mock implements HttpService {}
15+
16+
//* Data sources
17+
class ProjectLocalSourceMock extends Mock implements ProjectLocalSource {}
18+
19+
class ProjectRemoteSourceMock extends Mock implements ProjectRemoteSource {}
20+
21+
class AuthLocalSourceMock extends Mock implements AuthLocalSource {}
22+
23+
class AuthRemoteSourceMock extends Mock implements AuthRemoteSource {}
24+
25+
//* Repositories
26+
class MockSessionRepository extends Mock implements SessionRepository {}
27+
28+
class MockProjectRepository extends Mock implements ProjectRepository {}
29+
30+
//* Cubits
31+
class MockGlobalEventHandlerCubit extends MockCubit<GlobalEventHandlerState>
32+
implements GlobalEventHandlerCubit {}
33+
34+
class LocalSharedPreferencesStorageMock extends Mock
35+
implements LocalSharedPreferencesStorage {}

test/common/project_helpers.dart

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import 'package:flutter_template/core/model/db/repository_db_entity.dart';
2+
import 'package:flutter_template/core/model/project.dart';
3+
4+
List<ProjectDbEntity> generateProjectDbEntities(int count) => Iterable.generate(
5+
count,
6+
(index) => ProjectDbEntity(
7+
id: index,
8+
name: 'Test $index project',
9+
description: 'Test $index project description',
10+
url: 'test$index.com',
11+
imageUrl: '',
12+
language: 'ES',
13+
),
14+
).toList();
15+
16+
List<Project> generateProjects(int count) => Iterable.generate(
17+
count,
18+
(index) => Project(
19+
id: index,
20+
name: 'Test $index project',
21+
description: 'Test $index project description',
22+
url: 'test$index.com',
23+
imageUrl: '',
24+
language: 'ES',
25+
),
26+
).toList();

0 commit comments

Comments
 (0)