/**
* =============================================================================
*
* 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.listener.persistence.dao;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.List;
import javax.annotation.Resource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.orcid.listener.persistence.entities.RecordStatusEntity;
import org.orcid.listener.persistence.managers.RecordStatusManager;
import org.orcid.listener.persistence.util.AvailableBroker;
import org.orcid.test.OrcidJUnit4ClassRunner;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.transaction.annotation.Transactional;
@RunWith(OrcidJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:orcid-message-listener-test-context.xml" })
public class RecordStatusDaoTest {
@Resource
private RecordStatusDao recordStatusDao;
@Test
@Transactional
public void createTest() {
String orcid = "0000-0000-0000-0000";
assertFalse(recordStatusDao.exists(orcid));
recordStatusDao.create(orcid, AvailableBroker.DUMP_STATUS_1_2_API, RecordStatusManager.OK);
assertTrue(recordStatusDao.exists(orcid));
}
@Test
@Transactional
public void existsTest() {
recordStatusDao.create("0000-0000-0001", AvailableBroker.DUMP_STATUS_1_2_API, RecordStatusManager.OK);
recordStatusDao.create("0000-0000-0002", AvailableBroker.DUMP_STATUS_1_2_API, RecordStatusManager.OK);
recordStatusDao.create("0000-0000-0003", AvailableBroker.DUMP_STATUS_1_2_API, RecordStatusManager.OK);
recordStatusDao.create("0000-0000-0004", AvailableBroker.DUMP_STATUS_1_2_API, RecordStatusManager.OK);
assertTrue(recordStatusDao.exists("0000-0000-0001"));
assertTrue(recordStatusDao.exists("0000-0000-0002"));
assertTrue(recordStatusDao.exists("0000-0000-0003"));
assertTrue(recordStatusDao.exists("0000-0000-0004"));
assertFalse(recordStatusDao.exists("0000-0000-0005"));
assertFalse(recordStatusDao.exists("0000-0000-0006"));
assertFalse(recordStatusDao.exists("0000-0000-0007"));
}
@Test
@Transactional
public void getTest() {
String orcid = "0000-0000-1000";
recordStatusDao.create(orcid, AvailableBroker.DUMP_STATUS_1_2_API, 100);
RecordStatusEntity entity = recordStatusDao.get(orcid);
assertNotNull(entity);
assertEquals(orcid, entity.getId());
assertEquals(Integer.valueOf(100), entity.getDumpStatus12Api());
assertEquals(Integer.valueOf(0), entity.getDumpStatus20Api());
assertEquals(Integer.valueOf(0), entity.getSolrStatus20Api());
assertNotNull(entity.getDateCreated());
assertNotNull(entity.getLastModified());
}
@Test
@Transactional
public void updateStatus1Test() throws InterruptedException {
String orcid = "0000-0000-1001";
recordStatusDao.create(orcid, AvailableBroker.DUMP_STATUS_1_2_API, RecordStatusManager.OK);
assertTrue(recordStatusDao.exists(orcid));
assertTrue(recordStatusDao.updateStatus(orcid, AvailableBroker.DUMP_STATUS_1_2_API));
assertTrue(recordStatusDao.updateStatus(orcid, AvailableBroker.DUMP_STATUS_2_0_API));
assertFalse(recordStatusDao.updateStatus("0000-0000-0000-2000", AvailableBroker.DUMP_STATUS_1_2_API));
assertFalse(recordStatusDao.updateStatus("0000-0000-0000-2000", AvailableBroker.DUMP_STATUS_2_0_API));
}
@Test
@Transactional
public void updateStatus2Test() {
String orcid = "0000-0000-1002";
recordStatusDao.create(orcid, AvailableBroker.DUMP_STATUS_1_2_API, RecordStatusManager.OK);
assertTrue(recordStatusDao.exists(orcid));
assertTrue(recordStatusDao.updateStatus(orcid, AvailableBroker.DUMP_STATUS_1_2_API, 1250));
assertTrue(recordStatusDao.updateStatus(orcid, AvailableBroker.DUMP_STATUS_2_0_API, 5000));
assertFalse(recordStatusDao.updateStatus("0000-0000-0000-2000", AvailableBroker.DUMP_STATUS_1_2_API, 1250));
assertFalse(recordStatusDao.updateStatus("0000-0000-0000-2000", AvailableBroker.DUMP_STATUS_2_0_API, 5000));
}
@Test
@Transactional
public void getFailedElementsTest() {
recordStatusDao.create("0000-0000-0001-0000", AvailableBroker.DUMP_STATUS_1_2_API, 1);
recordStatusDao.create("0000-0000-0001-0001", AvailableBroker.DUMP_STATUS_2_0_API, RecordStatusManager.OK);
recordStatusDao.create("0000-0000-0001-0002", AvailableBroker.SOLR, RecordStatusManager.OK);
recordStatusDao.create("0000-0000-0001-0003", AvailableBroker.DUMP_STATUS_1_2_API, RecordStatusManager.OK);
recordStatusDao.create("0000-0000-0001-0004", AvailableBroker.DUMP_STATUS_2_0_API, 1);
recordStatusDao.create("0000-0000-0001-0005", AvailableBroker.SOLR, RecordStatusManager.OK);
recordStatusDao.create("0000-0000-0001-0006", AvailableBroker.DUMP_STATUS_1_2_API, RecordStatusManager.OK);
recordStatusDao.create("0000-0000-0001-0007", AvailableBroker.DUMP_STATUS_2_0_API, RecordStatusManager.OK);
recordStatusDao.create("0000-0000-0001-0008", AvailableBroker.SOLR, 1);
recordStatusDao.create("0000-0000-0001-0009", AvailableBroker.DUMP_STATUS_1_2_API, RecordStatusManager.OK);
List<RecordStatusEntity> list = recordStatusDao.getFailedElements(100);
assertEquals(3, list.size());
RecordStatusEntity e1 = list.get(0);
assertEquals("0000-0000-0001-0000", e1.getId());
assertEquals(Integer.valueOf(1), e1.getDumpStatus12Api());
assertEquals(Integer.valueOf(0), e1.getDumpStatus20Api());
assertEquals(Integer.valueOf(0), e1.getSolrStatus20Api());
RecordStatusEntity e2 = list.get(1);
assertEquals("0000-0000-0001-0004", e2.getId());
assertEquals(Integer.valueOf(0), e2.getDumpStatus12Api());
assertEquals(Integer.valueOf(1), e2.getDumpStatus20Api());
assertEquals(Integer.valueOf(0), e2.getSolrStatus20Api());
RecordStatusEntity e3 = list.get(2);
assertEquals("0000-0000-0001-0008", e3.getId());
assertEquals(Integer.valueOf(0), e3.getDumpStatus12Api());
assertEquals(Integer.valueOf(0), e3.getDumpStatus20Api());
assertEquals(Integer.valueOf(1), e3.getSolrStatus20Api());
list = recordStatusDao.getFailedElements(2);
assertEquals(2, list.size());
}
}