149 lines
5.1 KiB
Dart
149 lines
5.1 KiB
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/session/session.dart';
|
|
import 'package:jmap_dart_client/jmap/core/state.dart';
|
|
import 'package:jmap_dart_client/jmap/core/user_name.dart';
|
|
import 'package:model/model.dart';
|
|
import 'package:tmail_ui_user/features/home/domain/extensions/session_extensions.dart';
|
|
import 'package:tmail_ui_user/features/paywall/presentation/saas_premium_mixin.dart';
|
|
|
|
import '../../fixtures/account_fixtures.dart';
|
|
|
|
class TestClass with SaaSPremiumMixin {}
|
|
|
|
void main() {
|
|
late TestClass testClass;
|
|
|
|
setUp(() {
|
|
testClass = TestClass();
|
|
});
|
|
|
|
group('SaaSPremiumMixin.isPremiumAvailable', () {
|
|
test('should return false when accountId is null', () {
|
|
final session = Session(
|
|
{SessionExtensions.linagoraSaaSCapability: SaaSAccountCapability()},
|
|
{},
|
|
{},
|
|
UserName('alice@domain.tld'),
|
|
Uri.parse('http://domain.com/jmap'),
|
|
Uri.parse(
|
|
'http://domain.com/download/{accountId}/{blobId}/?type={type}&name={name}'),
|
|
Uri.parse('http://domain.com/upload/{accountId}'),
|
|
Uri.parse(
|
|
'http://domain.com/eventSource?types={types}&closeAfter={closeafter}&ping={ping}'),
|
|
State('2c9f1b12-b35a-43e6-9af2-0106fb53a943'),
|
|
);
|
|
final result = testClass.isPremiumAvailable(
|
|
session: session,
|
|
accountId: null,
|
|
);
|
|
expect(result, isFalse);
|
|
});
|
|
|
|
test('should return false when session is null', () {
|
|
final accountId = AccountFixtures.aliceAccountId;
|
|
final result = testClass.isPremiumAvailable(accountId: accountId);
|
|
expect(result, isFalse);
|
|
});
|
|
|
|
test('should return false when session without SaaS capability', () {
|
|
final accountId = AccountFixtures.aliceAccountId;
|
|
final session = Session(
|
|
{},
|
|
{
|
|
AccountFixtures.aliceAccountId:
|
|
Account(AccountName('alice@domain.tld'), true, false, {})
|
|
},
|
|
{},
|
|
UserName('alice@domain.tld'),
|
|
Uri.parse('http://domain.com/jmap'),
|
|
Uri.parse(
|
|
'http://domain.com/download/{accountId}/{blobId}/?type={type}&name={name}'),
|
|
Uri.parse('http://domain.com/upload/{accountId}'),
|
|
Uri.parse(
|
|
'http://domain.com/eventSource?types={types}&closeAfter={closeafter}&ping={ping}'),
|
|
State('2c9f1b12-b35a-43e6-9af2-0106fb53a943'),
|
|
);
|
|
final result = testClass.isPremiumAvailable(
|
|
session: session,
|
|
accountId: accountId,
|
|
);
|
|
|
|
expect(result, isFalse);
|
|
});
|
|
|
|
test('should return false when SaaS capability has canUpgrade is false',
|
|
() {
|
|
final accountId = AccountFixtures.aliceAccountId;
|
|
final session = Session(
|
|
{
|
|
SessionExtensions.linagoraSaaSCapability:
|
|
SaaSAccountCapability(canUpgrade: false)
|
|
},
|
|
{
|
|
AccountFixtures.aliceAccountId:
|
|
Account(AccountName('alice@domain.tld'), true, false, {
|
|
SessionExtensions.linagoraSaaSCapability:
|
|
SaaSAccountCapability(canUpgrade: false),
|
|
})
|
|
},
|
|
{
|
|
SessionExtensions.linagoraSaaSCapability:
|
|
AccountFixtures.aliceAccountId,
|
|
},
|
|
UserName('alice@domain.tld'),
|
|
Uri.parse('http://domain.com/jmap'),
|
|
Uri.parse(
|
|
'http://domain.com/download/{accountId}/{blobId}/?type={type}&name={name}'),
|
|
Uri.parse('http://domain.com/upload/{accountId}'),
|
|
Uri.parse(
|
|
'http://domain.com/eventSource?types={types}&closeAfter={closeafter}&ping={ping}'),
|
|
State('2c9f1b12-b35a-43e6-9af2-0106fb53a943'),
|
|
);
|
|
|
|
final result = testClass.isPremiumAvailable(
|
|
session: session,
|
|
accountId: accountId,
|
|
);
|
|
|
|
expect(result, isFalse);
|
|
});
|
|
|
|
test('should return true when SaaS capability has canUpgrade is true', () {
|
|
final accountId = AccountFixtures.aliceAccountId;
|
|
final session = Session(
|
|
{
|
|
SessionExtensions.linagoraSaaSCapability:
|
|
SaaSAccountCapability(canUpgrade: true)
|
|
},
|
|
{
|
|
AccountFixtures.aliceAccountId:
|
|
Account(AccountName('alice@domain.tld'), true, false, {
|
|
SessionExtensions.linagoraSaaSCapability:
|
|
SaaSAccountCapability(canUpgrade: true),
|
|
})
|
|
},
|
|
{
|
|
SessionExtensions.linagoraSaaSCapability:
|
|
AccountFixtures.aliceAccountId,
|
|
},
|
|
UserName('alice@domain.tld'),
|
|
Uri.parse('http://domain.com/jmap'),
|
|
Uri.parse(
|
|
'http://domain.com/download/{accountId}/{blobId}/?type={type}&name={name}'),
|
|
Uri.parse('http://domain.com/upload/{accountId}'),
|
|
Uri.parse(
|
|
'http://domain.com/eventSource?types={types}&closeAfter={closeafter}&ping={ping}'),
|
|
State('2c9f1b12-b35a-43e6-9af2-0106fb53a943'),
|
|
);
|
|
|
|
final result = testClass.isPremiumAvailable(
|
|
session: session,
|
|
accountId: accountId,
|
|
);
|
|
|
|
expect(result, isTrue);
|
|
});
|
|
});
|
|
}
|