From 674fc83e62eb47d728b11ddec48b5d29b0069a14 Mon Sep 17 00:00:00 2001 From: groovinchip Date: Mon, 19 Jul 2021 13:39:17 -0400 Subject: [PATCH] test: add tests for UserListViewThemeData --- .../test/src/user_list_view_theme_test.dart | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 packages/stream_chat_flutter/test/src/user_list_view_theme_test.dart diff --git a/packages/stream_chat_flutter/test/src/user_list_view_theme_test.dart b/packages/stream_chat_flutter/test/src/user_list_view_theme_test.dart new file mode 100644 index 00000000..666affd8 --- /dev/null +++ b/packages/stream_chat_flutter/test/src/user_list_view_theme_test.dart @@ -0,0 +1,114 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; + +import 'mocks.dart'; + +void main() { + test('UserListViewThemeData copyWith, ==, hashCode basics', () { + expect(const UserListViewThemeData(), + const UserListViewThemeData().copyWith()); + }); + + test( + '''Light UserListViewThemeData lerps completely to dark UserListViewThemeData''', + () { + expect( + const UserListViewThemeData().lerp(_userListViewThemeDataControl, + _userListViewThemeDataControlDark, 1), + _userListViewThemeDataControlDark); + }); + + test( + '''Light UserListViewThemeData lerps halfway to dark UserListViewThemeData''', + () { + expect( + const UserListViewThemeData().lerp(_userListViewThemeDataControl, + _userListViewThemeDataControlDark, 0.5), + _userListViewThemeDataControlHalfLerp); + }); + + test( + '''Dark UserListViewThemeData lerps completely to light UserListViewThemeData''', + () { + expect( + const UserListViewThemeData().lerp(_userListViewThemeDataControlDark, + _userListViewThemeDataControl, 1), + _userListViewThemeDataControl); + }); + + test('Merging dark and light themes results in a dark theme', () { + expect( + _userListViewThemeDataControl.merge(_userListViewThemeDataControlDark), + _userListViewThemeDataControlDark); + }); + + testWidgets( + 'Passing no ChannelListViewThemeData returns default light theme values', + (WidgetTester tester) async { + late BuildContext _context; + await tester.pumpWidget( + MaterialApp( + builder: (context, child) => StreamChat( + client: MockClient(), + child: child, + ), + home: Builder( + builder: (BuildContext context) { + _context = context; + return const Scaffold( + body: UsersBloc( + child: UserListView(), + ), + ); + }, + ), + ), + ); + + final userListViewTheme = UserListViewTheme.of(_context); + expect(userListViewTheme.backgroundColor, + _userListViewThemeDataControl.backgroundColor); + }); + + testWidgets( + 'Passing no ChannelListViewThemeData returns default dark theme values', + (WidgetTester tester) async { + late BuildContext _context; + await tester.pumpWidget( + MaterialApp( + builder: (context, child) => StreamChat( + client: MockClient(), + streamChatThemeData: StreamChatThemeData.dark(), + child: child, + ), + home: Builder( + builder: (BuildContext context) { + _context = context; + return const Scaffold( + body: UsersBloc( + child: UserListView(), + ), + ); + }, + ), + ), + ); + + final userListViewTheme = UserListViewTheme.of(_context); + expect(userListViewTheme.backgroundColor, + _userListViewThemeDataControlDark.backgroundColor); + }); +} + +final _userListViewThemeDataControl = UserListViewThemeData( + backgroundColor: ColorTheme.light().appBg, +); + +const _userListViewThemeDataControlHalfLerp = UserListViewThemeData( + backgroundColor: Color(0xff818384), +); + +final _userListViewThemeDataControlDark = UserListViewThemeData( + backgroundColor: ColorTheme.dark().appBg, +);