package com.wesabe.grendel.representations.tests;
import static org.fest.assertions.Assertions.*;
import javax.ws.rs.core.Response;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.runners.Enclosed;
import org.junit.runner.RunWith;
import com.wesabe.grendel.representations.ValidationException;
@RunWith(Enclosed.class)
public class ValidationExceptionTest {
public static class Throwing_A_Validation_Exception {
private ValidationException e;
@Before
public void setup() throws Exception {
this.e = new ValidationException();
e.addReason("insufficient zazz");
e.addReason("over-familiar tone");
e.missingRequiredProperty("dingo");
}
@Test
public void itHasReasons() throws Exception {
assertThat(e.hasReasons()).isTrue();
}
@Test
public void itReturnsA422WithAnErrorMessage() throws Exception {
final Response r = e.getResponse();
assertThat(r.getStatus()).isEqualTo(422);
assertThat(r.getMetadata().get("Content-Type").contains("text/plain"));
assertThat(r.getEntity()).isEqualTo(
"Grendel was unable to process your request for the following reason(s):" +
"\n" +
"\n" +
"* insufficient zazz\n" +
"* over-familiar tone\n" +
"* missing required property: dingo\n"
);
}
}
}