package me.moodcat.core.mappers; import static org.junit.Assert.assertEquals; import javax.ws.rs.core.Response; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.runners.MockitoJUnitRunner; @RunWith(MockitoJUnitRunner.class) public abstract class ExceptionMapperTest<T extends Throwable> { protected AbstractExceptionMapper<T> mapper; @Mock protected Throwable exception; protected ExceptionMapperTest(final AbstractExceptionMapper<T> mapper) { this.mapper = mapper; } @Test public void testGetStatusCode() throws Exception { assertEquals(mapper.getStatusCode(), this.getResponseStatus()); } protected abstract Response.Status getResponseStatus(); @Test public void testToResponse() throws Exception { final Response response = mapper.toResponse(exception); final AbstractExceptionMapper.ExceptionResponse responseEntity = (AbstractExceptionMapper.ExceptionResponse) response .getEntity(); assertEquals(responseEntity.getMessage(), exception.getMessage()); } @Test public void testToResponseMessage() throws Exception { final String message = "Test Message"; Mockito.when(exception.getMessage()).thenReturn(message); final Response response = mapper.toResponse(exception); final AbstractExceptionMapper.ExceptionResponse responseEntity = (AbstractExceptionMapper.ExceptionResponse) response .getEntity(); assertEquals(responseEntity.getMessage(), message); } }