diff --git a/README.md b/README.md index afd43ffc4c..43613a6851 100644 --- a/README.md +++ b/README.md @@ -40,3 +40,4 @@ Get familiar with `talawa`: 1. Want to contribute? Look at [CONTRIBUTING.md](CONTRIBUTING.md) to get started. 1. Visit the [Talawa GitHub](https://github.com/PalisadoesFoundation/talawa) to see the code. +[![codecov](https://codecov.io/gh/Kraken005/talawa/branch/develop/graph/badge.svg)](https://codecov.io/gh/Kraken005/talawa) diff --git a/lib/views/base_view.dart b/lib/views/base_view.dart index 7b7e84e354..5d717f8855 100644 --- a/lib/views/base_view.dart +++ b/lib/views/base_view.dart @@ -2,6 +2,8 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:talawa/locator.dart'; +//import '../../test/views/after_auth_screens/chat/select_contact_test.dart'; + class BaseView extends StatefulWidget { const BaseView({ required this.builder, diff --git a/test/views/after_auth_screens/chat/select_contact_test.dart b/test/views/after_auth_screens/chat/select_contact_test.dart index 55d76062fa..1103239a16 100644 --- a/test/views/after_auth_screens/chat/select_contact_test.dart +++ b/test/views/after_auth_screens/chat/select_contact_test.dart @@ -16,6 +16,9 @@ import 'package:talawa/views/base_view.dart'; import '../../../helpers/test_helpers.dart'; import '../../../helpers/test_locator.dart'; +class MockSelectContactViewModel extends Mock + implements SelectContactViewModel {} + Widget createApp() { return BaseView( onModelReady: (model) => model.initialize(), @@ -35,6 +38,25 @@ Widget createApp() { ); } +Widget createTextSelectContact() { + return BaseView( + onModelReady: (model) => model.initialize(), + builder: (context, langModel, child) { + return MaterialApp( + locale: const Locale('en'), + localizationsDelegates: [ + const AppLocalizationsDelegate(isTest: true), + GlobalMaterialLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + ], + home: const SelectContact(), + navigatorKey: locator().navigatorKey, + onGenerateRoute: router.generateRoute, + ); + }, + ); +} + Widget createChatListScreen() { return BaseView( onModelReady: (model) => model.initialize(), @@ -68,6 +90,13 @@ Future showSelectContactScreenByChatPage(WidgetTester tester) async { await tester.pumpAndSettle(); } +Future showSelectContactText(WidgetTester tester) async { + await tester.pumpWidget(createTextSelectContact()); + await tester.pump(); + await tester.tap(find.text('Select Contacts')); + await tester.pumpAndSettle(); +} + void main() { SizeConfig().test(); // testSetupLocator(); @@ -75,15 +104,27 @@ void main() { registerViewModels(); final model = SelectContactViewModel(); model.initialise(); - final User user1 = User(id: "fakeUser1"); - final User user2 = User(id: "fakeUser2"); + final User user1 = User(id: "fakeUser1", firstName: "John"); + final User user2 = User(id: "fakeUser2", firstName: "Jane"); final List users = [user1, user2]; + // late MockSelectContactViewModel mockViewModel; + + // setUp(() { + // mockViewModel = MockSelectContactViewModel(); + // }); when(organizationService.getOrgMembersList("XYZ")) .thenAnswer((realInvocation) async { return users; }); + // when(() => organizationService.getOrgMembersList("XYZ")).thenAnswer( + // (_) async { + // await Future.delayed(const Duration(seconds: 2)); + // return users; + // }, + // ); + testWidgets('Check if Select Contacts page shows up', (tester) async { await tester.pumpWidget(createApp()); await tester.pump(); @@ -106,4 +147,101 @@ void main() { expect(find.byType(Scaffold), findsOneWidget); }); + + testWidgets('Select Contacts text is displayed', (WidgetTester tester) async { + await tester.pumpWidget(createApp()); + await tester.pump(); + expect(find.byType(Scaffold), findsOneWidget); + + await showSelectContactScreenByChatPage(tester); + expect(find.text('Select Contacts'), findsOneWidget); + }); + + // testWidgets('renders app bar title correctly', (WidgetTester tester) async { + // // when(viewModel.orgMembersList).thenReturn([ + // // User(firstName: 'John', id: '1', image: 'avatar.png'), + // // ]); + // await tester.pumpWidget(MaterialApp(home: SelectContact())); + + // final titleFinder = find.text('Select Contacts'); + // expect(titleFinder, findsOneWidget); + // }); + + testWidgets('Displays app bar correctly', (WidgetTester tester) async { + // when(viewModel.orgMembersList).thenReturn([ + // User(firstName: 'John', id: '1', image: 'avatar.png'), + // ]); + await tester.pumpWidget(const MaterialApp(home: SelectContact())); + + final appBar = find.byType(AppBar); + expect(appBar, findsOneWidget); + }); + + // testWidgets('renders list tiles correctly', (WidgetTester tester) async { + // // when(viewModel.orgMembersList).thenReturn(<>[ + // // User(firstName: 'John', id: '1', image: 'avatar.png'), + // // User(firstName: 'Jane', id: '2', image: 'avatar.png'), + // // ]); + + // await tester.pumpWidget(MaterialApp(home: SelectContact())); + + // final firstTileFinder = find.text('John'); + // expect(firstTileFinder, findsOneWidget); + + // final secondTileFinder = find.text('Jane'); + // expect(secondTileFinder, findsOneWidget); + + // final avatarFinder = find.byType(CircleAvatar); + // expect(avatarFinder, findsNWidgets(2)); + // }); + + // testWidgets( + // 'should call initialise and getCurrentOrgUsersList on model ready', + // (WidgetTester tester) async { + // await tester.pumpWidget( + // MaterialApp( + // home: BaseView( + // onModelReady: (model) { + // model.initialise(); + // model.getCurrentOrgUsersList(); + // mockViewModel; + // }, + // //viewModel: mockViewModel, + // builder: (context, model, child) => SelectContact(), + // ), + // ), + // ); + + // verify(mockViewModel.initialise()).called(1); + // verify(mockViewModel.getCurrentOrgUsersList()).called(1); + // }); + + // testWidgets('should display a list of users', (WidgetTester tester) async { + // final users = [ + // User(id: '1', firstName: 'John', image: 'image1'), + // User(id: '2', firstName: 'Jane', image: 'image2'), + // ]; + // when(organizationService.getOrgMembersList("XYZ")) + // .thenAnswer((realInvocation) async { + // return users; + // }); + // await tester.pumpWidget(createApp()); + // await tester.pump(); + // expect(find.byType(Scaffold), findsOneWidget); + + // await showSelectContactScreenByChatPage(tester); + // expect(find.text('Select Contacts'), findsOneWidget); + + // await tester.pumpWidget( + // MaterialApp( + // home: SelectContact(), + // ), + // ); + + // final user1 = find.text("John"); + // final user2 = find.text("Jane"); + + // expect(user1, findsOneWidget); + // expect(user2, findsOneWidget); + // }); } diff --git a/test_img.png b/test_img.png new file mode 100644 index 0000000000..52c591798e Binary files /dev/null and b/test_img.png differ