Skip to content

Commit 4719768

Browse files
committed
run full coverage script wip
1 parent c8f595f commit 4719768

File tree

4 files changed

+110
-0
lines changed

4 files changed

+110
-0
lines changed

modules/data/.discoverignore

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
lib/**/*.g.dart
2+
lib/**/*.freezed.dart
3+
lib/network/**/*.dart
4+
lib/preferences/*.dart
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
import 'package:common/core/result_type.dart';
2+
import 'package:data/preferences/preferences.dart';
3+
import 'package:data/repositories/auth_repository_impl.dart';
4+
import 'package:mocktail/mocktail.dart';
5+
import 'package:test/test.dart';
6+
7+
class MockPreferences extends Mock implements Preferences {}
8+
9+
void main() {
10+
late AuthRepositoryImpl repository;
11+
late MockPreferences mockPreferences;
12+
13+
setUp(() {
14+
mockPreferences = MockPreferences();
15+
repository = AuthRepositoryImpl(mockPreferences);
16+
});
17+
18+
group('isLoggedIn', () {
19+
test('should return true when token exists', () {
20+
// Arrange
21+
when(() => mockPreferences.getToken()).thenReturn('some-token');
22+
23+
// Act
24+
final result = repository.isLoggedIn();
25+
26+
// Assert
27+
expect(result, true);
28+
verify(() => mockPreferences.getToken()).called(1);
29+
});
30+
31+
test('should return false when token is null', () {
32+
// Arrange
33+
when(() => mockPreferences.getToken()).thenReturn(null);
34+
35+
// Act
36+
final result = repository.isLoggedIn();
37+
38+
// Assert
39+
expect(result, false);
40+
verify(() => mockPreferences.getToken()).called(1);
41+
});
42+
});
43+
44+
group('login', () {
45+
test('should return success and set token when login is successful',
46+
() async {
47+
// Arrange
48+
const username = 'test_user';
49+
const password = 'test_password';
50+
when(() => mockPreferences.setToken(any())).thenAnswer((_) async {});
51+
52+
// Act
53+
final result = await repository.login(username, password);
54+
55+
// Assert
56+
expect(result, isA<TSuccess>());
57+
verify(() => mockPreferences.setToken('new-token')).called(1);
58+
});
59+
});
60+
61+
group('logout', () {
62+
test('should clear token when logging out', () async {
63+
// Arrange
64+
when(() => mockPreferences.setToken(null)).thenAnswer((_) async {});
65+
66+
// Act
67+
await repository.logout();
68+
69+
// Assert
70+
verify(() => mockPreferences.setToken(null)).called(1);
71+
});
72+
});
73+
}

modules/domain/.discoverignore

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
lib/**/*.g.dart
2+
lib/**/*.freezed.dart
3+
lib/presentation/ui/**/*.dart

run_coverage.sh

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#!/bin/bash
2+
3+
# Function to run tests and coverage for a module
4+
run_module_coverage() {
5+
local module=$1
6+
echo "Running tests and coverage for $module..."
7+
cd $module
8+
discover scan
9+
cd ..
10+
cd ..
11+
}
12+
13+
# Run coverage for each module
14+
echo "Starting test coverage scan..."
15+
# run_module_coverage "modules/common"
16+
run_module_coverage "modules/domain"
17+
run_module_coverage "modules/data"
18+
# run_module_coverage "app"
19+
20+
# Combine coverage reports
21+
echo "Combining coverage reports..."
22+
lcov --add-tracefile modules/domain/coverage/lcov.info \
23+
--add-tracefile modules/data/coverage/lcov.info \
24+
--output-file coverage/lcov.info
25+
26+
# Generate HTML report
27+
echo "Generating HTML report..."
28+
genhtml coverage/lcov.info -o coverage/html
29+
30+
echo "Coverage report generated in coverage/html"

0 commit comments

Comments
 (0)