Skip to content

Commit ae6c29f

Browse files
Refactor main files to streamline initialization
- Removed logging setup from `main_development.dart`. - Eliminated import of `main_staging.dart` in `main.dart`. - Removed direct import of `SharedPreferencesService` in `dependencies.dart` to enhance modularity.
1 parent 4d3768c commit ae6c29f

4 files changed

Lines changed: 89 additions & 6 deletions

File tree

compass_app/app/lib/config/dependencies.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import '../data/repositories/user/user_repository_remote.dart';
2828
import '../data/services/api/api_client.dart';
2929
import '../data/services/api/auth_api_client.dart';
3030
import '../data/services/local/local_data_service.dart';
31-
import '../data/services/shared_preferences_service.dart';
3231
import '../domain/use_cases/booking/booking_create_use_case.dart';
3332
import '../domain/use_cases/booking/booking_share_use_case.dart';
3433

compass_app/app/lib/main.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import 'package:flutter_localizations/flutter_localizations.dart';
77
import 'package:provider/provider.dart';
88

99
import 'main_development.dart' as development;
10-
import 'main_staging.dart' as staging;
1110
import 'routing/router.dart';
1211
import 'ui/core/localization/applocalization.dart';
1312
import 'ui/core/themes/theme.dart';

compass_app/app/lib/main_development.dart

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,6 @@ Future<void> main() async {
1717
WidgetsFlutterBinding.ensureInitialized();
1818

1919
Logger.root.level = Level.ALL;
20-
Logger.root.onRecord.listen((record) {
21-
print('${record.time}: [${record.level.name}] ${record.loggerName}: ${record.message}');
22-
});
23-
2420
final sharedPrefsService = await SharedPreferencesService.create();
2521

2622
runApp(
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
import 'package:compass_app/data/services/shared_preferences_service.dart';
2+
import 'package:compass_app/utils/result.dart';
3+
import 'package:flutter_test/flutter_test.dart';
4+
import 'package:mocktail/mocktail.dart';
5+
import 'package:shared_preferences/shared_preferences.dart';
6+
7+
// --- Mock ---
8+
class MockSharedPreferencesWithCache extends Mock
9+
implements SharedPreferencesWithCache {}
10+
11+
void main() {
12+
late MockSharedPreferencesWithCache mockPrefs;
13+
late SharedPreferencesService sut;
14+
15+
setUp(() {
16+
mockPrefs = MockSharedPreferencesWithCache();
17+
sut = SharedPreferencesService(mockPrefs);
18+
});
19+
20+
group('fetchToken', () {
21+
test('returns ok with token when prefs has a stored value', () async {
22+
when(() => mockPrefs.getString('TOKEN')).thenReturn('my-token');
23+
24+
final result = await sut.fetchToken();
25+
26+
expect(result, isA<Ok<String?>>());
27+
expect((result as Ok).value, 'my-token');
28+
});
29+
30+
test('returns ok with null when no token is stored', () async {
31+
when(() => mockPrefs.getString('TOKEN')).thenReturn(null);
32+
33+
final result = await sut.fetchToken();
34+
35+
expect(result, isA<Ok<String?>>());
36+
expect((result as Ok).value, isNull);
37+
});
38+
39+
test('returns error when getString throws an Exception', () async {
40+
when(() => mockPrefs.getString('TOKEN'))
41+
.thenThrow(Exception('read error'));
42+
43+
final result = await sut.fetchToken();
44+
45+
expect(result, isA<Error<String?>>());
46+
});
47+
});
48+
49+
group('saveToken', () {
50+
test('calls setString and returns ok when token is not null', () async {
51+
when(() => mockPrefs.setString('TOKEN', 'new-token'))
52+
.thenAnswer((_) async {});
53+
54+
final result = await sut.saveToken('new-token');
55+
56+
expect(result, isA<Ok<void>>());
57+
verify(() => mockPrefs.setString('TOKEN', 'new-token')).called(1);
58+
verifyNever(() => mockPrefs.remove(any()));
59+
});
60+
61+
test('calls remove and returns ok when token is null', () async {
62+
when(() => mockPrefs.remove('TOKEN')).thenAnswer((_) async {});
63+
64+
final result = await sut.saveToken(null);
65+
66+
expect(result, isA<Ok<void>>());
67+
verify(() => mockPrefs.remove('TOKEN')).called(1);
68+
verifyNever(() => mockPrefs.setString(any(), any()));
69+
});
70+
71+
test('returns error when setString throws an Exception', () async {
72+
when(() => mockPrefs.setString('TOKEN', any()))
73+
.thenThrow(Exception('write error'));
74+
75+
final result = await sut.saveToken('bad-token');
76+
77+
expect(result, isA<Error<void>>());
78+
});
79+
80+
test('returns error when remove throws an Exception', () async {
81+
when(() => mockPrefs.remove('TOKEN'))
82+
.thenThrow(Exception('remove error'));
83+
84+
final result = await sut.saveToken(null);
85+
86+
expect(result, isA<Error<void>>());
87+
});
88+
});
89+
}

0 commit comments

Comments
 (0)