dnet-core/dnet-core-services/src/test/java/eu/dnetlib/enabling/resultset/push/TransientPushResultSetImplT...

167 lines
3.4 KiB
Java

package eu.dnetlib.enabling.resultset.push;
import static org.junit.Assert.*; // NOPMD
import static org.mockito.Mockito.*; // NOPMD
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import com.google.common.collect.Lists;
import eu.dnetlib.enabling.resultset.ResultSetRegistry;
/**
* test the transient push resultset.
*
* @author marko
*
*/
@RunWith(MockitoJUnitRunner.class)
public class TransientPushResultSetImplTest {
/**
* first test value.
*/
private static final String ONE = "one";
/**
* second test value.
*/
private static final String TWO = "two";
/**
* test rs id.
*/
private static final String RS_ID = "123";
/**
* instance to be tested.
*/
private transient TransientPushResultSetImpl resultSet;
/**
* dao mock.
*/
@Mock
private transient TransientPushResultSetDao dao;
/**
* resultset registry mock.
*/
@Mock
private transient ResultSetRegistry registry;
/**
* setup class to be tested.
*
* @throws Exception
*/
@Before
public void setUp() {
resultSet = new TransientPushResultSetImpl(dao);
resultSet.setIdentifier(RS_ID);
resultSet.getDao(); // getter code coverage hack
}
/**
* test adding elements.
*/
@Test
public void testAddElements() {
final List<String> list = new ArrayList<String>();
list.add(ONE);
resultSet.addElements(list);
verify(dao).addElements(RS_ID, list);
assertNotNull("dummy", resultSet);
}
/**
* test get number of results.
*/
@Test
public void testGetNumberOfResults() {
when(dao.getSize(RS_ID)).thenReturn(1);
assertEquals("check size", 1, resultSet.getNumberOfResults());
}
/**
* get result.
*/
@Test
public void testGetResults() {
final List<String> list = new ArrayList<String>();
list.add(TWO);
when(dao.getSize(RS_ID)).thenReturn(2);
when(dao.getElements(RS_ID, 2, 2)).thenReturn(list);
assertEquals("check list", TWO, resultSet.getResults(2, 2).get(0));
assertEquals("check size", 1, resultSet.getResults(2, 2).size());
}
/**
* test when indices are out of range, trailing stuff should be skipped.
*/
@Test
public void testGetResultOutOfRange() {
final List<String> list = new ArrayList<String>();
list.add(TWO);
when(dao.getSize(RS_ID)).thenReturn(2);
when(dao.getElements(RS_ID, 2, 2)).thenReturn(list);
assertEquals("check list", TWO, resultSet.getResults(2, 2 + 1).get(0));
assertEquals("check size", 1, resultSet.getResults(2, 2 + 1).size());
}
/**
* open.
*/
@Test
public void testIsOpen() {
assertTrue("check is open by default", resultSet.isOpen());
}
/**
* test close.
*/
@Test
public void testClose() {
resultSet.addObserver(registry);
assertEquals("observer should be added", 1, resultSet.countObservers());
resultSet.destroy();
assertTrue("should be destroyed", resultSet.isDestroyed());
assertEquals("observers should be cleared", 0, resultSet.countObservers());
verify(registry, times(1)).update(resultSet, null);
}
@Test
public void testFromAfterSize() {
final List<String> list = new ArrayList<String>();
list.add(TWO);
when(dao.getSize(RS_ID)).thenReturn(2);
when(dao.getElements(RS_ID, 2, 2)).thenReturn(list);
resultSet.getResults(3, 2);
}
@Test(expected = IllegalStateException.class)
public void testWriteClosed() {
resultSet.close();
resultSet.addElements(Lists.newArrayList("test"));
}
}