This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 164404f9b86a0a5f458f1041646ede9f687fbcfb
Author: TungTV <vtt...@linagora.com>
AuthorDate: Mon Nov 4 15:04:38 2024 +0700

    JAMES-2182 Lucene search highlight - moving test case 
`shouldHighlightAttachmentTextContentWhenTextBodyDoesNotMatch` to contract class
---
 .../searchhighligt/SearchHighLighterContract.java  | 39 ++++++++++++++++
 .../search/LuceneMemorySearchHighLighterTest.java  | 54 ----------------------
 .../search/OpenSearchSearchHighlighterTest.java    | 48 -------------------
 3 files changed, 39 insertions(+), 102 deletions(-)

diff --git 
a/mailbox/api/src/test/java/org/apache/james/mailbox/searchhighligt/SearchHighLighterContract.java
 
b/mailbox/api/src/test/java/org/apache/james/mailbox/searchhighligt/SearchHighLighterContract.java
index e273e95e9c..8083639e87 100644
--- 
a/mailbox/api/src/test/java/org/apache/james/mailbox/searchhighligt/SearchHighLighterContract.java
+++ 
b/mailbox/api/src/test/java/org/apache/james/mailbox/searchhighligt/SearchHighLighterContract.java
@@ -37,6 +37,7 @@ import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.MultimailboxesSearchQuery;
 import org.apache.james.mailbox.model.SearchQuery;
 import org.apache.james.mime4j.dom.Message;
+import org.apache.james.util.ClassLoaderUtils;
 import org.junit.jupiter.api.Test;
 
 import reactor.core.publisher.Flux;
@@ -465,4 +466,42 @@ public interface SearchHighLighterContract {
             .collectList()
             .block()).hasSize(0);
     }
+
+    @Test
+    default void 
shouldHighlightAttachmentTextContentWhenTextBodyDoesNotMatch() throws Exception 
{
+        MailboxSession session = session(USERNAME1);
+
+        ComposedMessageId m1 = appendMessage(MessageManager.AppendCommand.from(
+                Message.Builder.of()
+                    .setTo("to@james.local")
+                    .setSubject("Hallo, Thx Matthieu for your help")
+                    .setBody("append contentA to inbox", 
StandardCharsets.UTF_8)),
+            session).getId();
+
+        // m2 has an attachment with text content: "This is a beautiful banana"
+        ComposedMessageId m2 = appendMessage(
+            MessageManager.AppendCommand.builder()
+                
.build(ClassLoaderUtils.getSystemResourceAsSharedStream("eml/emailWithTextAttachment.eml")),
+            session).getId();
+
+        verifyMessageWasIndexed(2);
+
+        String keywordSearch = "beautiful";
+        MultimailboxesSearchQuery multiMailboxSearch = 
MultimailboxesSearchQuery.from(SearchQuery.of(
+                new 
SearchQuery.ConjunctionCriterion(SearchQuery.Conjunction.OR,
+                    List.of(SearchQuery.bodyContains(keywordSearch),
+                        SearchQuery.attachmentContains(keywordSearch)))))
+            .inMailboxes(List.of(m1.getMailboxId(), m2.getMailboxId()))
+            .build();
+
+        List<SearchSnippet> searchSnippets = 
Flux.from(testee().highlightSearch(List.of(m1.getMessageId(), 
m2.getMessageId()), multiMailboxSearch, session))
+            .collectList()
+            .block();
+
+        assertThat(searchSnippets).hasSize(1);
+
+        assertThat(searchSnippets.getFirst().highlightedBody())
+            .isPresent()
+            .satisfies(highlightedBody -> 
assertThat(highlightedBody.get()).contains("This is a <mark>beautiful</mark> 
banana"));
+    }
 }
diff --git 
a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMemorySearchHighLighterTest.java
 
b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMemorySearchHighLighterTest.java
index 23af88f0b8..1ac768d18a 100644
--- 
a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMemorySearchHighLighterTest.java
+++ 
b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMemorySearchHighLighterTest.java
@@ -19,45 +19,32 @@
 package org.apache.james.mailbox.lucene.search;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.jupiter.api.Assumptions.assumeTrue;
-
-import java.nio.charset.StandardCharsets;
-import java.util.List;
 
 import org.apache.james.core.Username;
-import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.inmemory.InMemoryId;
 import org.apache.james.mailbox.inmemory.InMemoryMessageId;
 import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
-import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxACL;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageId;
-import org.apache.james.mailbox.model.MultimailboxesSearchQuery;
 import org.apache.james.mailbox.model.SearchQuery;
 import org.apache.james.mailbox.searchhighligt.SearchHighLighterContract;
 import org.apache.james.mailbox.searchhighligt.SearchHighlighter;
 import org.apache.james.mailbox.searchhighligt.SearchHighlighterConfiguration;
-import org.apache.james.mailbox.searchhighligt.SearchSnippet;
 import org.apache.james.mailbox.store.StoreMailboxManager;
 import org.apache.james.mailbox.store.StoreMessageManager;
 import org.apache.james.mailbox.store.extractor.JsoupTextExtractor;
 import org.apache.james.mailbox.store.search.MessageSearchIndex;
-import org.apache.james.mime4j.dom.Message;
-import org.apache.james.util.ClassLoaderUtils;
 import org.apache.lucene.store.ByteBuffersDirectory;
 import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
 
 import com.github.fge.lambdas.Throwing;
 
-import reactor.core.publisher.Flux;
-
 class LuceneMemorySearchHighLighterTest implements SearchHighLighterContract {
     private MessageSearchIndex messageSearchIndex;
     private StoreMailboxManager storeMailboxManager;
@@ -127,45 +114,4 @@ class LuceneMemorySearchHighLighterTest implements 
SearchHighLighterContract {
             session(owner))).run();
     }
 
