1
package by.andd3dfx.services;
3
import static org.hamcrest.CoreMatchers.is;
4
import static org.hamcrest.MatcherAssert.assertThat;
5
import static org.junit.jupiter.api.Assertions.fail;
7
import by.andd3dfx.dto.AuthorDto;
8
import by.andd3dfx.mappers.AuthorMapper;
9
import by.andd3dfx.persistence.dao.AuthorRepository;
10
import by.andd3dfx.persistence.entities.Author;
11
import by.andd3dfx.exceptions.AuthorNotFoundException;
12
import by.andd3dfx.services.impl.AuthorService;
13
import java.util.Arrays;
15
import java.util.Optional;
16
import org.junit.jupiter.api.Test;
17
import org.junit.jupiter.api.extension.ExtendWith;
18
import org.mockito.InjectMocks;
19
import org.mockito.Mock;
20
import org.mockito.Mockito;
21
import org.mockito.junit.jupiter.MockitoExtension;
23
@ExtendWith(MockitoExtension.class)
24
class AuthorServiceTest {
27
private AuthorRepository authorRepositoryMock;
30
private AuthorMapper authorMapperMock;
33
private AuthorService authorService;
37
final Long AUTHOR_ID = 123L;
38
final Author author = new Author();
39
final Optional<Author> optionalAuthor = Optional.of(author);
40
final AuthorDto authorDto = new AuthorDto();
41
Mockito.when(authorRepositoryMock.findById(AUTHOR_ID)).thenReturn(optionalAuthor);
42
Mockito.when(authorMapperMock.toAuthorDto(author)).thenReturn(authorDto);
44
AuthorDto result = authorService.get(AUTHOR_ID);
46
Mockito.verify(authorRepositoryMock).findById(AUTHOR_ID);
47
Mockito.verify(authorMapperMock).toAuthorDto(author);
48
assertThat(result, is(authorDto));
52
public void getAbsentAuthor() {
53
final Long AUTHOR_ID = 123L;
54
final Optional<Author> optionalAuthor = Optional.empty();
55
Mockito.when(authorRepositoryMock.findById(AUTHOR_ID)).thenReturn(optionalAuthor);
58
authorService.get(AUTHOR_ID);
60
fail("Exception should be thrown");
61
} catch (AuthorNotFoundException ex) {
62
Mockito.verify(authorRepositoryMock).findById(AUTHOR_ID);
68
final Author author = new Author();
69
final AuthorDto authorDto = new AuthorDto();
70
final Iterable<Author> authors = Arrays.asList(author);
71
final List<AuthorDto> authorDtoList = Arrays.asList(authorDto);
72
Mockito.when(authorRepositoryMock.findAll()).thenReturn(authors);
73
Mockito.when(authorMapperMock.toAuthorDto(author)).thenReturn(authorDto);
75
List<AuthorDto> result = authorService.getAll();
77
Mockito.verify(authorRepositoryMock).findAll();
78
Mockito.verify(authorMapperMock).toAuthorDto(author);
79
assertThat(result, is(authorDtoList));