TF-3334 Skip getting stored state in interactor when performing actions with email and mailbox

This commit is contained in:
dab246
2024-12-23 16:10:36 +07:00
committed by Dat H. Pham
parent ba93e7b514
commit 01b320ce89
52 changed files with 138 additions and 602 deletions
@@ -8,7 +8,6 @@ import 'package:tmail_ui_user/features/composer/domain/repository/composer_repos
import 'package:tmail_ui_user/features/composer/domain/usecases/create_new_and_save_email_to_drafts_interactor.dart';
import 'package:tmail_ui_user/features/composer/presentation/model/create_email_request.dart';
import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart';
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart';
import '../../../../fixtures/account_fixtures.dart';
import '../../../../fixtures/session_fixtures.dart';
@@ -16,22 +15,18 @@ import 'create_new_and_save_email_to_drafts_interactor_test.mocks.dart';
@GenerateNiceMocks([
MockSpec<EmailRepository>(),
MockSpec<MailboxRepository>(),
MockSpec<ComposerRepository>(),
])
void main() {
late MockEmailRepository emailRepository;
late MockMailboxRepository mailboxRepository;
late MockComposerRepository composerRepository;
late CreateNewAndSaveEmailToDraftsInteractor createNewAndSaveEmailToDraftsInteractor;
setUp(() {
emailRepository = MockEmailRepository();
mailboxRepository = MockMailboxRepository();
composerRepository = MockComposerRepository();
createNewAndSaveEmailToDraftsInteractor = CreateNewAndSaveEmailToDraftsInteractor(
emailRepository,
mailboxRepository,
composerRepository);
});
@@ -7,7 +7,6 @@ import 'package:tmail_ui_user/features/composer/domain/repository/composer_repos
import 'package:tmail_ui_user/features/composer/domain/usecases/create_new_and_send_email_interactor.dart';
import 'package:tmail_ui_user/features/composer/presentation/model/create_email_request.dart';
import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart';
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart';
import '../../../../fixtures/account_fixtures.dart';
import '../../../../fixtures/session_fixtures.dart';
@@ -15,16 +14,13 @@ import 'create_new_and_send_email_interactor_test.mocks.dart';
@GenerateNiceMocks([
MockSpec<EmailRepository>(),
MockSpec<MailboxRepository>(),
MockSpec<ComposerRepository>(),
])
void main() {
final emailRepository = MockEmailRepository();
final mailboxRepository = MockMailboxRepository();
final composerRepository = MockComposerRepository();
final createNewAndSendEmailInteractor = CreateNewAndSendEmailInteractor(
emailRepository,
mailboxRepository,
composerRepository);
group('create new and send email interactor test:', () {
test(
@@ -1,6 +1,5 @@
import 'package:dartz/dartz.dart' hide State;
import 'package:flutter_test/flutter_test.dart';
import 'package:jmap_dart_client/jmap/core/state.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
@@ -34,13 +33,8 @@ void main() {
const eventActionType = EventActionType.yes;
test('SHOULD emit loading and success states when storeEventAttendanceStatus is successful', () async {
final currentEmailState = State('abc123');
final updatedEmail = Email(id: emailIdFixture);
when(mockEmailRepository.getEmailState(
sessionFixture,
accountIdFixture
)).thenAnswer((_) async => currentEmailState);
when(mockEmailRepository.storeEventAttendanceStatus(
sessionFixture,
accountIdFixture,
@@ -58,13 +52,10 @@ void main() {
result,
emitsInOrder([
Right(StoreEventAttendanceStatusLoading()),
Right(StoreEventAttendanceStatusSuccess(
eventActionType,
currentEmailState: currentEmailState)),
Right(StoreEventAttendanceStatusSuccess(eventActionType)),
]),
);
verify(mockEmailRepository.getEmailState(sessionFixture, accountIdFixture)).called(1);
verify(mockEmailRepository.storeEventAttendanceStatus(
sessionFixture,
accountIdFixture,
@@ -77,9 +68,11 @@ void main() {
test('SHOULD emit loading and failure states when storeEventAttendanceStatus throws an exception', () async {
final exception = Exception();
when(mockEmailRepository.getEmailState(
when(mockEmailRepository.storeEventAttendanceStatus(
sessionFixture,
accountIdFixture
accountIdFixture,
emailIdFixture,
eventActionType,
)).thenThrow(exception);
final result = storeEventAttendanceStatusInteractor.execute(
@@ -95,12 +88,6 @@ void main() {
Left(StoreEventAttendanceStatusFailure(exception: exception)),
]),
);
verify(mockEmailRepository.getEmailState(
sessionFixture,
accountIdFixture
)).called(1);
verifyNoMoreInteractions(mockEmailRepository);
});
});
}