1
package by.andd3dfx.templateapp.validators;
3
import by.andd3dfx.templateapp.dto.ArticleUpdateDto;
4
import org.junit.jupiter.api.Test;
5
import org.junit.jupiter.api.extension.ExtendWith;
6
import org.mockito.InjectMocks;
7
import org.mockito.Mock;
8
import org.mockito.junit.jupiter.MockitoExtension;
10
import javax.validation.ConstraintValidatorContext;
12
import static org.hamcrest.CoreMatchers.is;
13
import static org.hamcrest.MatcherAssert.assertThat;
15
@ExtendWith(MockitoExtension.class)
16
class OnlyOneFieldModifiedValidatorTest {
19
private ConstraintValidatorContext contextMock;
22
private OnlyOneFieldModifiedValidator onlyOneFieldModifiedValidator;
25
void isValidWhenNoFieldsChanged() {
26
var articleUpdateDto = new ArticleUpdateDto();
28
assertThat(onlyOneFieldModifiedValidator.isValid(articleUpdateDto, contextMock), is(false));
32
void isValidWhenOneFieldChanged_ForTitle() {
33
var articleUpdateDto = ArticleUpdateDto.builder()
37
assertThat(onlyOneFieldModifiedValidator.isValid(articleUpdateDto, contextMock), is(true));
41
void isValidWhenOneFieldChanged_ForSummary() {
42
var articleUpdateDto = ArticleUpdateDto.builder()
43
.summary("Some Summary")
46
assertThat(onlyOneFieldModifiedValidator.isValid(articleUpdateDto, contextMock), is(true));
50
void isValidWhenOneFieldChanged_ForText() {
51
var articleUpdateDto = ArticleUpdateDto.builder()
55
assertThat(onlyOneFieldModifiedValidator.isValid(articleUpdateDto, contextMock), is(true));
59
void isValidWhenTwoFieldsChanged() {
60
var articleUpdateDto = ArticleUpdateDto.builder()
62
.summary("Some Summary")
65
assertThat(onlyOneFieldModifiedValidator.isValid(articleUpdateDto, contextMock), is(false));
69
void isValidWhenThreeFieldsChanged() {
70
var articleUpdateDto = ArticleUpdateDto.builder()
72
.summary("Some Summary")
76
assertThat(onlyOneFieldModifiedValidator.isValid(articleUpdateDto, contextMock), is(false));