package edu.asu.spring.quadriga.service.conceptcollection;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import edu.asu.spring.quadriga.conceptpower.IConceptpowerConnector;
import edu.asu.spring.quadriga.dao.conceptcollection.IConceptCollectionDAO;
import edu.asu.spring.quadriga.dao.workspace.IWorkspaceDAO;
import edu.asu.spring.quadriga.domain.conceptcollection.IConcept;
import edu.asu.spring.quadriga.domain.conceptcollection.IConceptCollection;
import edu.asu.spring.quadriga.domain.conceptcollection.IConceptCollectionCollaborator;
import edu.asu.spring.quadriga.domain.factory.conceptcollection.IConceptFactory;
import edu.asu.spring.quadriga.domain.impl.ConceptpowerReply;
import edu.asu.spring.quadriga.domain.impl.conceptcollection.Concept;
import edu.asu.spring.quadriga.domain.impl.conceptcollection.ConceptCollection;
import edu.asu.spring.quadriga.domain.impl.conceptcollection.ConceptCollectionCollaborator;
import edu.asu.spring.quadriga.domain.impl.workbench.Project;
import edu.asu.spring.quadriga.domain.impl.workspace.WorkSpace;
import edu.asu.spring.quadriga.domain.workbench.IProject;
import edu.asu.spring.quadriga.domain.workspace.IWorkSpace;
import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException;
import edu.asu.spring.quadriga.mapper.workbench.IProjectShallowMapper;
import edu.asu.spring.quadriga.service.conceptcollection.impl.ConceptCollectionManager;
import edu.asu.spring.quadriga.service.conceptcollection.mapper.IConceptCollectionDeepMapper;
import edu.asu.spring.quadriga.service.workspace.IListWSManager;
public class ConceptCollectionManagerTest {
@Mock
private IConceptCollectionDeepMapper mockedConceptCollectionDeepMapper = Mockito
.mock(IConceptCollectionDeepMapper.class);
@Mock
private IConceptpowerConnector cpConnector;
@Mock
private IProjectShallowMapper mockedProjectShallowMapper = Mockito.mock(IProjectShallowMapper.class);
@Mock
private IWorkspaceDAO mockedwsListManger = Mockito.mock(IWorkspaceDAO.class);
@Mock
private IListWSManager mockedwsManager = Mockito.mock(IListWSManager.class);
@Mock
private IConceptFactory mockedConceptFactory = Mockito.mock(IConceptFactory.class);
@Mock
private IConceptCollectionDAO mockedccDao = Mockito.mock(IConceptCollectionDAO.class);
@InjectMocks
private ConceptCollectionManager conceptCollectionManagerUnderTest;
private Concept concept;
@Before
public void setUp() throws QuadrigaStorageException {
MockitoAnnotations.initMocks(this);
List<ConceptpowerReply.ConceptEntry> conceptEntries = new ArrayList<ConceptpowerReply.ConceptEntry>();
ConceptpowerReply.ConceptEntry entry = new ConceptpowerReply.ConceptEntry();
entry.setLemma("test-lemma");
conceptEntries.add(entry);
ConceptpowerReply rep = new ConceptpowerReply();
rep.setConceptEntry(conceptEntries);
IProject project = new Project();
project.setCreatedBy("createdBy");
project.setProjectName("test project");
project.setProjectId("id");
IProject project2 = new Project();
project2.setCreatedBy("createdBy2");
project2.setProjectName("test project2");
project2.setProjectId("id2");
List<IProject> ccProjectsList = new ArrayList<IProject>();
ccProjectsList.add(project);
List<IProject> ccProjectsList2 = new ArrayList<IProject>();
ccProjectsList2.add(project);
ccProjectsList2.add(project2);
Mockito.when(cpConnector.search("item", "pos")).thenReturn(rep);
Mockito.when(cpConnector.getById("id")).thenReturn(rep);
IWorkSpace workspace = new WorkSpace();
workspace.setWorkspaceId("w-id");
workspace.setWorkspaceName("w-name");
IWorkSpace workspace2 = new WorkSpace();
workspace2.setWorkspaceId("w-id2");
workspace2.setWorkspaceName("w-name2");
List<IWorkSpace> ccWorkspaceList = new ArrayList<IWorkSpace>();
ccWorkspaceList.add(workspace);
List<IWorkSpace> ccWorkspaceList2 = new ArrayList<IWorkSpace>();
ccWorkspaceList2.add(workspace);
ccWorkspaceList2.add(workspace2);
Mockito.when(mockedwsManager.listActiveWorkspace("id", "username")).thenReturn(ccWorkspaceList2);
concept = new Concept();
Mockito.when(mockedConceptFactory.createConceptObject()).thenReturn(concept);
Mockito.doNothing().when(mockedccDao).updateItem(Matchers.any(IConcept.class), Matchers.eq("id"),
Matchers.eq("username"));
}
@Test
public void testSearch() {
ConceptpowerReply reply = conceptCollectionManagerUnderTest.search("item", "pos");
assertNotNull(reply);
assertEquals(1, reply.getConceptEntry().size());
assertEquals("test-lemma", reply.getConceptEntry().get(0).getLemma());
}
@Test
public void testSearchNegative() {
ConceptpowerReply reply = conceptCollectionManagerUnderTest.search(null, null);
assertNull(reply);
}
@Test
public void getConceptLemmaFromConceptIdTest() {
String result = conceptCollectionManagerUnderTest.getConceptLemmaFromConceptId("id");
assertEquals("test-lemma", result);
}
@Test
public void getConceptLemmaFromConceptIdTestWithNoEntries() {
List<ConceptpowerReply.ConceptEntry> conceptEntries2 = new ArrayList<ConceptpowerReply.ConceptEntry>();
ConceptpowerReply repWithNoEntries = new ConceptpowerReply();
repWithNoEntries.setConceptEntry(conceptEntries2);
Mockito.when(cpConnector.getById("id2")).thenReturn(repWithNoEntries);
String result = conceptCollectionManagerUnderTest.getConceptLemmaFromConceptId("id2");
assertEquals("id2", result);
}
private void mockConceptCollectionDeepMapper(IConceptCollection returnType) throws QuadrigaStorageException {
Mockito.when(mockedConceptCollectionDeepMapper.getConceptCollectionDetails("id")).thenReturn(returnType);
}
@Test
public void showCollaboratingUsersTest() throws QuadrigaStorageException {
ConceptCollection conceptCollection = new ConceptCollection();
List<IConceptCollectionCollaborator> collabList = new ArrayList<IConceptCollectionCollaborator>();
ConceptCollectionCollaborator col = new ConceptCollectionCollaborator();
col.setUpdatedBy("test updater");
collabList.add(col);
conceptCollection.setConceptCollectionCollaborators(collabList);
mockConceptCollectionDeepMapper(conceptCollection);
List<IConceptCollectionCollaborator> resultList = conceptCollectionManagerUnderTest
.showCollaboratingUsers("id");
assertEquals("test updater", resultList.get(0).getUpdatedBy());
}
@Test
public void showCollaboratingUsersNegativeTest() throws QuadrigaStorageException {
mockConceptCollectionDeepMapper(null);
List<IConceptCollectionCollaborator> resultList = conceptCollectionManagerUnderTest
.showCollaboratingUsers("id");
assertNull(resultList);
}
@Test
public void updateTest() throws QuadrigaStorageException {
ConceptCollection conceptCollection = new ConceptCollection();
conceptCollection.setConceptCollectionId("id");
conceptCollectionManagerUnderTest.update(new String[] { "id" }, conceptCollection, "username");
assertEquals("test-lemma", concept.getLemma());
}
}