Skrev event-test och project-relaterade testklasser

git-svn-id: svn://svn.dsv.su.se/scipro/scipro/trunk@48 73ecded7-942e-4092-bab0-0e58ef0ee984
This commit is contained in:
dan-kjel 2011-02-01 17:34:06 +00:00
parent 43f34c4205
commit a949cd442b
6 changed files with 681 additions and 4 deletions

@ -25,5 +25,9 @@
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="projectScheduleDao" class="se.su.dsv.scipro.data.dao.jpa.ProjectScheduleDaoJPAImp">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
</beans>

@ -2,6 +2,7 @@ package se.su.dsv.scipro.dao.jpa;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.junit.Assert;
@ -15,7 +16,9 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import se.su.dsv.scipro.data.dao.interfaces.EventDao;
import se.su.dsv.scipro.data.dao.interfaces.ProjectScheduleDao;
import se.su.dsv.scipro.data.dataobjects.Event;
import se.su.dsv.scipro.data.dataobjects.ProjectSchedule;
/**
* @author Richard Wilkinson - richard.wilkinson@jweekend.com
@ -27,16 +30,36 @@ public class TestEventDaoJPA {
@Autowired
private EventDao eventDao;
@Autowired
private ProjectScheduleDao projectScheduleDao;
protected Event event;
protected Event deletedEvent;
protected ProjectSchedule schedule;
@Before
public void startTransaction()
{
schedule = new ProjectSchedule();
schedule = projectScheduleDao.save(schedule);
event = new Event();
event.setLocation("new Location");
event.setTitle("new Title");
event.setTitle("Event Title");
event.setDescription("Event Description");
event.setDueDate(new Date(System.currentTimeMillis() + 100000));
event.setProjectSchedule(schedule);
event = eventDao.save(event);
deletedEvent = new Event();
deletedEvent.setTitle("Deleted Event title");
deletedEvent.setDescription("Deleted Event description");
deletedEvent.setDueDate(new Date(System.currentTimeMillis() + 100000));
deletedEvent.setDeleted(true);
deletedEvent.setProjectSchedule(schedule);
deletedEvent = eventDao.save(deletedEvent);
}
@ -70,9 +93,17 @@ public class TestEventDaoJPA {
eventDao.delete(event);
Assert.assertEquals(0, eventDao.countAll());
}
@Test
@Transactional
@Rollback
public void testLazyDelete() {
event = eventDao.lazyDelete(event);
Assert.assertEquals(0, eventDao.countAll());
}
/**
* Test method for {@link se.su.dsv.scipro.data.dao.jpa.AbstractDaoJPAImpl#load(java.io.Serializable)}.
* Test method for {@link se.su.dsv.scipro.data.dao.jpa.AbstractDaoJPAImp#load(java.io.Serializable)}.
*/
@Test @Transactional
@Rollback
@ -82,12 +113,28 @@ public class TestEventDaoJPA {
}
/**
* Test method for {@link se.su.dsv.scipro.data.dao.jpa.AbstractDaoJPAImpl#save(se.su.dsv.scipro.data.dataobjects.DomainObject)}.
* Test method for {@link se.su.dsv.scipro.data.dao.jpa.AbstractDaoJPAImp#save(se.su.dsv.scipro.data.dataobjects.DomainObject)}.
*/
@Test @Transactional
@Rollback
public void testSave() {
//if we have got this far then save works
}
@Test
@Transactional
@Rollback
public void testCountAllLazyDeleted() {
Assert.assertEquals(1, eventDao.countAllLazyDeleted());
}
@Test
@Transactional
@Rollback
public void testFindAllLazyDeteted() {
List<Event> events = new ArrayList<Event>();
events.add(deletedEvent);
Assert.assertEquals(events, eventDao.findAllLazyDeleted());
}
}

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
default-autowire="byName">
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="testPersistenceUnit" />
</bean>
<!--
enable the configuration of transactional behavior based on
annotations
-->
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="projectDao" class="se.su.dsv.scipro.data.dao.jpa.ProjectDaoJPAImp">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="roleDao" class="se.su.dsv.scipro.data.dao.jpa.RoleDaoJPAImp">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="userDao" class="se.su.dsv.scipro.data.dao.jpa.UserDaoJPAImp">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="projectFollowerDao" class="se.su.dsv.scipro.data.dao.jpa.ProjectFollowerDaoJPAImp">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
</beans>

