package org.jooby;
import org.jooby.mvc.GET;
import org.jooby.mvc.Path;
import org.jooby.test.ServerFeature;
import org.junit.Test;
public class ImportRoutesFeature extends ServerFeature {
public static class Resource {
@Path("/r")
@GET
public String hey(final Request req) {
return req.path();
}
}
public static class A extends Jooby {
{
assets("/assets/**");
get("/a/1", req -> req.path());
}
}
public static class B extends Jooby {
{
get("/b/1", req -> req.path());
use(Resource.class);
}
}
public static class C extends Jooby {
{
get("/1", req -> req.path());
get("/2", req -> req.path());
use(Resource.class);
}
}
public static class D extends Jooby {
{
use("/routes")
.get("/1", req -> req.path())
.get("/2", req -> req.path());
}
}
{
use(new A());
use(new B());
use("/c", new C());
use("/d", new D());
get("/1", req -> req.path());
}
@Test
public void importedRoutes() throws Exception {
request()
.get("/assets/file.js")
.expect("function () {}\n");
request()
.get("/a/1")
.expect("/a/1");
request()
.get("/b/1")
.expect("/b/1");
request()
.get("/1")
.expect("/1");
request()
.get("/r")
.expect("/r");
request()
.get("/c/1")
.expect("/c/1");
request()
.get("/c/2")
.expect("/c/2");
request()
.get("/c/r")
.expect("/c/r");
request()
.get("/d/routes/1")
.expect("/d/routes/1");
request()
.get("/d/routes/2")
.expect("/d/routes/2");
}
}