-
-    @Test
-    void shouldHighlightAttachmentTextContentWhenTextBodyDoesNotMatch() throws 
Exception {
-        
assumeTrue(storeMailboxManager.getSupportedSearchCapabilities().contains(MailboxManager.SearchCapabilities.Attachment));
-        MailboxSession session = session(USERNAME1);
-
-        ComposedMessageId m1 = appendMessage(MessageManager.AppendCommand.from(
-                Message.Builder.of()
-                    .setTo("to@james.local")
-                    .setSubject("Hallo, Thx Matthieu for your help")
-                    .setBody("append contentA to inbox", 
StandardCharsets.UTF_8)),
-            session).getId();
-
-        // m2 has an attachment with text content: "This is a beautiful banana"
-        ComposedMessageId m2 = inboxMessageManager.appendMessage(
-            MessageManager.AppendCommand.builder()
-                
.build(ClassLoaderUtils.getSystemResourceAsSharedStream("eml/emailWithTextAttachment.eml")),
-            session).getId();
-
-        verifyMessageWasIndexed(2);
-
-        String keywordSearch = "beautiful";
-        MultimailboxesSearchQuery multiMailboxSearch = 
MultimailboxesSearchQuery.from(SearchQuery.of(
-                new 
SearchQuery.ConjunctionCriterion(SearchQuery.Conjunction.OR,
-                    List.of(SearchQuery.bodyContains(keywordSearch),
-                        SearchQuery.attachmentContains(keywordSearch)))))
-            .inMailboxes(List.of(m1.getMailboxId(), m2.getMailboxId()))
-            .build();
-
-        List<SearchSnippet> searchSnippets = 
Flux.from(testee().highlightSearch(List.of(m1.getMessageId(), 
m2.getMessageId()), multiMailboxSearch, session))
-            .collectList()
-            .block();
-
-        assertThat(searchSnippets).hasSize(1);
-
-        assertThat(searchSnippets.getFirst().highlightedBody())
-            .isPresent()
-            .satisfies(highlightedBody -> {
-                assertThat(highlightedBody.get()).contains("This is a 
<mark>beautiful</mark> banana");
-            });
-    }
 }
diff --git 
a/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/search/OpenSearchSearchHighlighterTest.java
 
b/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/search/OpenSearchSearchHighlighterTest.java
index a0d73e19ba..ef4503a78d 100644
--- 
a/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/search/OpenSearchSearchHighlighterTest.java
+++ 
b/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/search/OpenSearchSearchHighlighterTest.java
@@ -22,12 +22,9 @@ package org.apache.james.mailbox.opensearch.search;
 import static 
org.apache.james.mailbox.opensearch.search.OpenSearchSearcherTest.SEARCH_SIZE;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.awaitility.Durations.ONE_HUNDRED_MILLISECONDS;
-import static org.junit.jupiter.api.Assumptions.assumeTrue;
 
 import java.io.IOException;
-import java.nio.charset.StandardCharsets;
 import java.time.ZoneId;
-import java.util.List;
 import java.util.UUID;
 
 import org.apache.james.backends.opensearch.DockerOpenSearchExtension;
