package de.randi2.core.unit.model; import static org.junit.Assert.*; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.junit.Before; import org.junit.Test; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import de.randi2.model.AbstractDomainObject; import de.randi2.model.Login; import de.randi2.model.Person; import de.randi2.model.Role; import de.randi2.model.TreatmentArm; import de.randi2.model.Trial; import de.randi2.model.TrialSite; import de.randi2.testUtility.utility.AbstractDomainTest; public class TrialSiteTest extends AbstractDomainTest<TrialSite> { private TrialSite validTrialSite; public TrialSiteTest() { super(TrialSite.class); } @Before public void setUp() { validTrialSite = factory.getTrialSite(); } @Test public void testConstuctor() { TrialSite c = new TrialSite(); assertEquals("", c.getName()); assertEquals("", c.getStreet()); assertEquals("", c.getPostcode()); assertEquals("", c.getCity()); } @Test public void testCityNotNull() { validTrialSite.setCity(null); assertEquals(null, validTrialSite.getCity()); assertInvalid(validTrialSite); } @Test public void testCityNotLongerThan255() { String[] invalidValues = { stringUtil.getWithLength(256), stringUtil.getWithLength(650) }; for (String s : invalidValues) { validTrialSite.setCity(s); assertEquals(s, validTrialSite.getCity()); assertInvalid(validTrialSite); } } @Test public void testCityCorrect() { String[] validValues = { stringUtil.getWithLength(255), stringUtil.getWithLength(20), "New York", "Heidelberg" }; for (String s : validValues) { validTrialSite.setCity(s); assertEquals(s, validTrialSite.getCity()); assertValid(validTrialSite); } } @Test public void testContactPersonNotNull() { validTrialSite.setContactPerson(null); assertEquals(null, validTrialSite.getContactPerson()); assertInvalid(validTrialSite); } @Test public void testContactPersonWithLoginInvalid() { Login l = factory.getLogin(); validTrialSite.setContactPerson(l.getPerson()); assertEquals(l.getPerson(), validTrialSite.getContactPerson()); assertInvalid(validTrialSite); } @Test public void testContactPersonCorrect() { Person p = factory.getPerson(); validTrialSite.setContactPerson(p); assertEquals(p, validTrialSite.getContactPerson()); assertValid(validTrialSite); } @Test public void testCountryNull() { validTrialSite.setCountry(null); assertEquals(null, validTrialSite.getCountry()); assertValid(validTrialSite); } @Test public void testCountryEmpty() { validTrialSite.setCountry(""); assertEquals("", validTrialSite.getCountry()); assertValid(validTrialSite); } @Test public void testCountryNotLongerThan255() { String[] invalidValues = { stringUtil.getWithLength(256), stringUtil.getWithLength(650) }; for (String s : invalidValues) { validTrialSite.setCountry(s); assertEquals(s, validTrialSite.getCountry()); assertInvalid(validTrialSite); } } @Test public void testCountryCorrect() { String[] validValues = { stringUtil.getWithLength(255), stringUtil.getWithLength(1), stringUtil.getWithLength(20), "Germany", "UK" }; for (String s : validValues) { validTrialSite.setCountry(s); assertEquals(s, validTrialSite.getCountry()); assertValid(validTrialSite); } } @Test public void testMembersNull() { validTrialSite.setMembers(null); assertNull(validTrialSite.getMembers()); assertValid(validTrialSite); } @Test public void testMembersCorrect() { List<Person> members = new ArrayList<Person>(); for (int i = 0; i < 100; i++) { Person p = factory.getPerson(); validTrialSite.getMembers().add(p); members.add(p); } validTrialSite.setMembers(members); assertEquals(members.size(), validTrialSite.getMembers().size()); assertValid(validTrialSite); } @Test public void testNameNotNull() { validTrialSite.setName(null); assertNull(validTrialSite.getName()); assertInvalid(validTrialSite); } @Test public void testNameNotEmpty() { validTrialSite.setName(""); assertEquals("", validTrialSite.getName()); assertInvalid(validTrialSite); } @Test public void testNameNotLongerThan255() { String[] invalidValues = { stringUtil.getWithLength(256), stringUtil.getWithLength(480)}; for (String s : invalidValues) { validTrialSite.setName(s); assertEquals(s, validTrialSite.getName()); assertInvalid(validTrialSite); } } @Test public void testNameCorrect() { String[] validValues = { stringUtil.getWithLength(255), stringUtil.getWithLength(25), "Trial site 1"}; for (String s : validValues) { validTrialSite.setName(s); assertEquals(s, validTrialSite.getName()); assertValid(validTrialSite); } } @Test public void testPasswordNotNull(){ validTrialSite.setPassword(null); assertEquals(null, validTrialSite.getPassword()); assertInvalid(validTrialSite); } @Test public void testPasswordNotEmpty(){ validTrialSite.setPassword(""); assertEquals("", validTrialSite.getPassword()); assertInvalid(validTrialSite); } @Test public void testPasswordNotShorterThan8(){ String[] invalidPasswords = {"ecet0$s","sad.a", stringUtil.getWithLength(5)+",3", null, ""}; for (String s: invalidPasswords){ validTrialSite.setPassword(s); assertEquals(s, validTrialSite.getPassword()); assertInvalid(validTrialSite,s); } } @Test public void testPasswordNotLongerThan30(){ String[] invalidPasswords = {stringUtil.getWithLength(30)+ "$1", stringUtil.getWithLength(28)+"$t3"}; for (String s: invalidPasswords){ validTrialSite.setPassword(s); assertEquals(s, validTrialSite.getPassword()); assertInvalid(validTrialSite, s); } } @Test public void testPasswordLengthHashedValueEquals64(){ String[] validPasswords = {stringUtil.getWithLength(64)}; for (String s: validPasswords){ validTrialSite.setPassword(s); assertEquals(s, validTrialSite.getPassword()); assertValid(validTrialSite); } } @Test public void testPasswordLengthHashedValueUnequals64(){ String[] invalidPasswords = {stringUtil.getWithLength(65), stringUtil.getWithLength(150), stringUtil.getWithLength(65), stringUtil.getWithLength(63), stringUtil.getWithLength(34), stringUtil.getWithLength(20)}; for (String s: invalidPasswords){ validTrialSite.setPassword(s); assertEquals(s, validTrialSite.getPassword()); assertInvalid(validTrialSite, s); } } @Test public void testPasswordWithCorrectLengthAndWithoutSpecialSign(){ String[] invalidPasswords = {"secret0secret","sad.alhljhaslf",stringUtil.getWithLength(Login.MAX_PASSWORD_LENGTH-2)+"z2", stringUtil.getWithLength(Login.MIN_PASSWORD_LENGTH-2)+"h3"}; for (String s: invalidPasswords){ validTrialSite.setPassword(s); assertEquals(s, validTrialSite.getPassword()); assertInvalid(validTrialSite,s); } } @Test public void testPasswordWithCorrectLengthAndSpecialSigns(){ String[] validPasswords = {"secret0$secret","sad.alhl3jhaslf",stringUtil.getWithLength(Login.MAX_PASSWORD_LENGTH-2)+";2", stringUtil.getWithLength(Login.MIN_PASSWORD_LENGTH-2)+"/3"}; for (String s: validPasswords){ validTrialSite.setPassword(s); assertEquals(s, validTrialSite.getPassword()); assertValid(validTrialSite); } } @Test public void testPostcodeNotNull() { validTrialSite.setPostcode(null); assertEquals(null, validTrialSite.getPostcode()); assertInvalid(validTrialSite); } @Test public void testPostcodeNotLongerThan10() { String[] invalidPostcode = {stringUtil.getWithLength(11),stringUtil.getWithLength(365)}; for (String s: invalidPostcode){ validTrialSite.setPostcode(s); assertEquals(s, validTrialSite.getPostcode()); assertInvalid(validTrialSite, s); } } @Test public void testPostcodeCorrect() { String[] validPostcode = {stringUtil.getWithLength(10),stringUtil.getWithLength(5), ""}; for (String s: validPostcode){ validTrialSite.setPostcode(s); assertEquals(s, validTrialSite.getPostcode()); assertValid(validTrialSite); } } @Test public void testStreetNotNull() { validTrialSite.setStreet(null); assertEquals(null, validTrialSite.getStreet()); assertInvalid(validTrialSite); } @Test public void testStreetNotLongerThan255() { String[] invalidStreet = {stringUtil.getWithLength(256),stringUtil.getWithLength(365)}; for (String s: invalidStreet){ validTrialSite.setStreet(s); assertEquals(s, validTrialSite.getStreet()); assertInvalid(validTrialSite, s); } } @Test public void testStreetCorrect() { String[] validSteet = {stringUtil.getWithLength(255),stringUtil.getWithLength(5), ""}; for (String s: validSteet){ validTrialSite.setStreet(s); assertEquals(s, validTrialSite.getStreet()); assertValid(validTrialSite); } } @Test public void testTrialsNull() { validTrialSite.setTrials(null); assertEquals(null, validTrialSite.getTrials()); assertValid(validTrialSite); } @Test public void testTrialsCorrect() { List<Trial> tl = new ArrayList<Trial>(); tl.add(factory.getTrial()); tl.add(factory.getTrial()); tl.add(factory.getTrial()); validTrialSite.setTrials(tl); assertEquals(tl.size(), validTrialSite.getTrials().size()); assertValid(validTrialSite); List<Trial> trials = new ArrayList<Trial>(); trials.add(new Trial()); validTrialSite.setTrials(trials); assertEquals(trials, validTrialSite.getTrials()); assertValid(validTrialSite); } @Test public void testGetMembersWithSpecifiedRole() { List<Person> members = new ArrayList<Person>(); Login l = factory.getLogin(); l.addRole(Role.ROLE_ADMIN); members.add(l.getPerson()); l = factory.getLogin(); l.addRole(Role.ROLE_ADMIN); members.add(l.getPerson()); l = factory.getLogin(); l.addRole(Role.ROLE_ADMIN); members.add(l.getPerson()); l = factory.getLogin(); l.addRole(Role.ROLE_ADMIN); members.add(l.getPerson()); l = factory.getLogin(); l.addRole(Role.ROLE_USER); members.add(l.getPerson()); l = factory.getLogin(); l.addRole(Role.ROLE_USER); members.add(l.getPerson()); l = factory.getLogin(); l.addRole(Role.ROLE_P_INVESTIGATOR); members.add(l.getPerson()); validTrialSite.setMembers(members); List<Login> logins = validTrialSite .getMembersWithSpecifiedRole(Role.ROLE_USER); assertEquals(members.size(), logins.size()); logins = validTrialSite.getMembersWithSpecifiedRole(Role.ROLE_ADMIN); assertEquals(4, logins.size()); for (Person p : members.subList(0, 3)) { assertTrue(logins.contains(p.getLogin())); } logins = validTrialSite .getMembersWithSpecifiedRole(Role.ROLE_P_INVESTIGATOR); assertEquals(1, logins.size()); assertTrue(logins.contains(members.get(6).getLogin())); } @Test public void testGetRequieredFields() { Map<String, Boolean> map = validTrialSite.getRequiredFields(); for (String key : map.keySet()) { if (key.equals("name")) { assertTrue(map.get(key)); } else if (key.equals("street")) { assertTrue(map.get(key)); } else if (key.equals("postcode")) { assertTrue(map.get(key)); } else if (key.equals("city")) { assertTrue(map.get(key)); } else if (key.equals("country")) { assertFalse(map.get(key)); } else if (key.equals("password")) { assertTrue(map.get(key)); } else if (key.equals("contactPerson")) { assertTrue(map.get(key)); } else if (key.equals("members")) { assertFalse(map.get(key)); } else if (key.equals("trials")) { assertFalse(map.get(key)); } else if (key.equals("MAX_LENGTH_POSTCODE")) { assertFalse(map.get(key)); } else if (key.equals("serialVersionUID")) { assertFalse(map.get(key)); } else if (key.equals("$VRc")) { assertFalse(map.get(key)); } else fail(key + " not checked"); } } @Test public void testEqualsHashCode() { TrialSite trialSite1 = new TrialSite(); TrialSite trialSite2 = new TrialSite(); trialSite1.setId(0); trialSite2.setId(0); trialSite1.setVersion(0); trialSite2.setVersion(0); assertEquals(trialSite1, trialSite2); assertEquals(trialSite1.hashCode(), trialSite2.hashCode()); trialSite1.setId(1); assertFalse(trialSite1.equals(trialSite2)); trialSite1.setId(0); assertEquals(trialSite1, trialSite2); assertEquals(trialSite1.hashCode(), trialSite2.hashCode()); trialSite1.setVersion(1); assertFalse(trialSite1.equals(trialSite2)); trialSite1.setVersion(0); assertEquals(trialSite1, trialSite2); assertEquals(trialSite1.hashCode(), trialSite2.hashCode()); trialSite1.setName("test"); assertFalse(trialSite1.equals(trialSite2)); trialSite2.setName("test"); assertEquals(trialSite1, trialSite2); assertEquals(trialSite1.hashCode(), trialSite2.hashCode()); assertFalse(trialSite1.equals(null)); assertFalse(trialSite1.equals(new TreatmentArm())); } @Test public void testToString() { assertNotNull(validTrialSite.toString()); } @Test public void testUiName() { validTrialSite.setName("name trial site"); assertEquals("name trial site", validTrialSite.getUIName()); } }