From 85e6f6952b1a73b4b3499efd29e45291962adca9 Mon Sep 17 00:00:00 2001 From: dab246 Date: Wed, 27 Mar 2024 01:19:39 +0700 Subject: [PATCH] TF-2717 Write widget test for text overflow of label tag --- .../recipient_composer_widget_test.dart | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/test/features/features/composer/recipient_composer_widget_test.dart b/test/features/features/composer/recipient_composer_widget_test.dart index d0cd27273..2c2832a13 100644 --- a/test/features/features/composer/recipient_composer_widget_test.dart +++ b/test/features/features/composer/recipient_composer_widget_test.dart @@ -358,5 +358,91 @@ void main() { expect(prefixRecipientComposerWidgetFinder, findsOneWidget); expect(recipientTagItemWidgetFinder, findsNWidgets(2)); }); + + testWidgets('WHEN EmailAddress has address is too long AND display name is NULL\n' + 'RecipientTagItemWidget SHOULD have text that overflows', (tester) async { + final listEmailAddress = [ + EmailAddress(null, 'test12345678901234567890@example.com'), + ]; + + final widget = makeTestableWidget( + child: RecipientComposerWidget( + prefix: prefix, + listEmailAddress: listEmailAddress, + imagePaths: imagePaths, + maxWidth: 360, + keyTagEditor: keyEmailTagEditor, + ), + ); + + await tester.pumpWidget(widget); + + await tester.pumpAndSettle(); + + final labelRecipientTagItemWidgetFinder = find.byKey(Key('label_recipient_tag_item_${prefix.name}_0')); + + final labelRecipientTagItemWidget = tester.widget(labelRecipientTagItemWidgetFinder); + final labelTagWidth = tester.getSize(labelRecipientTagItemWidgetFinder).width; + + expect(labelRecipientTagItemWidget.overflow, equals(TextOverflow.ellipsis)); + + final TextPainter textPainter = TextPainter( + maxLines: labelRecipientTagItemWidget.maxLines, + textDirection: labelRecipientTagItemWidget.textDirection ?? TextDirection.ltr, + text: TextSpan( + text: labelRecipientTagItemWidget.data, + style: labelRecipientTagItemWidget.style, + locale: labelRecipientTagItemWidget.locale + ), + ); + textPainter.layout(maxWidth: labelTagWidth); + bool isExceededTextOverflow = textPainter.didExceedMaxLines; + log('recipient_composer_widget_test::main: LABEL_TAB_WIDTH = $labelTagWidth | TextPainterWidth = ${textPainter.width} | isExceededTextOverflow = $isExceededTextOverflow'); + + expect(isExceededTextOverflow, equals(true)); + }); + + testWidgets('WHEN EmailAddress has address is too long AND display name is NULL\n' + 'RecipientTagItemWidget SHOULD have text display full', (tester) async { + final listEmailAddress = [ + EmailAddress(null, 'test123@example.com'), + ]; + + final widget = makeTestableWidget( + child: RecipientComposerWidget( + prefix: prefix, + listEmailAddress: listEmailAddress, + imagePaths: imagePaths, + maxWidth: 360, + keyTagEditor: keyEmailTagEditor, + ), + ); + + await tester.pumpWidget(widget); + + await tester.pumpAndSettle(); + + final labelRecipientTagItemWidgetFinder = find.byKey(Key('label_recipient_tag_item_${prefix.name}_0')); + + final labelRecipientTagItemWidget = tester.widget(labelRecipientTagItemWidgetFinder); + final labelTagWidth = tester.getSize(labelRecipientTagItemWidgetFinder).width; + + expect(labelRecipientTagItemWidget.overflow, equals(TextOverflow.ellipsis)); + + final TextPainter textPainter = TextPainter( + maxLines: labelRecipientTagItemWidget.maxLines, + textDirection: labelRecipientTagItemWidget.textDirection ?? TextDirection.ltr, + text: TextSpan( + text: labelRecipientTagItemWidget.data, + style: labelRecipientTagItemWidget.style, + locale: labelRecipientTagItemWidget.locale + ), + ); + textPainter.layout(maxWidth: labelTagWidth); + bool isExceededTextOverflow = textPainter.didExceedMaxLines; + log('recipient_composer_widget_test::main: LABEL_TAB_WIDTH = $labelTagWidth | TextPainterWidth = ${textPainter.width} | isExceededTextOverflow = $isExceededTextOverflow'); + + expect(isExceededTextOverflow, equals(false)); + }); }); }