From c13fed21eda9428b9c549799ff4b8b1b4974c0c5 Mon Sep 17 00:00:00 2001 From: dab246 Date: Thu, 10 Apr 2025 12:44:41 +0700 Subject: [PATCH] TF-3621 Add unit test for case multiple `notKeyword` Signed-off-by: dab246 --- .../search/search_email_filter_test.dart | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/test/features/search/search_email_filter_test.dart b/test/features/search/search_email_filter_test.dart index 2f13df490..a98ce46b6 100644 --- a/test/features/search/search_email_filter_test.dart +++ b/test/features/search/search_email_filter_test.dart @@ -177,13 +177,50 @@ void main() { // Assert expect(result, isA()); final logicFilter = result as LogicFilterOperator; - expect(result.conditions.isNotEmpty, isTrue); + expect(result.conditions.length, equals(1)); expect(logicFilter.operator, equals(Operator.NOT)); final emailCondition = result.conditions.first as EmailFilterCondition; expect(emailCondition.text, 'hello'); expect(emailCondition.notKeyword, isNull); }); + + test( + 'SHOULD convert the notKeyword set into a NOT LogicFilterOperator containing multiple EmailFilterCondition instances,\n' + 'each representing a keyword from the set', + () { + // Arrange + // Create a SearchEmailFilter with three keywords in the notKeyword field + final filter = SearchEmailFilter( + notKeyword: {'hello', 'hi', 'bye'}, + ); + + // Act + // Call mappingToEmailFilterCondition to transform it into filter conditions + final result = filter.mappingToEmailFilterCondition(); + + // Assert + // The result should be a LogicFilterOperator with the NOT operator + expect(result, isA()); + final logicFilter = result as LogicFilterOperator; + expect(logicFilter.operator, equals(Operator.NOT)); + + // The LogicFilterOperator should contain 3 EmailFilterCondition objects, one for each keyword + expect(logicFilter.conditions.isNotEmpty, equals(true)); + expect(logicFilter.conditions.length, equals(3)); + + // Verify each EmailFilterCondition's content + final listEmailCondition = logicFilter.conditions.map((e) => e as EmailFilterCondition).toList(); + + expect(listEmailCondition[0].text, 'hello'); + expect(listEmailCondition[0].notKeyword, isNull); + + expect(listEmailCondition[1].text, 'hi'); + expect(listEmailCondition[1].notKeyword, isNull); + + expect(listEmailCondition[2].text, 'bye'); + expect(listEmailCondition[2].notKeyword, isNull); + }); }); }); }