/**
* =============================================================================
*
* 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.adapter;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.when;
import java.util.Date;
import javax.annotation.Resource;
import org.junit.After;
import org.junit.Before;
import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.orcid.core.manager.SourceNameCacheManager;
import org.orcid.jaxb.model.common_v2.Visibility;
import org.orcid.persistence.dao.ClientDetailsDao;
import org.orcid.persistence.dao.RecordNameDao;
import org.orcid.persistence.jpa.entities.ClientDetailsEntity;
import org.orcid.persistence.jpa.entities.ProfileEntity;
import org.orcid.persistence.jpa.entities.RecordNameEntity;
import org.orcid.test.TargetProxyHelper;
/**
*
* @author Angel Montenegro
*
*/
public class MockSourceNameCache {
@Resource
private JpaJaxbAddressAdapter adapter;
@Resource
private SourceNameCacheManager sourceNameCacheManager;
@Resource
private RecordNameDao recordNameDao;
@Resource
private ClientDetailsDao clientDetailsDao;
@Mock
protected RecordNameDao mockedRecordNameDao;
@Mock
protected ClientDetailsDao mockedClientDetailsDao;
@Before
public void init() throws Exception {
MockitoAnnotations.initMocks(this);
when(mockedRecordNameDao.getRecordName((Matchers.<String> any()))).thenAnswer(new Answer<RecordNameEntity>(){
@Override
public RecordNameEntity answer(InvocationOnMock invocation) throws Throwable {
String id = (String)invocation.getArguments()[0];
RecordNameEntity recordName = new RecordNameEntity();
recordName.setLastModified(new Date());
recordName.setCreditName("Credit name");
recordName.setProfile(new ProfileEntity(id));
recordName.setVisibility(Visibility.PUBLIC);
return recordName;
}
});
when(mockedClientDetailsDao.find((Matchers.<String> any()))).thenAnswer(new Answer<ClientDetailsEntity>(){
@Override
public ClientDetailsEntity answer(InvocationOnMock invocation) throws Throwable {
String id = (String)invocation.getArguments()[0];
ClientDetailsEntity client = new ClientDetailsEntity(id);
client.setLastModified(new Date());
return client;
}
});
assertNotNull(sourceNameCacheManager);
TargetProxyHelper.injectIntoProxy(sourceNameCacheManager, "recordNameDao", mockedRecordNameDao);
TargetProxyHelper.injectIntoProxy(sourceNameCacheManager, "clientDetailsDao", mockedClientDetailsDao);
}
@After
public void after() {
//Restore the original beans
TargetProxyHelper.injectIntoProxy(sourceNameCacheManager, "recordNameDao", recordNameDao);
TargetProxyHelper.injectIntoProxy(sourceNameCacheManager, "clientDetailsDao", clientDetailsDao);
}
}