@@ -37,18 +34,15 @@ import 
org.apache.james.backends.opensearch.ReactorOpenSearchClient;
 import org.apache.james.backends.opensearch.ReadAliasName;
 import org.apache.james.backends.opensearch.WriteAliasName;
 import org.apache.james.core.Username;
-import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.inmemory.InMemoryMessageId;
 import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
-import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.Mailbox;
 import org.apache.james.mailbox.model.MailboxACL;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageId;
-import org.apache.james.mailbox.model.MultimailboxesSearchQuery;
 import org.apache.james.mailbox.model.SearchQuery;
 import org.apache.james.mailbox.opensearch.IndexAttachments;
 import org.apache.james.mailbox.opensearch.IndexHeaders;
@@ -61,7 +55,6 @@ import 
org.apache.james.mailbox.opensearch.query.CriterionConverter;
 import org.apache.james.mailbox.opensearch.query.QueryConverter;
 import org.apache.james.mailbox.searchhighligt.SearchHighLighterContract;
 import org.apache.james.mailbox.searchhighligt.SearchHighlighter;
-import org.apache.james.mailbox.searchhighligt.SearchSnippet;
 import org.apache.james.mailbox.store.StoreMailboxManager;
 import org.apache.james.mailbox.store.StoreMessageManager;
 import org.apache.james.mailbox.store.search.MessageSearchIndex;
@@ -70,22 +63,17 @@ import org.apache.james.mailbox.tika.TikaExtension;
 import org.apache.james.mailbox.tika.TikaHttpClientImpl;
 import org.apache.james.mailbox.tika.TikaTextExtractor;
 import org.apache.james.metrics.tests.RecordingMetricFactory;
-import org.apache.james.mime4j.dom.Message;
-import org.apache.james.util.ClassLoaderUtils;
 import org.awaitility.Awaitility;
 import org.awaitility.Durations;
 import org.awaitility.core.ConditionFactory;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
 import com.github.fge.lambdas.Throwing;
 import com.google.common.collect.ImmutableSet;
 
-import reactor.core.publisher.Flux;
-
 public class OpenSearchSearchHighlighterTest implements 
SearchHighLighterContract {
     private MessageSearchIndex messageSearchIndex;
     private StoreMailboxManager storeMailboxManager;
@@ -205,40 +193,4 @@ public class OpenSearchSearchHighlighterTest implements 
SearchHighLighterContrac
                 .isEqualTo(indexedMessageCount));
     }
 
-    @Test
-    void shouldHighlightAttachmentTextContentWhenTextBodyDoesNotMatch() throws 
Exception {
-        
assumeTrue(storeMailboxManager.getSupportedSearchCapabilities().contains(MailboxManager.SearchCapabilities.Attachment));
-        MailboxSession session = session(USERNAME1);
-
-        ComposedMessageId m1 = appendMessage(MessageManager.AppendCommand.from(
-                Message.Builder.of()
-                    .setTo("to@james.local")
-                    .setSubject("Hallo, Thx Matthieu for your help")
-                    .setBody("append contentA to inbox", 
StandardCharsets.UTF_8)),
-            session).getId();
-
-        // m2 has an attachment with text content: "This is a beautiful banana"
-        ComposedMessageId m2 = inboxMessageManager.appendMessage(
-            MessageManager.AppendCommand.builder()
-                
.build(ClassLoaderUtils.getSystemResourceAsSharedStream("eml/emailWithTextAttachment.eml")),
-            session).getId();
-
-        verifyMessageWasIndexed(2);
-
-        String keywordSearch = "beautiful";
-        MultimailboxesSearchQuery multiMailboxSearch = 
MultimailboxesSearchQuery.from(SearchQuery.of(
-                new 
SearchQuery.ConjunctionCriterion(SearchQuery.Conjunction.OR,
-                    List.of(SearchQuery.bodyContains(keywordSearch),
-                        SearchQuery.attachmentContains(keywordSearch)))))
-            .inMailboxes(List.of(m1.getMailboxId(), m2.getMailboxId()))
-            .build();
-
-        List<SearchSnippet> searchSnippets = 
Flux.from(testee().highlightSearch(List.of(m1.getMessageId(), 
m2.getMessageId()), multiMailboxSearch, session))
-            .collectList()
-            .block();
-
-        assertThat(searchSnippets).hasSize(1);
-        assertThat(searchSnippets.getFirst().highlightedBody()).contains("This 
is a <mark>beautiful</mark> banana.");
-    }
-
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org

Reply via email to