430 lines
11 KiB
Dart
430 lines
11 KiB
Dart
import 'package:contact/contact_module.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:jmap_dart_client/jmap/core/account/account.dart';
|
|
import 'package:jmap_dart_client/jmap/core/capability/empty_capability.dart';
|
|
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';
|
|
|
|
import '../../fixtures/account_fixtures.dart';
|
|
|
|
void main() {
|
|
group('getMinInputLengthAutocomplete::test', () {
|
|
test('SHOULD return minInputLength WHEN AutocompleteCapability is available', () {
|
|
// Arrange
|
|
final autocompleteCapability = AutocompleteCapability(minInputLength: UnsignedInt(3));
|
|
final session = Session(
|
|
{
|
|
tmailContactCapabilityIdentifier: autocompleteCapability
|
|
},
|
|
{
|
|
AccountFixtures.aliceAccountId: Account(
|
|
AccountName('Alice'),
|
|
true,
|
|
false,
|
|
{
|
|
tmailContactCapabilityIdentifier: autocompleteCapability
|
|
},
|
|
)
|
|
},
|
|
{},
|
|
UserName(''),
|
|
Uri(),
|
|
Uri(),
|
|
Uri(),
|
|
Uri(),
|
|
State(''));
|
|
|
|
// Act
|
|
final result = session.getMinInputLengthAutocomplete(AccountFixtures.aliceAccountId);
|
|
|
|
// Assert
|
|
expect(result, autocompleteCapability.minInputLength);
|
|
});
|
|
|
|
test('SHOULD return null WHEN AutocompleteCapability is not available', () {
|
|
// Arrange
|
|
final session = Session(
|
|
{
|
|
tmailContactCapabilityIdentifier: EmptyCapability()
|
|
},
|
|
{
|
|
AccountFixtures.aliceAccountId: Account(
|
|
AccountName('Alice'),
|
|
true,
|
|
false,
|
|
{
|
|
tmailContactCapabilityIdentifier: EmptyCapability()
|
|
},
|
|
)
|
|
},
|
|
{},
|
|
UserName(''),
|
|
Uri(),
|
|
Uri(),
|
|
Uri(),
|
|
Uri(),
|
|
State(''));
|
|
|
|
// Act
|
|
final result = session.getMinInputLengthAutocomplete(AccountFixtures.aliceAccountId);
|
|
|
|
// Assert
|
|
expect(result, isNull);
|
|
});
|
|
|
|
test('SHOULD return null WHEN autocomplete capability is not supported', () {
|
|
// Arrange
|
|
final session = Session(
|
|
{},
|
|
{
|
|
AccountFixtures.aliceAccountId: Account(
|
|
AccountName('Alice'),
|
|
true,
|
|
false,
|
|
{},
|
|
)
|
|
},
|
|
{},
|
|
UserName(''),
|
|
Uri(),
|
|
Uri(),
|
|
Uri(),
|
|
Uri(),
|
|
State(''));
|
|
|
|
// Act
|
|
final result = session.getMinInputLengthAutocomplete(AccountFixtures.aliceAccountId);
|
|
|
|
// Assert
|
|
expect(result, isNull);
|
|
});
|
|
});
|
|
|
|
group('getContactSupportCapability::test', () {
|
|
test('SHOULD return ContactSupportCapability WHEN ContactSupportCapability is available', () {
|
|
// Arrange
|
|
final contactSupportCapability = ContactSupportCapability(
|
|
supportMailAddress: 'contact.support@example.com',
|
|
httpLink: 'https://contact.support',
|
|
);
|
|
final session = Session(
|
|
{
|
|
SessionExtensions.linagoraContactSupportCapability: contactSupportCapability
|
|
},
|
|
{
|
|
AccountFixtures.aliceAccountId: Account(
|
|
AccountName('Alice'),
|
|
true,
|
|
false,
|
|
{
|
|
SessionExtensions.linagoraContactSupportCapability: contactSupportCapability
|
|
},
|
|
)
|
|
},
|
|
{},
|
|
UserName(''),
|
|
Uri(),
|
|
Uri(),
|
|
Uri(),
|
|
Uri(),
|
|
State(''),
|
|
);
|
|
|
|
// Act
|
|
final result = session.getContactSupportCapability(AccountFixtures.aliceAccountId);
|
|
|
|
// Assert
|
|
expect(result?.supportMailAddress, equals(contactSupportCapability.supportMailAddress));
|
|
expect(result?.httpLink, equals(contactSupportCapability.httpLink));
|
|
});
|
|
|
|
test('SHOULD return null WHEN ContactSupportCapability is not available', () {
|
|
// Arrange
|
|
final session = Session(
|
|
{
|
|
SessionExtensions.linagoraContactSupportCapability: EmptyCapability()
|
|
},
|
|
{
|
|
AccountFixtures.aliceAccountId: Account(
|
|
AccountName('Alice'),
|
|
true,
|
|
false,
|
|
{
|
|
SessionExtensions.linagoraContactSupportCapability: EmptyCapability()
|
|
},
|
|
)
|
|
},
|
|
{},
|
|
UserName(''),
|
|
Uri(),
|
|
Uri(),
|
|
Uri(),
|
|
Uri(),
|
|
State(''),
|
|
);
|
|
|
|
// Act
|
|
final result = session.getContactSupportCapability(AccountFixtures.aliceAccountId);
|
|
|
|
// Assert
|
|
expect(result, isNull);
|
|
});
|
|
|
|
test('SHOULD return null WHEN ContactSupportCapability is not supported', () {
|
|
// Arrange
|
|
final session = Session(
|
|
{},
|
|
{
|
|
AccountFixtures.aliceAccountId: Account(
|
|
AccountName('Alice'),
|
|
true,
|
|
false,
|
|
{},
|
|
)
|
|
},
|
|
{},
|
|
UserName(''),
|
|
Uri(),
|
|
Uri(),
|
|
Uri(),
|
|
Uri(),
|
|
State(''),
|
|
);
|
|
|
|
// Act
|
|
final result = session.getContactSupportCapability(AccountFixtures.aliceAccountId);
|
|
|
|
// Assert
|
|
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);
|
|
});
|
|
});
|
|
}
|