Hotfix conflict role Spam/Junk
This commit is contained in:
@@ -0,0 +1,140 @@
|
||||
import 'package:core/data/model/source_type/data_source_type.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/id.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:mockito/annotations.dart';
|
||||
import 'package:mockito/mockito.dart';
|
||||
import 'package:model/extensions/mailbox_extension.dart';
|
||||
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:model/extensions/session_extension.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/datasource/mailbox_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/datasource_impl/mailbox_cache_datasource_impl.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/model/jmap_mailbox_response.dart';
|
||||
import 'package:tmail_ui_user/features/push_notification/data/datasource/fcm_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/push_notification/data/datasource_impl/cache_fcm_datasource_impl.dart';
|
||||
import 'package:tmail_ui_user/features/push_notification/data/repository/fcm_repository_impl.dart';
|
||||
import 'package:tmail_ui_user/features/push_notification/domain/repository/fcm_repository.dart';
|
||||
import 'package:tmail_ui_user/features/thread/data/datasource/thread_datasource.dart';
|
||||
|
||||
import '../../fixtures/session_fixtures.dart';
|
||||
|
||||
import 'fcm_repository_test.mocks.dart';
|
||||
|
||||
@GenerateMocks([
|
||||
FCMDatasource,
|
||||
CacheFCMDatasourceImpl,
|
||||
MailboxDataSource,
|
||||
MailboxCacheDataSourceImpl,
|
||||
ThreadDataSource
|
||||
])
|
||||
void main() {
|
||||
late FCMDatasource fcmDatasource;
|
||||
late CacheFCMDatasourceImpl cacheFCMDatasourceImpl;
|
||||
late MailboxDataSource mailboxDataSource;
|
||||
late MailboxCacheDataSourceImpl mailboxCacheDataSourceImpl;
|
||||
late ThreadDataSource threadDataSource;
|
||||
late FCMRepository fcmRepository;
|
||||
|
||||
final sessionFixture = SessionFixtures.aliceSession;
|
||||
final accountIdFixture = SessionFixtures.aliceSession.accountId;
|
||||
final userNameFixture = SessionFixtures.aliceSession.username;
|
||||
|
||||
group('getMailboxesNotPutNotifications_method::test', () {
|
||||
setUp(() {
|
||||
fcmDatasource = MockFCMDatasource();
|
||||
cacheFCMDatasourceImpl = MockCacheFCMDatasourceImpl();
|
||||
mailboxDataSource = MockMailboxDataSource();
|
||||
mailboxCacheDataSourceImpl = MockMailboxCacheDataSourceImpl();
|
||||
threadDataSource = MockThreadDataSource();
|
||||
fcmRepository = FCMRepositoryImpl(
|
||||
{
|
||||
DataSourceType.network: fcmDatasource,
|
||||
DataSourceType.local: cacheFCMDatasourceImpl
|
||||
},
|
||||
threadDataSource,
|
||||
{
|
||||
DataSourceType.network: mailboxDataSource,
|
||||
DataSourceType.local: mailboxCacheDataSourceImpl
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
test('should returns mailboxes with notifications deactivated from local cache', () async {
|
||||
// Arrange
|
||||
final Mailbox mailbox1 = Mailbox(
|
||||
id: MailboxId(Id('spam-id')),
|
||||
role: PresentationMailbox.roleSpam);
|
||||
final Mailbox mailbox2 = Mailbox(
|
||||
id: MailboxId(Id('inbox-id')),
|
||||
role: PresentationMailbox.roleInbox);
|
||||
when(mailboxCacheDataSourceImpl.getAllMailboxCache(
|
||||
accountIdFixture,
|
||||
userNameFixture
|
||||
)).thenAnswer((_) async => [mailbox1, mailbox2]);
|
||||
|
||||
// Act
|
||||
final result = await fcmRepository.getMailboxesNotPutNotifications(
|
||||
sessionFixture,
|
||||
accountIdFixture);
|
||||
|
||||
// Assert
|
||||
expect(mailbox1.pushNotificationDeactivated, isTrue);
|
||||
expect(mailbox2.pushNotificationDeactivated, isFalse);
|
||||
expect(result, hasLength(1));
|
||||
expect(result.first.pushNotificationDeactivated, isTrue);
|
||||
});
|
||||
|
||||
test('should falls back to network source if local cache is empty', () async {
|
||||
// Arrange
|
||||
when(mailboxCacheDataSourceImpl.getAllMailboxCache(
|
||||
accountIdFixture,
|
||||
userNameFixture
|
||||
)).thenAnswer((_) async => []);
|
||||
|
||||
final Mailbox mailbox1 = Mailbox(
|
||||
id: MailboxId(Id('spam-id')),
|
||||
role: PresentationMailbox.roleSpam);
|
||||
final mailboxResponse = JmapMailboxResponse(mailboxes: [mailbox1]);
|
||||
when(mailboxDataSource.getAllMailbox(
|
||||
sessionFixture,
|
||||
accountIdFixture
|
||||
)).thenAnswer((_) async => mailboxResponse);
|
||||
|
||||
// Act
|
||||
final result = await fcmRepository.getMailboxesNotPutNotifications(
|
||||
sessionFixture,
|
||||
accountIdFixture);
|
||||
|
||||
// Assert
|
||||
expect(mailbox1.pushNotificationDeactivated, isTrue);
|
||||
expect(result, hasLength(1));
|
||||
expect(result.first.pushNotificationDeactivated, isTrue);
|
||||
});
|
||||
|
||||
test('should returns empty list if no mailboxes have notifications deactivated', () async {
|
||||
// Arrange
|
||||
final Mailbox mailbox1 = Mailbox(
|
||||
id: MailboxId(Id('inbox-id')),
|
||||
role: PresentationMailbox.roleInbox);
|
||||
when(mailboxCacheDataSourceImpl.getAllMailboxCache(
|
||||
accountIdFixture,
|
||||
userNameFixture
|
||||
)).thenAnswer((_) async => [mailbox1]);
|
||||
final mailboxResponse = JmapMailboxResponse(mailboxes: [mailbox1]);
|
||||
when(mailboxDataSource.getAllMailbox(
|
||||
sessionFixture,
|
||||
accountIdFixture
|
||||
)).thenAnswer((_) async => mailboxResponse);
|
||||
|
||||
// Act
|
||||
final result = await fcmRepository.getMailboxesNotPutNotifications(
|
||||
sessionFixture,
|
||||
accountIdFixture);
|
||||
|
||||
// Assert
|
||||
expect(mailbox1.pushNotificationDeactivated, isFalse);
|
||||
expect(result, isEmpty);
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user