package no.niths.domain.school;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import no.niths.domain.school.Committee;
import no.niths.domain.school.Event;
import no.niths.domain.school.Student;
import org.junit.BeforeClass;
import org.junit.Test;
public class CommitteeTest {
private static final Long ID = 1L;
private static final String NAME = "UFF",
DESCRIPTION =
"Utvalg for Fantasiske Fritidssysler";
private static Validator validator;
@BeforeClass
public static void setUp() {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
}
@Test
public void testShouldGenerateNewCommittee() {
Committee committee = new Committee(NAME, DESCRIPTION);
assertThat(NAME, is(equalTo(committee.getName())));
assertThat(DESCRIPTION, is(equalTo(committee.getDescription())));
assertThat(false, is(equalTo(committee.isEmpty())));
}
@Test
public void testTwoEqualCommittees() {
Committee committee1 = new Committee(ID, NAME, DESCRIPTION);
Committee committee2 = committee1;
assertThat(true, is(equalTo(committee1.equals(committee2))));
}
@Test
public void testTwoCommitteesWhichAreNotEqual() {
assertThat(false, is(equalTo(
new Committee(ID, NAME, DESCRIPTION).equals(
new Committee(NAME, DESCRIPTION)))));
}
@Test
public void testEqualsBetweenNotEqualObjects() {
assertThat(false, is(equalTo(
new Committee(ID, NAME, DESCRIPTION).equals(new Student()))));
}
@Test
public void testEmptyCommitteeObject() {
assertThat(true, is(equalTo(new Committee().isEmpty())));
}
@Test
public void testValidationOfCorrectCommitteeValues() {
Set<ConstraintViolation<Committee>> constraintViolations = validator
.validate(new Committee(NAME, DESCRIPTION));
assertThat(0, is(equalTo(constraintViolations.size())));
}
@Test
public void testValidationOfIncorectCommitteeValues() {
Committee committee = new Committee("' OR '1' = '1", DESCRIPTION);
Set<ConstraintViolation<Committee>> constraintViolations = validator
.validate(committee);
constraintViolations = validator.validate(committee);
assertThat(1, is(equalTo(constraintViolations.size())));
}
@Test
public void testGettingEventFromCommittee() {
Event event = new Event();
List<Event> eventList = new ArrayList<Event>();
eventList.add(event);
Committee committee = new Committee();
committee.setEvents(eventList);
assertThat(event, is(equalTo(committee.getEvents().get(0))));
}
@Test
public void testGettingStudentLeaderFromCommittee() {
Student leader = new Student();
List<Student> leaderList = new ArrayList<Student>();
leaderList.add(leader);
Committee committee = new Committee();
committee.setLeaders(leaderList);
assertThat(leader, is(equalTo(committee.getLeaders().get(0))));
}
}