package net.rrm.ehour.persistence.timesheet.dao;
import com.google.common.collect.Lists;
import net.rrm.ehour.data.DateRange;
import net.rrm.ehour.domain.TimesheetComment;
import net.rrm.ehour.domain.TimesheetCommentId;
import net.rrm.ehour.persistence.dao.AbstractAnnotationDaoTest;
import org.joda.time.DateTimeConstants;
import org.joda.time.Interval;
import org.joda.time.LocalDate;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import static org.hamcrest.Matchers.startsWith;
import static org.junit.Assert.*;
/**
* @author thies (Thies Edeling - thies@te-con.nl)
* Created on: Nov 16, 2010 - 7:36:32 PM
*/
public class TimesheetCommentDaoHibernateImplTest extends AbstractAnnotationDaoTest {
public TimesheetCommentDaoHibernateImplTest() {
super("dataset-timesheetcomment.xml");
}
@Autowired
private TimesheetCommentDao timesheetCommentDao;
@SuppressWarnings("deprecation")
@Test
public void should_get_timesheet_comments_for_date() {
TimesheetComment comment = timesheetCommentDao.findById(new TimesheetCommentId(1, new Date(2007 - 1900, Calendar.JANUARY, 7)));
assertNotNull(comment);
}
@Test
public void should_delete_comments_for_user() {
int rowCount = timesheetCommentDao.deleteCommentsForUser(1);
assertEquals(2, rowCount);
}
@Test
public void should_find_entries_in_range() {
Interval i = new Interval(new LocalDate(2007, DateTimeConstants.JANUARY, 13).toDateTimeAtCurrentTime(),
new LocalDate(2007, DateTimeConstants.JANUARY, 22).toDateTimeAtCurrentTime());
List<TimesheetComment> comments = timesheetCommentDao.findCommentBetween(new DateRange(i));
assertEquals(2, comments.size());
assertThat(comments.get(0).getCommentId().getCommentDate().toString(), startsWith("2007-01-14"));
assertThat(comments.get(1).getCommentId().getCommentDate().toString(), startsWith("2007-01-21"));
}
@Test
public void should_find_entries_in_range_for_users() {
Interval i = new Interval(new LocalDate(2007, DateTimeConstants.JANUARY, 1).toDateTimeAtCurrentTime(),
new LocalDate(2007, DateTimeConstants.JANUARY, 30).toDateTimeAtCurrentTime());
List<TimesheetComment> comments = timesheetCommentDao.findCommentBetweenForUsers(Lists.newArrayList(2, 3), new DateRange(i));
assertEquals(2, comments.get(0).getCommentId().getUserId().intValue());
assertEquals(3, comments.get(1).getCommentId().getUserId().intValue());
}
}