TF-3720 Thread Detail Collapse quote reply

Revert "fixup! TF-3720 Thread Detail Collapse quote reply"

This reverts commit 2104530977664f892702fba5e5bc6fb3e5768b19.

TF-3720 Thread Detail adjust receiver size

TF-3720 Thread Detail refactor email receiver alignment
This commit is contained in:
DatDang
2025-05-28 14:43:37 +07:00
committed by Dat H. Pham
parent d210a892f2
commit f86392c854
6 changed files with 218 additions and 6 deletions
+81
View File
@@ -0,0 +1,81 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:core/utils/html/html_utils.dart';
import 'package:universal_html/html.dart' as html;
void main() {
group('HtmlUtils addQuoteToggle tests', () {
test('Should add toggle button to HTML with single blockquote', () {
const htmlInput = '''
<div>
<blockquote>
<p>Quoted text</p>
</blockquote>
</div>
''';
final result = HtmlUtils.addQuoteToggle(htmlInput);
expect(result, contains('quote-toggle-container'));
expect(result, contains('quote-toggle-button'));
});
test('Should handle nested blockquotes by modifying deepest level', () {
const htmlInput = '''
<div>
<blockquote class="outer">
<div>
<blockquote class="inner">
<p>Nested quote</p>
</blockquote>
</div>
</blockquote>
</div>
''';
final result = HtmlUtils.addQuoteToggle(htmlInput);
final document = html.DomParser().parseFromString(result, 'text/html');
expect(
document.querySelector('.quote-toggle-button')?.nextElementSibling,
document.querySelector('.outer'),
);
});
test('Should return original string when input is not HTML', () {
const plainText = 'This is just plain text without any HTML tags';
final result = HtmlUtils.addQuoteToggle(plainText);
expect(result, plainText);
});
test('Should handle invalid HTML gracefully', () {
const malformedHtml = '''
<div>
<blockquote>
<p>Unclosed tag
</blockquote>
</div>
''';
final result = HtmlUtils.addQuoteToggle(malformedHtml);
expect(result, isNot(equals(malformedHtml)));
expect(result, contains('quote-toggle-button'));
});
test('Should preserve existing content when adding toggle', () {
const htmlInput = '''
<div class="email-body">
<p>Hello World</p>
<blockquote>
<p>Previous message</p>
</blockquote>
</div>
''';
final result = HtmlUtils.addQuoteToggle(htmlInput);
final container = html.DivElement()..innerHtml = result;
expect(container.querySelector('.email-body'), isNotNull);
expect(container.querySelector('p')?.text, contains('Hello World'));
expect(container.querySelector('blockquote p')?.text, contains('Previous message'));
});
});
}