package com.constellio.model.services.parser;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import org.apache.tika.fork.ForkParser;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import com.constellio.sdk.tests.ConstellioTest;
public class ForkParsersTest extends ConstellioTest {
@Mock ForkParser forkParser, anotherForkParser;
int forkParserPoolSize = 7;
ForkParsers forkParsers;
@Before
public void setUp() {
forkParsers = spy(new ForkParsers(forkParserPoolSize));
}
@Test
public void givenForkParsersInstanciatedThemNoForkParserInitialized()
throws Exception {
verify(forkParsers, never()).newForkParser();
}
@Test
public void givenForkParsersNotInitializedWhenGetForkParserThenInitializedItWithPoolSize()
throws Exception {
doReturn(forkParser).when(forkParsers).newForkParser();
assertThat(forkParsers.getForkParser()).isSameAs(forkParser);
verify(forkParsers).newForkParser();
verify(forkParser).setPoolSize(forkParserPoolSize);
}
@Test
public void givenForkParsersInitializedNotInitializedWhenGetForkParserThenReturnPreviousForkParser()
throws Exception {
doReturn(forkParser).when(forkParsers).newForkParser();
assertThat(forkParsers.getForkParser()).isSameAs(forkParser);
assertThat(forkParsers.getForkParser()).isSameAs(forkParser);
verify(forkParsers).newForkParser();
}
@Test
public void givenForkParserInitializedWhenCloseThenCloseForkParser()
throws Exception {
doReturn(forkParser).when(forkParsers).newForkParser();
assertThat(forkParsers.getForkParser()).isSameAs(forkParser);
forkParsers.close();
verify(forkParser).close();
}
@Test
public void givenForkParserClosedWhenGettingForkParserThenAnotherForkParserInstanciatedWithPoolSize()
throws Exception {
doReturn(forkParser).doReturn(anotherForkParser).when(forkParsers).newForkParser();
forkParsers.getForkParser();
forkParsers.close();
assertThat(forkParsers.getForkParser()).isSameAs(anotherForkParser);
verify(anotherForkParser).setPoolSize(forkParserPoolSize);
}
@Test
public void givenForkParsersNotInitializedWhenCloseThenNothingHappens() {
forkParsers.close();
verify(forkParser, never()).close();
}
}