Skip to content

Commit bfb20d3

Browse files
tddang-linagorahoangdat
authored andcommitted
TF-3569 E2E Mailbox toggle read/star/spam
1 parent 2abd5e6 commit bfb20d3

7 files changed

+151
-0
lines changed

integration_test/robots/thread_robot.dart

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,4 +127,23 @@ class ThreadRobot extends CoreRobot {
127127
await $(#moveToTrash_selected_email_button).tap();
128128
await $.pumpAndTrySettle();
129129
}
130+
131+
Future<void> tapMarkAsReadButton() async {
132+
await $(#markAsRead_selected_email_button).tap();
133+
await $.pumpAndTrySettle();
134+
}
135+
136+
Future<void> tapMarkAsStarAction() async {
137+
await $(#moreAction_selected_email_button).tap();
138+
await $.pumpAndTrySettle();
139+
await $(#markAsStarred_action).tap();
140+
await $.pumpAndTrySettle();
141+
}
142+
143+
Future<void> tapMarkAsSpamAction() async {
144+
await $(#moreAction_selected_email_button).tap();
145+
await $.pumpAndTrySettle();
146+
await $(#moveToSpam_action).tap();
147+
await $.pumpAndTrySettle();
148+
}
130149
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_builder.dart';
2+
3+
import '../../base/base_test_scenario.dart';
4+
import '../../models/provisioning_email.dart';
5+
import '../../robots/thread_robot.dart';
6+
7+
class MarkSingleSelectedEmailAsReadScenario extends BaseTestScenario {
8+
const MarkSingleSelectedEmailAsReadScenario(super.$);
9+
10+
@override
11+
Future<void> runTestLogic() async {
12+
const email = String.fromEnvironment('BASIC_AUTH_EMAIL');
13+
const readSubject = 'single selected read';
14+
15+
final threadRobot = ThreadRobot($);
16+
17+
await provisionEmail([
18+
ProvisioningEmail(toEmail: email, subject: readSubject, content: ''),
19+
]);
20+
await $.pumpAndSettle(duration: const Duration(seconds: 2));
21+
22+
await threadRobot.longPressEmailWithSubject(readSubject);
23+
await threadRobot.tapMarkAsReadButton();
24+
await _expectEmailWithSubjectIsRead(readSubject);
25+
}
26+
27+
Future<void> _expectEmailWithSubjectIsRead(String subject) async {
28+
await expectViewVisible($(EmailTileBuilder).which<EmailTileBuilder>(
29+
(widget) => widget.presentationEmail.subject == subject
30+
&& widget.presentationEmail.hasRead
31+
));
32+
}
33+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_builder.dart';
2+
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
3+
4+
import '../../base/base_test_scenario.dart';
5+
import '../../models/provisioning_email.dart';
6+
import '../../robots/mailbox_menu_robot.dart';
7+
import '../../robots/thread_robot.dart';
8+
9+
class MarkSingleSelectedEmailAsSpamScenario extends BaseTestScenario {
10+
const MarkSingleSelectedEmailAsSpamScenario(super.$);
11+
12+
@override
13+
Future<void> runTestLogic() async {
14+
const email = String.fromEnvironment('BASIC_AUTH_EMAIL');
15+
const spamSubject = 'single selected spam';
16+
17+
final threadRobot = ThreadRobot($);
18+
final mailboxMenuRobot = MailboxMenuRobot($);
19+
20+
await provisionEmail([
21+
ProvisioningEmail(toEmail: email, subject: spamSubject, content: ''),
22+
]);
23+
await $.pumpAndSettle(duration: const Duration(seconds: 2));
24+
25+
await threadRobot.longPressEmailWithSubject(spamSubject);
26+
await threadRobot.tapMarkAsSpamAction();
27+
await threadRobot.openMailbox();
28+
await mailboxMenuRobot.openFolderByName(
29+
AppLocalizations().spamMailboxDisplayName,
30+
);
31+
await _expectEmailWithSubjectExist(spamSubject);
32+
}
33+
34+
Future<void> _expectEmailWithSubjectExist(String subject) async {
35+
await expectViewVisible($(EmailTileBuilder).which<EmailTileBuilder>(
36+
(widget) => widget.presentationEmail.subject == subject
37+
));
38+
}
39+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_builder.dart';
2+
3+
import '../../base/base_test_scenario.dart';
4+
import '../../models/provisioning_email.dart';
5+
import '../../robots/thread_robot.dart';
6+
7+
class MarkSingleSelectedEmailAsStarScenario extends BaseTestScenario {
8+
const MarkSingleSelectedEmailAsStarScenario(super.$);
9+
10+
@override
11+
Future<void> runTestLogic() async {
12+
const email = String.fromEnvironment('BASIC_AUTH_EMAIL');
13+
const starSubject = 'single selected star';
14+
15+
final threadRobot = ThreadRobot($);
16+
17+
await provisionEmail([
18+
ProvisioningEmail(toEmail: email, subject: starSubject, content: ''),
19+
]);
20+
await $.pumpAndSettle(duration: const Duration(seconds: 2));
21+
22+
await threadRobot.longPressEmailWithSubject(starSubject);
23+
await threadRobot.tapMarkAsStarAction();
24+
await _expectEmailWithSubjectIsStarred(starSubject);
25+
}
26+
27+
Future<void> _expectEmailWithSubjectIsStarred(String subject) async {
28+
await expectViewVisible($(EmailTileBuilder).which<EmailTileBuilder>(
29+
(widget) => widget.presentationEmail.subject == subject
30+
&& widget.presentationEmail.hasStarred
31+
));
32+
}
33+
}
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/mark_single_selected_email_as_read_scenario.dart';
3+
4+
void main() {
5+
TestBase().runPatrolTest(
6+
description: 'Should see selected email mark as read successfully',
7+
scenarioBuilder: ($) => MarkSingleSelectedEmailAsReadScenario($),
8+
);
9+
}
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/mark_single_selected_email_as_spam_scenario.dart';
3+
4+
void main() {
5+
TestBase().runPatrolTest(
6+
description: 'Should see selected email mark as spam successfully',
7+
scenarioBuilder: ($) => MarkSingleSelectedEmailAsSpamScenario($),
8+
);
9+
}
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/mark_single_selected_email_as_star_scenario.dart';
3+
4+
void main() {
5+
TestBase().runPatrolTest(
6+
description: 'Should see selected email mark as star successfully',
7+
scenarioBuilder: ($) => MarkSingleSelectedEmailAsStarScenario($),
8+
);
9+
}

0 commit comments

Comments
 (0)