From 971a204fdaee1f0db5797e71b90f157c9bcd19c7 Mon Sep 17 00:00:00 2001 From: Ayush0Chaudhary Date: Tue, 7 Feb 2023 02:35:10 +0530 Subject: [PATCH 01/13] draft --- .../organization_feed_view_model.dart | 2 +- .../feed/organization_feed_test.dart | 83 +++++++++++++++++++ 2 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 test/widget_tests/after_auth_screens/feed/organization_feed_test.dart diff --git a/lib/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart b/lib/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart index 202f24fe2..613160504 100644 --- a/lib/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart +++ b/lib/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart @@ -49,7 +49,7 @@ class OrganizationFeedViewModel extends BaseModel { } void initialise() { - // For caching/initalizing the current organization after the stream subsciption has canceled and the stream is updated + // For caching/initializing the current organization after the stream subscription has canceled and the stream is updated _currentOrgName = _userConfig.currentOrg.name!; // ------ // Attaching the stream subscription to rebuild the widgets automatically diff --git a/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart b/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart new file mode 100644 index 000000000..f8418cc86 --- /dev/null +++ b/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart @@ -0,0 +1,83 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:talawa/services/size_config.dart'; +import 'package:talawa/utils/app_localization.dart'; +import 'package:talawa/view_model/main_screen_view_model.dart'; +import 'package:talawa/views/after_auth_screens/feed/organization_feed.dart'; + +import '../../../helpers/test_helpers.dart'; +import '../../../helpers/test_locator.dart'; + +Widget createOrganizationFeedScreen({ + bool reverse = false, + String? dialogTitle, + bool passSecondaryFunc = true, + required MainScreenViewModel homeModel, +}) { + return MaterialApp( + navigatorObservers: [], + locale: const Locale('en'), + supportedLocales: [ + const Locale('en', 'US'), + const Locale('es', 'ES'), + const Locale('fr', 'FR'), + const Locale('hi', 'IN'), + const Locale('zh', 'CN'), + const Locale('de', 'DE'), + const Locale('ja', 'JP'), + const Locale('pt', 'PT'), + ], + localizationsDelegates: [ + const AppLocalizationsDelegate(isTest: true), + GlobalMaterialLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + ], + home: Scaffold( + key: MainScreenViewModel.scaffoldKey, + body: OrganizationFeed( + homeModel: homeModel, + key: const Key('test_key'), + ))); +} + +void main() { + SizeConfig().test(); + testSetupLocator(); + // locator.registerSingleton(LikeButtonViewModel()); + + setUp(() { + registerServices(); + }); + + testWidgets('check if createOrganizationFeedScreen shows up', (tester) async { + final model = locator(); + await tester.pumpWidget(createOrganizationFeedScreen(homeModel: model)); + await tester.pump(); + + final finder = find.byType(Scaffold); + + expect(finder, findsNWidgets(2)); + }); + testWidgets('check if side drawer shows up', (tester) async { + final model = locator(); + await tester.pumpWidget(createOrganizationFeedScreen(homeModel: model)); + await tester.pump(); + + final finder = find.byIcon(Icons.menu); + + await tester.tap(finder); + await tester.pump(); + }); + testWidgets('check if post shows up when model.posts.isNotEmpty is true', + (tester) async { + final model = locator(); + await tester.pumpWidget(createOrganizationFeedScreen(homeModel: model)); + await tester.pump(); + + final finder = find.byIcon(Icons.menu); + + await tester.tap(finder); + await tester.pump(); + }); +} From f605d9ac69a6e392cb7e144e671390169df37a2a Mon Sep 17 00:00:00 2001 From: Ayush0Chaudhary Date: Wed, 8 Feb 2023 01:30:53 +0530 Subject: [PATCH 02/13] draft2 --- .../create_event_view_model.dart | 1 + .../organization_feed_view_model.dart | 9 ++- .../events/create_event_page.dart | 1 + .../events/create_event_page_test.dart | 69 +++++++++++++---- .../feed/organization_feed_test.dart | 76 +++++++++++++++++++ 5 files changed, 141 insertions(+), 15 deletions(-) diff --git a/lib/view_model/after_auth_view_models/event_view_models/create_event_view_model.dart b/lib/view_model/after_auth_view_models/event_view_models/create_event_view_model.dart index ff345c8bc..2bed93e8c 100644 --- a/lib/view_model/after_auth_view_models/event_view_models/create_event_view_model.dart +++ b/lib/view_model/after_auth_view_models/event_view_models/create_event_view_model.dart @@ -123,6 +123,7 @@ class CreateEventViewModel extends BaseModel { Future getImageFromGallery({bool camera = false}) async { final _image = await _multiMediaPickerService.getPhotoFromGallery(camera: camera); + print(_image); if (_image != null) { _imageFile = _image; notifyListeners(); diff --git a/lib/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart b/lib/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart index 613160504..822e079e7 100644 --- a/lib/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart +++ b/lib/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart @@ -59,11 +59,14 @@ class OrganizationFeedViewModel extends BaseModel { setCurrentOrganizationName(updatedOrganization.name!), ); - _postsSubscription = - _postService.postStream.listen((newPosts) => buildNewPosts(newPosts)); + _postsSubscription = _postService.postStream.listen((newPosts) { + print('listener working'); + return buildNewPosts(newPosts); + }); _updatePostSubscription = _postService.updatedPostStream.listen((post) => updatedPost(post)); + print('initialize working'); } void initializeWithDemoData() { @@ -82,6 +85,8 @@ class OrganizationFeedViewModel extends BaseModel { void buildNewPosts(List newPosts) { _posts = newPosts; + print(newPosts); + print('ffffffffffffffffffffffff'); notifyListeners(); } diff --git a/lib/views/after_auth_screens/events/create_event_page.dart b/lib/views/after_auth_screens/events/create_event_page.dart index d9b4e1e27..b7b508bc6 100644 --- a/lib/views/after_auth_screens/events/create_event_page.dart +++ b/lib/views/after_auth_screens/events/create_event_page.dart @@ -75,6 +75,7 @@ class _CreateEventPageState extends State { width: SizeConfig.screenWidth! * 0.036, ), TextButton( + key: const Key('create_evt_add_img'), onPressed: () => model.getImageFromGallery(), child: Text( AppLocalizations.of(context)! diff --git a/test/widget_tests/after_auth_screens/events/create_event_page_test.dart b/test/widget_tests/after_auth_screens/events/create_event_page_test.dart index 4573e0b34..e37ec3b19 100644 --- a/test/widget_tests/after_auth_screens/events/create_event_page_test.dart +++ b/test/widget_tests/after_auth_screens/events/create_event_page_test.dart @@ -1,10 +1,14 @@ +import 'dart:io'; + import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_test/flutter_test.dart'; +import 'package:mockito/mockito.dart'; import 'package:talawa/constants/custom_theme.dart'; import 'package:talawa/locator.dart'; import 'package:talawa/router.dart' as router; import 'package:talawa/services/size_config.dart'; +import 'package:talawa/services/third_party_service/multi_media_pick_service.dart'; import 'package:talawa/utils/app_localization.dart'; import 'package:talawa/view_model/lang_view_model.dart'; import 'package:talawa/views/after_auth_screens/events/create_event_form.dart'; @@ -41,6 +45,58 @@ void main() { setupLocator(); graphqlConfig.test(); group("Create Event Screen Widget Test in dark mode", () { + group('Check if the validator of the create_event_form is working', () { + testWidgets("Testing if text field validator are working", + (tester) async { + await tester.pumpWidget(createEventScreen( + theme: TalawaTheme.lightTheme, + )); + await tester.pumpAndSettle(); + final addBtn = find.descendant( + of: find.byType(AppBar), + matching: find.byType(TextButton), + ); + await tester.tap(addBtn); + }); + }); + + testWidgets( + 'checks if the upload photo from gallery button ad other process are working properly', + (tester) async { + await tester.pumpWidget(createEventScreen( + theme: TalawaTheme.lightTheme, + )); + await tester.pump(); + + /// using the key of icon button + /// because their are many icon button + + final finder = find.byKey(const Key('create_evt_add_img')); + + expect(finder, findsOneWidget); + + ///returning the file variable to the + ///result of function multimediaPickerService.getPhotoFromGallery + ///when this function is called in the + ///view model of add_post_page. + final file = File('fakePath'); + + /// using the new instance of multimediaPickerService + /// so that when statement can be used again, + /// else it gives null point exception + final multimediaPickerService = locator(); + + /// when is function provided by mockito lib + when(multimediaPickerService.getPhotoFromGallery(camera: false)) + .thenAnswer((_) async { + return file; + }); + + /// taping the button + await tester.tap(finder); + await tester.pump(); + }); + testWidgets("Testing if dark mode is applied", (tester) async { await tester.pumpWidget(createEventScreen( themeMode: ThemeMode.dark, @@ -423,17 +479,4 @@ void main() { }); }); }); - group('Check if the validator of the create_event_form is working', () { - testWidgets("Testing if text field validator are working", (tester) async { - await tester.pumpWidget(createEventScreen( - theme: TalawaTheme.lightTheme, - )); - await tester.pumpAndSettle(); - final addBtn = find.descendant( - of: find.byType(AppBar), - matching: find.byType(TextButton), - ); - await tester.tap(addBtn); - }); - }); } diff --git a/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart b/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart index f8418cc86..ed11b4c2a 100644 --- a/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart +++ b/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart @@ -1,12 +1,21 @@ +import 'dart:async'; + import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_test/flutter_test.dart'; +import 'package:mockito/mockito.dart'; +import 'package:talawa/models/organization/org_info.dart'; +import 'package:talawa/models/post/post_model.dart'; +import 'package:talawa/models/user/user_info.dart'; +import 'package:talawa/services/post_service.dart'; import 'package:talawa/services/size_config.dart'; import 'package:talawa/utils/app_localization.dart'; +import 'package:talawa/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart'; import 'package:talawa/view_model/main_screen_view_model.dart'; import 'package:talawa/views/after_auth_screens/feed/organization_feed.dart'; import '../../../helpers/test_helpers.dart'; +import '../../../helpers/test_helpers.mocks.dart'; import '../../../helpers/test_locator.dart'; Widget createOrganizationFeedScreen({ @@ -80,4 +89,71 @@ void main() { await tester.tap(finder); await tester.pump(); }); + testWidgets('check if post shows up when model.posts.isNotEmpty is true', + (tester) async { + final model = locator(); + final orModel = locator(); + await tester.pumpWidget(createOrganizationFeedScreen(homeModel: model)); + await tester.pump(); + + final postservice = locator(); + + final u1 = User( + id: '123', + firstName: 'John', + lastName: 'Doe', + email: 'test@test.com', + ); + final u2 = User( + id: '123', + firstName: 'Ayush', + lastName: 'Chaudhary', + email: 'test@test.com', + ); + final List users = [u1, u2]; + + final LikedBy l1 = LikedBy(sId: 'test1'); + final LikedBy l2 = LikedBy(sId: 'test2'); + final List likeby = [l1, l2]; + + final comment1 = Comments(sId: 'comment1'); + final comment2 = Comments(sId: 'comment2'); + final comment3 = Comments(sId: 'comment3'); + final List comments = [comment1, comment2, comment3]; + + final myBirthday = DateTime.utc(2004, DateTime.june, 16, 5, 30, 0, 0, 0); + final post = Post( + creator: User( + id: '123', + firstName: 'John', + lastName: 'Doe', + email: 'test@test.com', + ), + sId: "sid", + createdAt: myBirthday, + description: 'test description', + imageUrl: 'https://image.com', + videoUrl: 'https://image.com', + organization: OrgInfo(admins: users), + likedBy: likeby, + comments: comments, + ); + final List posts = [post]; + // when(postservice.postStream). + final StreamController> _streamController = StreamController(); + final Stream> _stream = + _streamController.stream.asBroadcastStream(); + + // final service = MockEventService(); + final service = MockPostService(); + when(service.postStream).thenAnswer((invocation) => _stream); + + // when(postservice.postStream).thenAnswer((realInvocation) => Stream.of); + await tester.drag( + find.byType(RefreshIndicator), + const Offset(0, 200), + ); + + await tester.pumpAndSettle(); + }); } From c598d40c2556928417604443c268a065b3b3334d Mon Sep 17 00:00:00 2001 From: Ayush0Chaudhary Date: Thu, 9 Feb 2023 00:10:32 +0530 Subject: [PATCH 03/13] draft --- .../feed_view_models/organization_feed_view_model.dart | 1 + .../events/create_event_page_test.dart | 2 +- .../after_auth_screens/feed/organization_feed_test.dart | 9 ++++++--- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart b/lib/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart index 822e079e7..018260928 100644 --- a/lib/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart +++ b/lib/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart @@ -61,6 +61,7 @@ class OrganizationFeedViewModel extends BaseModel { _postsSubscription = _postService.postStream.listen((newPosts) { print('listener working'); + print(newPosts); return buildNewPosts(newPosts); }); diff --git a/test/widget_tests/after_auth_screens/events/create_event_page_test.dart b/test/widget_tests/after_auth_screens/events/create_event_page_test.dart index e37ec3b19..759ea7f2e 100644 --- a/test/widget_tests/after_auth_screens/events/create_event_page_test.dart +++ b/test/widget_tests/after_auth_screens/events/create_event_page_test.dart @@ -88,7 +88,7 @@ void main() { /// when is function provided by mockito lib when(multimediaPickerService.getPhotoFromGallery(camera: false)) - .thenAnswer((_) async { + .qthenAnswer((_) async { return file; }); diff --git a/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart b/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart index ed11b4c2a..299574e7f 100644 --- a/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart +++ b/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart @@ -146,9 +146,12 @@ void main() { // final service = MockEventService(); final service = MockPostService(); - when(service.postStream).thenAnswer((invocation) => _stream); - - // when(postservice.postStream).thenAnswer((realInvocation) => Stream.of); + when(postservice.postStream).thenAnswer((invocation) => _stream); + postservice.postStream.listen((event) { + print(11); + }); + _streamController.add(posts); + // when(postservice.postStream).thenAnswer((realInvocation) => Stream.of>>(posts)); await tester.drag( find.byType(RefreshIndicator), const Offset(0, 200), From f604829cbc9e5773cfc57650f1691261230607b1 Mon Sep 17 00:00:00 2001 From: Ayush0Chaudhary Date: Thu, 9 Feb 2023 01:27:15 +0530 Subject: [PATCH 04/13] draft --- .../after_auth_screens/events/create_event_page_test.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/widget_tests/after_auth_screens/events/create_event_page_test.dart b/test/widget_tests/after_auth_screens/events/create_event_page_test.dart index 759ea7f2e..e37ec3b19 100644 --- a/test/widget_tests/after_auth_screens/events/create_event_page_test.dart +++ b/test/widget_tests/after_auth_screens/events/create_event_page_test.dart @@ -88,7 +88,7 @@ void main() { /// when is function provided by mockito lib when(multimediaPickerService.getPhotoFromGallery(camera: false)) - .qthenAnswer((_) async { + .thenAnswer((_) async { return file; }); From 24539b870ac3397feebbb11e9c2e8aa13dbd344e Mon Sep 17 00:00:00 2001 From: Ayush0Chaudhary Date: Thu, 9 Feb 2023 03:10:59 +0530 Subject: [PATCH 05/13] draft 2 --- .../after_auth_screens/feed/organization_feed_test.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart b/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart index 299574e7f..c80e420da 100644 --- a/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart +++ b/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart @@ -13,6 +13,7 @@ import 'package:talawa/utils/app_localization.dart'; import 'package:talawa/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart'; import 'package:talawa/view_model/main_screen_view_model.dart'; import 'package:talawa/views/after_auth_screens/feed/organization_feed.dart'; +import 'package:talawa/widgets/custom_drawer.dart'; import '../../../helpers/test_helpers.dart'; import '../../../helpers/test_helpers.mocks.dart'; @@ -146,7 +147,7 @@ void main() { // final service = MockEventService(); final service = MockPostService(); - when(postservice.postStream).thenAnswer((invocation) => _stream); + when(postService.postStream).thenAnswer((invocation) => _stream); postservice.postStream.listen((event) { print(11); }); From 52a881a4f64531171c982247e525f7ece9e2c91d Mon Sep 17 00:00:00 2001 From: Ayush0Chaudhary Date: Thu, 9 Feb 2023 16:50:38 +0530 Subject: [PATCH 06/13] Fixes #1236 Create tests for organization_feed.dart --- .../organization_feed_view_model.dart | 5 -- .../feed/organization_feed_test.dart | 57 ++++++++++++++++++- 2 files changed, 55 insertions(+), 7 deletions(-) diff --git a/lib/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart b/lib/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart index 018260928..b15a30759 100644 --- a/lib/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart +++ b/lib/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart @@ -60,14 +60,11 @@ class OrganizationFeedViewModel extends BaseModel { ); _postsSubscription = _postService.postStream.listen((newPosts) { - print('listener working'); - print(newPosts); return buildNewPosts(newPosts); }); _updatePostSubscription = _postService.updatedPostStream.listen((post) => updatedPost(post)); - print('initialize working'); } void initializeWithDemoData() { @@ -86,8 +83,6 @@ class OrganizationFeedViewModel extends BaseModel { void buildNewPosts(List newPosts) { _posts = newPosts; - print(newPosts); - print('ffffffffffffffffffffffff'); notifyListeners(); } diff --git a/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart b/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart index c80e420da..4171c6693 100644 --- a/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart +++ b/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart @@ -3,6 +3,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_test/flutter_test.dart'; +import 'package:http/http.dart'; import 'package:mockito/mockito.dart'; import 'package:talawa/models/organization/org_info.dart'; import 'package:talawa/models/post/post_model.dart'; @@ -69,6 +70,37 @@ void main() { expect(finder, findsNWidgets(2)); }); + testWidgets('check if orgname is displayed shows up', (tester) async { + final model = locator(); + await tester.pumpWidget(createOrganizationFeedScreen(homeModel: model)); + await tester.pump(); + + final finder = find.byType(Text); + expect(finder, findsNWidgets(4)); + // expect(text, findsOneWidget); + }); + testWidgets('check if pinned post is displayed shows up', (tester) async { + final model = locator(); + await tester.pumpWidget(createOrganizationFeedScreen(homeModel: model)); + await tester.pump(); + + final finder = find.byType(Text); + + final text1 = find.text('Rutvik Chandla'); + + final text2 = find.text( + 'Flutter is Google’s mobile UI framework for crafting high-quality native interfaces on iOS...'); + + final text3 = find.text('See all Pinned news'); + + expect(text1, findsOneWidget); + + expect(text2, findsOneWidget); + + expect(text3, findsOneWidget); + + expect(finder, findsNWidgets(4)); + }); testWidgets('check if side drawer shows up', (tester) async { final model = locator(); await tester.pumpWidget(createOrganizationFeedScreen(homeModel: model)); @@ -90,6 +122,26 @@ void main() { await tester.tap(finder); await tester.pump(); }); + testWidgets('check if refresh indicator is launched on dragging', + (tester) async { + final model = locator(); + await tester.pumpWidget(createOrganizationFeedScreen(homeModel: model)); + await tester.pump(); + final postservice = locator(); + bool refreshed = false; + + when(postservice.getPosts()).thenAnswer((_) async { + refreshed = true; + }); + + await tester.drag( + find.byType(RefreshIndicator), + const Offset(0, 200), + ); + await tester.pumpAndSettle(); + + expect(refreshed, true); + }); testWidgets('check if post shows up when model.posts.isNotEmpty is true', (tester) async { final model = locator(); @@ -147,12 +199,13 @@ void main() { // final service = MockEventService(); final service = MockPostService(); - when(postService.postStream).thenAnswer((invocation) => _stream); + when(postService.postStream).thenAnswer((invocation) { + return _stream; + }); postservice.postStream.listen((event) { print(11); }); _streamController.add(posts); - // when(postservice.postStream).thenAnswer((realInvocation) => Stream.of>>(posts)); await tester.drag( find.byType(RefreshIndicator), const Offset(0, 200), From 589c200a50e2e683f98424aab0b3b969d028d2b8 Mon Sep 17 00:00:00 2001 From: Ayush0Chaudhary Date: Thu, 9 Feb 2023 17:41:53 +0530 Subject: [PATCH 07/13] rmv unused imports --- .../after_auth_screens/feed/organization_feed_test.dart | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart b/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart index be42d970b..3bca16e8c 100644 --- a/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart +++ b/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart @@ -10,12 +10,10 @@ import 'package:talawa/models/user/user_info.dart'; import 'package:talawa/services/post_service.dart'; import 'package:talawa/services/size_config.dart'; import 'package:talawa/utils/app_localization.dart'; -import 'package:talawa/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart'; import 'package:talawa/view_model/main_screen_view_model.dart'; import 'package:talawa/views/after_auth_screens/feed/organization_feed.dart'; import '../../../helpers/test_helpers.dart'; -import '../../../helpers/test_helpers.mocks.dart'; import '../../../helpers/test_locator.dart'; Widget createOrganizationFeedScreen({ From a163de5dd5e39442de7c4018bd5409cb15d7f7cf Mon Sep 17 00:00:00 2001 From: Ayush0Chaudhary Date: Thu, 9 Feb 2023 17:56:52 +0530 Subject: [PATCH 08/13] testing issue --- .../events/create_event_page_test.dart | 41 ------------------- 1 file changed, 41 deletions(-) diff --git a/test/widget_tests/after_auth_screens/events/create_event_page_test.dart b/test/widget_tests/after_auth_screens/events/create_event_page_test.dart index f7dfdf968..c86b0ad41 100644 --- a/test/widget_tests/after_auth_screens/events/create_event_page_test.dart +++ b/test/widget_tests/after_auth_screens/events/create_event_page_test.dart @@ -1,14 +1,10 @@ -import 'dart:io'; - import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:mockito/mockito.dart'; import 'package:talawa/constants/custom_theme.dart'; import 'package:talawa/locator.dart'; import 'package:talawa/router.dart' as router; import 'package:talawa/services/size_config.dart'; -import 'package:talawa/services/third_party_service/multi_media_pick_service.dart'; import 'package:talawa/utils/app_localization.dart'; import 'package:talawa/view_model/lang_view_model.dart'; import 'package:talawa/views/after_auth_screens/events/create_event_form.dart'; @@ -60,43 +56,6 @@ void main() { }); }); - testWidgets( - 'checks if the upload photo from gallery button ad other process are working properly', - (tester) async { - await tester.pumpWidget(createEventScreen( - theme: TalawaTheme.lightTheme, - )); - await tester.pump(); - - /// using the key of icon button - /// because their are many icon button - - final finder = find.byKey(const Key('txt_btn_cep')); - - expect(finder, findsOneWidget); - - ///returning the file variable to the - ///result of function multimediaPickerService.getPhotoFromGallery - ///when this function is called in the - ///view model of add_post_page. - final file = File('fakePath'); - - /// using the new instance of multimediaPickerService - /// so that when statement can be used again, - /// else it gives null point exception - final multimediaPickerService = locator(); - - /// when is function provided by mockito lib - when(multimediaPickerService.getPhotoFromGallery(camera: false)) - .thenAnswer((_) async { - return file; - }); - - /// taping the button - await tester.tap(finder); - await tester.pump(); - }); - testWidgets("Testing if dark mode is applied", (tester) async { await tester.pumpWidget(createEventScreen( themeMode: ThemeMode.dark, From 16a14e741c46397975ee8622ae6f21ed515f9a5b Mon Sep 17 00:00:00 2001 From: Ayush0Chaudhary Date: Fri, 10 Feb 2023 23:26:53 +0530 Subject: [PATCH 09/13] Improve Coverage --- .../organization_feed_view_model.dart | 36 +++- .../feed/organization_feed.dart | 4 +- test/helpers/test_helpers.dart | 1 + .../feed/organization_feed_test.dart | 178 +++++++++++------- 4 files changed, 144 insertions(+), 75 deletions(-) diff --git a/lib/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart b/lib/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart index b15a30759..26abc134d 100644 --- a/lib/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart +++ b/lib/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart @@ -13,7 +13,8 @@ class OrganizationFeedViewModel extends BaseModel { // Local caching variables for a session. // ignore: prefer_final_fields List _posts = []; - final List _pinnedPosts = + bool istest = false; + List _pinnedPosts = pinnedPostsDemoData.map((e) => Post.fromJson(e)).toList(); final Set _renderedPostID = {}; late String _currentOrgName = ""; @@ -29,8 +30,22 @@ class OrganizationFeedViewModel extends BaseModel { late StreamSubscription _updatePostSubscription; // Getters - List get posts => _posts; - List get pinnedPosts => _pinnedPosts; + List get posts { + // if (istest) { + // _posts = pinnedPostsDemoData.map((e) => Post.fromJson(e)).toList(); + // return _posts; + // } + return _posts; + } + + List get pinnedPosts { + if (istest) { + _pinnedPosts = []; + return _pinnedPosts; + } + return _pinnedPosts; + } + String get currentOrgName => _currentOrgName; // Setters @@ -48,7 +63,9 @@ class OrganizationFeedViewModel extends BaseModel { _postService.getPosts(); } - void initialise() { + void initialise( + // bool forTest, + {bool isTest = false}) { // For caching/initializing the current organization after the stream subscription has canceled and the stream is updated _currentOrgName = _userConfig.currentOrg.name!; // ------ @@ -58,22 +75,25 @@ class OrganizationFeedViewModel extends BaseModel { (updatedOrganization) => setCurrentOrganizationName(updatedOrganization.name!), ); - _postsSubscription = _postService.postStream.listen((newPosts) { return buildNewPosts(newPosts); }); _updatePostSubscription = _postService.updatedPostStream.listen((post) => updatedPost(post)); + print(_posts); + if (isTest) { + istest = true; + } } void initializeWithDemoData() { // final postJsonResult = postsDemoData; - + // // ------ - // Calling function to ge the post for the only 1st time. + // // Calling function to ge the post for the only 1st time. // _postService.getPosts(); - + // // //fetching pinnedPosts // final pinnedPostJsonResult = pinnedPostsDemoData; // pinnedPostJsonResult.forEach((pinnedPostJsonData) { diff --git a/lib/views/after_auth_screens/feed/organization_feed.dart b/lib/views/after_auth_screens/feed/organization_feed.dart index 0dc0614be..267fde85e 100644 --- a/lib/views/after_auth_screens/feed/organization_feed.dart +++ b/lib/views/after_auth_screens/feed/organization_feed.dart @@ -9,13 +9,15 @@ class OrganizationFeed extends StatelessWidget { const OrganizationFeed({ required Key key, this.homeModel, + this.forTest = false, }) : super(key: key); final MainScreenViewModel? homeModel; + final bool forTest; @override Widget build(BuildContext context) { return BaseView( - onModelReady: (model) => model.initialise(), + onModelReady: (model) => model.initialise(isTest: forTest), builder: (context, model, child) { return Scaffold( appBar: AppBar( diff --git a/test/helpers/test_helpers.dart b/test/helpers/test_helpers.dart index 2b730c7ff..d231c29fb 100644 --- a/test/helpers/test_helpers.dart +++ b/test/helpers/test_helpers.dart @@ -291,6 +291,7 @@ PostService getAndRegisterPostService() { final StreamController> _streamController = StreamController(); final Stream> _stream = _streamController.stream.asBroadcastStream(); + // _streamController.add(posts); when(service.postStream).thenAnswer((invocation) => _stream); final StreamController _updateStreamController = StreamController(); diff --git a/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart b/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart index 3bca16e8c..856e32247 100644 --- a/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart +++ b/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart @@ -1,17 +1,16 @@ -import 'dart:async'; - import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/mockito.dart'; -import 'package:talawa/models/organization/org_info.dart'; -import 'package:talawa/models/post/post_model.dart'; -import 'package:talawa/models/user/user_info.dart'; +import 'package:talawa/router.dart'; +import 'package:talawa/services/navigation_service.dart'; import 'package:talawa/services/post_service.dart'; import 'package:talawa/services/size_config.dart'; import 'package:talawa/utils/app_localization.dart'; +import 'package:talawa/view_model/lang_view_model.dart'; import 'package:talawa/view_model/main_screen_view_model.dart'; import 'package:talawa/views/after_auth_screens/feed/organization_feed.dart'; +import 'package:talawa/views/base_view.dart'; import '../../../helpers/test_helpers.dart'; import '../../../helpers/test_locator.dart'; @@ -48,6 +47,46 @@ Widget createOrganizationFeedScreen({ ))); } +// late OrganizationFeedViewModel _organizationFeedViewModel; + +Widget createOrganizationFeedScreen2({ + bool isPublic = true, + bool viewOnMap = true, + required MainScreenViewModel homeModel, +}) { + return BaseView( + onModelReady: (model) => model.initialize(), + // builder: (context, langModel, child) { + // return BaseView( + // onModelReady: (model) { + // model.initialise(); + // _organizationFeedViewModel = model; + // }, + builder: (context, model, child) { + return MaterialApp( + locale: const Locale('en'), + localizationsDelegates: [ + const AppLocalizationsDelegate(isTest: true), + GlobalMaterialLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + ], + home: Scaffold( + key: MainScreenViewModel.scaffoldKey, + body: OrganizationFeed( + homeModel: homeModel, + key: const Key('test_key'), + forTest: true, + ), + ), + navigatorKey: locator().navigatorKey, + onGenerateRoute: generateRoute, + ); + }, + // ); + // }, + ); +} + void main() { SizeConfig().test(); testSetupLocator(); @@ -57,6 +96,7 @@ void main() { registerServices(); }); + TestWidgetsFlutterBinding.ensureInitialized(); testWidgets('check if createOrganizationFeedScreen shows up', (tester) async { final model = locator(); await tester.pumpWidget(createOrganizationFeedScreen(homeModel: model)); @@ -138,73 +178,79 @@ void main() { expect(refreshed, true); }); - testWidgets('check if post shows up when model.posts.isNotEmpty is true', + testWidgets( + 'check if post shows up when model.posts.isNotEmpty is true and post', (tester) async { + // _organizationFeedViewModel.setValueForTest(); final model = locator(); - await tester.pumpWidget(createOrganizationFeedScreen(homeModel: model)); - await tester.pump(); + await tester.pumpWidget(createOrganizationFeedScreen2(homeModel: model)); + await tester.pumpAndSettle(const Duration(seconds: 1)); + // tester.allElements.forEach((element) { + // print(element); + // }); - final postservice = locator(); + // _organizationFeedViewModel.setValueForTest(); - final u1 = User( - id: '123', - firstName: 'John', - lastName: 'Doe', - email: 'test@test.com', - ); - final u2 = User( - id: '123', - firstName: 'Ayush', - lastName: 'Chaudhary', - email: 'test@test.com', - ); - final List users = [u1, u2]; - - final LikedBy l1 = LikedBy(sId: 'test1'); - final LikedBy l2 = LikedBy(sId: 'test2'); - final List likeby = [l1, l2]; - - final comment1 = Comments(sId: 'comment1'); - final comment2 = Comments(sId: 'comment2'); - final comment3 = Comments(sId: 'comment3'); - final List comments = [comment1, comment2, comment3]; - - final myBirthday = DateTime.utc(2004, DateTime.june, 16, 5, 30, 0, 0, 0); - final post = Post( - creator: User( - id: '123', - firstName: 'John', - lastName: 'Doe', - email: 'test@test.com', - ), - sId: "sid", - createdAt: myBirthday, - description: 'test description', - imageUrl: 'https://image.com', - videoUrl: 'https://image.com', - organization: OrgInfo(admins: users), - likedBy: likeby, - comments: comments, - ); - final List posts = [post]; + // final u1 = User( + // id: '123', + // firstName: 'John', + // lastName: 'Doe', + // email: 'test@test.com', + // ); + // final u2 = User( + // id: '123', + // firstName: 'Ayush', + // lastName: 'Chaudhary', + // email: 'test@test.com', + // ); + // final List users = [u1, u2]; + // + // final LikedBy l1 = LikedBy(sId: 'test1'); + // final LikedBy l2 = LikedBy(sId: 'test2'); + // final List likeby = [l1, l2]; + // + // final comment1 = Comments(sId: 'comment1'); + // final comment2 = Comments(sId: 'comment2'); + // final comment3 = Comments(sId: 'comment3'); + // final List comments = [comment1, comment2, comment3]; + // + // final myBirthday = DateTime.utc(2004, DateTime.june, 16, 5, 30, 0, 0, 0); + // final post = Post( + // creator: User( + // id: '123', + // firstName: 'John', + // lastName: 'Doe', + // email: 'test@test.com', + // ), + // sId: "sid", + // createdAt: myBirthday, + // description: 'test description', + // imageUrl: 'https://image.com', + // videoUrl: 'https://image.com', + // organization: OrgInfo(admins: users), + // likedBy: likeby, + // comments: comments, + // ); + // final List posts = [post]; // when(postservice.postStream). - final StreamController> _streamController = StreamController(); - final Stream> _stream = - _streamController.stream.asBroadcastStream(); + // final StreamController> _streamController = StreamController(); + // final Stream> _stream = + // _streamController.stream.asBroadcastStream(); - // final service = MockEventService(); - when(postService.postStream).thenAnswer((invocation) { - return _stream; - }); - postservice.postStream.listen((event) { - print(11); - }); - _streamController.add(posts); - await tester.drag( - find.byType(RefreshIndicator), - const Offset(0, 200), - ); + // final service = MockPostService(); + // when(service.postStream).thenAnswer((invocation) { + // return _stream; + // }); + // postservice.postStream.listen((event) { + // print(11); + // }); + // getAndRegisterPostService(); + // _streamController.add(posts); + // await tester.drag( + // find.byType(RefreshIndicator), + // const Offset(0, 200), + // ); - await tester.pumpAndSettle(); + // await tester.pumpAndSettle(Duration(milliseconds: 100)); }); } From 7fb481b325da7370df630a6f0b3a70b4a4480608 Mon Sep 17 00:00:00 2001 From: Ayush Chaudhary <95746190+Ayush0Chaudhary@users.noreply.github.com> Date: Sun, 12 Feb 2023 15:14:13 +0530 Subject: [PATCH 10/13] Update create_event_view_model.dart --- .../event_view_models/create_event_view_model.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/view_model/after_auth_view_models/event_view_models/create_event_view_model.dart b/lib/view_model/after_auth_view_models/event_view_models/create_event_view_model.dart index 6a2b7cedf..06807a36e 100644 --- a/lib/view_model/after_auth_view_models/event_view_models/create_event_view_model.dart +++ b/lib/view_model/after_auth_view_models/event_view_models/create_event_view_model.dart @@ -143,7 +143,6 @@ class CreateEventViewModel extends BaseModel { Future getImageFromGallery({bool camera = false}) async { final _image = await _multiMediaPickerService.getPhotoFromGallery(camera: camera); - print(_image); if (_image != null) { _imageFile = _image; notifyListeners(); From 7f5988affd74ed4efd4f8a6f45b27de1b394e186 Mon Sep 17 00:00:00 2001 From: Ayush Chaudhary <95746190+Ayush0Chaudhary@users.noreply.github.com> Date: Sun, 12 Feb 2023 15:14:55 +0530 Subject: [PATCH 11/13] Update organization_feed_view_model.dart --- .../feed_view_models/organization_feed_view_model.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart b/lib/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart index 0e19d1844..119e3286c 100644 --- a/lib/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart +++ b/lib/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart @@ -96,7 +96,6 @@ class OrganizationFeedViewModel extends BaseModel { _updatePostSubscription = _postService.updatedPostStream.listen((post) => updatedPost(post)); - print(_posts); if (isTest) { istest = true; } From db6ebc22057ce36252d5cc0d99009f96ca1727e0 Mon Sep 17 00:00:00 2001 From: Ayush Chaudhary <95746190+Ayush0Chaudhary@users.noreply.github.com> Date: Sun, 12 Feb 2023 15:16:00 +0530 Subject: [PATCH 12/13] Update organization_feed_test.dart --- .../feed/organization_feed_test.dart | 68 ------------------- 1 file changed, 68 deletions(-) diff --git a/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart b/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart index 856e32247..440f07afd 100644 --- a/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart +++ b/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart @@ -113,7 +113,6 @@ void main() { final finder = find.byType(Text); expect(finder, findsNWidgets(4)); - // expect(text, findsOneWidget); }); testWidgets('check if pinned post is displayed shows up', (tester) async { final model = locator(); @@ -181,76 +180,9 @@ void main() { testWidgets( 'check if post shows up when model.posts.isNotEmpty is true and post', (tester) async { - // _organizationFeedViewModel.setValueForTest(); final model = locator(); await tester.pumpWidget(createOrganizationFeedScreen2(homeModel: model)); await tester.pumpAndSettle(const Duration(seconds: 1)); - // tester.allElements.forEach((element) { - // print(element); - // }); - // _organizationFeedViewModel.setValueForTest(); - - // final u1 = User( - // id: '123', - // firstName: 'John', - // lastName: 'Doe', - // email: 'test@test.com', - // ); - // final u2 = User( - // id: '123', - // firstName: 'Ayush', - // lastName: 'Chaudhary', - // email: 'test@test.com', - // ); - // final List users = [u1, u2]; - // - // final LikedBy l1 = LikedBy(sId: 'test1'); - // final LikedBy l2 = LikedBy(sId: 'test2'); - // final List likeby = [l1, l2]; - // - // final comment1 = Comments(sId: 'comment1'); - // final comment2 = Comments(sId: 'comment2'); - // final comment3 = Comments(sId: 'comment3'); - // final List comments = [comment1, comment2, comment3]; - // - // final myBirthday = DateTime.utc(2004, DateTime.june, 16, 5, 30, 0, 0, 0); - // final post = Post( - // creator: User( - // id: '123', - // firstName: 'John', - // lastName: 'Doe', - // email: 'test@test.com', - // ), - // sId: "sid", - // createdAt: myBirthday, - // description: 'test description', - // imageUrl: 'https://image.com', - // videoUrl: 'https://image.com', - // organization: OrgInfo(admins: users), - // likedBy: likeby, - // comments: comments, - // ); - // final List posts = [post]; - // when(postservice.postStream). - // final StreamController> _streamController = StreamController(); - // final Stream> _stream = - // _streamController.stream.asBroadcastStream(); - - // final service = MockPostService(); - // when(service.postStream).thenAnswer((invocation) { - // return _stream; - // }); - // postservice.postStream.listen((event) { - // print(11); - // }); - // getAndRegisterPostService(); - // _streamController.add(posts); - // await tester.drag( - // find.byType(RefreshIndicator), - // const Offset(0, 200), - // ); - - // await tester.pumpAndSettle(Duration(milliseconds: 100)); }); } From cc978d7881e9c92c6b33d070aa1dbf9fc2894d65 Mon Sep 17 00:00:00 2001 From: Ayush Chaudhary <95746190+Ayush0Chaudhary@users.noreply.github.com> Date: Sun, 12 Feb 2023 15:25:06 +0530 Subject: [PATCH 13/13] Update organization_feed_test.dart --- .../after_auth_screens/feed/organization_feed_test.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart b/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart index 440f07afd..03a1b5012 100644 --- a/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart +++ b/test/widget_tests/after_auth_screens/feed/organization_feed_test.dart @@ -113,6 +113,7 @@ void main() { final finder = find.byType(Text); expect(finder, findsNWidgets(4)); + // expect(text, findsOneWidget); }); testWidgets('check if pinned post is displayed shows up', (tester) async { final model = locator(); @@ -183,6 +184,5 @@ void main() { final model = locator(); await tester.pumpWidget(createOrganizationFeedScreen2(homeModel: model)); await tester.pumpAndSettle(const Duration(seconds: 1)); - }); }