TF-3912 Thread Detail Fix real time update

This commit is contained in:
DatDang
2025-07-29 16:43:03 +07:00
committed by Dat H. Pham
parent 4f0c783ea7
commit c7f5dc9e5e
12 changed files with 262 additions and 7 deletions
@@ -3,6 +3,7 @@ import 'package:flutter_test/flutter_test.dart';
import 'package:get/get.dart';
import 'package:jmap_dart_client/jmap/core/id.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
@@ -129,4 +130,131 @@ void main() {
},
);
});
group('validateNewCreatedEmailForCurrentThread test:', () {
test(
'should return false '
'when email is not in same thread as current thread',
() {
// arrange
final email = Email(threadId: ThreadId(Id('other-thread-id')));
final threadId = ThreadId(Id('thread-id'));
// act
final result = threadDetailController.validateNewCreatedEmailForCurrentThread(
email,
threadId,
);
// assert
expect(result, false);
});
test(
'should return true '
'when email is in same thread as current thread '
'and email is not in sent mailbox',
() {
// arrange
final threadId = ThreadId(Id('thread-id'));
final sentMailboxId = MailboxId(Id('sent-mailbox-id'));
final email = Email(threadId: threadId);
when(threadDetailController.sentMailboxId).thenReturn(sentMailboxId);
// act
final result = threadDetailController.validateNewCreatedEmailForCurrentThread(
email,
threadId,
);
// assert
expect(result, true);
});
test(
'should return true '
'when email is in same thread as current thread '
'and email is in sent mailbox '
'and email is not sent by current user',
() {
// arrange
final threadId = ThreadId(Id('thread-id'));
final sentMailboxId = MailboxId(Id('sent-mailbox-id'));
final email = Email(
threadId: threadId,
mailboxIds: {sentMailboxId: true},
);
const ownEmailAddress = '9jEYK@example.com';
when(threadDetailController.sentMailboxId).thenReturn(sentMailboxId);
when(threadDetailController.ownEmailAddress).thenReturn(ownEmailAddress);
// act
final result = threadDetailController.validateNewCreatedEmailForCurrentThread(
email,
threadId,
);
// assert
expect(result, true);
});
test(
'should return true '
'when email is in same thread as current thread '
'and email is in sent mailbox '
'and email is sent by current user '
'and email is not sent to current user',
() {
// arrange
final threadId = ThreadId(Id('thread-id'));
final sentMailboxId = MailboxId(Id('sent-mailbox-id'));
const ownEmailAddress = '9jEYK@example.com';
final email = Email(
threadId: threadId,
mailboxIds: {sentMailboxId: true},
from: {EmailAddress(null, ownEmailAddress)},
);
when(threadDetailController.sentMailboxId).thenReturn(sentMailboxId);
when(threadDetailController.ownEmailAddress).thenReturn(ownEmailAddress);
// act
final result = threadDetailController.validateNewCreatedEmailForCurrentThread(
email,
threadId,
);
// assert
expect(result, true);
});
test(
'should return false '
'when email is in same thread as current thread '
'and email is in sent mailbox '
'and email is sent by current user '
'and email is sent to current user',
() {
// arrange
final threadId = ThreadId(Id('thread-id'));
final sentMailboxId = MailboxId(Id('sent-mailbox-id'));
const ownEmailAddress = '9jEYK@example.com';
final email = Email(
threadId: threadId,
mailboxIds: {sentMailboxId: true},
from: {EmailAddress(null, ownEmailAddress)},
to: {EmailAddress(null, ownEmailAddress)},
);
when(threadDetailController.sentMailboxId).thenReturn(sentMailboxId);
when(threadDetailController.ownEmailAddress).thenReturn(ownEmailAddress);
// act
final result = threadDetailController.validateNewCreatedEmailForCurrentThread(
email,
threadId,
);
// assert
expect(result, false);
});
});
}