package tudu.service.impl; import org.easymock.EasyMock; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.springframework.test.util.ReflectionTestUtils; import tudu.domain.*; import tudu.service.UserAlreadyExistsException; import javax.persistence.EntityManager; import static org.easymock.EasyMock.createMock; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.verify; import static org.junit.Assert.*; public class UserServiceImplTest { User user = new User(); UserServiceImpl userService = new UserServiceImpl(); EntityManager em = null; @Before public void before() { user.setLogin("test_user"); user.setFirstName("First name"); user.setLastName("Last name"); em = createMock(EntityManager.class); ReflectionTestUtils.setField(userService, "em", em); } @After public void after() { verify(em); } private void replay() { EasyMock.replay(em); } @Test public void testFindUser() { expect(em.find(User.class, "test_user")).andReturn(user); replay(); User testUser = userService.findUser("test_user"); assertEquals(testUser, user); } @Test public void testUpdateUser() { expect(em.merge(user)).andReturn(null); replay(); userService.updateUser(user); } @Test public void testCreateUser() { expect(em.find(User.class, "test_user")).andReturn(null); Role role = new Role(); role.setRole(RolesEnum.ROLE_USER.name()); expect(em.find(Role.class, RolesEnum.ROLE_USER.name())).andReturn(role); em.persist(user); TodoList todoList = new TodoList(); Todo todo = new Todo(); em.persist(todo); em.persist(todoList); replay(); try { userService.createUser(user); assertTrue(user.isEnabled()); assertNotNull(user.getCreationDate()); assertNotNull(user.getLastAccessDate()); assertEquals(1, user.getRoles().size()); Role testRole = user.getRoles().iterator().next(); assertEquals(RolesEnum.ROLE_USER.toString(), testRole.getRole()); assertEquals(1, user.getTodoLists().size()); TodoList testTodoList = user.getTodoLists().iterator().next(); assertNotNull(testTodoList.getLastUpdate()); assertEquals(1, testTodoList.getTodos().size()); } catch (UserAlreadyExistsException e) { fail("A UserAlreadyExistsException should not have been thrown."); } } @Test public void testFailedCreateUser() { expect(em.find(User.class, "test_user")).andReturn(user); replay(); try { userService.createUser(user); fail("A UserAlreadyExistsException should have been thrown."); } catch (UserAlreadyExistsException e) { assertNotNull(user); } } }