52 lines
2.3 KiB
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);
|
|
}
|
|
|
|
}
|