From 7ee41e0731d048c15fa31df3c9b21a4bd4a9128f Mon Sep 17 00:00:00 2001 From: Filip Bugos <xbugos@fi.muni.cz> Date: Sun, 16 Apr 2023 20:18:07 +0200 Subject: [PATCH] feat: User service test 16/04/23 --- .../fi/pa165/core/user/UserServiceTest.java | 231 ++++++++++++++++++ 1 file changed, 231 insertions(+) create mode 100644 core/src/test/java/cz/muni/fi/pa165/core/user/UserServiceTest.java diff --git a/core/src/test/java/cz/muni/fi/pa165/core/user/UserServiceTest.java b/core/src/test/java/cz/muni/fi/pa165/core/user/UserServiceTest.java new file mode 100644 index 0000000..78a712f --- /dev/null +++ b/core/src/test/java/cz/muni/fi/pa165/core/user/UserServiceTest.java @@ -0,0 +1,231 @@ +package cz.muni.fi.pa165.core.user; + +import cz.muni.fi.pa165.core.company.Company; +import cz.muni.fi.pa165.core.device.Device; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import static org.mockito.MockitoAnnotations.openMocks; + +public class UserServiceTest { + @InjectMocks + private UserService userService; + + @Mock + private UserRepository userReposiroyMock; + + @BeforeEach + void init() { + openMocks(this); + } + + @Test + void shouldGetUserById() { + + User user = User + .builder() + .username("Test") + .build(); + + when(userReposiroyMock.findById(user.getId())).thenReturn(Optional.of(user)); + + User result = userService.findById(user.getId()); + + verify(userReposiroyMock).findById(user.getId()); + + assertEquals(user, result); + } + + @Test + void shouldCreateNewDevice() { + + User user = User + .builder() + .username("Test") + .build(); + + when(userReposiroyMock.save(user)).thenReturn(user); + + User createdUser = userService.create(user); + + verify(userReposiroyMock).save(user); + + assertThat(createdUser).isEqualTo(user); + } + + @Test + void shouldFindUserByName() { + + User user = User + .builder() + .username("Test") + .build(); + + when(userReposiroyMock.findByUsername(user.getUsername())).thenReturn(Optional.of(user)); + + User result = userService.findByUsername(user.getUsername()); + + verify(userReposiroyMock).findByUsername(user.getUsername()); + + assertEquals(user, result); + } + + @Test + void shouldFindAllUserPageableInt() { + + User user1 = User + .builder() + .username("Test") + .build(); + + User user2 = User + .builder() + .username("Test2") + .build(); + + Page<User> page = new PageImpl<>(List.of(user1, user2)); + + int pageNumber = 0; + int pageSize = 10; + + when(userReposiroyMock.findAll(PageRequest.of(pageNumber, pageSize))).thenReturn(page); + + Page<User> result = userService.findAllPageableInt(pageNumber); + + verify(userReposiroyMock).findAll(PageRequest.of(pageNumber, pageSize)); + + assertThat(result).containsExactlyInAnyOrder(user1, user2); + } + + @Test + void shouldDeleteUserById() { + + User user = User + .builder() + .username("Test") + .build(); + + when(userReposiroyMock.findById(user.getId())).thenReturn(Optional.of(user)); + + User deletedUser = userService.deleteById(user.getId()); + + verify(userReposiroyMock).findById(user.getId()); + verify(userReposiroyMock).save(user); // soft delete + + assertNotNull(deletedUser.getDeletedDateTime()); + assertEquals(user, deletedUser); + } + + @Test + void shouldUpdateUser() { + + User originalUser = User + .builder() + .username("Test1") + .build(); + + User updatedUser = User + .builder() + .username("Test2") + .build(); + + when(userReposiroyMock.findById(originalUser.getId())).thenReturn(Optional.of(originalUser)); + + when(userReposiroyMock.save(updatedUser)).thenReturn(updatedUser); + + User result = userService.update(updatedUser, originalUser.getId()); + + verify(userReposiroyMock).findById(originalUser.getId()); + verify(userReposiroyMock).save(updatedUser); + + assertEquals(originalUser.getId(), result.getId()); + assertEquals(updatedUser.getUsername(), result.getUsername()); + } + + @Test + void shouldHardDeleteAllUsers() { + userService.hardDeleteAll(); + verify(userReposiroyMock).deleteAll(); + } + + @Test + void shouldDeleteAllUsers() { + var data = List.of( + User.builder().username("Test1").build(), + User.builder().username("Test2").build() + ); + when(userReposiroyMock.findAll()).thenReturn(data); + userService.deleteAll(); + verify(userReposiroyMock).findAll(); + verify(userReposiroyMock).saveAll(data); + } + + @Test + void shouldDeleteAllUsersIds() { + User firstUser = User + .builder() + .username("Test1") + .build(); + + User secondUser = User + .builder() + .username("Test2") + .build(); + + String[] ids = {firstUser.getId(), secondUser.getId()}; + when(userReposiroyMock.findById(ids[0])).thenReturn(Optional.of(firstUser)); + when(userReposiroyMock.findById(ids[1])).thenReturn(Optional.of(secondUser)); + + userService.deleteAllById(ids); + + verify(userReposiroyMock).save(firstUser); + verify(userReposiroyMock).save(secondUser); + } + + @Test + void shouldFindAllUsers() { + var data = List.of( + User.builder().username("Test1").build(), + User.builder().username("Test2").build() + ); + + when(userReposiroyMock.findAll()).thenReturn(data); + List<User> result = userService.findAll(); + verify(userReposiroyMock).findAll(); + assertEquals(data, result); + } + + @Test + void shouldFindAllUsersPageable() { + int pageNumber = 0; + int pageSize = 10; + Pageable pageable = PageRequest.of(pageNumber, pageSize); + + var data = List.of( + User.builder().username("Test1").build(), + User.builder().username("Test2").build() + ); + + Page<User> pageResult = new PageImpl<>(data, pageable, data.size()); + when(userReposiroyMock.findAll(pageable)).thenReturn(pageResult); + + Page<User> result = userService.findAllPageable(pageable); + verify(userReposiroyMock).findAll(pageable); + + assertEquals(pageResult, result); + } +} -- GitLab