PetkoTrenev

emp

Feb 21st, 2020
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.45 KB | None | 0 0
  1. class EmployeeServiceImplUnitTest {
  2.  
  3. private static final String USERNAME = "Test Username";
  4. private static final String SECOND_USERNAME = "Test Username 2";
  5. private static final String USERNAME_NOT_FOUND = "Username not found";
  6. private static final String NEW_SUMMARY = "New information";
  7. private static final String PROFICIENT = "Proficient";
  8.  
  9. @Mock
  10. private EmployeeRepository employeeRepository;
  11. @Mock
  12. private ProjectHistoryMapper projectHistoryMapper;
  13. @Mock
  14. private ImageUploadProperties imageUploadProperties;
  15. @Mock
  16. private ImageValidator imageValidator;
  17. @Mock
  18. private ProjectHistoryRepository projectHistoryRepository;
  19. @Mock
  20. private ProjectHistoryService projectHistoryService;
  21. @Mock
  22. private EducationRepository educationRepository;
  23. @Mock
  24. private LearnedLanguageRepository learnedLanguageRepository;
  25. @Mock
  26. private LanguageRepository languageRepository;
  27. @Mock
  28. private PopulateEmployeeGroupAndSkillEntitiesService populateEmployeeGroupAndSkillEntitiesService;
  29. @Mock
  30. private SkillGroupService skillGroupService;
  31. @Mock
  32. private EmployeeGroupService employeeGroupService;
  33. @Mock
  34. private SkillService skillService;
  35. @Mock
  36. private GroupService groupService;
  37.  
  38. private EmployeeService employeeService;
  39.  
  40. private List<ProjectHistory> projectHistories;
  41.  
  42. private Employee employee;
  43.  
  44. private List<UsernameRoleDTO> usernameRoleDTOs;
  45.  
  46. private List<LearnedLanguage> learnedLanguages;
  47.  
  48. private LearnedLanguage learnedLanguage;
  49.  
  50. private Language language;
  51.  
  52. @BeforeEach
  53. void setUp() {
  54. MockitoAnnotations.initMocks(this);
  55.  
  56. employeeService = new EmployeeServiceImpl(
  57. projectHistoryService, employeeRepository, projectHistoryMapper,
  58. imageUploadProperties, imageValidator, projectHistoryRepository,
  59. educationRepository, learnedLanguageRepository, populateEmployeeGroupAndSkillEntitiesService,
  60. skillGroupService, employeeGroupService, languageRepository, skillService, groupService);
  61.  
  62. Education education = Education.builder()
  63. .id(1L)
  64. .title(TEST_NAME)
  65. .info(TEST_INFO)
  66. .startYear(TEST_START_INT)
  67. .endYear(TEST_END_INT)
  68. .build();
  69.  
  70. employee = createUser(1L, WfmRole.EMPLOYEE, USERNAME, WfmStatus.ACTIVE);
  71. employee.setEducation(List.of(education));
  72.  
  73. language = Language.builder().id(ID).name(LANGUAGE_NAME).build();
  74.  
  75. learnedLanguage = LearnedLanguage.builder().id(ID).employee(employee).language(language).level(LanguageLevel.A1).build();
  76.  
  77. learnedLanguages = new ArrayList<>();
  78.  
  79. learnedLanguages.add(learnedLanguage);
  80. employee.setLearnedLanguages(learnedLanguages);
  81.  
  82. usernameRoleDTOs = new ArrayList<>();
  83. projectHistories = new ArrayList<>();
  84.  
  85. }
  86.  
  87. @Test
  88. void editEmployeeLearnedLanguage_shouldUpdateLearnedLanguage() {
  89. // arrange
  90. LearnedLanguage updatedLearnedLanguage = LearnedLanguage.builder().employee(employee).language(language).level(LanguageLevel.getValueOfStringOrDefault(PROFICIENT)).build();
  91. learnedLanguages.add(learnedLanguage);
  92. employee.setLearnedLanguages(learnedLanguages);
  93. when(employeeRepository.findByUsernameIgnoreCase(employee.getUsername())).thenReturn(Optional.ofNullable(employee));
  94. when(learnedLanguageRepository.save(updatedLearnedLanguage)).thenReturn(updatedLearnedLanguage);
  95.  
  96. // act
  97. employeeService.updateEmployeeLanguageLevel(USERNAME, LANGUAGE_NAME, updatedLearnedLanguage.getLevel().getDescription());
  98.  
  99. // assert
  100. verify(employeeRepository, times(1)).findByUsernameIgnoreCase(USERNAME);
  101. verify(learnedLanguageRepository, times(1)).save(learnedLanguage);
  102.  
  103. }
  104.  
  105. @Test
  106. void editEmployeeLearnedLanguage_shouldThrowUsernameNotFoundException() {
  107.  
  108. when(employeeRepository.findByUsernameIgnoreCase(USERNAME)).thenReturn(Optional.ofNullable(employee));
  109. assertThrows(NotFoundException.class, () -> employeeService.updateEmployeeLanguageLevel(USERNAME, "TEST_DUMMY_NAME", PROFICIENT));
  110. }
  111.  
  112. @Test
  113. void editEmployeeLearnedLanguage_shouldThrowUnknownLanguageLevel() {
  114.  
  115. when(employeeRepository.findByUsernameIgnoreCase(USERNAME)).thenReturn(Optional.ofNullable(employee));
  116. assertThrows(IllegalArgumentException.class, () -> employeeService.updateEmployeeLanguageLevel(USERNAME, LANGUAGE_NAME, "DUMMY_LEVEL"));
  117. }
  118.  
  119. @Test
  120. void updateEmployeeSummaryInfo_shouldUpdateEmployeeSummaryInformation() {
  121. employee.setSummary(NEW_SUMMARY);
  122. when(employeeRepository.findByUsernameIgnoreCase(USERNAME)).thenReturn(Optional.ofNullable(employee));
  123.  
  124. employeeService.updateUserSummaryInformation(USERNAME, NEW_SUMMARY);
  125. verify(employeeRepository, times(1)).findByUsernameIgnoreCase(USERNAME);
  126. verify(employeeRepository, times(1)).save(employee);
  127. }
  128.  
  129. @Test
  130. void updateEmployeeSummaryInfo_shouldThrowUsernameNotFoundException() {
  131.  
  132. assertThrows(NotFoundException.class, () -> employeeService.findByUsernameIgnoreCase(USERNAME));
  133. }
  134.  
  135. @Test
  136. void updateUserRolesAndStatus_shouldUpdateUserRoleAndStatus() {
  137. UsernameRoleDTO usernameRoleDTO = UsernameRoleDTO.builder()
  138. .username(USERNAME)
  139. .isActive(Boolean.FALSE)
  140. .role(WfmRole.PLANNER)
  141. .build();
  142.  
  143. List<UsernameRoleDTO> usernameRoleDTOs = singletonList(usernameRoleDTO);
  144.  
  145. Employee updatedEmployee = createUser(1L, WfmRole.PLANNER, USERNAME, WfmStatus.INACTIVE);
  146.  
  147. when(employeeRepository.findAllByUsernameInIgnoreCase(singletonList(any()))).thenReturn(singletonList(employee));
  148. when(employeeRepository.saveAll(any())).thenReturn(singletonList(updatedEmployee));
  149.  
  150. // act
  151. employeeService.updateUserRolesAndStatus(usernameRoleDTOs);
  152.  
  153. // assert
  154. Assert.assertEquals(usernameRoleDTO.getRole(), updatedEmployee.getRole());
  155. Assert.assertEquals(usernameRoleDTO.getIsActive(), isNotTrue(WfmStatus.INACTIVE.equals(employee.getStatus())));
  156. }
  157.  
  158. @Test
  159. void updateUserRolesAndStatus_shouldUpdateMultiuserStatusAndRole() {
  160. // arrange
  161. usernameRoleDTOs.addAll(asList(
  162. UsernameRoleDTO.builder()
  163. .username(SECOND_USERNAME)
  164. .isActive(Boolean.FALSE)
  165. .role(WfmRole.PLANNER)
  166. .build(),
  167.  
  168. UsernameRoleDTO.builder()
  169. .username(USERNAME)
  170. .isActive(Boolean.FALSE)
  171. .role(WfmRole.PLANNER)
  172. .build()
  173. ));
  174.  
  175. List<Employee> users = new ArrayList<>(asList(
  176. createUser(1L, WfmRole.EMPLOYEE, USERNAME, WfmStatus.ACTIVE),
  177. createUser(2L, WfmRole.EMPLOYEE, SECOND_USERNAME, WfmStatus.ACTIVE)
  178. ));
  179.  
  180. List<Employee> updatedEmployees = new ArrayList<>(asList(
  181. createUser(1L, WfmRole.PLANNER, USERNAME, WfmStatus.INACTIVE),
  182. createUser(2L, WfmRole.PLANNER, SECOND_USERNAME, WfmStatus.INACTIVE)
  183. ));
  184.  
  185. when(employeeRepository.findAllByUsernameInIgnoreCase(singletonList(any()))).thenReturn(users);
  186. when(employeeRepository.saveAll(any())).thenReturn(updatedEmployees);
  187.  
  188. // act
  189. employeeService.updateUserRolesAndStatus(usernameRoleDTOs);
  190.  
  191. // assert
  192. assertEquals(users, updatedEmployees);
  193. }
  194.  
  195. @Test
  196. void updateUserRolesAndStatus_shouldUpdateUserRoles() {
  197.  
  198. UsernameRoleDTO usernameRoleDTOChangedRole = new UsernameRoleDTO();
  199. usernameRoleDTOChangedRole.setUsername(USERNAME);
  200. usernameRoleDTOChangedRole.setIsActive(Boolean.TRUE);
  201. usernameRoleDTOChangedRole.setRole(WfmRole.PLANNER);
  202.  
  203. Employee employeeWithChangedRole = createUser(1L, WfmRole.PLANNER, USERNAME, WfmStatus.ACTIVE);
  204.  
  205. usernameRoleDTOs.add(usernameRoleDTOChangedRole);
  206.  
  207. when(employeeRepository.findAllByUsernameInIgnoreCase(singletonList(any()))).thenReturn(singletonList(employee));
  208. when(employeeRepository.saveAll(any())).thenReturn(singletonList(employeeWithChangedRole));
  209.  
  210. employeeService.updateUserRolesAndStatus(usernameRoleDTOs);
  211.  
  212. assertEquals(employeeWithChangedRole.getRole(), usernameRoleDTOs.get(0).getRole());
  213. }
  214.  
  215. @Test
  216. void updateUserRolesAndStatus_shouldUpdateUserStatus() {
  217.  
  218. UsernameRoleDTO usernameRoleDTOWithChangedStatus = new UsernameRoleDTO();
  219. usernameRoleDTOWithChangedStatus.setUsername(USERNAME);
  220. usernameRoleDTOWithChangedStatus.setIsActive(Boolean.FALSE);
  221. usernameRoleDTOWithChangedStatus.setRole(WfmRole.EMPLOYEE);
  222.  
  223. Employee employeeWithChangedStatus = createUser(1L, WfmRole.EMPLOYEE, USERNAME, WfmStatus.INACTIVE);
  224.  
  225. usernameRoleDTOs.add(usernameRoleDTOWithChangedStatus);
  226.  
  227. when(employeeRepository.findAllByUsernameInIgnoreCase(singletonList(any()))).thenReturn(singletonList(employee));
  228. when(employeeRepository.saveAll(any())).thenReturn(singletonList(employeeWithChangedStatus));
  229.  
  230. employeeService.updateUserRolesAndStatus(usernameRoleDTOs);
  231.  
  232. assertEquals(WfmStatus.INACTIVE, employeeWithChangedStatus.getStatus());
  233. }
  234.  
  235. @Test
  236. void testFindOneByUsernameThrowsUsernameNotFoundException() {
  237. //arrange
  238. when(employeeRepository.findByUsernameIgnoreCase(USERNAME)).thenReturn(Optional.empty());
  239.  
  240. //assert
  241. Exception exception = assertThrows(NotFoundException.class, () -> employeeService.findByUsernameIgnoreCase(USERNAME));
  242. assertEquals(USERNAME_NOT_FOUND, exception.getMessage());
  243. }
  244.  
  245. @Test
  246. void deleteProjectHistory_shouldDeleteProjectHistory() {
  247. projectHistories.addAll(asList(
  248. ProjectHistory.builder().id(ID).projectName(PROJECT_NAME).build(),
  249. ProjectHistory.builder().id(2L).projectName("TEST_PROJECT_NAME").build()
  250. ));
  251. employee.setProjectHistory(projectHistories);
  252. employeeService.deleteProjectHistory(projectHistories, ID);
  253. verify(projectHistoryRepository, times(1)).delete(projectHistories.get(0));
  254. }
  255.  
  256.  
  257. @Test
  258. void editEducationForEmployeeShouldThrowNotFoundException() {
  259. Education education = Education.builder()
  260. .id(2L)
  261. .title(TEST_NAME)
  262. .info(TEST_INFO)
  263. .startYear(TEST_START_INT)
  264. .endYear(TEST_END_INT)
  265. .build();
  266.  
  267. when(employeeRepository.findByUsernameIgnoreCase(TEST_USERNAME1)).thenReturn(Optional.of(employee));
  268. assertThrows(NotFoundException.class, () -> employeeService.editEducationForEmployee(TEST_USERNAME1, education));
  269. }
  270.  
  271.  
  272. private Employee createUser(Long id, WfmRole wfmRole, String username, WfmStatus wfmStatus) {
  273. Employee employee = new Employee();
  274. employee.setId(id);
  275. employee.setUsername(username);
  276. employee.setRole(wfmRole);
  277. employee.setStatus(wfmStatus);
  278. return employee;
  279. }
  280.  
  281. @Test
  282. void deleteLanguage_shouldThrowNotFoundException() {
  283. assertThrows(NotFoundException.class, () -> employeeService.deleteLearnedLanguage(USERNAME, TEST_NAME));
  284. }
  285. }
Advertisement
Add Comment
Please, Sign In to add comment