From 26b2bf3f18db0ac819c346eba211c8c7baf810a8 Mon Sep 17 00:00:00 2001 From: groovinchip Date: Mon, 2 Aug 2021 12:02:18 -0400 Subject: [PATCH] test: add test for ChannelListHeaderTheme --- .../theme/channel_list_header_theme_test.dart | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 packages/stream_chat_flutter/test/src/theme/channel_list_header_theme_test.dart diff --git a/packages/stream_chat_flutter/test/src/theme/channel_list_header_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/channel_list_header_theme_test.dart new file mode 100644 index 00000000..aa378f3a --- /dev/null +++ b/packages/stream_chat_flutter/test/src/theme/channel_list_header_theme_test.dart @@ -0,0 +1,94 @@ +import 'package:flutter/material.dart' hide TextTheme; +import 'package:flutter_test/flutter_test.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; + +void main() { + test('ChannelListHeaderThemeData copyWith, ==, hashCode basics', () { + expect(const ChannelListHeaderThemeData(), + const ChannelListHeaderThemeData().copyWith()); + expect(const ChannelListHeaderThemeData().hashCode, + const ChannelListHeaderThemeData().copyWith().hashCode); + }); + + group('ChannelListHeaderThemeData lerps', () { + test( + '''Light ChannelListHeaderThemeData lerps completely to dark ChannelListHeaderThemeData''', + () { + expect( + const ChannelListHeaderThemeData().lerp( + _channelListHeaderThemeControl, + _channelListHeaderThemeControlDark, + 1), + _channelListHeaderThemeControlDark); + }); + + test( + '''Light ChannelListHeaderThemeData lerps halfway to dark ChannelListHeaderThemeData''', + () { + expect( + const ChannelListHeaderThemeData().lerp( + _channelListHeaderThemeControl, + _channelListHeaderThemeControlDark, + 0.5), + _channelListHeaderThemeControlMidLerp); + }); + + test( + '''Dark ChannelListHeaderThemeData lerps completely to light ChannelListHeaderThemeData''', + () { + expect( + const ChannelListHeaderThemeData().lerp( + _channelListHeaderThemeControlDark, + _channelListHeaderThemeControl, + 1), + _channelListHeaderThemeControl); + }); + }); + + test('Merging dark and light themes results in a dark theme', () { + expect( + _channelListHeaderThemeControl + .merge(_channelListHeaderThemeControlDark), + _channelListHeaderThemeControlDark); + }); +} + +final _channelListHeaderThemeControl = ChannelListHeaderThemeData( + avatarTheme: AvatarThemeData( + borderRadius: BorderRadius.circular(20), + constraints: const BoxConstraints.tightFor( + height: 40, + width: 40, + ), + ), + color: ColorTheme.light().barsBg, + titleStyle: TextTheme.light().headlineBold, +); + +final _channelListHeaderThemeControlMidLerp = ChannelListHeaderThemeData( + avatarTheme: AvatarThemeData( + borderRadius: BorderRadius.circular(20), + constraints: const BoxConstraints.tightFor( + height: 40, + width: 40, + ), + ), + color: const Color(0xff87898b), + titleStyle: const TextStyle( + color: Color(0xff7f7f7f), + fontSize: 16, + fontWeight: FontWeight.bold, + ), +); + +final _channelListHeaderThemeControlDark = ChannelListHeaderThemeData( + avatarTheme: AvatarThemeData( + borderRadius: BorderRadius.circular(20), + constraints: const BoxConstraints.tightFor( + height: 40, + width: 40, + ), + ), + color: ColorTheme.dark().barsBg, + titleStyle: TextTheme.dark().headlineBold, +);