TF-4227 Add integration test on mobile for case display_view_with_all_email_with_tag_scenario

This commit is contained in:
dab246
2026-01-07 12:10:04 +07:00
committed by Dat H. Pham
parent a4aceec107
commit 2052fdbe5e
13 changed files with 415 additions and 11 deletions
@@ -1,6 +1,11 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/id.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_body_part.dart';
import 'package:jmap_dart_client/jmap/mail/email/individual_header_identifier.dart';
import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:model/model.dart';
import 'package:tmail_ui_user/features/composer/presentation/extensions/create_email_request_extension.dart';
import 'package:tmail_ui_user/features/composer/presentation/model/create_email_request.dart';
@@ -98,4 +103,168 @@ void main() {
);
});
});
group('CreateEmailRequestExtension.createKeywords', () {
late Session session;
late AccountId accountId;
setUp(() {
session = SessionFixtures.aliceSession;
accountId = AccountFixtures.aliceAccountId;
});
CreateEmailRequest buildRequest({
MailboxId? draftsMailboxId,
MailboxId? templateMailboxId,
List<KeyWordIdentifier>? keywords,
}) {
return CreateEmailRequest(
session: session,
accountId: accountId,
emailActionType: EmailActionType.compose,
ownEmailAddress: 'user@example.com',
subject: 'subject',
emailContent: 'content',
draftsMailboxId: draftsMailboxId,
templateMailboxId: templateMailboxId,
keywords: keywords,
);
}
test('returns null when drafts, template and keywords are all null', () {
final request = buildRequest();
final result = request.createKeywords();
expect(result, isNull);
});
test('returns \$draft and \$seen when draftsMailboxId is provided', () {
final request = buildRequest(
draftsMailboxId: MailboxId(Id('drafts')),
);
final result = request.createKeywords();
expect(result, {
KeyWordIdentifier.emailDraft: true,
KeyWordIdentifier.emailSeen: true,
});
});
test('returns only \$seen when templateMailboxId is provided', () {
final request = buildRequest(
templateMailboxId: MailboxId(Id('template')),
);
final result = request.createKeywords();
expect(result, {
KeyWordIdentifier.emailSeen: true,
});
});
test('returns only custom keywords when keywords is provided alone', () {
final request = buildRequest(
keywords: [
KeyWordIdentifier.emailFlagged,
KeyWordIdentifier.emailAnswered,
],
);
final result = request.createKeywords();
expect(result, {
KeyWordIdentifier.emailFlagged: true,
KeyWordIdentifier.emailAnswered: true,
});
});
test('merges drafts keywords with custom keywords', () {
final request = buildRequest(
draftsMailboxId: MailboxId(Id('drafts')),
keywords: [
KeyWordIdentifier.emailFlagged,
],
);
final result = request.createKeywords();
expect(result, {
KeyWordIdentifier.emailDraft: true,
KeyWordIdentifier.emailSeen: true,
KeyWordIdentifier.emailFlagged: true,
});
});
test('merges template keywords with custom keywords', () {
final request = buildRequest(
templateMailboxId: MailboxId(Id('template')),
keywords: [
KeyWordIdentifier.emailFlagged,
],
);
final result = request.createKeywords();
expect(result, {
KeyWordIdentifier.emailSeen: true,
KeyWordIdentifier.emailFlagged: true,
});
});
test('does not duplicate \$seen if provided in custom keywords', () {
final request = buildRequest(
templateMailboxId: MailboxId(Id('template')),
keywords: [
KeyWordIdentifier.emailSeen,
KeyWordIdentifier.emailFlagged,
],
);
final result = request.createKeywords();
expect(result, {
KeyWordIdentifier.emailSeen: true,
KeyWordIdentifier.emailFlagged: true,
});
});
test('does not duplicate \$draft if provided in custom keywords', () {
final request = buildRequest(
draftsMailboxId: MailboxId(Id('drafts')),
keywords: [
KeyWordIdentifier.emailDraft,
],
);
final result = request.createKeywords();
expect(result, {
KeyWordIdentifier.emailDraft: true,
KeyWordIdentifier.emailSeen: true,
});
});
test('handles multiple custom keywords correctly', () {
final request = buildRequest(
draftsMailboxId: MailboxId(Id('drafts')),
keywords: [
KeyWordIdentifier.emailFlagged,
KeyWordIdentifier.emailAnswered,
KeyWordIdentifier.emailForwarded,
],
);
final result = request.createKeywords();
expect(result, {
KeyWordIdentifier.emailDraft: true,
KeyWordIdentifier.emailSeen: true,
KeyWordIdentifier.emailFlagged: true,
KeyWordIdentifier.emailAnswered: true,
KeyWordIdentifier.emailForwarded: true,
});
});
});
}