@ -0,0 +1,349 @@
package se.su.dsv.scipro.dao.jpa;
import java.util.ArrayList;
import java.util.List;
import junit.framework.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import se.su.dsv.scipro.data.dao.interfaces.ProjectDao;
import se.su.dsv.scipro.data.dao.interfaces.ProjectFollowerDao;
import se.su.dsv.scipro.data.dao.interfaces.RoleDao;
import se.su.dsv.scipro.data.dao.interfaces.UserDao;
import se.su.dsv.scipro.data.dataobjects.Employee;
import se.su.dsv.scipro.data.dataobjects.Project;
import se.su.dsv.scipro.data.dataobjects.ProjectFollower;
import se.su.dsv.scipro.data.dataobjects.Student;
import se.su.dsv.scipro.data.dataobjects.User;
import se.su.dsv.scipro.data.enums.ProjectTeamMemberRoles;
import se.su.dsv.scipro.data.enums.ProjectStatus;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class TestProjectDaoJPA {
@Autowired
private ProjectDao projectDao;
@Autowired
private RoleDao roleDao;
@Autowired
private UserDao userDao;
@Autowired
private ProjectFollowerDao projectFollowerDao;
private User userWithActiveAndInactive;
private User userWithActiveAndCompleted;
private User userWithCompleted;
private User userWithInactive;
private User userWithHeadSupervisor;
private User userNotHeadSupervisor;
private User userWithReviewer;
private User userWithCoSupervisor;
private User userWithCoSupervisorAndReviewer;
private Project activeProject;
private Project inactiveProject;
private Project completedProject;
@Before
public void startTransaction(){
userWithHeadSupervisor = new User();
userWithHeadSupervisor.setFirstName("userWithHeadSupervisor firstname");
userWithHeadSupervisor.setLastName("userWithHeadSupervisor lastname");
userWithHeadSupervisor = userDao.save(userWithHeadSupervisor);
Employee employeeWithHeadSupervisor = new Employee();
employeeWithHeadSupervisor.setUser(userWithHeadSupervisor);
employeeWithHeadSupervisor = (Employee) roleDao.save(employeeWithHeadSupervisor);
userNotHeadSupervisor = new User();
userNotHeadSupervisor.setFirstName("userNotSupervisor firstname");
userNotHeadSupervisor.setLastName("userNotSupervisor lastname");
userNotHeadSupervisor = userDao.save(userNotHeadSupervisor);
Employee employeeNotHeadSupervisor = new Employee();
employeeNotHeadSupervisor.setUser(userNotHeadSupervisor);
employeeNotHeadSupervisor = (Employee) roleDao.save(employeeNotHeadSupervisor);
userWithReviewer = new User();
userWithReviewer.setFirstName("userWithReviewer firstname");
userWithReviewer.setLastName("userWithReviewer lastname");
userWithReviewer = userDao.save(userWithReviewer);
Employee employeeWithReviewer = new Employee();
employeeWithReviewer.setUser(userWithReviewer);
employeeWithReviewer = (Employee) roleDao.save(employeeWithReviewer);
userWithCoSupervisor = new User();
userWithCoSupervisor.setFirstName("userWithCoSupervisor firstname");
userWithCoSupervisor.setLastName("userWithCoSupervisor lastname");
userWithCoSupervisor = userDao.save(userWithCoSupervisor);
Employee employeeWithCoSupervisor = new Employee();
employeeWithCoSupervisor.setUser(userWithCoSupervisor);
employeeWithCoSupervisor = (Employee) roleDao.save(employeeWithCoSupervisor);
userWithCoSupervisorAndReviewer = new User();
userWithCoSupervisorAndReviewer.setFirstName("userWithCoSupervisorAndReviewer firstname");
userWithCoSupervisorAndReviewer.setLastName("userWithCoSupervisorAndReviewer lastname");
userWithCoSupervisorAndReviewer = userDao.save(userWithCoSupervisorAndReviewer);
Employee employeeWithCoSupervisorAndReviewer = new Employee();
employeeWithCoSupervisorAndReviewer.setUser(userWithCoSupervisorAndReviewer);
employeeWithCoSupervisorAndReviewer = (Employee) roleDao.save(employeeWithCoSupervisorAndReviewer);
userWithActiveAndInactive = new User();
userWithActiveAndInactive.setFirstName("userWithActiveAndInactive firstname");
userWithActiveAndInactive.setLastName("userWithActiveAndInactive lastname");
userWithActiveAndInactive = userDao.save(userWithActiveAndInactive);
Student studentWithActiveAndInactive = new Student();
studentWithActiveAndInactive.setUser(userWithActiveAndInactive);
studentWithActiveAndInactive = (Student) roleDao.save(studentWithActiveAndInactive);
userWithActiveAndCompleted = new User();
userWithActiveAndCompleted.setFirstName("userWithActiveAndCompleted firstname");
userWithActiveAndCompleted.setLastName("userWithActiveAndCompleted lastname");
userWithActiveAndCompleted = userDao.save(userWithActiveAndCompleted);
Student studentWithActiveAndCompleted = new Student();
studentWithActiveAndCompleted.setUser(userWithActiveAndCompleted);
studentWithActiveAndCompleted = (Student) roleDao.save(studentWithActiveAndCompleted);
userWithCompleted = new User();
userWithCompleted.setFirstName("userWithCompleted firstname");
userWithCompleted.setLastName("userWithCompleted lastname");
userWithCompleted = userDao.save(userWithCompleted);
Student studentWithCompleted = new Student();
studentWithCompleted.setUser(userWithCompleted);
studentWithCompleted = (Student) roleDao.save(studentWithCompleted);
userWithInactive = new User();
userWithInactive.setFirstName("userWithInactive firstname");
userWithInactive.setLastName("userWithInactive lastname");
userWithInactive = userDao.save(userWithInactive);
Student studentWithInactive = new Student();
studentWithInactive.setUser(userWithInactive);
studentWithInactive = (Student) roleDao.save(studentWithInactive);
activeProject = new Project();
activeProject.setTitle("Active Project 1");
activeProject.addProjectParticipant(studentWithActiveAndInactive);
activeProject.addProjectParticipant(studentWithActiveAndCompleted);
activeProject.setHeadSupervisor(employeeWithHeadSupervisor);
activeProject = projectDao.save(activeProject);
ProjectFollower reviewerFollower = new ProjectFollower();
reviewerFollower.setFollower(employeeWithReviewer);
reviewerFollower.setProject(activeProject);
reviewerFollower.setProjectRole(ProjectTeamMemberRoles.REVIEWER);
reviewerFollower = projectFollowerDao.save(reviewerFollower);
ProjectFollower coSupervisorFollower = new ProjectFollower();
coSupervisorFollower.setFollower(employeeWithCoSupervisor);
coSupervisorFollower.setProject(activeProject);
coSupervisorFollower.setProjectRole(ProjectTeamMemberRoles.CO_SUPERVISOR);
coSupervisorFollower = projectFollowerDao.save(coSupervisorFollower);
ProjectFollower coSupervisorFollower2 = new ProjectFollower();
coSupervisorFollower2.setFollower(employeeWithCoSupervisorAndReviewer);
coSupervisorFollower2.setProject(activeProject);
coSupervisorFollower2.setProjectRole(ProjectTeamMemberRoles.CO_SUPERVISOR);
coSupervisorFollower2 = projectFollowerDao.save(coSupervisorFollower2);
inactiveProject = new Project();
inactiveProject.setTitle("Inactive project");
inactiveProject.addProjectParticipant(studentWithActiveAndInactive);
inactiveProject.addProjectParticipant(studentWithInactive);
inactiveProject.setProjectStatus(ProjectStatus.INACTIVE);
inactiveProject.setHeadSupervisor(employeeWithHeadSupervisor);
inactiveProject = projectDao.save(inactiveProject);
ProjectFollower reviewerFollower2 = new ProjectFollower();
reviewerFollower2.setFollower(employeeWithCoSupervisorAndReviewer);
reviewerFollower2.setProject(inactiveProject);
reviewerFollower2.setProjectRole(ProjectTeamMemberRoles.REVIEWER);
reviewerFollower2 = projectFollowerDao.save(reviewerFollower2);
completedProject = new Project();
completedProject.setTitle("Completed project");
completedProject.addProjectParticipant(studentWithActiveAndCompleted);
completedProject.addProjectParticipant(studentWithCompleted);
completedProject.setProjectStatus(ProjectStatus.COMPLETED);
completedProject.setHeadSupervisor(employeeWithHeadSupervisor);
completedProject = projectDao.save(completedProject);
}
@Test
@Transactional
@Rollback
public void testFindAll(){
List<Project> list = new ArrayList<Project>();
list.add(activeProject);
list.add(inactiveProject);
list.add(completedProject);
Assert.assertEquals(list, projectDao.findAll());
}
@Test
@Transactional
@Rollback
public void testCountAll() {
Assert.assertEquals(3, projectDao.countAll());
}
@Test
@Transactional
@Rollback
public void testLoad() {
Project p = projectDao.load(activeProject.getId());
Assert.assertEquals(p, activeProject);
}
@Test
@Transactional
@Rollback
public void testGetProjectsByParticipant(){
List<Project> list = new ArrayList<Project>();
list.add(activeProject);
list.add(inactiveProject);
Assert.assertEquals(list, projectDao.getProjectsByParticipant(userWithActiveAndInactive, null));
list = new ArrayList<Project>();
list.add(activeProject);
Assert.assertEquals(list, projectDao.getProjectsByParticipant(userWithActiveAndInactive, ProjectStatus.ACTIVE));
Assert.assertEquals(list, projectDao.getProjectsByParticipant(userWithActiveAndCompleted, ProjectStatus.ACTIVE));
list = new ArrayList<Project>();
list.add(inactiveProject);
Assert.assertEquals(list, projectDao.getProjectsByParticipant(userWithActiveAndInactive, ProjectStatus.INACTIVE));
list = new ArrayList<Project>();
Assert.assertEquals(list, projectDao.getProjectsByParticipant(userWithActiveAndInactive, ProjectStatus.COMPLETED));
list = new ArrayList<Project>();
list.add(activeProject);
list.add(completedProject);
Assert.assertEquals(list, projectDao.getProjectsByParticipant(userWithActiveAndCompleted, null));
list = new ArrayList<Project>();
Assert.assertEquals(list, projectDao.getProjectsByParticipant(userWithActiveAndCompleted, ProjectStatus.INACTIVE));
list = new ArrayList<Project>();
list.add(completedProject);
Assert.assertEquals(list, projectDao.getProjectsByParticipant(userWithCompleted, null));
Assert.assertEquals(list, projectDao.getProjectsByParticipant(userWithCompleted, ProjectStatus.COMPLETED));
list = new ArrayList<Project>();
list.add(inactiveProject);
Assert.assertEquals(list, projectDao.getProjectsByParticipant(userWithInactive, null));
Assert.assertEquals(list, projectDao.getProjectsByParticipant(userWithInactive, ProjectStatus.INACTIVE));
list = new ArrayList<Project>();
Assert.assertEquals(list, projectDao.getProjectsByParticipant(userWithInactive, ProjectStatus.ACTIVE));
Assert.assertEquals(list, projectDao.getProjectsByParticipant(userWithCompleted, ProjectStatus.ACTIVE));
}
@Test
@Transactional
@Rollback
public void testCountProjectsByParticipant(){
Assert.assertEquals(2, projectDao.countProjectsByParticipant(userWithActiveAndCompleted, null));
Assert.assertEquals(1, projectDao.countProjectsByParticipant(userWithActiveAndCompleted, ProjectStatus.ACTIVE));
Assert.assertEquals(1, projectDao.countProjectsByParticipant(userWithActiveAndCompleted, ProjectStatus.COMPLETED));
Assert.assertEquals(0, projectDao.countProjectsByParticipant(userWithActiveAndCompleted, ProjectStatus.INACTIVE));
Assert.assertEquals(2, projectDao.countProjectsByParticipant(userWithActiveAndInactive, null));
Assert.assertEquals(1, projectDao.countProjectsByParticipant(userWithActiveAndInactive, ProjectStatus.ACTIVE));
Assert.assertEquals(0, projectDao.countProjectsByParticipant(userWithActiveAndInactive, ProjectStatus.COMPLETED));
Assert.assertEquals(1, projectDao.countProjectsByParticipant(userWithActiveAndInactive, ProjectStatus.INACTIVE));
Assert.assertEquals(1, projectDao.countProjectsByParticipant(userWithCompleted, null));
Assert.assertEquals(0, projectDao.countProjectsByParticipant(userWithCompleted, ProjectStatus.ACTIVE));
Assert.assertEquals(1, projectDao.countProjectsByParticipant(userWithCompleted, ProjectStatus.COMPLETED));
Assert.assertEquals(0, projectDao.countProjectsByParticipant(userWithCompleted, ProjectStatus.INACTIVE));
Assert.assertEquals(1, projectDao.countProjectsByParticipant(userWithInactive, null));
Assert.assertEquals(0, projectDao.countProjectsByParticipant(userWithInactive, ProjectStatus.ACTIVE));
Assert.assertEquals(0, projectDao.countProjectsByParticipant(userWithInactive, ProjectStatus.COMPLETED));
Assert.assertEquals(1, projectDao.countProjectsByParticipant(userWithInactive, ProjectStatus.INACTIVE));
}
@Test
@Transactional
@Rollback
public void testGetProjectsByHeadSupervisor(){
List<Project> list = new ArrayList<Project>();
list.add(activeProject);
list.add(completedProject);
list.add(inactiveProject);
Assert.assertEquals(list, projectDao.getProjectsByHeadSupervisor(userWithHeadSupervisor, null));
list = new ArrayList<Project>();
list.add(activeProject);
Assert.assertEquals(list, projectDao.getProjectsByHeadSupervisor(userWithHeadSupervisor, ProjectStatus.ACTIVE));
list = new ArrayList<Project>();
list.add(inactiveProject);
Assert.assertEquals(list, projectDao.getProjectsByHeadSupervisor(userWithHeadSupervisor, ProjectStatus.INACTIVE));
list = new ArrayList<Project>();
list.add(completedProject);
Assert.assertEquals(list, projectDao.getProjectsByHeadSupervisor(userWithHeadSupervisor, ProjectStatus.COMPLETED));
list = new ArrayList<Project>();
Assert.assertEquals(list, projectDao.getProjectsByHeadSupervisor(userNotHeadSupervisor, null));
Assert.assertEquals(list, projectDao.getProjectsByHeadSupervisor(userNotHeadSupervisor, ProjectStatus.COMPLETED));
Assert.assertEquals(list, projectDao.getProjectsByHeadSupervisor(userNotHeadSupervisor, ProjectStatus.INACTIVE));
Assert.assertEquals(list, projectDao.getProjectsByHeadSupervisor(userNotHeadSupervisor, ProjectStatus.ACTIVE));
}
@Test
@Transactional
@Rollback
public void testGetProjectsByProjectTeamMember(){
ArrayList<Project> list = new ArrayList<Project>();
list.add(activeProject);
Assert.assertEquals(list, projectDao.getProjectsByProjectTeamMember(userWithCoSupervisor, null, null));
Assert.assertEquals(list, projectDao.getProjectsByProjectTeamMember(userWithReviewer, null, null));
list = new ArrayList<Project>();
list.add(activeProject);
list.add(inactiveProject);
Assert.assertEquals(list, projectDao.getProjectsByProjectTeamMember(userWithCoSupervisorAndReviewer, null, null));
list = new ArrayList<Project>();
list.add(activeProject);
Assert.assertEquals(list, projectDao.getProjectsByProjectTeamMember(userWithCoSupervisorAndReviewer, ProjectStatus.ACTIVE, null));
list = new ArrayList<Project>();
Assert.assertEquals(list, projectDao.getProjectsByProjectTeamMember(userWithCoSupervisorAndReviewer, ProjectStatus.COMPLETED, null));
list = new ArrayList<Project>();
list.add(activeProject);
Assert.assertEquals(list, projectDao.getProjectsByProjectTeamMember(userWithCoSupervisorAndReviewer, null, ProjectTeamMemberRoles.CO_SUPERVISOR));
list = new ArrayList<Project>();
list.add(inactiveProject);
Assert.assertEquals(list, projectDao.getProjectsByProjectTeamMember(userWithCoSupervisorAndReviewer, null, ProjectTeamMemberRoles.REVIEWER));
}
}

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
default-autowire="byName">
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="testPersistenceUnit" />
</bean>
<!--
enable the configuration of transactional behavior based on
annotations
-->
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="eventDao" class="se.su.dsv.scipro.data.dao.jpa.EventDaoJPAImp">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="projectScheduleDao" class="se.su.dsv.scipro.data.dao.jpa.ProjectScheduleDaoJPAImp">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="projectDao" class="se.su.dsv.scipro.data.dao.jpa.ProjectDaoJPAImp">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
</beans>

