package gov.samhsa.consent2share.domain.valueset;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.util.Date;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class CodeSystemTest {
private static final Logger LOGGER = LoggerFactory
.getLogger(CodeSystemTest.class);
private static final String CODESYSTEM_OID = "codeSystemOId";
private static final String CODESYSTEM_CODE = "code";
private static final String CODESYSTEM_NAME = "name";
private static final String CODESYSTEM_USERNAME = "userName";
private static final String CODESYSTEM_DISPLAYNAME = "displayName";
private static final String CODESYSTEM_UPDATE_OID = "updateCodeSystemOId";
private static final String CODESYSTEM_UPDATE_CODE = "updateCode";
private static final String CODESYSTEM_UPDATE_NAME = "updateName";
private static final String CODESYSTEM_UPDATE_USERNAME = "updateUserName";
private static final String CODESYSTEM_UPDATE_DISPLAYNAME = "updateDisplayName";
private CodeSystem codeSystem;
@Before
public void setUpCodeSystem(){
codeSystem = CodeSystem.getBuilder(CODESYSTEM_OID,
CODESYSTEM_CODE, CODESYSTEM_NAME, CODESYSTEM_USERNAME).build();
}
private void assertCodeSystem(CodeSystem codeSystem) {
assertEquals(CODESYSTEM_OID, codeSystem.getCodeSystemOId());
// assertEquals(CODESYSTEM_CODE, codeSystem.getCode());
assertEquals(CODESYSTEM_NAME, codeSystem.getName());
assertEquals(CODESYSTEM_USERNAME, codeSystem.getUserName());
assertNull(codeSystem.getCreationTime());
assertNull(codeSystem.getModificationTime());
assertNull(codeSystem.getId());
LOGGER.info("codesystem in string" + codeSystem);
}
private void assertUpdateCodeSystem(CodeSystem codeSystem) {
assertEquals(CODESYSTEM_UPDATE_OID, codeSystem.getCodeSystemOId());
// assertEquals(CODESYSTEM_UPDATE_CODE, codeSystem.getCode());
assertEquals(CODESYSTEM_UPDATE_NAME, codeSystem.getName());
assertEquals(CODESYSTEM_UPDATE_USERNAME, codeSystem.getUserName());
assertNull(codeSystem.getCreationTime());
assertNull(codeSystem.getModificationTime());
assertNull(codeSystem.getId());
}
@Test
public void build() {
assertCodeSystem(codeSystem);
}
@Test
public void testCodeSystem() {
codeSystem = new CodeSystem();
codeSystem.setCodeSystemOId(CODESYSTEM_OID);
// codeSystem.setCode(CODESYSTEM_CODE);
codeSystem.setName(CODESYSTEM_NAME);
codeSystem.setDisplayName(CODESYSTEM_DISPLAYNAME);
codeSystem.setUserName(CODESYSTEM_USERNAME);
assertCodeSystem(codeSystem);
}
/* @Test
public void testGetBuilder() {
fail("Not yet implemented");
}*/
@Test
public void testUpdate() {
codeSystem.update(CODESYSTEM_UPDATE_OID,
CODESYSTEM_UPDATE_CODE, CODESYSTEM_UPDATE_NAME,CODESYSTEM_UPDATE_DISPLAYNAME, CODESYSTEM_UPDATE_USERNAME);
assertUpdateCodeSystem(codeSystem);
assertEquals(CODESYSTEM_UPDATE_DISPLAYNAME, codeSystem.getDisplayName());
}
/* @Test
public void testGetCurrentDate() {
fail("Not yet implemented");
}*/
@Test
public void testPrePersist() {
CodeSystem codeSystem = CodeSystem.getBuilder(CODESYSTEM_OID,
CODESYSTEM_CODE, CODESYSTEM_NAME, CODESYSTEM_USERNAME).build();
codeSystem.prePersist();
Date creationTime = codeSystem.getCreationTime();
Date modificationTime = codeSystem.getModificationTime();
assertNotNull(creationTime);
assertNotNull(modificationTime);
assertEquals(creationTime, modificationTime);
}
@Test
public void testPreUpdate() {
CodeSystem codeSystem = CodeSystem.getBuilder(CODESYSTEM_OID,
CODESYSTEM_CODE, CODESYSTEM_NAME, CODESYSTEM_USERNAME).build();
codeSystem.prePersist();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// Back to work
}
codeSystem.preUpdate();
Date creationTime = codeSystem.getCreationTime();
Date modificationTime = codeSystem.getModificationTime();
assertNotNull(creationTime);
assertNotNull(modificationTime);
assertTrue(modificationTime.after(creationTime));
}
}