package org.jooby.internal;
import static org.easymock.EasyMock.expect;
import org.jooby.Request;
import org.jooby.Response;
import org.jooby.Route;
import org.jooby.test.MockUnit;
import org.junit.Test;
import javaslang.CheckedFunction2;
public class MappedHandlerTest {
@SuppressWarnings("unchecked")
@Test
public void shouldIgnoreClassCastExceptionWhileMapping() throws Exception {
Route.Mapper<Integer> m = value -> value.intValue() * 2;
String value = "1";
new MockUnit(CheckedFunction2.class, Request.class, Response.class, Route.Chain.class)
.expect(unit -> {
CheckedFunction2<Request, Response, Object> fn = unit.get(CheckedFunction2.class);
expect(fn.apply(unit.get(Request.class), unit.get(Response.class))).andReturn(value);
})
.expect(unit -> {
Route.Chain chain = unit.get(Route.Chain.class);
Request req = unit.get(Request.class);
Response rsp = unit.get(Response.class);
rsp.send(value);
chain.next(req, rsp);
})
.run(unit -> {
new MappedHandler(unit.get(CheckedFunction2.class), m)
.handle(unit.get(Request.class), unit.get(Response.class),
unit.get(Route.Chain.class));
});
}
}