From c3d2896071b5392cd99f3976e9784b8a158d6476 Mon Sep 17 00:00:00 2001 From: groovinchip Date: Mon, 2 Aug 2021 10:56:06 -0400 Subject: [PATCH] test: add tests for MessageTheme --- .../test/src/theme/message_theme_test.dart | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 packages/stream_chat_flutter/test/src/theme/message_theme_test.dart diff --git a/packages/stream_chat_flutter/test/src/theme/message_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/message_theme_test.dart new file mode 100644 index 00000000..5908d864 --- /dev/null +++ b/packages/stream_chat_flutter/test/src/theme/message_theme_test.dart @@ -0,0 +1,90 @@ +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('MessageThemeData copyWith, ==, hashCode basics', () { + expect(const MessageThemeData(), const MessageThemeData().copyWith()); + expect(const MessageThemeData().hashCode, + const MessageThemeData().copyWith().hashCode); + }); + + group('MessageThemeData lerps', () { + test('''Light MessageThemeData lerps completely to dark MessageThemeData''', + () { + expect( + const MessageThemeData() + .lerp(_messageThemeControl, _messageThemeControlDark, 1), + _messageThemeControlDark); + }); + + test('''Dark MessageThemeData lerps completely to light MessageThemeData''', + () { + expect( + const MessageThemeData() + .lerp(_messageThemeControlDark, _messageThemeControl, 1), + _messageThemeControl); + }); + }); + + test('Merging dark and light themes results in a dark theme', () { + expect(_messageThemeControl.merge(_messageThemeControlDark), + _messageThemeControlDark); + }); +} + +final _messageThemeControl = MessageThemeData( + messageAuthorStyle: TextTheme.light().footnote.copyWith( + color: ColorTheme.light().textLowEmphasis, + ), + messageTextStyle: TextTheme.light().body, + createdAtStyle: TextTheme.light().footnote.copyWith( + color: ColorTheme.light().textLowEmphasis, + ), + repliesStyle: TextTheme.light().footnoteBold.copyWith( + color: ColorTheme.light().accentPrimary, + ), + messageBackgroundColor: ColorTheme.light().disabled, + reactionsBackgroundColor: ColorTheme.light().barsBg, + reactionsBorderColor: ColorTheme.light().borders, + reactionsMaskColor: ColorTheme.light().appBg, + messageBorderColor: ColorTheme.light().disabled, + avatarTheme: AvatarThemeData( + borderRadius: BorderRadius.circular(20), + constraints: const BoxConstraints.tightFor( + height: 32, + width: 32, + ), + ), + messageLinksStyle: TextStyle( + color: ColorTheme.light().accentPrimary, + ), +); + +final _messageThemeControlDark = MessageThemeData( + messageAuthorStyle: TextTheme.dark().footnote.copyWith( + color: ColorTheme.dark().textLowEmphasis, + ), + messageTextStyle: TextTheme.dark().body, + createdAtStyle: TextTheme.dark().footnote.copyWith( + color: ColorTheme.dark().textLowEmphasis, + ), + repliesStyle: TextTheme.dark().footnoteBold.copyWith( + color: ColorTheme.dark().accentPrimary, + ), + messageBackgroundColor: ColorTheme.dark().disabled, + reactionsBackgroundColor: ColorTheme.dark().barsBg, + reactionsBorderColor: ColorTheme.dark().borders, + reactionsMaskColor: ColorTheme.dark().appBg, + messageBorderColor: ColorTheme.dark().disabled, + avatarTheme: AvatarThemeData( + borderRadius: BorderRadius.circular(20), + constraints: const BoxConstraints.tightFor( + height: 32, + width: 32, + ), + ), + messageLinksStyle: TextStyle( + color: ColorTheme.dark().accentPrimary, + ), +);