package no.niths.infrastructure.school; import static org.junit.Assert.assertEquals; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.List; import no.niths.common.config.HibernateConfig; import no.niths.common.config.TestAppConfig; import no.niths.domain.location.Location; import no.niths.domain.school.Event; import no.niths.infrastructure.school.interfaces.EventRepository; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { TestAppConfig.class, HibernateConfig.class }) @Transactional public class EventRepositoryTest { @Autowired private EventRepository eventRepo; @Test public void testCRUD() { // create int size = eventRepo.getAll(null).size(); Event event = new Event("event"); event.setName("Joe"); eventRepo.create(event); assertEquals(size + 1, eventRepo.getAll(null).size()); assertEquals(event, eventRepo.getById(event.getId())); // update time GregorianCalendar newDate = new GregorianCalendar(2012, 2, 22, 22, 30); event.setStartTime(newDate); eventRepo.update(event); event = eventRepo.getById(event.getId()); assertEquals(newDate, event.getStartTime()); eventRepo.delete(event.getId()); assertEquals(size, eventRepo.getAll(null).size()); } @Test public void testGetAllWithParams() { GregorianCalendar cal = new GregorianCalendar(2012, 11, 23, 22, 21, 23); Event c1 = new Event("LUG Party", "Linux", null, null); Event c2 = new Event("Halloween Fest", "Skummelt selskap", null, null); Event c3 = new Event("Party", "Rock on brah", cal, null); eventRepo.create(c1); eventRepo.create(c2); eventRepo.create(c3); c1.setDescription(null); assertEquals(1, eventRepo.getAll(c1).size()); Event c4 = new Event(); c4.setStartTime(cal); assertEquals(1, eventRepo.getAll(c4).size()); assertEquals(3, eventRepo.getAll(new Event()).size()); } @Test public void testGetEventsByTag() { GregorianCalendar cal = new GregorianCalendar(2012, 11, 23, 22, 21, 23); Event c1 = new Event("LUG Party", "Linux", null, null); Event c2 = new Event("Halloween Fest", "Skummelt selskap", null, null); Event c3 = new Event("Party", "Rock on brah", cal, null); c1.setTags("Linux, FUDORA,a KROA X"); c2.setTags("FadderUKA, Kroa"); c3.setTags("LAXa"); eventRepo.create(c1); eventRepo.create(c2); eventRepo.create(c3); List<Event> e = eventRepo.getEventsByTag("L"); assertEquals(2, e.size()); e = eventRepo.getEventsByTag("a,X"); assertEquals(2, e.size()); e = eventRepo.getEventsByTag("a"); assertEquals(3, e.size()); } @Test(expected = IllegalArgumentException.class) public void testGetEventsBy5tags() { eventRepo.getEventsByTag("L,c,d,4,a"); } @Test public void testEventLocation() { GregorianCalendar cal = new GregorianCalendar(2012, 11, 23, 22, 21, 23); Event event = new Event("LUG Party", "Linux", cal, null); Location loc = new Location("Oslo", 10.2304, 90.2030); event.setLocation(loc); eventRepo.create(event); Event temp = eventRepo.getAll(event).get(0); assertEquals(event, temp); assertEquals(loc, temp.getLocation()); // update event.setEndTime(cal); temp = eventRepo.getAll(event).get(0); assertEquals(event.getEndTime(), temp.getEndTime()); assertEquals(loc, temp.getLocation()); } @Test public void testGetEventsBetweenToDates() { GregorianCalendar startTime = new GregorianCalendar(2012, Calendar.APRIL, 10, 15, 10); GregorianCalendar endDate = new GregorianCalendar(2012, Calendar.APRIL, 15, 22, 20); GregorianCalendar oldDate = new GregorianCalendar(2012, Calendar.APRIL, 15, 22, 21); Event event = new Event("LUG Party", "Linux", startTime, null); Event event2 = new Event("LUG", "Linux", endDate, null); Event event3 = new Event("KAG", "sas", oldDate, null); eventRepo.create(event); eventRepo.create(event2); eventRepo.create(event3); List<Event> events = eventRepo .getEventsBetweenDates(startTime, endDate); assertEquals(2, events.size()); startTime.set(2012, Calendar.APRIL, 9, 15, 10); } @Test public void testGetEventsAfterADate() { GregorianCalendar startTime = new GregorianCalendar(2012, Calendar.APRIL, 10, 15, 10); GregorianCalendar endDate = new GregorianCalendar(2012, Calendar.APRIL, 15, 22, 20); GregorianCalendar oldDate = new GregorianCalendar(2012, Calendar.APRIL, 15, 22, 21); Event event = new Event("LUG Party", "Linux", startTime, null); Event event2 = new Event("LUG", "Linux", endDate, null); Event event3 = new Event("KAG", "Linux", oldDate, null); eventRepo.create(event); eventRepo.create(event2); eventRepo.create(event3); List<Event> events = eventRepo.getEventsBetweenDates(startTime, null); assertEquals(3, events.size()); } }