package net.rrm.ehour.persistence.project.dao;
import net.rrm.ehour.data.DateRange;
import net.rrm.ehour.domain.*;
import net.rrm.ehour.persistence.dao.AbstractAnnotationDaoTest;
import net.rrm.ehour.util.EhourConstants;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import static org.junit.Assert.*;
/**
* @author thies (Thies Edeling - thies@te-con.nl)
* Created on: Nov 16, 2010 - 2:56:42 PM
*/
@SuppressWarnings("deprecation")
public class ProjectAssignmentDaoHibernateImplTest extends AbstractAnnotationDaoTest {
public ProjectAssignmentDaoHibernateImplTest() {
super("dataset-projectassignment.xml");
}
@Test
public void shouldFindProjectAssignmentForProjectIdAndUserId() {
List<ProjectAssignment> pas = projectAssignmentDAO.findProjectAssignmentForUser(1, 1);
assertEquals(4, pas.size());
}
@Test
public void shouldFindProjectAssignmentsForUser() {
List<ProjectAssignment> pas = projectAssignmentDAO.findAllProjectAssignmentsForUser(new User(1));
assertEquals(9, pas.size());
}
@Test
public void shouldFindAll() {
List<ProjectAssignment> pas = projectAssignmentDAO.findAll();
assertEquals(12, pas.size());
}
@Test
public void shouldDelete() {
projectAssignmentDAO.deleteOnId(2);
ProjectAssignment pa = projectAssignmentDAO.findById(2);
assertNull(pa);
}
@Test
public void shouldPersist() {
Calendar cal = new GregorianCalendar();
cal.add(Calendar.MONTH, 1);
ProjectAssignment assignment = ProjectAssignmentObjectMother.createProjectAssignment(new User(5), new Project(1));
assignment.setDateStart(new Date());
assignment.setDateEnd(cal.getTime());
assignment.setAssignmentType(new ProjectAssignmentType(EhourConstants.ASSIGNMENT_DATE));
assignment.setAssignmentId(25);
projectAssignmentDAO.persist(assignment);
assertNotNull(assignment.getAssignmentId());
}
@Test
public void shouldFindById() {
ProjectAssignment pa = projectAssignmentDAO.findById(1);
assertEquals("eHour", pa.getProject().getName());
}
@Test
public void shouldFindActiveProjectAssignmentsForUserInRange() {
DateRange range = new DateRange(new Date(2006 - 1900, Calendar.OCTOBER, 24), new Date(2007 - 1900, Calendar.JANUARY, 10));
List<ProjectAssignment> results = projectAssignmentDAO.findActiveProjectAssignmentsForUser(1, range);
assertEquals(5, results.size());
}
@Test
public void shouldFindAllProjectAssignmentsForUserInRange() {
DateRange range = new DateRange(new Date(2006 - 1900, Calendar.OCTOBER, 24), new Date(2007 - 1900, Calendar.JANUARY, 10));
List<ProjectAssignment> results = projectAssignmentDAO.findAllProjectAssignmentsForUser(1, range);
assertEquals(8, results.size());
}
@Test
public void shouldFindProjectAssignmentsForCustomer() {
DateRange range = new DateRange(new Date(2006 - 1900, Calendar.AUGUST, 24), new Date(2007 - 1900, Calendar.JANUARY, 10));
List<ProjectAssignment> results = projectAssignmentDAO.findProjectAssignmentsForCustomer(new Customer(3), range);
assertEquals(2, results.size());
}
@Test
public void shouldFindAllAssignmentsForProject() {
List<ProjectAssignment> list = projectAssignmentDAO.findAllProjectAssignmentsForProject(new Project(1));
assertEquals(3, list.size());
}
@Autowired
private ProjectAssignmentDao projectAssignmentDAO;
}