package org.jooby.spec;
import static org.junit.Assert.assertEquals;
import java.io.File;
import java.nio.file.Path;
import java.util.Optional;
import org.junit.Test;
import apps.FilterApp;
import apps.LocalType;
public class FilterAppTest extends RouteSpecTest {
private Path basedir = new File(System.getProperty("user.dir")).toPath();
@Test
public void shouldProcessFilters() throws Exception {
routes(new RouteProcessor().process(new FilterApp(), basedir))
.next(r -> {
assertEquals("GET", r.method());
assertEquals("/", r.pattern());
assertEquals("Home page.", r.doc().get());
assertEquals(Optional.empty(), r.summary());
params(r.params());
assertEquals(String.class, r.response().type());
assertEquals(Optional.empty(), r.response().doc());
})
.next(r -> {
assertEquals("GET", r.method());
assertEquals("/api/pets/:id", r.pattern());
assertEquals("Get a Pet by ID.", r.doc().get());
assertEquals("API pets.", r.summary().get());
params(r.params()).next(p -> {
assertEquals("id", p.name());
});
assertEquals(LocalType.class, r.response().type());
assertEquals(Optional.empty(), r.response().doc());
})
.next(r -> {
assertEquals("GET", r.method());
assertEquals("/api/pets", r.pattern());
assertEquals(Optional.empty(), r.doc());
assertEquals("API pets.", r.summary().get());
params(r.params()).next(p -> {
assertEquals("start", p.name());
}).next(p -> {
assertEquals("max", p.name());
});
assertEquals("java.util.List<apps.LocalType>", r.response().type().getTypeName());
assertEquals(Optional.empty(), r.response().doc());
})
.next(r -> {
assertEquals("POST", r.method());
assertEquals("/api/pets", r.pattern());
assertEquals(Optional.empty(), r.doc());
assertEquals("API pets.", r.summary().get());
params(r.params()).next(p -> {
assertEquals("<body>", p.name());
});
assertEquals(LocalType.class, r.response().type());
assertEquals(Optional.empty(), r.response().doc());
})
.next(r -> {
assertEquals("DELETE", r.method());
assertEquals("/api/pets/:id", r.pattern());
assertEquals(Optional.empty(), r.doc());
assertEquals("API pets.", r.summary().get());
params(r.params()).next(p -> {
assertEquals("id", p.name());
});
assertEquals(204, r.response().statusCode());
assertEquals(LocalType.class, r.response().type());
assertEquals(Optional.empty(), r.response().doc());
});
}
}