From d3811b72ce17aa6226cee3d33c3b2d3a62b18212 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 21 Sep 2020 12:47:48 +0200 Subject: [PATCH 1/4] add basic testing for channel_preview widget --- lib/src/channel_image.dart | 2 +- lib/src/typing_indicator.dart | 2 +- pubspec.yaml | 3 ++ test/src/channel_preview_test.dart | 52 ++++++++++++++++++++++++++++++ 4 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 test/src/channel_preview_test.dart diff --git a/lib/src/channel_image.dart b/lib/src/channel_image.dart index bef666db..82bea25e 100644 --- a/lib/src/channel_image.dart +++ b/lib/src/channel_image.dart @@ -71,7 +71,7 @@ class ChannelImage extends StatelessWidget { String image; if (snapshot.data?.containsKey('image') == true) { image = snapshot.data['image']; - } else if (channel.state.members.length == 2) { + } else if (channel.state.members?.length == 2) { final otherMember = channel.state.members .firstWhere((member) => member.user.id != client.user.id); image = otherMember.user.extraData['image']; diff --git a/lib/src/typing_indicator.dart b/lib/src/typing_indicator.dart index 57427da6..69a16b98 100644 --- a/lib/src/typing_indicator.dart +++ b/lib/src/typing_indicator.dart @@ -34,7 +34,7 @@ class TypingIndicator extends StatelessWidget { builder: (context, snapshot) { return AnimatedSwitcher( duration: Duration(milliseconds: 300), - child: snapshot.data.isNotEmpty + child: snapshot.data?.isNotEmpty == true ? Align( key: Key('typings'), alignment: alignment, diff --git a/pubspec.yaml b/pubspec.yaml index 35674c61..34a48b8f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -30,3 +30,6 @@ dependencies: dev_dependencies: pedantic: ^1.9.0 + flutter_test: + sdk: flutter + mockito: ^4.1.1 diff --git a/test/src/channel_preview_test.dart b/test/src/channel_preview_test.dart new file mode 100644 index 00000000..f5e0fbd0 --- /dev/null +++ b/test/src/channel_preview_test.dart @@ -0,0 +1,52 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mockito/mockito.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; + +class MockClient extends Mock implements Client {} + +class MockChannel extends Mock implements Channel {} + +class MockChannelState extends Mock implements ChannelClientState {} + +void main() { + testWidgets( + 'it should show basic channel information', + (WidgetTester tester) async { + final client = MockClient(); + final channel = MockChannel(); + final channelState = MockChannelState(); + final lastMessageAt = DateTime.parse('2020-06-22 12:00:00'); + + when(channel.lastMessageAt).thenReturn(lastMessageAt); + when(channel.state).thenReturn(channelState); + when(channel.extraData).thenReturn({ + 'name': 'test name', + }); + when(channelState.unreadCount).thenReturn(1); + when(channelState.lastMessage).thenReturn(Message( + text: 'hello', + )); + + await tester.pumpWidget(MaterialApp( + home: StreamChat( + client: client, + child: StreamChannel( + channel: channel, + child: Scaffold( + body: ChannelPreview( + channel: channel, + ), + ), + ), + ), + )); + + expect(find.text('22/06/2020'), findsOneWidget); + expect(find.text('test name'), findsOneWidget); + expect(find.text('1'), findsOneWidget); + expect(find.text('hello'), findsOneWidget); + expect(find.byType(ChannelImage), findsOneWidget); + }, + ); +} From 42992d0c02e5e79f1f5da80c91d4684f05ef0a77 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 21 Sep 2020 13:19:14 +0200 Subject: [PATCH 2/4] update ci --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6e56f2be..cebff484 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -12,7 +12,7 @@ on: - created env: - flutter_version: "1.12.13+hotfix.5" + flutter_version: "1.20.4" jobs: test: From 06129cdd82716eba93747ff7058b9a5932169aa5 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 21 Sep 2020 13:21:33 +0200 Subject: [PATCH 3/4] update ci --- .github/workflows/main.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index cebff484..1860c34c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -11,9 +11,6 @@ on: types: - created -env: - flutter_version: "1.20.4" - jobs: test: runs-on: [ubuntu-latest] @@ -26,9 +23,9 @@ jobs: path: /opt/hostedtoolcache/flutter key: ${{ runner.OS }}-flutter-install-cache-${{ env.flutter_version }} - name: Flutter action - uses: subosito/flutter-action@v1.1.1 + uses: subosito/flutter-action@v1.3.2 with: - flutter-version: ${{ env.flutter_version }} + channel: 'stable' - name: Get dependencies run: flutter pub get - name: Coverage fix From 2b93491cb1326c123975177998ea3e599c9dc306 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 21 Sep 2020 13:23:17 +0200 Subject: [PATCH 4/4] remove dependencies caching --- .github/workflows/main.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1860c34c..4cd593cf 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -16,12 +16,6 @@ jobs: runs-on: [ubuntu-latest] steps: - uses: actions/checkout@v2 - - name: Cache Flutter dependencies - id: cache - uses: actions/cache@v1 - with: - path: /opt/hostedtoolcache/flutter - key: ${{ runner.OS }}-flutter-install-cache-${{ env.flutter_version }} - name: Flutter action uses: subosito/flutter-action@v1.3.2 with: