You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by rc...@apache.org on 2024/10/10 02:29:45 UTC
(james-project) 02/02: JAMES-2456 Add a test to make sure CachingTextExtractor work well after first failure call
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 16cec185053d04e6ee1f957ca895cff7a41f9aee
Author: Quan Tran <hq...@linagora.com>
AuthorDate: Tue Oct 8 15:24:24 2024 +0700
JAMES-2456 Add a test to make sure CachingTextExtractor work well after first failure call
---
.../mailbox/tika/CachingTextExtractorTest.java | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/mailbox/tika/src/test/java/org/apache/james/mailbox/tika/CachingTextExtractorTest.java b/mailbox/tika/src/test/java/org/apache/james/mailbox/tika/CachingTextExtractorTest.java
index be77065ac7..ab7b6515c5 100644
--- a/mailbox/tika/src/test/java/org/apache/james/mailbox/tika/CachingTextExtractorTest.java
+++ b/mailbox/tika/src/test/java/org/apache/james/mailbox/tika/CachingTextExtractorTest.java
@@ -19,6 +19,7 @@
package org.apache.james.mailbox.tika;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
@@ -96,6 +97,27 @@ class CachingTextExtractorTest {
verifyNoMoreInteractions(wrappedTextExtractor);
}
+ @Test
+ void cacheShouldBeRecomputedWhenSuccessSecondCallWithActualContent() {
+ // The first call fails
+ when(wrappedTextExtractor.extractContentReactive(any(), any()))
+ .thenReturn(Mono.error(() -> new IOException("test")));
+ assertThatThrownBy(() -> textExtractor.extractContent(INPUT_STREAM.get(), CONTENT_TYPE))
+ .hasRootCauseInstanceOf(IOException.class);
+ verify(wrappedTextExtractor, times(1)).extractContentReactive(any(), any());
+
+ // The second call succeeds and CachingTextExtractor should recompute the cache
+ when(wrappedTextExtractor.extractContentReactive(any(), any()))
+ .thenReturn(Mono.just(RESULT));
+ assertThat(textExtractor.extractContent(INPUT_STREAM.get(), CONTENT_TYPE))
+ .isEqualTo(RESULT);
+ verify(wrappedTextExtractor, times(2)).extractContentReactive(any(), any());
+
+ // The third call would get actual value from the cache
+ textExtractor.extractContent(INPUT_STREAM.get(), CONTENT_TYPE);
+ verifyNoMoreInteractions(wrappedTextExtractor);
+ }
+
@Test
void extractContentShouldPropagateCheckedException() {
IOException ioException = new IOException("Any");
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org