java-tutorials/javax-validation-advanced/src/test/java/com/baeldung/javaxval/StudentDeserializerWithValidationUnitTest.java

52 lines
2.3 KiB
Java

package com.baeldung.javaxval;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import java.io.IOException;
import java.io.InputStream;
import javax.validation.ConstraintViolationException;
import org.junit.jupiter.api.Test;
import com.baeldung.javaxval.afterdeserialization.Student;
import com.baeldung.javaxval.afterdeserialization.StudentDeserializerWithValidation;
public class StudentDeserializerWithValidationUnitTest {
private final String EXPECTED_ERROR_MESSAGE = "name: Student's name must be between 5 and 10 characters";
private final String EXPECTED_STUDENT_NAME = "Daniel";
private final String NAME_TOO_LONG_STUDENT_FILE = "nameTooLongStudent.json";
private final String NAME_TOO_SHORT_STUDENT_FILE = "nameTooShortStudent.json";
private final String SUBDIRECTORY = "afterdeserialization/";
private final String VALID_STUDENT_FILE = "validStudent.json";
@Test
void givenValidStudent_WhenReadStudent_ThenReturnStudent() throws IOException {
InputStream inputStream = getInputStream(VALID_STUDENT_FILE);
Student result = StudentDeserializerWithValidation.readStudent(inputStream);
assertEquals(EXPECTED_STUDENT_NAME, result.getName());
}
@Test
void givenStudentWithTooShortName_WhenReadStudent_ThenThrows() {
InputStream inputStream = getInputStream(NAME_TOO_SHORT_STUDENT_FILE);
ConstraintViolationException constraintViolationException = assertThrows(ConstraintViolationException.class, () -> StudentDeserializerWithValidation.readStudent(inputStream));
assertEquals(EXPECTED_ERROR_MESSAGE, constraintViolationException.getMessage());
}
@Test
void givenStudentWithTooLongName_WhenReadStudent_ThenThrows() {
InputStream inputStream = getInputStream(NAME_TOO_LONG_STUDENT_FILE);
ConstraintViolationException constraintViolationException = assertThrows(ConstraintViolationException.class, () -> StudentDeserializerWithValidation.readStudent(inputStream));
assertEquals(EXPECTED_ERROR_MESSAGE, constraintViolationException.getMessage());
}
private InputStream getInputStream(String fileName) {
return getClass().getClassLoader()
.getResourceAsStream(SUBDIRECTORY + fileName);
}
}