TF-3454 Download all attachments as ZIP
This commit is contained in:
@@ -28,6 +28,8 @@ import 'package:tmail_ui_user/features/email/domain/model/event_action.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/calendar_event_accept_state.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/parse_calendar_event_state.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/calendar_event_accept_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/download_all_attachments_for_web_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/export_all_attachments_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/get_html_content_from_attachment_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/maybe_calendar_event_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/calendar_event_reject_interactor.dart';
|
||||
@@ -110,6 +112,8 @@ const fallbackGenerators = {
|
||||
MockSpec<DioClient>(),
|
||||
MockSpec<GetHtmlContentFromAttachmentInteractor>(),
|
||||
MockSpec<TwakeAppManager>(),
|
||||
MockSpec<DownloadAllAttachmentsForWebInteractor>(),
|
||||
MockSpec<ExportAllAttachmentsInteractor>(),
|
||||
])
|
||||
void main() {
|
||||
TestWidgetsFlutterBinding.ensureInitialized();
|
||||
@@ -149,6 +153,9 @@ void main() {
|
||||
final getHtmlContentFromAttachmentInteractor = MockGetHtmlContentFromAttachmentInteractor();
|
||||
final mockTwakeAppManager = MockTwakeAppManager();
|
||||
|
||||
final downloadAllAttachmentsForWebInteractor = MockDownloadAllAttachmentsForWebInteractor();
|
||||
final exportAllAttachmentsInteractor = MockExportAllAttachmentsInteractor();
|
||||
|
||||
late SingleEmailController singleEmailController;
|
||||
|
||||
final testAccountId = AccountId(Id('123'));
|
||||
@@ -206,6 +213,8 @@ void main() {
|
||||
parseEmailByBlobIdInteractor,
|
||||
previewEmailFromEmlFileInteractor,
|
||||
getHtmlContentFromAttachmentInteractor,
|
||||
downloadAllAttachmentsForWebInteractor,
|
||||
exportAllAttachmentsInteractor,
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/state.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/user_name.dart';
|
||||
import 'package:model/download_all/download_all_capability.dart';
|
||||
import 'package:model/support/contact_support_capability.dart';
|
||||
import 'package:tmail_ui_user/features/home/domain/extensions/session_extensions.dart';
|
||||
|
||||
@@ -202,4 +203,227 @@ void main() {
|
||||
expect(result, isNull);
|
||||
});
|
||||
});
|
||||
|
||||
group('isDownloadAllSupported::test', () {
|
||||
test('SHOULD return false WHEN AccountId is null', () {
|
||||
// Arrange
|
||||
final session = Session(
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
UserName(''),
|
||||
Uri(),
|
||||
Uri(),
|
||||
Uri(),
|
||||
Uri(),
|
||||
State(''),
|
||||
);
|
||||
|
||||
// Act
|
||||
final result = session.isDownloadAllSupported(null);
|
||||
|
||||
// Assert
|
||||
expect(result, isFalse);
|
||||
});
|
||||
|
||||
test('SHOULD return false WHEN isSupported is false', () {
|
||||
// Arrange
|
||||
final session = Session(
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
UserName(''),
|
||||
Uri(),
|
||||
Uri(),
|
||||
Uri(),
|
||||
Uri(),
|
||||
State(''),
|
||||
);
|
||||
|
||||
// Act
|
||||
final result = session.isDownloadAllSupported(AccountFixtures.aliceAccountId);
|
||||
|
||||
// Assert
|
||||
expect(result, isFalse);
|
||||
});
|
||||
|
||||
test('SHOULD return false WHEN isSupported is true but endpoint is null', () {
|
||||
// Arrange
|
||||
final session = Session(
|
||||
{},
|
||||
{
|
||||
AccountFixtures.aliceAccountId: Account(
|
||||
AccountName('Alice'),
|
||||
true,
|
||||
false,
|
||||
{
|
||||
SessionExtensions.linagoraDownloadAllCapability: DownloadAllCapability()
|
||||
},
|
||||
)
|
||||
},
|
||||
{},
|
||||
UserName(''),
|
||||
Uri(),
|
||||
Uri(),
|
||||
Uri(),
|
||||
Uri(),
|
||||
State(''),
|
||||
);
|
||||
|
||||
// Act
|
||||
final result = session.isDownloadAllSupported(AccountFixtures.aliceAccountId);
|
||||
|
||||
// Assert
|
||||
expect(result, isFalse);
|
||||
});
|
||||
|
||||
test('SHOULD return false WHEN isSupported is true but endpoint is empty', () {
|
||||
// Arrange
|
||||
final session = Session(
|
||||
{},
|
||||
{
|
||||
AccountFixtures.aliceAccountId: Account(
|
||||
AccountName('Alice'),
|
||||
true,
|
||||
false,
|
||||
{
|
||||
SessionExtensions.linagoraDownloadAllCapability: DownloadAllCapability(endpoint: '')
|
||||
},
|
||||
)
|
||||
},
|
||||
{},
|
||||
UserName(''),
|
||||
Uri(),
|
||||
Uri(),
|
||||
Uri(),
|
||||
Uri(),
|
||||
State(''),
|
||||
);
|
||||
|
||||
// Act
|
||||
final result = session.isDownloadAllSupported(AccountFixtures.aliceAccountId);
|
||||
|
||||
// Assert
|
||||
expect(result, isFalse);
|
||||
});
|
||||
|
||||
test('SHOULD return true WHEN isSupported is true and endpoint is not empty', () {
|
||||
// Arrange
|
||||
final session = Session(
|
||||
{},
|
||||
{
|
||||
AccountFixtures.aliceAccountId: Account(
|
||||
AccountName('Alice'),
|
||||
true,
|
||||
false,
|
||||
{
|
||||
SessionExtensions.linagoraDownloadAllCapability: DownloadAllCapability(
|
||||
endpoint: 'https://example.com')
|
||||
},
|
||||
)
|
||||
},
|
||||
{},
|
||||
UserName(''),
|
||||
Uri(),
|
||||
Uri(),
|
||||
Uri(),
|
||||
Uri(),
|
||||
State(''),
|
||||
);
|
||||
|
||||
// Act
|
||||
final result = session.isDownloadAllSupported(AccountFixtures.aliceAccountId);
|
||||
|
||||
// Assert
|
||||
expect(result, isTrue);
|
||||
});
|
||||
});
|
||||
|
||||
group('getDownloadAllCapability::test', () {
|
||||
test('SHOULD return DownloadAllCapability WHEN DownloadAllCapability is available', () {
|
||||
// Arrange
|
||||
final session = Session(
|
||||
{},
|
||||
{
|
||||
AccountFixtures.aliceAccountId: Account(
|
||||
AccountName('Alice'),
|
||||
true,
|
||||
false,
|
||||
{
|
||||
SessionExtensions.linagoraDownloadAllCapability: DownloadAllCapability()
|
||||
},
|
||||
)
|
||||
},
|
||||
{},
|
||||
UserName(''),
|
||||
Uri(),
|
||||
Uri(),
|
||||
Uri(),
|
||||
Uri(),
|
||||
State(''),
|
||||
);
|
||||
|
||||
// Act
|
||||
final result = session.getDownloadAllCapability(AccountFixtures.aliceAccountId);
|
||||
|
||||
// Assert
|
||||
expect(result, isNotNull);
|
||||
});
|
||||
test('SHOULD return null WHEN DownloadAllCapability is not available', () {
|
||||
// Arrange
|
||||
final session = Session(
|
||||
{},
|
||||
{
|
||||
AccountFixtures.aliceAccountId: Account(
|
||||
AccountName('Alice'),
|
||||
true,
|
||||
false,
|
||||
{
|
||||
SessionExtensions.linagoraDownloadAllCapability: EmptyCapability()
|
||||
},
|
||||
)
|
||||
},
|
||||
{},
|
||||
UserName(''),
|
||||
Uri(),
|
||||
Uri(),
|
||||
Uri(),
|
||||
Uri(),
|
||||
State(''),
|
||||
);
|
||||
|
||||
// Act
|
||||
final result = session.getDownloadAllCapability(AccountFixtures.aliceAccountId);
|
||||
|
||||
// Assert
|
||||
expect(result, isNull);
|
||||
});
|
||||
test('SHOULD return null WHEN DownloadAllCapability is not supported', () {
|
||||
// Arrange
|
||||
final session = Session(
|
||||
{},
|
||||
{
|
||||
AccountFixtures.aliceAccountId: Account(
|
||||
AccountName('Alice'),
|
||||
true,
|
||||
false,
|
||||
{},
|
||||
)
|
||||
},
|
||||
{},
|
||||
UserName(''),
|
||||
Uri(),
|
||||
Uri(),
|
||||
Uri(),
|
||||
Uri(),
|
||||
State(''),
|
||||
);
|
||||
|
||||
// Act
|
||||
final result = session.getDownloadAllCapability(AccountFixtures.aliceAccountId);
|
||||
|
||||
// Assert
|
||||
expect(result, isNull);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user