Skip to content

Commit 490cd32

Browse files
TF-3558 E2E Mailbox switch
1 parent a47a7c4 commit 490cd32

File tree

4 files changed

+69
-1
lines changed

4 files changed

+69
-1
lines changed

integration_test/mixin/scenario_utils_mixin.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import 'package:jmap_dart_client/jmap/identities/identity.dart';
1010
import 'package:jmap_dart_client/jmap/jmap_request.dart';
1111
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
1212
import 'package:jmap_dart_client/jmap/mail/email/set/set_email_method.dart';
13+
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
1314
import 'package:model/model.dart';
1415
import 'package:path_provider/path_provider.dart';
1516
import 'package:tmail_ui_user/features/composer/domain/state/upload_attachment_state.dart';
@@ -31,6 +32,7 @@ mixin ScenarioUtilsMixin {
3132
List<ProvisioningEmail> provisioningEmails, {
3233
bool refreshEmailView = true,
3334
bool requestReadReceipt = true,
35+
Role? sentLocation,
3436
}) async {
3537
ComposerBindings().dependencies();
3638

@@ -56,7 +58,9 @@ mixin ScenarioUtilsMixin {
5658
emailContent: provisioningEmail.content,
5759
toRecipients: {EmailAddress(null, provisioningEmail.toEmail)},
5860
outboxMailboxId: mailboxDashBoardController.outboxMailbox?.mailboxId,
59-
sentMailboxId: mailboxDashBoardController.mapDefaultMailboxIdByRole[PresentationMailbox.roleSent],
61+
sentMailboxId: mailboxDashBoardController.mapDefaultMailboxIdByRole[
62+
sentLocation ?? PresentationMailbox.roleSent
63+
],
6064
identity: identity,
6165
attachments: attachments,
6266
hasRequestReadReceipt: requestReadReceipt,

integration_test/robots/thread_robot.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,9 @@ class ThreadRobot extends CoreRobot {
4343
);
4444
await $.pumpAndSettle();
4545
}
46+
47+
Future<void> tapOnMailboxWithName(String name) async {
48+
await $(name).tap();
49+
await $.pumpAndSettle();
50+
}
4651
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import 'package:flutter_test/flutter_test.dart';
2+
import 'package:model/mailbox/presentation_mailbox.dart';
3+
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
4+
5+
import '../../base/base_test_scenario.dart';
6+
import '../../models/provisioning_email.dart';
7+
import '../../robots/thread_robot.dart';
8+
9+
class SwitchMailboxScenario extends BaseTestScenario {
10+
const SwitchMailboxScenario(super.$);
11+
12+
@override
13+
Future<void> runTestLogic() async {
14+
const toEmail = String.fromEnvironment('BASIC_AUTH_EMAIL');
15+
const sentEmailSubject = 'sent subject';
16+
const trashEmailSubject = 'trash subject';
17+
18+
final threadRobot = ThreadRobot($);
19+
final appLocalizations = AppLocalizations();
20+
21+
await provisionEmail(
22+
[ProvisioningEmail(
23+
toEmail: toEmail,
24+
subject: sentEmailSubject,
25+
content: '',
26+
)],
27+
);
28+
await provisionEmail(
29+
[ProvisioningEmail(
30+
toEmail: toEmail,
31+
subject: trashEmailSubject,
32+
content: '',
33+
)],
34+
sentLocation: PresentationMailbox.roleTrash,
35+
);
36+
37+
await threadRobot.openMailbox();
38+
await threadRobot.tapOnMailboxWithName(appLocalizations.sentMailboxDisplayName);
39+
await _expectEmailWithSubjectVisible(sentEmailSubject);
40+
41+
await threadRobot.openMailbox();
42+
await threadRobot.tapOnMailboxWithName(appLocalizations.trashMailboxDisplayName);
43+
await _expectEmailWithSubjectVisible(trashEmailSubject);
44+
}
45+
46+
Future<void> _expectEmailWithSubjectVisible(String subject) async {
47+
await $.pumpAndSettle(duration: const Duration(seconds: 2));
48+
expect($(subject), findsOneWidget);
49+
}
50+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import '../../base/test_base.dart';
2+
import '../../scenarios/mailbox/switch_mailbox_scenario.dart';
3+
4+
void main() {
5+
TestBase().runPatrolTest(
6+
description: 'Should switch and see emails in mailboxes',
7+
scenarioBuilder: ($) => SwitchMailboxScenario($),
8+
);
9+
}

0 commit comments

Comments
 (0)