package edu.asu.spring.quadriga.service.conceptcollection.mapper.impl; import static org.junit.Assert.*; import java.util.ArrayList; import java.util.Date; 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.dao.conceptcollection.IConceptCollectionDAO; import edu.asu.spring.quadriga.domain.IQuadrigaRole; import edu.asu.spring.quadriga.domain.conceptcollection.IConceptCollection; import edu.asu.spring.quadriga.domain.conceptcollection.IConceptCollectionCollaborator; import edu.asu.spring.quadriga.domain.factories.ICollaboratorFactory; import edu.asu.spring.quadriga.domain.factory.conceptcollection.IConceptCollectionCollaboratorFactory; import edu.asu.spring.quadriga.domain.factory.conceptcollection.IConceptCollectionConceptFactory; import edu.asu.spring.quadriga.domain.factory.conceptcollection.IConceptCollectionFactory; import edu.asu.spring.quadriga.domain.factory.conceptcollection.IConceptFactory; import edu.asu.spring.quadriga.domain.impl.Collaborator; import edu.asu.spring.quadriga.domain.impl.QuadrigaRole; import edu.asu.spring.quadriga.domain.impl.User; 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.conceptcollection.ConceptCollectionConcepts; import edu.asu.spring.quadriga.domain.workbench.IProjectConceptCollection; import edu.asu.spring.quadriga.domain.workspace.IWorkspaceConceptCollection; import edu.asu.spring.quadriga.dto.ConceptCollectionCollaboratorDTO; import edu.asu.spring.quadriga.dto.ConceptCollectionCollaboratorDTOPK; import edu.asu.spring.quadriga.dto.ConceptCollectionDTO; import edu.asu.spring.quadriga.dto.ConceptCollectionItemsDTO; import edu.asu.spring.quadriga.dto.ConceptCollectionItemsDTOPK; import edu.asu.spring.quadriga.dto.ConceptsDTO; import edu.asu.spring.quadriga.dto.QuadrigaUserDTO; import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException; import edu.asu.spring.quadriga.mapper.workbench.IProjectConceptCollectionShallowMapper; import edu.asu.spring.quadriga.mapper.workspace.IWorkspaceCCShallowMapper; import edu.asu.spring.quadriga.service.IQuadrigaRoleManager; import edu.asu.spring.quadriga.service.user.mapper.IUserDeepMapper; public class ConceptCollectionDeepMapperTest { @Mock private IConceptCollectionDAO mockeddbConnect = Mockito.mock(IConceptCollectionDAO.class); @Mock private IConceptCollectionFactory mockedccFactory = Mockito.mock(IConceptCollectionFactory.class); @Mock private IUserDeepMapper mockedUserDeepMapper = Mockito.mock(IUserDeepMapper.class); @Mock private IProjectConceptCollectionShallowMapper mockedProjectCCShallowMapper = Mockito .mock(IProjectConceptCollectionShallowMapper.class); @Mock private IWorkspaceCCShallowMapper mockedWorkspaceCCShallowMapper = Mockito.mock(IWorkspaceCCShallowMapper.class); @Mock private IQuadrigaRoleManager mockedRoleManager = Mockito.mock(IQuadrigaRoleManager.class); @Mock private ICollaboratorFactory mockedCollaboratorFactory = Mockito.mock(ICollaboratorFactory.class); @Mock private IConceptCollectionCollaboratorFactory mockedccCollaboratorFactory = Mockito .mock(IConceptCollectionCollaboratorFactory.class); @Mock private IConceptFactory mockedConceptFactory = Mockito.mock(IConceptFactory.class); @Mock private IConceptCollectionConceptFactory mockedccConceptsFactory = Mockito .mock(IConceptCollectionConceptFactory.class); @InjectMocks private ConceptCollectionDeepMapper conceptCollectionDeepMapperUnderTest; private ConceptCollectionDTO ccDTO; private User user; @Before public void setUp() { MockitoAnnotations.initMocks(this); QuadrigaUserDTO dto = new QuadrigaUserDTO(); dto.setUsername("test name"); ccDTO = new ConceptCollectionDTO(); ccDTO.setConceptCollectionid("conceptCollectionid"); ccDTO.setCollectionname("collectionname"); ccDTO.setCreatedby("createdby"); ccDTO.setCollectionowner(dto); user = new User(); user.setName("name"); user.setEmail("test@gmail.com"); user.setUserName("username"); } @Test public void getConceptCollectionDetailsTest() throws QuadrigaStorageException { ConceptsDTO conceptDTO = new ConceptsDTO(); conceptDTO.setLemma("lemma"); ConceptCollectionItemsDTOPK conceptCollectionItemsDTOPK = new ConceptCollectionItemsDTOPK(); conceptCollectionItemsDTOPK.setConcept("concept"); ConceptCollectionItemsDTO ccItemsDTO = new ConceptCollectionItemsDTO(); ccItemsDTO.setConceptCollectionItemsDTOPK(conceptCollectionItemsDTOPK); ConceptCollectionItemsDTO collectionItemsDTO = new ConceptCollectionItemsDTO(); collectionItemsDTO.setConceptcollectionsItemsDTOPK(conceptCollectionItemsDTOPK); collectionItemsDTO.setConceptDTO(conceptDTO); ccItemsDTO.setConceptcollectionsItemsDTOPK(conceptCollectionItemsDTOPK); List<ConceptCollectionItemsDTO> conceptCollectionItemsDTOList = new ArrayList<ConceptCollectionItemsDTO>(); conceptCollectionItemsDTOList.add(collectionItemsDTO); ccDTO.setConceptCollectionItemsDTOList(conceptCollectionItemsDTOList); setMockConditionsCollectionDetailsTest(ccDTO); IConceptCollection col = conceptCollectionDeepMapperUnderTest.getConceptCollectionDetails("ccId"); assertEquals("conceptCollectionid", col.getConceptCollectionId()); assertEquals("collectionname", col.getConceptCollectionName()); assertEquals("test@gmail.com", col.getOwner().getEmail()); assertEquals("username", col.getOwner().getUserName()); assertEquals("lemma", col.getConceptCollectionConcepts().get(0).getConcept().getLemma()); assertEquals("concept", col.getConceptCollectionConcepts().get(0).getConcept().getConceptId()); } @Test public void getConceptCollectionDetailsNullTest() throws QuadrigaStorageException { Mockito.when(mockeddbConnect.getDTO("ccId")).thenReturn(null); IConceptCollection col = conceptCollectionDeepMapperUnderTest.getConceptCollectionDetails("ccId"); assertNull(col); } private void setMockConditionsCollectionDetailsTest(ConceptCollectionDTO ccDTO) throws QuadrigaStorageException { Mockito.when(mockedccFactory.createConceptCollectionObject()).thenReturn(new ConceptCollection()); Mockito.when(mockeddbConnect.getDTO("ccId")).thenReturn(ccDTO); Mockito.when(mockedUserDeepMapper.getUser("test name")).thenReturn(user); Mockito.when(mockedProjectCCShallowMapper.getProjectConceptCollectionList( Matchers.any(ConceptCollectionDTO.class), Matchers.any(IConceptCollection.class))) .thenReturn(new ArrayList<IProjectConceptCollection>()); Mockito.when(mockedWorkspaceCCShallowMapper.getWorkspaceConceptCollectionList( Matchers.any(IConceptCollection.class), Matchers.any(ConceptCollectionDTO.class))) .thenReturn(new ArrayList<IWorkspaceConceptCollection>()); Mockito.when(mockedConceptFactory.createConceptObject()).thenReturn(new Concept()); Mockito.when(mockedccConceptsFactory.createConceptCollectionConceptsObject()) .thenReturn(new ConceptCollectionConcepts()); } @Test public void getConceptCollectionCollaboratorListTest() throws QuadrigaStorageException { QuadrigaUserDTO quadrigaUserDTO = new QuadrigaUserDTO(); quadrigaUserDTO.setUsername("username"); ConceptCollectionCollaboratorDTOPK collabDTOPK = new ConceptCollectionCollaboratorDTOPK(); collabDTOPK.setCollaboratorrole("role"); QuadrigaUserDTO quadrigaUserDTO2 = new QuadrigaUserDTO(); quadrigaUserDTO2.setUsername("username2"); ConceptCollectionCollaboratorDTOPK collabDTOPK2 = new ConceptCollectionCollaboratorDTOPK(); collabDTOPK2.setCollaboratorrole("role2"); QuadrigaUserDTO quadrigaUserDTO3 = new QuadrigaUserDTO(); quadrigaUserDTO3.setUsername("username"); ConceptCollectionCollaboratorDTOPK collabDTOPK3 = new ConceptCollectionCollaboratorDTOPK(); collabDTOPK3.setCollaboratorrole("role3"); List<ConceptCollectionCollaboratorDTO> collabList = new ArrayList<ConceptCollectionCollaboratorDTO>(); ConceptCollectionCollaboratorDTO collaboratorDTO = new ConceptCollectionCollaboratorDTO(); collaboratorDTO.setQuadrigaUserDTO(quadrigaUserDTO); collaboratorDTO.setCollaboratorDTOPK(collabDTOPK); collaboratorDTO.setUpdateddate(new Date()); ConceptCollectionCollaboratorDTO collaboratorDTO2 = new ConceptCollectionCollaboratorDTO(); collaboratorDTO2.setQuadrigaUserDTO(quadrigaUserDTO2); collaboratorDTO2.setCollaboratorDTOPK(collabDTOPK2); collaboratorDTO2.setUpdateddate(new Date()); ConceptCollectionCollaboratorDTO collaboratorDTO3 = new ConceptCollectionCollaboratorDTO(); collaboratorDTO3.setQuadrigaUserDTO(quadrigaUserDTO3); collaboratorDTO3.setCollaboratorDTOPK(collabDTOPK3); collaboratorDTO3.setUpdateddate(new Date()); collabList.add(collaboratorDTO); collabList.add(collaboratorDTO2); collabList.add(collaboratorDTO3); IQuadrigaRole collaboratorRole = new QuadrigaRole(); collaboratorRole.setId("id"); setMockConditionsCollaboratorListTest(collaboratorRole); ccDTO.setConceptCollectionCollaboratorDTOList(collabList); ConceptCollection conceptCollection = new ConceptCollection(); conceptCollection.setConceptCollectionId(ccDTO.getConceptCollectionid()); conceptCollection.setConceptCollectionName(ccDTO.getCollectionname()); conceptCollection.setDescription(ccDTO.getDescription()); conceptCollection.setCreatedBy(ccDTO.getCreatedby()); conceptCollection.setCreatedDate(ccDTO.getCreateddate()); conceptCollection.setUpdatedBy(ccDTO.getUpdatedby()); conceptCollection.setUpdatedDate(ccDTO.getUpdateddate()); conceptCollection.setOwner(user); List<IConceptCollectionCollaborator> collectionCollaborators = conceptCollectionDeepMapperUnderTest .getConceptCollectionCollaboratorList(ccDTO, conceptCollection); // since we have 2 users - username and username2 assertEquals(2, collectionCollaborators.size()); assertEquals("id", collectionCollaborators.get(0).getCollaborator().getCollaboratorRoles().get(0).getId()); assertEquals("createdby", collectionCollaborators.get(0).getConceptCollection().getCreatedBy()); assertEquals("conceptCollectionid", collectionCollaborators.get(0).getConceptCollection().getConceptCollectionId()); assertEquals("test@gmail.com", collectionCollaborators.get(0).getConceptCollection().getOwner().getEmail()); } private void setMockConditionsCollaboratorListTest(IQuadrigaRole collaboratorRole) throws QuadrigaStorageException { Mockito.when(mockedRoleManager.getQuadrigaRoleByDbId(Matchers.eq(IQuadrigaRoleManager.CONCEPT_COLLECTION_ROLES), Matchers.anyString())).thenReturn(collaboratorRole); Mockito.doNothing().when(mockedRoleManager).fillQuadrigaRole( Matchers.eq(IQuadrigaRoleManager.CONCEPT_COLLECTION_ROLES), Matchers.any(IQuadrigaRole.class)); Mockito.when(mockedCollaboratorFactory.createCollaborator()).thenReturn(new Collaborator()); Mockito.when(mockedccCollaboratorFactory.createConceptCollectionCollaboratorObject()) .thenReturn(new ConceptCollectionCollaborator()); } }