/**
*
*/
package org.minnal.validation.exception;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.testng.Assert.assertEquals;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import javax.validation.Path;
import javax.ws.rs.core.Response;
import org.minnal.validation.FieldError;
import org.testng.annotations.Test;
import com.google.common.collect.Sets;
/**
* @author ganeshs
*
*/
public class ConstraintViolationExceptionHandlerTest {
@Test
public void shouldHandleException() {
ConstraintViolation<?> violation = mock(ConstraintViolation.class);
Path path = mock(Path.class);
when(path.toString()).thenReturn("dummyField");
when(violation.getPropertyPath()).thenReturn(path);
when(violation.getMessage()).thenReturn("dummy message");
when(violation.getInvalidValue()).thenReturn("dummy");
ConstraintViolationException exception = new ConstraintViolationException(Sets.newHashSet(violation));
ConstraintViolationExceptionHandler handler = new ConstraintViolationExceptionHandler();
Response response = handler.toResponse(exception);
Map<String, List<FieldError>> message = new HashMap<String, List<FieldError>>();
message.put("fieldErrors", Arrays.asList(new FieldError("dummy_field", "dummy message", "dummy")));
assertEquals(response.getEntity(), message);
assertEquals(response.getStatus(), 422);
}
}