Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
package org.orcid.api.memberV3.server.delegator;

import org.junit.Before;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.orcid.api.common.util.ApiUtils;
import org.orcid.api.memberV3.server.delegator.impl.MemberV3ApiServiceDelegatorImpl;
import org.orcid.core.common.manager.EmailDomainManager;
import org.orcid.core.common.manager.SummaryManager;
import org.orcid.core.exception.OrcidCoreExceptionMapper;
import org.orcid.core.locale.LocaleManager;
import org.orcid.core.manager.StatusManager;
import org.orcid.core.manager.impl.OrcidUrlManager;
import org.orcid.core.manager.read_only.ClientDetailsManagerReadOnly;
import org.orcid.core.manager.v3.*;
import org.orcid.core.manager.v3.read_only.*;
import org.orcid.core.utils.SourceEntityUtils;
import org.orcid.core.utils.v3.ContributorUtils;
import org.orcid.core.utils.v3.SourceUtils;
import org.orcid.jaxb.model.groupid_v2.GroupIdRecord;
import org.orcid.jaxb.model.v3.release.record.*;
import org.springframework.context.MessageSource;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;

public abstract class MemberV3ApiServiceDelegatorMockTest {

@Mock
protected WorkManager workManager;

@Mock
protected ProfileFundingManager profileFundingManager;

@Mock
protected ProfileEntityManager profileEntityManager;

@Mock
protected AffiliationsManager affiliationsManager;

@Mock
protected PeerReviewManager peerReviewManager;

@Mock
protected OrcidSecurityManager orcidSecurityManager;

@Mock
protected GroupIdRecordManager groupIdRecordManager;

@Mock
protected LocaleManager localeManager;

@Mock
protected ResearcherUrlManager researcherUrlManager;

@Mock
protected OtherNameManager otherNameManager;

@Mock
protected ExternalIdentifierManager externalIdentifierManager;

@Mock
protected ProfileKeywordManager profileKeywordManager;

@Mock
protected AddressManager addressManager;

@Mock
protected SourceUtils sourceUtils;

@Mock
protected ContributorUtils contributorUtils;

@Mock
protected OrcidSearchManager orcidSearchManager;

@Mock
protected OrcidCoreExceptionMapper orcidCoreExceptionMapper;

@Mock
protected WorkManagerReadOnly workManagerReadOnly;

@Mock
protected ProfileFundingManagerReadOnly profileFundingManagerReadOnly;

@Mock
protected AffiliationsManagerReadOnly affiliationsManagerReadOnly;

@Mock
protected PeerReviewManagerReadOnly peerReviewManagerReadOnly;

@Mock
protected ActivitiesSummaryManagerReadOnly activitiesSummaryManagerReadOnly;

@Mock
protected ResearchResourceManager researchResourceManager;

@Mock
protected ResearchResourceManagerReadOnly researchResourceManagerReadOnly;

@Mock
protected ResearcherUrlManagerReadOnly researcherUrlManagerReadOnly;

@Mock
protected OtherNameManagerReadOnly otherNameManagerReadOnly;

@Mock
protected EmailManagerReadOnly emailManagerReadOnly;

@Mock
protected ExternalIdentifierManagerReadOnly externalIdentifierManagerReadOnly;

@Mock
protected PersonalDetailsManagerReadOnly personalDetailsManagerReadOnly;

@Mock
protected ProfileKeywordManagerReadOnly profileKeywordManagerReadOnly;

@Mock
protected AddressManagerReadOnly addressManagerReadOnly;

@Mock
protected BiographyManagerReadOnly biographyManagerReadOnly;

@Mock
protected PersonDetailsManagerReadOnly personDetailsManagerReadOnly;

@Mock
protected RecordManagerReadOnly recordManagerReadOnly;

@Mock
protected GroupIdRecordManagerReadOnly groupIdRecordManagerReadOnly;

@Mock
protected ClientDetailsManagerReadOnly clientDetailsManagerReadOnly;

@Mock
protected ClientManagerReadOnly clientManagerReadOnly;

@Mock
protected MessageSource messageSource;

@Mock
protected StatusManager statusManager;

@Mock
protected SourceManager sourceManager;

@Mock
protected ApiUtils apiUtils;

@Mock
protected OrcidUrlManager orcidUrlManager;

@Mock
protected SummaryManager summaryManager;

@Mock
protected EmailDomainManager emailDomainManager;

@Mock
protected SourceEntityUtils sourceEntityUtils;

@InjectMocks
protected MemberV3ApiServiceDelegatorImpl serviceDelegator;

@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
}
Original file line number Diff line number Diff line change
@@ -1,92 +1,151 @@
package org.orcid.core.manager.impl;

