package net.rrm.ehour.persistence.user.dao;
import com.google.common.collect.Sets;
import net.rrm.ehour.data.LegacyUserDepartment;
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.List;
import java.util.Set;
import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.greaterThan;
import static org.hamcrest.Matchers.hasItem;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
/**
* @author thies (Thies Edeling - thies@te-con.nl)
* Created on: Nov 14, 2010 - 10:41:38 PM
*/
public class UserDaoHibernateImplTest extends AbstractAnnotationDaoTest {
@Autowired
private UserDao userDao;
@Test
public void shouldFindUsers() {
List<User> results = userDao.findActiveUsers();
assertEquals(4, results.size());
}
@Test
public void shouldFindById() {
User user = userDao.findById(1);
assertEquals("thies", user.getUsername());
}
@Test
public void shouldFindByUsername() {
User user = userDao.findByUsername("thies");
assertEquals("thies", user.getUsername());
}
@Test
public void shouldPersist() {
UserDepartment org = UserDepartmentObjectMother.createUserDepartment();
User user = UserObjectMother.createUser();
user.setUserId(5);
ProjectAssignment assignment = new ProjectAssignment();
assignment.setUser(user);
assignment.setAssignmentId(1);
assignment.setProject(new Project(1));
assignment.setAssignmentType(new ProjectAssignmentType(EhourConstants.ASSIGNMENT_DATE));
Set<ProjectAssignment> assignments = Sets.newHashSet(assignment);
user.setUserDepartment(org);
user.setProjectAssignments(assignments);
userDao.persist(user);
assertNotNull(user.getUserId());
}
@Test
public void shouldFindAllActiveUsers() {
List<User> results = userDao.findActiveUsers();
assertEquals(4, results.size());
}
@Test
public void shouldFindAllActiveUsersWithEmailSet() {
List<User> results = userDao.findAllActiveUsersWithEmailSet();
assertEquals(2, results.size());
}
@Test
public void shouldDeletePmWithoutProject() {
userDao.deletePmWithoutProject();
User user = userDao.findById(2);
assertThat(user.getUserRoles(), not(hasItem(UserRole.PROJECTMANAGER)));
}
@Test
public void shouldFindWithLegacyUserDepartment() {
List<LegacyUserDepartment> legacyUserDepartments = userDao.findLegacyUserDepartments();
assertThat(legacyUserDepartments.size(), greaterThan(0));
}
}