package de.ppi.samples.fuwesta.service.impl;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import de.ppi.samples.fuwesta.dao.api.PostDao;
import de.ppi.samples.fuwesta.dao.api.UserDao;
import de.ppi.samples.fuwesta.model.Post;
import de.ppi.samples.fuwesta.model.User;
import de.ppi.samples.fuwesta.service.api.UserService;
/**
* The Class UserServiceImplTest.
*/
public class UserServiceImplTest {
/**
* Mock for userDao.
*/
@Mock
private UserDao userDao;
/**
* Mock for postDao.
*/
@Mock
private PostDao postDao;
/**
* The service to test.
*/
@InjectMocks
private UserService userService = new UserServiceImpl();
/**
* Initialize the test.
*
*/
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
/**
* Test method for
* {@link de.ppi.fuwesta.samples.springmvc.service.impl.UserServiceImpl#getAllUser()}
* .
*/
@Test
public void testGetAllUser() {
// Arange
// Act
userService.getAllUser();
// Assert
verify(userDao, times(1)).findAll((Pageable) null);
}
/**
* Test method for
* {@link de.ppi.fuwesta.samples.springmvc.service.impl.UserServiceImpl#getUser(int, int, org.springframework.data.domain.Sort.Order[])}
* .
*/
@Test
public void testGetUser() {
// CSOFF: MagicNumber
// Arange
PageRequest pr = new PageRequest(2, 4);
// Act
userService.getUser(10, 4);
// Assert
verify(userDao, times(1)).findAll(pr);
// CSON: MagicNumber
}
/**
* Test method for
* {@link de.ppi.fuwesta.samples.springmvc.service.impl.UserServiceImpl#save(de.ppi.fuwesta.samples.springmvc.model.User)}
* .
*/
@Test
public void testSave() {
// Arange
final User aUser = new User();
when(userDao.save(any(User.class))).thenReturn(aUser);
// Act
final User testUser = userService.save(new User());
// Assert
assertThat(testUser).isEqualTo(aUser);
verify(userDao, times(1)).save(any(User.class));
// CSON: MagicNumber
}
/**
* Test method for
* {@link de.ppi.fuwesta.samples.springmvc.service.impl.UserServiceImpl#read(java.lang.Long)}
* .
*/
@Test
public void testRead() {
// Arrange
when(userDao.findOne(Long.valueOf(1L))).thenReturn(new User());
// Act
userService.read(Long.valueOf(1L));
// Assert
verify(userDao, times(1)).findOne(Long.valueOf(1L));
}
/**
* Test method for
* {@link de.ppi.fuwesta.samples.springmvc.service.impl.UserServiceImpl#delete(java.lang.Long)}
* .
*/
@Test
public void testDelete() {
// Arrange
final User user = new User();
when(userDao.findOne(Long.valueOf(1L))).thenReturn(user);
// Act
userService.delete(Long.valueOf(1L));
// Assert
verify(userDao, times(1)).delete(user);
}
/**
* Test method for
* {@link de.ppi.fuwesta.samples.springmvc.service.impl.UserServiceImpl#getNrOfUsers()}
* .
*/
@SuppressWarnings("boxing")
@Test
public void testNrOfUsers() {
final long nrOfUser = 10;
when(userDao.count()).thenReturn(nrOfUser);
// Act
long testValue = userService.getNrOfUsers();
// Assert
verify(userDao, times(1)).count();
assertThat(testValue).isEqualTo(nrOfUser);
}
/**
* Test method for
* {@link de.ppi.fuwesta.samples.springmvc.service.impl.UserServiceImpl#getPostingSelectOptions()}
* .
*/
@Test
public void testGetPostingSelectOptions() {
// Arrange
final List<Post> postings = new ArrayList<Post>();
final int numberOfPosts = 5;
for (long i = 0; i < numberOfPosts; i++) {
Post post = new Post();
post.setId(Long.valueOf(i));
post.setTitle("Title " + i);
postings.add(post);
}
when(postDao.findAllOrderByTitle()).thenReturn(postings);
// Act
final List<Post> result = userService.getPostingSelectOptions();
// Assert
assertThat(result).hasSize(numberOfPosts).isEqualTo(postings);
}
}