import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;

import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.orcid.core.BaseTest;
import org.orcid.core.manager.BibtexManager;
import org.mockito.MockitoAnnotations;
import org.mockito.junit.MockitoJUnitRunner;
import org.orcid.core.manager.ActivitiesSummaryManager;
import org.orcid.core.manager.DOIManager;
import org.orcid.core.manager.WorkManager;
import org.orcid.core.manager.read_only.RecordNameManagerReadOnly;
import org.orcid.jaxb.model.common_v2.PublicationDate;
import org.orcid.jaxb.model.common_v2.Title;
import org.orcid.jaxb.model.common_v2.Year;
import org.orcid.jaxb.model.record.summary_v2.ActivitiesSummary;
import org.orcid.jaxb.model.record.summary_v2.WorkGroup;
import org.orcid.jaxb.model.record.summary_v2.WorkSummary;
import org.orcid.jaxb.model.record.summary_v2.Works;
import org.orcid.jaxb.model.record_v2.Citation;
import org.orcid.jaxb.model.record_v2.CitationType;
import org.orcid.jaxb.model.record_v2.ExternalID;
import org.orcid.jaxb.model.record_v2.ExternalIDs;
import org.orcid.jaxb.model.record_v2.Relationship;
import org.orcid.jaxb.model.record_v2.Work;
import org.orcid.jaxb.model.record_v2.WorkTitle;
import org.orcid.jaxb.model.record_v2.WorkType;
import org.orcid.test.OrcidJUnit4ClassRunner;
import org.orcid.test.TargetProxyHelper;
import org.springframework.test.context.ContextConfiguration;

