Skip to content
Snippets Groups Projects
Commit 1c4533e8 authored by Dominika Zemanovičová's avatar Dominika Zemanovičová
Browse files

Introduce UserFacadeTest

parent 68ac70dd
No related branches found
No related tags found
4 merge requests!31M2,!28M2 user,!27Draft: M2 user,!26M2 user tests
package org.fuseri.modulelanguageschool.user;
import org.fuseri.model.dto.course.CourseDto;
import org.fuseri.model.dto.course.LanguageTypeDto;
import org.fuseri.model.dto.course.ProficiencyLevelDto;
import org.fuseri.model.dto.user.AddressDto;
import org.fuseri.model.dto.user.UserAddLanguageDto;
import org.fuseri.model.dto.user.UserCreateDto;
import org.fuseri.model.dto.user.UserDto;
import org.fuseri.modulelanguageschool.course.Course;
import org.fuseri.modulelanguageschool.course.CourseMapper;
import org.fuseri.modulelanguageschool.course.Language;
import org.fuseri.modulelanguageschool.course.ProficiencyLevel;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
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.Map;
import java.util.Set;
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;
@SpringBootTest
@AutoConfigureMockMvc
final class UserFacadeTest {
@Autowired
private UserFacade userFacade;
@MockBean
private UserService userService;
@MockBean
private UserMapper userMapper;
@MockBean
private CourseMapper courseMapper;
private static final LanguageTypeDto LANGUAGE_DTO = LanguageTypeDto.ENGLISH;
private static final ProficiencyLevelDto PROFICIENCY_DTO = ProficiencyLevelDto.B2;
private static final Map<LanguageTypeDto, ProficiencyLevelDto> LANGUAGE_PROFICIENCY_DTO =
Map.of(LANGUAGE_DTO, PROFICIENCY_DTO);
private final static List<CourseDto> COURSE_DTO_LIST = List.of(new CourseDto(1L, "AJ1", 10,
LANGUAGE_DTO, PROFICIENCY_DTO));
private static final List<Course> COURSE_LIST = List.of(new Course("AJ1", 10,
Language.valueOf(LANGUAGE_DTO.name()), ProficiencyLevel.valueOf(PROFICIENCY_DTO.name())));
private static final Address ADDRESS = new Address(
"Czechia", "Brno", "Masarykova", "45", "90033");
private static final AddressDto ADDRESS_DTO = new AddressDto(
"Czechia", "Brno", "Masarykova", "45", "90033");
private final UserCreateDto USER_CREATE_DTO = new UserCreateDto(
"xnovak", "1c1bbf66-6585-4978-886b-b126335ff3af",
"xnovak@emample.com", "Peter", "Novak", ADDRESS_DTO, org.fuseri.model.dto.user.UserType.STUDENT, LANGUAGE_PROFICIENCY_DTO);
private final UserDto USER_DTO = new UserDto("xnovak", "xnovak@emample.com", "Peter", "Novak", ADDRESS_DTO, org.fuseri.model.dto.user.UserType.STUDENT);
private final User USER = new User(
"xnovak", UserType.STUDENT, "1234fak", "xnovak@emample.com", "Peter", "Novak", ADDRESS, Set.of(), Map.of());
@Test
void find() {
long id = 1L;
when(userService.find(id)).thenReturn(USER);
when(userMapper.toDto(USER)).thenReturn(USER_DTO);
UserDto actualDto = userFacade.find(id);
assertNotNull(actualDto);
assertEquals(USER_DTO, actualDto);
}
@Test
void create() {
when(userMapper.fromCreateDto(USER_CREATE_DTO)).thenReturn(USER);
when(userService.create(USER)).thenReturn(USER);
when(userMapper.toDto(USER)).thenReturn(USER_DTO);
UserDto actualDto = userFacade.create(USER_CREATE_DTO);
assertEquals(USER_DTO, actualDto);
}
@Test
void delete() {
long id = 1L;
userFacade.delete(id);
verify(userService).delete(id);
}
@Test
void update() {
long id = 1L;
when(userMapper.fromCreateDto(USER_CREATE_DTO)).thenReturn(USER);
when(userService.update(id, USER)).thenReturn(USER);
when(userMapper.toDto(USER)).thenReturn(USER_DTO);
UserDto actualDto = userFacade.update(id, USER_CREATE_DTO);
assertEquals(USER_DTO, actualDto);
}
@Test
void findAll() {
Pageable pageable = PageRequest.of(0, 10);
Page<User> userPage = new PageImpl<>(List.of(USER), pageable, 1);
Page<UserDto> expectedPageDto = new PageImpl<>(List.of(USER_DTO), pageable, 1);
when(userService.findAll(pageable)).thenReturn(userPage);
when(userMapper.toDtoPage(userPage)).thenReturn(expectedPageDto);
Page<UserDto> actualPageDto = userFacade.findAll(0);
assertEquals(expectedPageDto, actualPageDto);
}
@Test
void addLanguage() {
long id = 1L;
UserAddLanguageDto dto = new UserAddLanguageDto(LANGUAGE_DTO, PROFICIENCY_DTO);
when(userService.addLanguageProficiency(
id, Language.valueOf(LANGUAGE_DTO.name()), ProficiencyLevel.valueOf(PROFICIENCY_DTO.name())))
.thenReturn(USER);
when(userMapper.toDto(USER)).thenReturn(USER_DTO);
UserDto actualDto = userFacade.addLanguageProficiency(id, dto);
assertNotNull(actualDto);
assertEquals(USER_DTO, actualDto);
}
@Test
void getEnrolled() {
long id = 1L;
when(courseMapper.mapToList(COURSE_LIST)).thenReturn(COURSE_DTO_LIST);
when(userService.getEnrolled(id)).thenReturn(COURSE_LIST);
List<CourseDto> actualDtos = userFacade.getEnrolled(id);
assertNotNull(actualDtos);
assertEquals(COURSE_DTO_LIST, actualDtos);
}
@Test
void getFinished() {
long id = 1L;
when(courseMapper.mapToList(COURSE_LIST)).thenReturn(COURSE_DTO_LIST);
when(userService.getFinished(id)).thenReturn(COURSE_LIST);
List<CourseDto> actualDtos = userFacade.getFinished(id);
assertNotNull(actualDtos);
assertEquals(COURSE_DTO_LIST, actualDtos);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment