1
1
import 'package:flood_mobile/Components/settings_text_field.dart' ;
2
+ import 'package:flood_mobile/Components/user_list.dart' ;
2
3
import 'package:flood_mobile/Constants/theme_provider.dart' ;
3
4
import 'package:flood_mobile/Model/client_settings_model.dart' ;
5
+ import 'package:flood_mobile/Model/current_user_detail_model.dart' ;
4
6
import 'package:flood_mobile/Pages/settings_screen.dart' ;
5
7
import 'package:flood_mobile/Provider/api_provider.dart' ;
6
8
import 'package:flood_mobile/Provider/client_provider.dart' ;
@@ -18,42 +20,51 @@ class MockHomeProvider extends Mock implements HomeProvider {}
18
20
class MockClientSettingsProvider extends Mock
19
21
implements ClientSettingsProvider {}
20
22
23
+ class MockUserDetailProvider extends Mock implements UserDetailProvider {}
24
+
21
25
void main () {
22
26
setUp (() {});
23
- UserDetailProvider userDetailProvider = UserDetailProvider ();
27
+ MockUserDetailProvider mockUserDetailProvider = MockUserDetailProvider ();
24
28
MockClientSettingsProvider mockClientSettingsProvider =
25
29
MockClientSettingsProvider ();
30
+ when (() => mockUserDetailProvider.usersList).thenReturn ([
31
+ CurrentUserDetailModel (username: 'test username 1' , level: 1 ),
32
+ CurrentUserDetailModel (username: 'test username 2' , level: 2 ),
33
+ ]);
34
+ when (() => mockUserDetailProvider.token).thenReturn ('token' );
35
+ when (() => mockUserDetailProvider.username).thenReturn ('test username 1' );
26
36
when (() => mockClientSettingsProvider.clientSettings).thenReturn (
27
- ClientSettingsModel (
28
- dht: false ,
29
- dhtPort: 1 ,
30
- directoryDefault: 'test directory' ,
31
- networkHttpMaxOpen: 2 ,
32
- networkLocalAddress: ['test networkLocalAddress' ],
33
- networkMaxOpenFiles: 3 ,
34
- networkPortOpen: true ,
35
- networkPortRandom: false ,
36
- networkPortRange: 'test networkPortRange' ,
37
- piecesHashOnCompletion: true ,
38
- piecesMemoryMax: 4 ,
39
- protocolPex: false ,
40
- throttleGlobalDownSpeed: 5 ,
41
- throttleGlobalUpSpeed: 6 ,
42
- throttleMaxDownloads: 7 ,
43
- throttleMaxDownloadsGlobal: 8 ,
44
- throttleMaxPeersNormal: 9 ,
45
- throttleMaxPeersSeed: 10 ,
46
- throttleMaxUploads: 11 ,
47
- throttleMaxUploadsGlobal: 12 ,
48
- throttleMinPeersNormal: 13 ,
49
- throttleMinPeersSeed: 14 ,
50
- trackersNumWant: 15 ));
37
+ ClientSettingsModel (
38
+ dht: false ,
39
+ dhtPort: 1 ,
40
+ directoryDefault: 'test directory' ,
41
+ networkHttpMaxOpen: 2 ,
42
+ networkLocalAddress: ['test networkLocalAddress' ],
43
+ networkMaxOpenFiles: 3 ,
44
+ networkPortOpen: true ,
45
+ networkPortRandom: false ,
46
+ networkPortRange: 'test networkPortRange' ,
47
+ piecesHashOnCompletion: true ,
48
+ piecesMemoryMax: 4 ,
49
+ protocolPex: false ,
50
+ throttleGlobalDownSpeed: 5 ,
51
+ throttleGlobalUpSpeed: 6 ,
52
+ throttleMaxDownloads: 7 ,
53
+ throttleMaxDownloadsGlobal: 8 ,
54
+ throttleMaxPeersNormal: 9 ,
55
+ throttleMaxPeersSeed: 10 ,
56
+ throttleMaxUploads: 11 ,
57
+ throttleMaxUploadsGlobal: 12 ,
58
+ throttleMinPeersNormal: 13 ,
59
+ throttleMinPeersSeed: 14 ,
60
+ trackersNumWant: 15 ),
61
+ );
51
62
52
63
Widget createWidgetUnderTest () {
53
64
return MultiProvider (
54
65
providers: [
55
66
ChangeNotifierProvider <UserDetailProvider >(
56
- create: (context) => UserDetailProvider () ,
67
+ create: (context) => mockUserDetailProvider ,
57
68
),
58
69
ChangeNotifierProvider <HomeProvider >(
59
70
create: (context) => HomeProvider (),
@@ -296,43 +307,38 @@ void main() {
296
307
});
297
308
298
309
testWidgets ("Check authentication options" , (WidgetTester tester) async {
299
- if (userDetailProvider.usersList.length != 0 ) {
300
- await tester.pumpWidget (createWidgetUnderTest ());
301
- expect (
302
- find.byKey (Key ('Authentication Expansion Card' )), findsOneWidget);
303
- await tester
304
- .ensureVisible (find.byKey (Key ('Authentication Expansion Card' )));
305
- await tester.tap (find.byKey (Key ('Authentication Expansion Card' )));
306
- await tester.pumpAndSettle ();
307
- expect (find.byKey (Key ('Authentication option display column' )),
308
- findsOneWidget);
309
- expect (find.text ('Add User' ), findsOneWidget);
310
- //check if all the text boxes of authentication option displayed
311
- expect (find.byType (SettingsTextField ), findsNWidgets (9 ));
312
- //check if all the check boxes of authentication option displayed
313
- expect (find.byType (CheckboxListTile ), findsNWidgets (3 ));
314
- //check if all the dropdown of authentication option displayed
315
- expect (find.byKey (Key ('Authentication dropdown' )), findsOneWidget);
316
- final dropdownFinder1 = find.byKey (Key ('Authentication dropdown' ));
317
- var dropdown1 = tester.firstWidget (dropdownFinder1) as DropdownButton ;
318
- expect (dropdown1.value, 'rTorrent' );
319
- expect (find.text ('qBittorrent' ), findsNWidgets (1 ));
320
- await tester.ensureVisible (find.byKey (Key ('Authentication dropdown' )));
321
- await tester.tap (find.byKey (Key ('Authentication dropdown' )));
322
- await tester.pumpAndSettle ();
323
- expect (find.text ('qBittorrent' ), findsNWidgets (2 ));
324
- expect (find.byType (ElevatedButton ), findsOneWidget);
325
- expect (find.text ('Add' ), findsOneWidget);
326
- } else {
327
- await tester.pumpWidget (createWidgetUnderTest ());
328
- expect (
329
- find.byKey (Key ('Authentication Expansion Card' )), findsOneWidget);
330
- await tester
331
- .ensureVisible (find.byKey (Key ('Authentication Expansion Card' )));
332
- await tester.tap (find.byKey (Key ('Authentication Expansion Card' )));
333
- await tester.pumpAndSettle ();
334
- expect (find.text ('User is not Admin' ), findsOneWidget);
335
- }
310
+ await tester.pumpWidget (createWidgetUnderTest ());
311
+ expect (find.byKey (Key ('Authentication Expansion Card' )), findsOneWidget);
312
+ await tester
313
+ .ensureVisible (find.byKey (Key ('Authentication Expansion Card' )));
314
+ await tester.tap (find.byKey (Key ('Authentication Expansion Card' )));
315
+ await tester.pumpAndSettle ();
316
+ expect (find.byKey (Key ('Authentication option display column' )),
317
+ findsOneWidget);
318
+ expect (find.text ('User Accounts' ), findsOneWidget);
319
+ //check if all the text boxes of user list displayed
320
+ expect (find.byType (UsersListView ), findsOneWidget);
321
+ expect (find.byKey (Key ('User list item container' )), findsNWidgets (2 ));
322
+ expect (find.text ('test username 1' ), findsOneWidget);
323
+ expect (find.text ('Current User' ), findsOneWidget);
324
+ expect (find.text ('test username 2' ), findsOneWidget);
325
+ expect (find.text ('Add User' ), findsOneWidget);
326
+ //check if all the text boxes of authentication option displayed
327
+ expect (find.byType (SettingsTextField ), findsNWidgets (9 ));
328
+ //check if all the check boxes of authentication option displayed
329
+ expect (find.byType (CheckboxListTile ), findsNWidgets (3 ));
330
+ //check if all the dropdown of authentication option displayed
331
+ expect (find.byKey (Key ('Authentication dropdown' )), findsOneWidget);
332
+ final dropdownFinder1 = find.byKey (Key ('Authentication dropdown' ));
333
+ var dropdown1 = tester.firstWidget (dropdownFinder1) as DropdownButton ;
334
+ expect (dropdown1.value, 'rTorrent' );
335
+ expect (find.text ('qBittorrent' ), findsNWidgets (1 ));
336
+ await tester.ensureVisible (find.byKey (Key ('Authentication dropdown' )));
337
+ await tester.tap (find.byKey (Key ('Authentication dropdown' )));
338
+ await tester.pumpAndSettle ();
339
+ expect (find.text ('qBittorrent' ), findsNWidgets (2 ));
340
+ expect (find.byType (ElevatedButton ), findsOneWidget);
341
+ expect (find.text ('Add' ), findsOneWidget);
336
342
});
337
343
});
338
344
}
0 commit comments