@RunWith(OrcidJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:test-orcid-core-context.xml" })
public class BibtexManagerTest extends BaseTest {
private static final List<String> DATA_FILES = Arrays.asList("/data/SourceClientDetailsEntityData.xml",
"/data/ProfileEntityData.xml", "/data/ClientDetailsEntityData.xml", "/data/WorksEntityData.xml", "/data/RecordNameEntityData.xml");
@RunWith(MockitoJUnitRunner.class)
public class BibtexManagerTest {

private static final String ORCID = "0000-0000-0000-0003";

@Resource
private BibtexManager bibtexManager;


@InjectMocks
private BibtexManagerImpl bibtexManager;

@Mock
private ActivitiesSummaryManager activitiesManager;

@Mock
private WorkManager workManager;

@Mock
private DOIManager doiManager;

@BeforeClass
public static void initDBUnitData() throws Exception {
initDBUnitData(DATA_FILES);

}


@Mock
private RecordNameManagerReadOnly recordNameManagerReadOnly;

@Before
public void before(){
TargetProxyHelper.injectIntoProxy(bibtexManager, "doiManager", doiManager);
public void before() {
MockitoAnnotations.initMocks(this);
when(recordNameManagerReadOnly.fetchDisplayableCreditName(eq(ORCID))).thenReturn("Credit Name");
}

@Test
public void testGenerateBibtex(){
public void testGenerateBibtex() {
ActivitiesSummary summary = new ActivitiesSummary();
Works works = new Works();
List<WorkGroup> groups = new ArrayList<>();

// Work 15: SELF PRIVATE
WorkGroup group15 = new WorkGroup();
WorkSummary summary15 = new WorkSummary();
summary15.setPutCode(15L);
group15.getWorkSummary().add(summary15);
groups.add(group15);

// Work 14: SELF LIMITED
WorkGroup group14 = new WorkGroup();
WorkSummary summary14 = new WorkSummary();
summary14.setPutCode(14L);
group14.getWorkSummary().add(summary14);
groups.add(group14);

works.getWorkGroup().addAll(groups);
summary.setWorks(works);

when(activitiesManager.getActivitiesSummary(eq(ORCID))).thenReturn(summary);

Work work15 = createWork(15L, "SELF PRIVATE", "5");
Work work14 = createWork(14L, "SELF LIMITED", "4");

when(workManager.getWork(eq(ORCID), eq(15L))).thenReturn(work15);
when(workManager.getWork(eq(ORCID), eq(14L))).thenReturn(work14);

String bib = bibtexManager.generateBibtexReferenceList(ORCID);
Assert.assertTrue(bib.startsWith("@article{Credit_Name"));
Assert.assertTrue(bib.contains(",\ntitle={SELF PRIVATE},\nauthor={Credit Name},\ndoi={5},\nurl={http://doi.org/5},\nyear={2016}\n}"));
Assert.assertTrue(bib.contains(",\ntitle={SELF LIMITED},\nauthor={Credit Name},\ndoi={4},\nurl={http://doi.org/4},\nyear={2016}\n}"));
Assert.assertTrue(bib.endsWith("year={2016}\n}"));
}


private Work createWork(Long putCode, String titleStr, String doiValue) {
Work w = new Work();
w.setPutCode(putCode);
WorkTitle title = new WorkTitle();
title.setTitle(new Title(titleStr));
w.setWorkTitle(title);
w.setWorkType(WorkType.JOURNAL_ARTICLE);

ExternalIDs ids = new ExternalIDs();
ExternalID id = new ExternalID();
id.setType("doi");
id.setValue(doiValue);
id.setRelationship(Relationship.SELF);
ids.getExternalIdentifier().add(id);
w.setWorkExternalIdentifiers(ids);

PublicationDate date = new PublicationDate();
date.setYear(new Year(2016));
w.setPublicationDate(date);

return w;
}

@Test
public void testGenerateBibtexForSingleWorkFromCitationField(){
public void testGenerateBibtexForSingleWorkFromCitationField() {
Work w = new Work();
Citation c = new Citation();
c.setWorkCitationType(CitationType.BIBTEX);
c.setCitation("HELLO");
w.setWorkCitation(c);
String bib = bibtexManager.generateBibtex(ORCID, w);
Assert.assertEquals("HELLO",bib);
Assert.assertEquals("HELLO", bib);
}

@Test
public void testGenerateBibtexForSingleWorkEsaped(){
public void testGenerateBibtexForSingleWorkEsaped() {
Work w = new Work();
WorkTitle title = new WorkTitle();
title.setTitle(new Title("Escapes θ à À È © ë Ö ì"));
w.setWorkTitle(title);
w.setWorkType(WorkType.JOURNAL_ARTICLE);
w.setPutCode(100l);
w.setPutCode(100L);
String bib = bibtexManager.generateBibtex(ORCID, w);
Assert.assertEquals("@article{Credit_Name100,\ntitle={Escapes \\texttheta {\\`a} \\`{A} \\`{E} \\textcopyright {\\\"e} {\\\"O} {\\`i}},\nauthor={Credit Name}\n}",bib);
Assert.assertEquals("@article{Credit_Name100,\ntitle={Escapes \\texttheta {\\`a} \\`{A} \\`{E} \\textcopyright {\\\"e} {\\\"O} {\\`i}},\nauthor={Credit Name}\n}", bib);
}

@Test
public void testDOIManagerIsInvoked(){
public void testDOIManagerIsInvoked() {
when(doiManager.fetchDOIBibtex("111")).thenReturn("OK");
Work w = new Work();
w.setWorkExternalIdentifiers(new ExternalIDs());
Expand All @@ -95,6 +154,6 @@ public void testDOIManagerIsInvoked(){
id.setValue("111");
w.getExternalIdentifiers().getExternalIdentifier().add(id);
String bib = bibtexManager.generateBibtex(ORCID, w);
Assert.assertEquals("OK",bib);
Assert.assertEquals("OK", bib);
}
}
Loading
Loading