From 2b9f20a04d6b8bfa528d7b2be59e943367465fc2 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 12 May 2021 16:36:44 +0200 Subject: [PATCH] add small test --- .../test/message_list_core_test.dart | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/packages/stream_chat_flutter_core/test/message_list_core_test.dart b/packages/stream_chat_flutter_core/test/message_list_core_test.dart index f6ea335f..e53cd0a8 100644 --- a/packages/stream_chat_flutter_core/test/message_list_core_test.dart +++ b/packages/stream_chat_flutter_core/test/message_list_core_test.dart @@ -147,6 +147,56 @@ void main() { }, ); + testWidgets( + 'should assign paginateData callback and paginate data correctly if a MessageListController is passed', + (tester) async { + const messageListCoreKey = Key('messageListCore'); + final controller = MessageListController(); + final messageListCore = MessageListCore( + key: messageListCoreKey, + messageListBuilder: (_, __) => Offstage(), + loadingBuilder: (BuildContext context) => Offstage(), + emptyBuilder: (BuildContext context) => Offstage(), + errorWidgetBuilder: (BuildContext context, Object error) => Offstage(), + messageListController: controller, + ); + + expect(controller.paginateData, isNull); + + final mockChannel = MockChannel(); + + when(() => mockChannel.state.isUpToDate).thenReturn(true); + // when(() => mockChannel.query( + // messagesPagination: any(named: 'messagesPagination'), + // preferOffline: any(named: 'preferOffline'), + // )).thenAnswer((_) => mockChannel.state); + final messages = _generateMessages(); + when(() => mockChannel.state.messages).thenReturn(messages); + when(() => mockChannel.state.messagesStream) + .thenAnswer((_) => Stream.value(messages)); + when(() => mockChannel.initialized).thenAnswer((_) => Future.value(true)); + + await tester.pumpWidget( + StreamChannel( + channel: mockChannel, + child: messageListCore, + ), + ); + + final finder = find.byKey(messageListCoreKey); + final coreState = tester.firstState(finder); + expect(finder, findsOneWidget); + expect(controller.paginateData, isNotNull); + + await coreState.paginateData(); + + verify(() => mockChannel.query( + messagesPagination: any(named: 'messagesPagination'), + preferOffline: any(named: 'preferOffline'), + )).called(1); + }, + ); + testWidgets( 'should build error widget if messagesStream emits error', (tester) async {