Skip to content

Commit 54e7a13

Browse files
TF-3614 E2E quota view increase
1 parent 57eee9b commit 54e7a13

File tree

6 files changed

+71
-1
lines changed

6 files changed

+71
-1
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
class NullQuotaException implements Exception {}

integration_test/robots/mailbox_menu_robot.dart

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,16 @@ import 'package:core/presentation/views/button/tmail_button_widget.dart';
33
import 'package:core/presentation/views/text/text_field_builder.dart';
44
import 'package:flutter/material.dart';
55
import 'package:flutter_test/flutter_test.dart';
6+
import 'package:get/get.dart';
67
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/label_mailbox_item_widget.dart';
78
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_item_widget.dart';
89
import 'package:tmail_ui_user/features/mailbox_creator/presentation/mailbox_creator_view.dart';
10+
import 'package:tmail_ui_user/features/quotas/presentation/quotas_controller.dart';
911
import 'package:tmail_ui_user/features/search/mailbox/presentation/search_mailbox_view.dart';
1012
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
1113

1214
import '../base/core_robot.dart';
15+
import '../integration_test/exceptions/mailbox/null_quota_exception.dart';
1316

1417
class MailboxMenuRobot extends CoreRobot {
1518
MailboxMenuRobot(super.$);
@@ -82,4 +85,17 @@ class MailboxMenuRobot extends CoreRobot {
8285
})
8386
.tap();
8487
}
88+
89+
Future<int> getUsedQuota() async {
90+
final quotaController = Get.find<QuotasController>();
91+
final usedQuota = quotaController.octetsQuota.value?.used?.value.toInt();
92+
if (usedQuota == null) throw NullQuotaException();
93+
94+
return usedQuota;
95+
}
96+
97+
Future<void> refreshQuota() async {
98+
Get.find<QuotasController>().refreshQuota();
99+
await $.pumpAndSettle(duration: const Duration(seconds: 2));
100+
}
85101
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import 'package:flutter_test/flutter_test.dart';
2+
3+
import '../../base/base_test_scenario.dart';
4+
import '../../models/provisioning_email.dart';
5+
import '../../robots/mailbox_menu_robot.dart';
6+
import '../../robots/thread_robot.dart';
7+
8+
class QuotaCountScenario extends BaseTestScenario {
9+
const QuotaCountScenario(super.$);
10+
11+
@override
12+
Future<void> runTestLogic() async {
13+
const email = String.fromEnvironment('BASIC_AUTH_EMAIL');
14+
15+
final threadRobot = ThreadRobot($);
16+
final mailboxMenuRobot = MailboxMenuRobot($);
17+
18+
await threadRobot.openMailbox();
19+
final beforeUsedQuota = await mailboxMenuRobot.getUsedQuota();
20+
21+
final file = await preparingTxtFile('some content');
22+
await provisionEmail([ProvisioningEmail(
23+
toEmail: email,
24+
subject: 'test increase quota',
25+
content: '',
26+
attachmentPaths: [file.path],
27+
)]);
28+
await mailboxMenuRobot.refreshQuota();
29+
final afterUsedQuota = await mailboxMenuRobot.getUsedQuota();
30+
31+
_expectQuotaIncreased(beforeUsedQuota, afterUsedQuota);
32+
}
33+
34+
void _expectQuotaIncreased(int before, int after) {
35+
expect(after, greaterThan(before));
36+
}
37+
}
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/quota_count_scenario.dart';
3+
4+
void main() {
5+
TestBase().runPatrolTest(
6+
description: 'Should see quota increase when send email successfully',
7+
scenarioBuilder: ($) => QuotaCountScenario($),
8+
);
9+
}

lib/features/quotas/presentation/quotas_controller.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'package:core/presentation/state/success.dart';
2+
import 'package:flutter/material.dart';
23
import 'package:get/get.dart';
34
import 'package:jmap_dart_client/jmap/account_id.dart';
45
import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart';
@@ -42,6 +43,9 @@ class QuotasController extends BaseController {
4243
});
4344
}
4445

46+
@visibleForTesting
47+
void refreshQuota() => _getQuotasAction(mailboxDashBoardController.accountId.value!);
48+
4549
@override
4650
void onInit() {
4751
_initWorker();

provisioning/integration_test/provisioning.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,4 +75,7 @@ done
7575
# For test team mailbox
7676
curl -XPUT http://172.18.0.2:8000/domains/example.com/team-mailboxes/bob-guests
7777
curl -XPUT http://172.18.0.2:8000/domains/example.com/team-mailboxes/bob-guests/members/bob@example.com?role=member
78-
curl -XPUT http://172.18.0.2:8000/domains/example.com/team-mailboxes/bob-guests/members/alice@example.com?role=member
78+
curl -XPUT http://172.18.0.2:8000/domains/example.com/team-mailboxes/bob-guests/members/alice@example.com?role=member
79+
80+
# For test quota
81+
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

0 commit comments

Comments
 (0)