From a84b7656bd963984812856caa5320675b0a2f38b Mon Sep 17 00:00:00 2001 From: dab246 Date: Fri, 9 Jan 2026 20:07:46 +0700 Subject: [PATCH] TF-4142 Add tests to verify `inMailbox` in filter --- .../filters/mailbox_filter_builder_test.dart | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/test/features/thread/presentation/filters/mailbox_filter_builder_test.dart b/test/features/thread/presentation/filters/mailbox_filter_builder_test.dart index 7a0782cda..b16ed5e2c 100644 --- a/test/features/thread/presentation/filters/mailbox_filter_builder_test.dart +++ b/test/features/thread/presentation/filters/mailbox_filter_builder_test.dart @@ -367,4 +367,77 @@ void main() { }, ); }); + + group('inMailbox parameter - regression test', () { + test( + 'Default mailbox with All filter → includes inMailbox', + () { + final testMailbox = mailbox(); // inbox with id 'inbox' + final builder = MailboxFilterBuilder( + selectedMailbox: testMailbox, + filterMessageOption: FilterMessageOption.all, + ); + + final emailFilter = builder.buildEmailFilterForLoadMailbox(); + final filter = emailFilter.filter as EmailFilterCondition; + + // Verify inMailbox is present + expect(filter.inMailbox, equals(testMailbox.id)); + }, + ); + + test( + 'Default mailbox with Unread filter → includes inMailbox', + () { + final testMailbox = mailbox(); + final builder = MailboxFilterBuilder( + selectedMailbox: testMailbox, + filterMessageOption: FilterMessageOption.unread, + ); + + final emailFilter = builder.buildEmailFilterForLoadMailbox(); + final filter = emailFilter.filter as EmailFilterCondition; + + expect(filter.inMailbox, equals(testMailbox.id)); + expect(filter.notKeyword, KeyWordIdentifier.emailSeen.value); + }, + ); + + test( + 'Default mailbox with Attachments filter → includes inMailbox', + () { + final testMailbox = mailbox(); + final builder = MailboxFilterBuilder( + selectedMailbox: testMailbox, + filterMessageOption: FilterMessageOption.attachments, + ); + + final emailFilter = builder.buildEmailFilterForLoadMailbox(); + final filter = emailFilter.filter as EmailFilterCondition; + + expect(filter.inMailbox, equals(testMailbox.id)); + expect(filter.hasAttachment, true); + }, + ); + + test( + 'Virtual folder Action Required → does NOT include inMailbox', + () { + final builder = MailboxFilterBuilder( + selectedMailbox: mailbox(actionRequired: true), + filterMessageOption: FilterMessageOption.all, + ); + + final emailFilter = builder.buildEmailFilterForLoadMailbox(); + final filter = emailFilter.filter as EmailFilterCondition; + + // Virtual folders should NOT have inMailbox - they aggregate across all + expect(filter.inMailbox, isNull); + expect( + filter.hasKeyword, + KeyWordIdentifierExtension.needsActionMail.value, + ); + }, + ); + }); }