@@ -19,19 +19,22 @@ import 'dart:async';
19
19
import 'dart:ui' ;
20
20
21
21
import 'package:blink_comparison/core/settings/app_settings.dart' ;
22
+ import 'package:blink_comparison/core/window_manager.dart' ;
22
23
import 'package:blink_comparison/ui/model/app_cubit.dart' ;
23
24
import 'package:blink_comparison/ui/model/app_state.dart' ;
24
25
import 'package:bloc_test/bloc_test.dart' ;
25
26
import 'package:flutter_test/flutter_test.dart' ;
26
27
import 'package:mocktail/mocktail.dart' ;
27
28
28
29
import '../mock/mock.dart' ;
30
+ import '../mock/mock_window_manager.dart' ;
29
31
30
32
void main () {
31
33
group ('AppCubit |' , () {
32
34
late AppCubit cubit;
33
35
late AppSettings mockPref;
34
36
late StreamController <String > streamController;
37
+ late WindowManager mockWindowManager;
35
38
36
39
setUpAll (() {
37
40
streamController = StreamController .broadcast ();
@@ -43,16 +46,19 @@ void main() {
43
46
44
47
setUp (() async {
45
48
mockPref = MockAppSettings ();
49
+ mockWindowManager = MockWindowManager ();
46
50
when (() => mockPref.theme).thenAnswer (
47
51
(_) async => const AppThemeType .system (),
48
52
);
49
53
when (() => mockPref.locale).thenAnswer (
50
54
(_) async => const AppLocaleType .system (),
51
55
);
52
56
when (() => mockPref.cameraFullscreenMode).thenAnswer ((_) async => true );
57
+ when (() => mockPref.encryptionPreferenceSync)
58
+ .thenReturn (EncryptionPreference .none ());
53
59
when (() => mockPref.changePrefStream ())
54
60
.thenAnswer ((_) => streamController.stream);
55
- cubit = AppCubit (mockPref);
61
+ cubit = AppCubit (mockPref, mockWindowManager );
56
62
await cubit.load ();
57
63
});
58
64
@@ -194,5 +200,52 @@ void main() {
194
200
),
195
201
],
196
202
);
203
+
204
+ blocTest (
205
+ 'Change encryption preference' ,
206
+ build: () => cubit,
207
+ act: (AppCubit cubit) async {
208
+ when (() => mockWindowManager.setSecureFlag (any ()))
209
+ .thenAnswer ((_) async => true );
210
+ await cubit.setEncryptPreference (EncryptionPreference .password ());
211
+ verify (() => mockWindowManager.setSecureFlag (true )).called (1 );
212
+ await cubit.setEncryptPreference (EncryptionPreference .none ());
213
+ verify (() => mockWindowManager.setSecureFlag (false )).called (1 );
214
+ },
215
+ expect: () => [
216
+ const AppState .encryptPreferenceChanged (
217
+ theme: AppThemeType .system (),
218
+ locale: AppLocaleType .system (),
219
+ cameraFullscreenMode: true ,
220
+ encrypt: EncryptionPreference .password (),
221
+ ),
222
+ const AppState .encryptPreferenceChanged (
223
+ theme: AppThemeType .system (),
224
+ locale: AppLocaleType .system (),
225
+ cameraFullscreenMode: true ,
226
+ encrypt: EncryptionPreference .none (),
227
+ ),
228
+ ],
229
+ );
230
+
231
+ blocTest (
232
+ 'Listen encryption preference change' ,
233
+ build: () => cubit,
234
+ act: (AppCubit cubit) {
235
+ when (() => mockPref.encryptionPreferenceSync)
236
+ .thenReturn (EncryptionPreference .none ());
237
+ when (() => mockWindowManager.setSecureFlag (any ()))
238
+ .thenAnswer ((_) async => true );
239
+ streamController.add (AppSettingsKey .encryptionPreference);
240
+ },
241
+ expect: () => [
242
+ const AppState .encryptPreferenceChanged (
243
+ theme: AppThemeType .system (),
244
+ locale: AppLocaleType .system (),
245
+ cameraFullscreenMode: true ,
246
+ encrypt: EncryptionPreference .none (),
247
+ ),
248
+ ],
249
+ );
197
250
});
198
251
}
0 commit comments