Skip to content

Commit 14d9afc

Browse files
author
Veli Bacik
committed
test added
1 parent a74b0b4 commit 14d9afc

File tree

9 files changed

+166
-52
lines changed

9 files changed

+166
-52
lines changed

lib/view/home/social/view/social_view.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import 'package:easy_localization/easy_localization.dart';
22
import 'package:flutter/material.dart';
33
import 'package:flutter_mobx/flutter_mobx.dart';
4+
import 'package:fluttermvvmtemplate/core/init/network/vexana_manager.dart';
5+
import 'package:fluttermvvmtemplate/view/home/social/service/socail_service.dart';
46
import 'package:kartal/kartal.dart';
57

68
import '../../../../core/base/view/base_widget.dart';
@@ -10,10 +12,12 @@ import '../../../_product/_widgets/list-tile/friend_card.dart';
1012
import '../viewmodel/social_view_model.dart';
1113

1214
class SocialView extends StatelessWidget {
15+
final GlobalKey<ScaffoldState> scaffoldKey = GlobalKey();
16+
1317
@override
1418
Widget build(BuildContext context) {
1519
return BaseView<SocialViewModel>(
16-
viewModel: SocialViewModel(),
20+
viewModel: SocialViewModel(SocailService(VexanaManager.instance.networkManager, scaffoldKey)),
1721
onModelReady: (model) {
1822
model.setContext(context);
1923
model.init();

lib/view/home/social/viewmodel/social_view_model.dart

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,13 @@ part 'social_view_model.g.dart';
1313
class SocialViewModel = _SocialViewModelBase with _$SocialViewModel;
1414

1515
abstract class _SocialViewModelBase with Store, BaseViewModel {
16-
ISocialServiceService _socialService;
17-
GlobalKey<ScaffoldState> scaffoldKey = GlobalKey();
16+
final ISocialServiceService _socialService;
1817
int _page = 0;
1918
String _query = '';
2019
bool isLazyLoadDataFinish = false;
2120

21+
int get page => _page;
22+
2223
ThrottleStringHelper _throttleStringHelper;
2324
@observable
2425
List<SocialUser> socialUserList = [];
@@ -28,11 +29,12 @@ abstract class _SocialViewModelBase with Store, BaseViewModel {
2829
@observable
2930
bool isPageLoadingLazyLoad = false;
3031

32+
_SocialViewModelBase(this._socialService);
33+
3134
@override
3235
void setContext(BuildContext context) => this.context = context;
3336
@override
3437
void init() {
35-
_socialService = SocailService(vexanaManager.networkManager, scaffoldKey);
3638
_throttleStringHelper = ThrottleStringHelper();
3739
_fetchAllUser();
3840
}

pubspec.lock

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,13 @@ packages:
392392
url: "https://pub.dartlang.org"
393393
source: hosted
394394
version: "1.1.2"
395+
mockito:
396+
dependency: "direct main"
397+
description:
398+
name: mockito
399+
url: "https://pub.dartlang.org"
400+
source: hosted
401+
version: "4.1.4"
395402
nested:
396403
dependency: transitive
397404
description:

pubspec.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ dependencies:
3636
kartal: ^1.1.0
3737
mobx: ^1.2.1
3838
mobx_codegen: ^1.1.0
39+
mockito: ^4.1.4
3940
pedantic: ^1.9.2
4041
provider: ^4.3.3
4142
shared_preferences: ^0.5.7+3

test/core/feature/login_test.dart

Lines changed: 0 additions & 3 deletions
This file was deleted.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import 'package:flutter/material.dart';
2+
import 'package:fluttermvvmtemplate/view/home/social/model/social_user_model.dart';
3+
import 'package:fluttermvvmtemplate/view/home/social/viewmodel/social_view_model.dart';
4+
import 'package:mockito/mockito.dart';
5+
6+
import 'social_network_mock.dart';
7+
8+
class SocialBuildContext extends Mock implements BuildContext {}
9+
10+
class SocialMockViewModel extends Mock implements SocialViewModel {
11+
SocialMockViewModel(SocialNetworkMock mockService);
12+
@override
13+
bool isPageLoading = false;
14+
}
15+
16+
class SocialFakeViewModel extends Fake implements SocialViewModel {
17+
SocialFakeViewModel(SocialNetworkMock mockService);
18+
@override
19+
BuildContext context;
20+
21+
@override
22+
bool isPageLoading = false;
23+
@override
24+
List<SocialUser> socialUserList = [];
25+
26+
@override
27+
Future<void> fetchAllUserLoading(int index) async {
28+
isPageLoading = true;
29+
await Future.delayed(Duration(seconds: 1));
30+
socialUserList = [SocialUser(name: '')];
31+
isPageLoading = false;
32+
}
33+
34+
@override
35+
void setContext(BuildContext context) {
36+
this.context = context;
37+
}
38+
39+
void changeLoading() {
40+
isPageLoading = !isPageLoading;
41+
}
42+
}
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
import 'package:flutter/material.dart';
2+
import 'package:flutter_test/flutter_test.dart';
3+
import 'package:fluttermvvmtemplate/view/_product/_model/query/friend_query.dart';
4+
import 'package:mockito/mockito.dart';
5+
import 'package:vexana/vexana.dart';
6+
7+
import 'feed_mockito.dart';
8+
import 'social_network_mock.dart';
9+
10+
void main() {
11+
BuildContext context;
12+
SocialNetworkMock mockService;
13+
INetworkManager networkManager;
14+
SocialMockViewModel socialMockViewModel;
15+
16+
setUp(() {
17+
context = SocialBuildContext();
18+
networkManager = NetworkManager(options: BaseOptions());
19+
20+
mockService = SocialNetworkMock(networkManager, null);
21+
socialMockViewModel = SocialMockViewModel(mockService);
22+
});
23+
24+
test('Context Test', () async {
25+
verify(socialMockViewModel.setContext(context));
26+
});
27+
28+
test('Loading Test 2 ', () async {
29+
socialMockViewModel.fetchAllUserLoading(1);
30+
expect(socialMockViewModel.isPageLoading, true);
31+
await Future.delayed(Duration(seconds: 1));
32+
expect(socialMockViewModel.isPageLoading, false);
33+
});
34+
35+
test('User All Loading', () async {
36+
socialMockViewModel.isPageLoadingLazyLoad = false;
37+
socialMockViewModel.socialUserList = [];
38+
socialMockViewModel.isLazyLoadDataFinish = false;
39+
40+
await socialMockViewModel.fetchAllUserLoading(-1);
41+
expect(socialMockViewModel.socialUserList.isNotEmpty, true);
42+
expect(socialMockViewModel.page > 0, true);
43+
expect(socialMockViewModel.isPageLoading, false);
44+
});
45+
46+
test('List check', () async {
47+
socialMockViewModel.setContext(context);
48+
49+
await socialMockViewModel.fetchAllUserLoading(1);
50+
// when(socialMockViewModel.fetchAllUserLoading(0)).thenReturn(Future.value());
51+
52+
expect(socialMockViewModel.socialUserList.length, 1);
53+
});
54+
test('Loading Test', () async {
55+
await socialMockViewModel.fetchAllUserLoading(0);
56+
verifyNever(socialMockViewModel.isPageLoading);
57+
// verify(socialMockViewModel.isPageLoading).called(2);
58+
});
59+
test('Fetch User Id', () async {
60+
final response = await mockService.fetchUser(10);
61+
expect(response, isNotNull);
62+
});
63+
64+
test('Fetch House Id', () async {
65+
final response = await mockService.fetchUserHouseList(FriendQuery());
66+
expect(response, isNotEmpty);
67+
});
68+
69+
test('Fetch User Name Query', () async {
70+
final response = await mockService.fetchUserNameQuery('hello');
71+
expect(response, isNotEmpty);
72+
});
73+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import 'package:flutter/src/material/scaffold.dart';
2+
import 'package:flutter/src/widgets/framework.dart';
3+
import 'package:fluttermvvmtemplate/view/home/social/model/social_user_model.dart';
4+
import 'package:fluttermvvmtemplate/view/_product/_model/query/friend_query.dart';
5+
import 'package:fluttermvvmtemplate/view/home/social/service/ISocialService.dart';
6+
import 'package:fluttermvvmtemplate/view/home/social/service/socail_service.dart';
7+
import 'package:vexana/src/interface/INetworkService.dart';
8+
9+
class SocialNetworkMock extends SocailService {
10+
SocialNetworkMock(INetworkManager manager, GlobalKey<ScaffoldState> scaffoldyKey) : super(manager, scaffoldyKey);
11+
}
12+
13+
class SocialNetworkMockAll extends ISocialServiceService {
14+
SocialNetworkMockAll(INetworkManager manager, GlobalKey<ScaffoldState> scaffoldyKey) : super(manager, scaffoldyKey);
15+
16+
@override
17+
Future<SocialUser> fetchUser(id) async {
18+
await Future.delayed(Duration(seconds: 1));
19+
return SocialUser(name: id);
20+
}
21+
22+
@override
23+
Future<List<SocialUser>> fetchUserHouseList(FriendQuery query) {
24+
// TODO: implement fetchUserHouseList
25+
throw UnimplementedError();
26+
}
27+
28+
@override
29+
Future<List<SocialUser>> fetchUserNameQuery(String text) {
30+
// TODO: implement fetchUserNameQuery
31+
throw UnimplementedError();
32+
}
33+
}

test/feature/login/login_test.dart

Lines changed: 0 additions & 45 deletions
This file was deleted.

0 commit comments

Comments
 (0)