Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions integration_test/robots/composer_robot.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import 'package:model/email/prefix_email_address.dart';
import 'package:model/extensions/session_extension.dart';
import 'package:model/upload/file_info.dart';
import 'package:rich_text_composer/rich_text_composer.dart';
import 'package:tmail_ui_user/features/base/widget/popup_item_widget.dart';
import 'package:tmail_ui_user/features/composer/presentation/composer_controller.dart';
import 'package:tmail_ui_user/features/composer/presentation/composer_view.dart';
import 'package:tmail_ui_user/features/composer/presentation/view/mobile/mobile_editor_view.dart';
Expand Down Expand Up @@ -126,4 +127,10 @@ class ComposerRobot extends CoreRobot {
fileName: file.path.split('/').last,
)));
}

Future<void> toggleReadReceipt() async {
await $(PopupItemWidget)
.which<PopupItemWidget>((widget) => widget.iconAction == ImagePaths().icReadReceipt)
.tap();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
import 'package:core/core.dart';
import 'package:duration/duration.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:model/email/prefix_email_address.dart';
import 'package:tmail_ui_user/features/composer/presentation/composer_view.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';

import '../../base/base_test_scenario.dart';
import '../../robots/composer_robot.dart';
import '../../robots/thread_robot.dart';

class SendEmailWithReadReceiptEnabledScenario extends BaseTestScenario {
const SendEmailWithReadReceiptEnabledScenario(super.$);

@override
Future<void> runTestLogic() async {
const additionalRecipient = String.fromEnvironment('ADDITIONAL_MAIL_RECIPIENT');
const email = String.fromEnvironment('BASIC_AUTH_EMAIL');
const subject = 'Test read receipt subject';
const content = 'Test content';

final threadRobot = ThreadRobot($);
final composerRobot = ComposerRobot($);
final imagePaths = ImagePaths();
final appLocalizations = AppLocalizations();

await threadRobot.openComposer();
await _expectComposerViewVisible();

await composerRobot.grantContactPermission();

await composerRobot.addRecipientIntoField(
prefixEmailAddress: PrefixEmailAddress.to,
email: email,
);
await composerRobot.addRecipientIntoField(
prefixEmailAddress: PrefixEmailAddress.to,
email: additionalRecipient,
);
await composerRobot.addSubject(subject);
await composerRobot.addContent(content);
await composerRobot.tapMoreOptionOnAppBar();
await composerRobot.toggleReadReceipt();
await _expectReadReceiptToggleSuccessfullyToast(appLocalizations);

await composerRobot.sendEmail(imagePaths);

await _expectSendEmailSuccessToast(appLocalizations);

await $.pumpAndSettle(duration: seconds(5));
await threadRobot.openEmailWithSubject(subject);
await _expectReadReceiptRequestDialog(appLocalizations);
}

Future<void> _expectReadReceiptRequestDialog(
AppLocalizations appLocalizations
) async {
await expectViewVisible(
$(appLocalizations.titleReadReceiptRequestNotificationMessage)
);
}

Future<void> _expectReadReceiptToggleSuccessfullyToast(
AppLocalizations appLocalizations
) async {
await expectViewVisible(
$(appLocalizations.requestReadReceiptHasBeenEnabled)
);
}

Future<void> _expectComposerViewVisible() => expectViewVisible($(ComposerView));

Future<void> _expectSendEmailSuccessToast(AppLocalizations appLocalizations) async {
await expectViewVisible(
$(find.text(appLocalizations.message_has_been_sent_successfully)),
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import '../../base/test_base.dart';
import '../../scenarios/composer/send_email_with_read_receipt_enabled_scenario.dart';

void main() {
TestBase().runPatrolTest(
description: 'Should see read receipt dialog '
'when user toggle read receipt '
'and open read receipt email',
scenarioBuilder: ($) => SendEmailWithReadReceiptEnabledScenario($),
);
}
Loading