/** * ============================================================================= * * ORCID (R) Open Source * http://orcid.org * * Copyright (c) 2012-2014 ORCID, Inc. * Licensed under an MIT-Style License (MIT) * http://orcid.org/open-source-license * * This copyright and license information (including a link to the full license) * shall be included in its entirety in all copies or substantial portion of * the software. * * ============================================================================= */ package org.orcid.core.manager; import static org.junit.Assert.*; import java.io.IOException; import java.io.StringWriter; import java.util.Arrays; import java.util.Collections; import java.util.List; import javax.annotation.Resource; import org.apache.commons.io.IOUtils; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.orcid.core.BaseTest; import org.orcid.jaxb.model.message.Iso3166Country; import org.orcid.persistence.jpa.entities.AmbiguousOrgEntity; import org.orcid.persistence.jpa.entities.OrgEntity; import org.springframework.transaction.annotation.Transactional; /** * * @author Will Simpson * */ public class OrgManagerTest extends BaseTest { private static final List<String> DATA_FILES = Arrays.asList("/data/SecurityQuestionEntityData.xml", "/data/SubjectEntityData.xml", "/data/SourceClientDetailsEntityData.xml", "/data/ProfileEntityData.xml", "/data/OrgsEntityData.xml"); @Resource private OrgManager orgManager; @BeforeClass public static void initDBUnitData() throws Exception { initDBUnitData(DATA_FILES); } @AfterClass public static void removeDBUnitData() throws Exception { Collections.reverse(DATA_FILES); removeDBUnitData(DATA_FILES); } @Test public void getAmbiguousOrgs() { List<AmbiguousOrgEntity> orgs = orgManager.getAmbiguousOrgs(0, Integer.MAX_VALUE); assertNotNull(orgs); assertEquals(2, orgs.size()); } @Test public void testWriteAmbiguousOrgs() throws IOException { StringWriter writer = new StringWriter(); orgManager.writeAmbiguousOrgs(writer); String result = writer.toString(); String expected = IOUtils.toString(getClass().getResource("expected_ambiguous_orgs.csv")); assertEquals(expected, result); } @Test public void testGetOrgs() { List<OrgEntity> orgs = orgManager.getOrgs("an", 0, 10); assertNotNull(orgs); assertEquals(2, orgs.size()); assertEquals("An Institution", orgs.get(0).resolveName()); assertEquals("Another Institution", orgs.get(1).resolveName()); } @Test @Transactional public void testCreateUpdateWhenAlreadyExists() { OrgEntity inputOrg = new OrgEntity(); inputOrg.setName("An institution"); inputOrg.setCity("London"); inputOrg.setCountry(Iso3166Country.GB); OrgEntity resultOrg = orgManager.createUpdate(inputOrg); assertNotNull(resultOrg); assertEquals(inputOrg.getName(), resultOrg.getName()); assertEquals(inputOrg.getCity(), resultOrg.getCity()); assertEquals(inputOrg.getRegion(), resultOrg.getRegion()); assertEquals(inputOrg.getCountry(), resultOrg.getCountry()); assertEquals(1, resultOrg.getId().longValue()); } @Test @Transactional public void testCreateUpdateWhenDoesNotAlreadyExists() { OrgEntity inputOrg = new OrgEntity(); inputOrg.setName("Le Institution"); inputOrg.setCity("Paris"); inputOrg.setCountry(Iso3166Country.FR); OrgEntity resultOrg = orgManager.createUpdate(inputOrg); assertNotNull(resultOrg); assertEquals(inputOrg.getName(), resultOrg.getName()); assertEquals(inputOrg.getCity(), resultOrg.getCity()); assertEquals(inputOrg.getRegion(), resultOrg.getRegion()); assertEquals(inputOrg.getCountry(), resultOrg.getCountry()); assertFalse(resultOrg.getId().equals(1)); } }