Skip to content

Commit 5ac17b1

Browse files
committed
TF-2316 Write unit test for interactor
1 parent d34cb90 commit 5ac17b1

File tree

2 files changed

+402
-0
lines changed

2 files changed

+402
-0
lines changed
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
import 'package:dartz/dartz.dart';
2+
import 'package:flutter_test/flutter_test.dart';
3+
import 'package:mockito/annotations.dart';
4+
import 'package:mockito/mockito.dart';
5+
import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_response.dart';
6+
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart';
7+
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
8+
import 'package:tmail_ui_user/features/mailbox/domain/state/delete_multiple_mailbox_state.dart';
9+
import 'package:tmail_ui_user/features/mailbox/domain/usecases/delete_multiple_mailbox_interactor.dart';
10+
import '../../../../fixtures/account_fixtures.dart';
11+
import '../../../../fixtures/mailbox_fixtures.dart';
12+
import '../../../../fixtures/session_fixtures.dart';
13+
import 'delete_multiple_mailbox_interactor_test.mocks.dart';
14+
15+
@GenerateMocks([MailboxRepository])
16+
17+
void main() {
18+
late MailboxRepository mailboxRepository;
19+
late DeleteMultipleMailboxInteractor deleteMultipleMailboxInteractor;
20+
21+
group('[DeleteMultipleMailboxInteractor]', () {
22+
setUp(() {
23+
mailboxRepository = MockMailboxRepository();
24+
deleteMultipleMailboxInteractor = DeleteMultipleMailboxInteractor(mailboxRepository);
25+
});
26+
27+
test('deleteMultipleMailboxInteractor should execute to delete selected mailbox an all its children included hidden mailbox', () {
28+
final state = jmap.State('s1');
29+
30+
when(
31+
mailboxRepository.getMailboxState(
32+
SessionFixtures.aliceSession,
33+
AccountFixtures.aliceAccountId
34+
)
35+
).thenAnswer((_) => Future.value(state));
36+
37+
when(
38+
mailboxRepository.getAllMailbox(
39+
SessionFixtures.aliceSession,
40+
AccountFixtures.aliceAccountId
41+
)
42+
).thenAnswer((_) => Stream.fromIterable({
43+
MailboxResponse(
44+
mailboxes: [
45+
MailboxFixtures.inboxMailbox,
46+
MailboxFixtures.sentMailbox,
47+
MailboxFixtures.selectedFolderToDelete,
48+
MailboxFixtures.selectedFolderToDelete_1,
49+
MailboxFixtures.selectedFolderToDelete_2,
50+
],
51+
state: state,
52+
),
53+
MailboxResponse(
54+
mailboxes: [
55+
MailboxFixtures.inboxMailbox,
56+
MailboxFixtures.sentMailbox,
57+
MailboxFixtures.selectedFolderToDelete,
58+
MailboxFixtures.selectedFolderToDelete_1,
59+
MailboxFixtures.selectedFolderToDelete_2,
60+
MailboxFixtures.selectedFolderToDelete_3,
61+
MailboxFixtures.selectedFolderToDelete_4,
62+
MailboxFixtures.selectedFolderToDelete_5,
63+
MailboxFixtures.selectedFolderToDelete_6,
64+
MailboxFixtures.selectedFolderToDelete_7,
65+
MailboxFixtures.selectedFolderToDelete_8,
66+
MailboxFixtures.selectedFolderToDelete_9,
67+
MailboxFixtures.selectedFolderToDelete_10,
68+
],
69+
state: state,
70+
),
71+
}));
72+
73+
when(
74+
mailboxRepository.deleteMultipleMailbox(
75+
SessionFixtures.aliceSession,
76+
AccountFixtures.aliceAccountId,
77+
MailboxFixtures.listDescendantMailboxForSelectedFolder,
78+
)
79+
).thenAnswer((_) => Future.value({}));
80+
81+
when(
82+
mailboxRepository.deleteMultipleMailbox(
83+
SessionFixtures.aliceSession,
84+
AccountFixtures.aliceAccountId,
85+
MailboxFixtures.listDescendantMailboxForSelectedFolder2,
86+
)
87+
).thenAnswer((_) => Future.value({}));
88+
89+
final result = deleteMultipleMailboxInteractor.execute(
90+
SessionFixtures.aliceSession,
91+
AccountFixtures.aliceAccountId,
92+
MailboxFixtures.mapMailboxIdToDelete,
93+
MailboxFixtures.listMailboxIdToDelete
94+
);
95+
96+
expect(result, emitsInOrder([
97+
Right(LoadingDeleteMultipleMailboxAll()),
98+
Right(DeleteMultipleMailboxAllSuccess(
99+
MailboxFixtures.listMailboxIdToDelete,
100+
currentMailboxState: state
101+
)),
102+
]));
103+
});
104+
});
105+
}

0 commit comments

Comments
 (0)