TF-3985 Write unit test for isPremiumAvailable method

This commit is contained in:
dab246
2025-09-10 14:08:44 +07:00
committed by Dat H. Pham
parent f373cd3d37
commit f117f37a92
5 changed files with 174 additions and 12 deletions
@@ -8,7 +8,7 @@ import 'package:tmail_ui_user/features/base/widget/application_version_widget.da
import 'package:tmail_ui_user/features/base/widget/premium/increase_space_button_widget.dart';
import 'package:tmail_ui_user/features/base/widget/scrollbar_list_view.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/base_mailbox_view.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/validate_saas_premium_available_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/handle_paywall_extension.dart';
import 'package:tmail_ui_user/features/quotas/presentation/quotas_view.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
@@ -38,8 +38,9 @@ class MailboxView extends BaseMailboxView {
),
const QuotasView(),
Obx(() {
final isPremiumAvailable =
controller.mailboxDashBoardController.isPremiumAvailable;
final isPremiumAvailable = controller
.mailboxDashBoardController
.validatePremiumIsAvailable();
final isDesktop = controller.responsiveUtils.isDesktop(context);
if (isPremiumAvailable) {
@@ -127,7 +127,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/reopen_composer_cache_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/set_error_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/update_current_emails_flags_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/validate_saas_premium_available_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/handle_paywall_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/web_auth_redirect_processor_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/download/download_task_state.dart';
@@ -155,6 +155,7 @@ import 'package:tmail_ui_user/features/network_connection/presentation/network_c
if (dart.library.html) 'package:tmail_ui_user/features/network_connection/presentation/web_network_connection_controller.dart';
import 'package:tmail_ui_user/features/paywall/domain/model/paywall_url_pattern.dart';
import 'package:tmail_ui_user/features/paywall/domain/state/get_paywall_url_state.dart';
import 'package:tmail_ui_user/features/paywall/presentation/saas_premium_mixin.dart';
import 'package:tmail_ui_user/features/push_notification/presentation/controller/web_socket_controller.dart';
import 'package:tmail_ui_user/features/push_notification/presentation/notification/local_notification_manager.dart';
import 'package:tmail_ui_user/features/push_notification/presentation/services/fcm_service.dart';
@@ -206,7 +207,9 @@ import 'package:server_settings/server_settings/tmail_server_settings_extension.
import 'package:uuid/uuid.dart';
class MailboxDashBoardController extends ReloadableController
with ContactSupportMixin, OwnEmailAddressMixin {
with ContactSupportMixin,
OwnEmailAddressMixin,
SaaSPremiumMixin {
final RemoveEmailDraftsInteractor _removeEmailDraftsInteractor = Get.find<RemoveEmailDraftsInteractor>();
final EmailReceiveManager _emailReceiveManager = Get.find<EmailReceiveManager>();
@@ -1,5 +1,4 @@
import 'package:flutter/material.dart';
import 'package:tmail_ui_user/features/home/domain/extensions/session_extensions.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
import 'package:tmail_ui_user/features/paywall/domain/model/paywall_url_pattern.dart';
import 'package:tmail_ui_user/features/paywall/domain/usecases/get_paywall_url_interactor.dart';
@@ -8,16 +7,14 @@ import 'package:tmail_ui_user/main/routes/route_navigation.dart';
import 'package:tmail_ui_user/main/utils/app_utils.dart';
extension ValidateSaasPremiumAvailableExtension on MailboxDashBoardController {
bool get isPremiumAvailable {
bool validatePremiumIsAvailable() {
if (accountId.value == null || sessionCurrent == null) {
return false;
}
final saasAccount = sessionCurrent?.getSaaSAccountCapability(
accountId.value!,
return isPremiumAvailable(
accountId: accountId.value,
session: sessionCurrent,
);
return saasAccount?.isPremiumAvailable ?? false;
}
void loadPaywallUrl() {
@@ -0,0 +1,13 @@
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:tmail_ui_user/features/home/domain/extensions/session_extensions.dart';
mixin SaaSPremiumMixin {
bool isPremiumAvailable({Session? session, AccountId? accountId}) {
if (accountId == null || session == null) {
return false;
}
final saasAccount = session.getSaaSAccountCapability(accountId);
return saasAccount?.isPremiumAvailable ?? false;
}
}