diff --git a/integration_test/base/base_test_scenario.dart b/integration_test/base/base_test_scenario.dart index 30ed32f58..b69d867b7 100644 --- a/integration_test/base/base_test_scenario.dart +++ b/integration_test/base/base_test_scenario.dart @@ -10,9 +10,15 @@ abstract class BaseTestScenario extends BaseScenario @override Future execute() async { + await setupPreLogin(); await executeLoginScenario(); await runTestLogic(); + await disposeAfterTest(); } + Future setupPreLogin() async {} + Future runTestLogic(); + + Future disposeAfterTest() async {} } diff --git a/integration_test/mixin/provisioning_label_scenario_mixin.dart b/integration_test/mixin/provisioning_label_scenario_mixin.dart new file mode 100644 index 000000000..395302d7a --- /dev/null +++ b/integration_test/mixin/provisioning_label_scenario_mixin.dart @@ -0,0 +1,88 @@ +import 'package:core/utils/app_logger.dart'; +import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:labels/labels.dart'; +import 'package:tmail_ui_user/features/labels/domain/state/create_new_label_state.dart'; +import 'package:tmail_ui_user/features/labels/domain/usecases/create_new_label_interactor.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 '../models/provisioning_email.dart'; +import '../models/provisioning_label.dart'; + +mixin ProvisioningLabelScenarioMixin { + Future> provisionLabels( + List provisioningLabels, + ) async { + if (provisioningLabels.isEmpty) { + return []; + } + + final dashboardController = getBinding(); + final createLabelInteractor = getBinding(); + + final accountId = dashboardController?.accountId.value; + final labelController = dashboardController?.labelController; + + if (createLabelInteractor == null || accountId == null) { + log( + 'ProvisioningLabelScenarioMixin::provisionLabels ' + 'skipped: missing CreateNewLabelInteractor or accountId', + ); + return []; + } + + final List results = await Future.wait(provisioningLabels.map( + (label) => _createLabel(createLabelInteractor, accountId, label), + )); + + final List