package de.flower.rmt.service; import de.flower.common.test.Violations; import de.flower.rmt.model.db.entity.CalItem; import de.flower.rmt.model.db.entity.Team; import de.flower.rmt.model.dto.CalItemDto; import de.flower.rmt.service.type.CalendarFilter; import de.flower.rmt.test.AbstractRMTIntegrationTests; import org.joda.time.DateTime; import org.testng.annotations.Test; import javax.validation.ConstraintViolation; import java.util.Arrays; import java.util.List; import java.util.Set; import static org.testng.Assert.*; /** * @author flowerrrr */ public class CalendarManagerTest extends AbstractRMTIntegrationTests { @Test public void testValidationEndBeforeStart() { CalItemDto calItemDto = new CalItemDto(); DateTime dt = new DateTime(); calItemDto.setStartDateTime(dt); calItemDto.setEndDateTime(dt.minusMinutes(1)); Set<ConstraintViolation<CalItemDto>> violations = validator.validate(calItemDto); log.info(Violations.dump(violations)); Violations.assertViolation("{validation.calitem.endbeforestart}", violations); } @Test public void testFindAllByUserAndRange() { CalItemDto calItemDto = new CalItemDto(); calItemDto.setType(CalItem.Type.HOLIDAY); DateTime startDate = new DateTime(); DateTime endDate = startDate; calItemDto.setStartDateTime(startDate); calItemDto.setEndDateTime(endDate); List<CalendarFilter> filters = Arrays.asList(CalendarFilter.USER); // verify database is empty. assertTrue(calendarManager.findAllByCalendarAndRange(filters, new DateTime(0), new DateTime(Long.MAX_VALUE)).isEmpty()); calendarManager.save(calItemDto, securityService.getUser()); assertEquals(calendarManager.findAllByCalendarAndRange(filters, startDate, endDate).size(), 1); assertEquals(calendarManager.findAllByCalendarAndRange(filters, startDate, endDate.plusDays(1)).size(), 1); assertEquals(calendarManager.findAllByCalendarAndRange(filters, startDate.minusDays(1), endDate).size(), 1); assertEquals(calendarManager.findAllByCalendarAndRange(filters, startDate.minusDays(1), endDate.plusDays(1)).size(), 1); assertEquals(calendarManager.findAllByCalendarAndRange(filters, startDate.plusMillis(1), endDate).size(), 0); // let event span several months calItemDto.setStartDateTime(startDate.minusYears(1)); calItemDto.setEndDateTime(endDate.plusYears(1)); calendarManager.save(calItemDto, securityService.getUser()); assertEquals(calendarManager.findAllByCalendarAndRange(filters, startDate.minusDays(1), endDate).size(), 1); assertEquals(calendarManager.findAllByCalendarAndRange(filters, startDate.minusYears(2), endDate).size(), 1); } @Test public void testFindAllByOtherAndRange() { DateTime startDate = new DateTime(); DateTime endDate = startDate; // simply verify that method executes without exception. List<CalendarFilter> filters = Arrays.asList(CalendarFilter.OTHERS); calendarManager.findAllByCalendarAndRange(filters, startDate, endDate); } @Test public void testFindAllByTeamAndRange() { Team team = testData.createTeamWithPlayers("FC Foobar", 20); DateTime startDate = new DateTime(); DateTime endDate = startDate; // simply verify that method executes without exception. List<CalendarFilter> filters = Arrays.asList(new CalendarFilter(CalendarFilter.Type.TEAM, team)); calendarManager.findAllByCalendarAndRange(filters, startDate, endDate); } @Test public void testFindAllByCalenderAndRange() { DateTime startDate = new DateTime(); DateTime endDate = startDate; calendarManager.findAllByCalendarAndRange(calendarManager.getCalendarFilters(), startDate, endDate); } }