diff --git a/integration_test/integration_test/exceptions/mailbox/null_quota_exception.dart b/integration_test/integration_test/exceptions/mailbox/null_quota_exception.dart new file mode 100644 index 000000000..b0374633d --- /dev/null +++ b/integration_test/integration_test/exceptions/mailbox/null_quota_exception.dart @@ -0,0 +1 @@ +class NullQuotaException implements Exception {} \ No newline at end of file diff --git a/integration_test/robots/mailbox_menu_robot.dart b/integration_test/robots/mailbox_menu_robot.dart index 8a6d5b3df..0cad82b56 100644 --- a/integration_test/robots/mailbox_menu_robot.dart +++ b/integration_test/robots/mailbox_menu_robot.dart @@ -6,12 +6,15 @@ import 'package:get/get.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/widgets/label_mailbox_item_widget.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_item_widget.dart'; import 'package:tmail_ui_user/features/mailbox_creator/presentation/mailbox_creator_view.dart'; +import 'package:tmail_ui_user/features/quotas/presentation/quotas_controller.dart'; import 'package:tmail_ui_user/features/search/mailbox/presentation/search_mailbox_view.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart'; +import 'package:tmail_ui_user/main/routes/route_navigation.dart'; import '../base/core_robot.dart'; import '../exceptions/mailbox/null_inbox_unread_count_exception.dart'; +import '../integration_test/exceptions/mailbox/null_quota_exception.dart'; class MailboxMenuRobot extends CoreRobot { MailboxMenuRobot(super.$); @@ -109,4 +112,17 @@ class MailboxMenuRobot extends CoreRobot { Future confirmSignOut() async { await $(AppLocalizations().yesLogout).tap(); } + + int getUsedQuota() { + final usedQuota = + getBinding()?.octetsQuota.value?.used?.value.toInt(); + if (usedQuota == null) throw NullQuotaException(); + + return usedQuota; + } + + Future refreshQuota() async { + getBinding()?.reloadQuota(); + await $.pumpAndSettle(duration: const Duration(seconds: 2)); + } } \ No newline at end of file diff --git a/integration_test/scenarios/mailbox/quota_count_scenario.dart b/integration_test/scenarios/mailbox/quota_count_scenario.dart new file mode 100644 index 000000000..3c9aad197 --- /dev/null +++ b/integration_test/scenarios/mailbox/quota_count_scenario.dart @@ -0,0 +1,37 @@ +import 'package:flutter_test/flutter_test.dart'; + +import '../../base/base_test_scenario.dart'; +import '../../models/provisioning_email.dart'; +import '../../robots/mailbox_menu_robot.dart'; +import '../../robots/thread_robot.dart'; + +class QuotaCountScenario extends BaseTestScenario { + const QuotaCountScenario(super.$); + + @override + Future runTestLogic() async { + const email = String.fromEnvironment('BASIC_AUTH_EMAIL'); + + final threadRobot = ThreadRobot($); + final mailboxMenuRobot = MailboxMenuRobot($); + + await threadRobot.openMailbox(); + final beforeUsedQuota = mailboxMenuRobot.getUsedQuota(); + + final file = await preparingTxtFile('some content'); + await provisionEmail([ProvisioningEmail( + toEmail: email, + subject: 'test increase quota', + content: '', + attachmentPaths: [file.path], + )]); + await mailboxMenuRobot.refreshQuota(); + final afterUsedQuota = mailboxMenuRobot.getUsedQuota(); + + _expectQuotaIncreased(beforeUsedQuota, afterUsedQuota); + } + + void _expectQuotaIncreased(int before, int after) { + expect(after, greaterThan(before)); + } +} \ No newline at end of file diff --git a/integration_test/tests/mailbox/quota_count_test.dart b/integration_test/tests/mailbox/quota_count_test.dart new file mode 100644 index 000000000..c38abfddb --- /dev/null +++ b/integration_test/tests/mailbox/quota_count_test.dart @@ -0,0 +1,9 @@ +import '../../base/test_base.dart'; +import '../../scenarios/mailbox/quota_count_scenario.dart'; + +void main() { + TestBase().runPatrolTest( + description: 'Should see quota increase when send email successfully', + scenarioBuilder: ($) => QuotaCountScenario($), + ); +} \ No newline at end of file diff --git a/provisioning/integration_test/provisioning.sh b/provisioning/integration_test/provisioning.sh index 27c4f0cbf..a0431f245 100755 --- a/provisioning/integration_test/provisioning.sh +++ b/provisioning/integration_test/provisioning.sh @@ -89,4 +89,7 @@ done # For test team mailbox curl -XPUT http://172.18.0.2:8000/domains/example.com/team-mailboxes/bob-guests curl -XPUT http://172.18.0.2:8000/domains/example.com/team-mailboxes/bob-guests/members/bob@example.com?role=member -curl -XPUT http://172.18.0.2:8000/domains/example.com/team-mailboxes/bob-guests/members/alice@example.com?role=member \ No newline at end of file +curl -XPUT http://172.18.0.2:8000/domains/example.com/team-mailboxes/bob-guests/members/alice@example.com?role=member + +# For test quota +curl -X PUT http://172.18.0.2:8000/quota/users/bob@example.com -d '{"count":200,"size":50000000}' -H "Content-Type: application/json" # 200 emails, 50MB \ No newline at end of file