@ -0,0 +1,204 @@
package se.su.dsv.scipro.dao.jpa;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;
import junit.framework.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import se.su.dsv.scipro.data.dao.interfaces.EventDao;
import se.su.dsv.scipro.data.dao.interfaces.ProjectDao;
import se.su.dsv.scipro.data.dao.interfaces.ProjectScheduleDao;
import se.su.dsv.scipro.data.dataobjects.Event;
import se.su.dsv.scipro.data.dataobjects.Project;
import se.su.dsv.scipro.data.dataobjects.ProjectSchedule;
/**
* @author Dan Kjellman <dan-kjel@dsv.su.se>
*
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class TestProjectScheduleDaoJPA {
@Autowired
private EventDao eventDao;
@Autowired
private ProjectScheduleDao projectScheduleDao;
@Autowired
private ProjectDao projectDao;
protected ProjectSchedule ps;
protected Project project;
protected Event oldDueDateEvent;
protected Event oldDoneDueDateEvent;
protected Event futureDueDateEvent;
protected Event oldDueDateDeletedEvent;
protected Event futureDueDateDeletedEvent;
@Before
public void startTransaction() {
project = new Project();
project = projectDao.save(project);
ps = new ProjectSchedule();
ps.setProject(project);
ps = projectScheduleDao.save(ps);
GregorianCalendar calBeforeToday = new GregorianCalendar();
calBeforeToday.add(Calendar.MONTH, -1);
GregorianCalendar calAfterToday = new GregorianCalendar();
calAfterToday.add(Calendar.MONTH, 1);
oldDueDateEvent = new Event();
oldDueDateEvent.setTitle("oldDueDateEvent title");
oldDueDateEvent.setDescription("oldDueDateEvent description");
oldDueDateEvent.setDueDate(calBeforeToday.getTime());
oldDueDateEvent.setProjectSchedule(ps);
oldDueDateEvent = eventDao.save(oldDueDateEvent);
oldDoneDueDateEvent = new Event();
oldDoneDueDateEvent.setTitle("oldDoneDueDateEvent title");
oldDoneDueDateEvent.setDescription("oldDoneDueDateEvent description");
oldDoneDueDateEvent.setDone(true);
oldDoneDueDateEvent.setDueDate(calBeforeToday.getTime());
oldDoneDueDateEvent.setProjectSchedule(ps);
oldDoneDueDateEvent = eventDao.save(oldDoneDueDateEvent);
futureDueDateEvent = new Event();
futureDueDateEvent.setTitle("futureDueDateEvent title");
futureDueDateEvent.setDescription("futureDueDateEvent description");
futureDueDateEvent.setDueDate(calAfterToday.getTime());
futureDueDateEvent.setProjectSchedule(ps);
futureDueDateEvent = eventDao.save(futureDueDateEvent);
oldDueDateDeletedEvent = new Event();
oldDueDateDeletedEvent.setTitle("oldDueDateDeletedEvent title");
oldDueDateDeletedEvent.setDescription("oldDueDateDeletedEvent description");
oldDueDateDeletedEvent.setDeleted(true);
oldDueDateDeletedEvent.setDueDate(calBeforeToday.getTime());
oldDueDateDeletedEvent.setProjectSchedule(ps);
oldDueDateDeletedEvent = eventDao.save(oldDueDateDeletedEvent);
futureDueDateDeletedEvent = new Event();
futureDueDateDeletedEvent.setTitle("futureDueDateDeletedEvent title");
futureDueDateDeletedEvent.setDescription("futureDueDateDeletedEvent description");
futureDueDateDeletedEvent.setDueDate(calAfterToday.getTime());
futureDueDateDeletedEvent.setDeleted(true);
futureDueDateDeletedEvent.setProjectSchedule(ps);
futureDueDateDeletedEvent = eventDao.save(futureDueDateDeletedEvent);
}
@Test
@Transactional
@Rollback
public void testFindAll(){
List<ProjectSchedule> list = new ArrayList<ProjectSchedule>();
list.add(ps);
Assert.assertEquals(list, projectScheduleDao.findAll());
}
@Test
@Transactional
@Rollback
public void testCountAll() {
Assert.assertEquals(1, projectScheduleDao.countAll());
}
@Test
@Transactional
@Rollback
public void testLoad() {
ProjectSchedule ps2 = projectScheduleDao.load(ps.getId());
Assert.assertEquals(ps, ps2);
}
@Test
@Transactional
@Rollback
public void testGetAllEventsByProjectSchedule(){
List<Event> notDeleted = new ArrayList<Event>();
notDeleted.add(oldDoneDueDateEvent);
notDeleted.add(oldDueDateEvent);
notDeleted.add(futureDueDateEvent);
List<Event> fromQuery = projectScheduleDao.getAllEventsByProjectSchedule(ps);
Assert.assertEquals(notDeleted, fromQuery);
}
@Test
@Transactional
@Rollback
public void testGetUpcomingEventsByProjectSchedule(){
List<Event> notDeleted = new ArrayList<Event>();
notDeleted.add(futureDueDateEvent);
List<Event> fromQuery = projectScheduleDao.getUpcomingEventsByProjectSchedule(ps, false);
Assert.assertEquals(notDeleted, fromQuery);
}
@Test
@Transactional
@Rollback
public void testGetUpcomingAndNotDoneEventsByProjectSchedule(){
System.out.println("ALSNGALSNG");
List<Event> notDeleted = new ArrayList<Event>();
notDeleted.add(oldDueDateEvent);
notDeleted.add(futureDueDateEvent);
List<Event> fromQuery = projectScheduleDao.getUpcomingEventsByProjectSchedule(ps, true);
Assert.assertEquals(notDeleted, fromQuery);
}
@Test
@Transactional
@Rollback
public void testGetOldEventsByProjectSchedule(){
List<Event> notDeleted = new ArrayList<Event>();
notDeleted.add(oldDueDateEvent);
notDeleted.add(oldDoneDueDateEvent);
List<Event> fromQuery = projectScheduleDao.getOldEventsByProjectSchedule(ps, null);
Assert.assertEquals(notDeleted, fromQuery);
}
@Test
@Transactional
@Rollback
public void testGetNotDoneOldEventsByProjectSchedule(){
List<Event> notDeleted = new ArrayList<Event>();
notDeleted.add(oldDueDateEvent);
List<Event> fromQuery = projectScheduleDao.getOldEventsByProjectSchedule(ps, false);
Assert.assertEquals(notDeleted, fromQuery);
}
@Test
@Transactional
@Rollback
public void testCountOverDueEvent(){
Assert.assertEquals(1, projectScheduleDao.countOverDueEvents(ps));
}
}