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.GregorianCalendar;
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.Course;
import no.niths.domain.school.Event;
import org.junit.BeforeClass;
import org.junit.Test;
public class EventTest {
private static final Long ID = 1L;
private static final String NAME = "Spillkveld";
private static final String DESCRIPTION = "Utvalg for Fantasiske Fritidssysler har brettspillaften";
private static final GregorianCalendar START_TIME = new GregorianCalendar();
private static final GregorianCalendar END_TIME = new GregorianCalendar();
private static Validator validator;
@BeforeClass
public static void setUp() {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
}
@Test
public void testShouldGenerateNewEvent() {
Event event = new Event();
event.setName(NAME);
event.setDescription(DESCRIPTION);
event.setStartTime(START_TIME);
event.setEndTime(END_TIME);
assertThat(NAME, is(equalTo(event.getName())));
assertThat(DESCRIPTION, is(equalTo(event.getDescription())));
assertThat(START_TIME, is(equalTo(event.getStartTime())));
assertThat(END_TIME, is(equalTo(event.getEndTime())));
assertThat(false, is(equalTo(event.isEmpty())));
}
@Test
public void testTwoEqualEvents() {
Event event = new Event(ID, NAME, DESCRIPTION, START_TIME, END_TIME);
Event equalEvent = event;
assertThat(true, is(equalTo(event.equals(equalEvent))));
}
@Test
public void testTwoEventsWhichIsNotEqual() {
Event event = new Event(ID, NAME, DESCRIPTION, START_TIME, END_TIME);
Event notEqualEvent = new Event(NAME, DESCRIPTION, START_TIME, END_TIME);
assertThat(false, is(equalTo(event.equals(notEqualEvent))));
}
@Test
public void testEqualsBetweenNotEqualObjects() {
Event event = new Event(ID, NAME, DESCRIPTION, START_TIME, END_TIME);
Course course = new Course();
assertThat(false, is(equalTo(event.equals(course))));
}
@Test
public void testEmptyEventObject() {
Event event = new Event();
assertThat(true, is(equalTo(event.isEmpty())));
}
@Test
public void testValidationOfCorectEventValues() {
Event event = new Event(NAME, DESCRIPTION, START_TIME, END_TIME);
Set<ConstraintViolation<Event>> constraintViolations = validator
.validate(event);
assertThat(0, is(equalTo(constraintViolations.size())));
}
@Test
public void testValidationOfIncorectEventValues() {
Event event = new Event(
"<script>alert();</script>", DESCRIPTION, START_TIME, END_TIME);
Set<ConstraintViolation<Event>> constraintViolations = validator
.validate(event);
constraintViolations = validator.validate(event);
assertThat(1, is(equalTo(constraintViolations.size())));
}
}