package org.jooby.internal.reqparam; import static org.junit.Assert.assertEquals; import java.util.HashMap; import java.util.Map; import java.util.Set; import org.jooby.Parser; import org.jooby.Upload; import org.jooby.internal.StatusCodeProvider; import org.jooby.internal.UploadParamReferenceImpl; import org.jooby.internal.parser.ParserExecutor; import org.jooby.test.MockUnit; import org.junit.Test; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import com.google.inject.Injector; import com.google.inject.TypeLiteral; import com.typesafe.config.ConfigFactory; public class ParserExecutorTest { @Test public void ifupload() throws Exception { new MockUnit(Injector.class, Upload.class) .run(unit -> { Set<Parser> parsers = Sets .newHashSet((Parser) (type, ctx) -> ctx.ifupload(up -> unit.get(Upload.class))); Object converted = new ParserExecutor(unit.get(Injector.class), parsers, new StatusCodeProvider(ConfigFactory.empty())) .convert(TypeLiteral.get(Upload.class), new UploadParamReferenceImpl("x", Lists.newArrayList())); assertEquals(unit.get(Upload.class), converted); }); } @Test public void params() throws Exception { new MockUnit(Injector.class) .run(unit -> { Set<Parser> parsers = Sets.newHashSet((Parser) (type, ctx) -> ctx.params(up -> "p")); Object converted = new ParserExecutor(unit.get(Injector.class), parsers, new StatusCodeProvider(ConfigFactory.empty())) .convert(TypeLiteral.get(Map.class), new HashMap<>()); assertEquals("p", converted); }); } @Test public void ctxStr() throws Exception { new MockUnit(Injector.class, Upload.class) .run(unit -> { Set<Parser> parsers = Sets .newHashSet((Parser) (type, ctx) -> ctx.toString()); Object converted = new ParserExecutor(unit.get(Injector.class), parsers, new StatusCodeProvider(ConfigFactory.empty())) .convert(TypeLiteral.get(Upload.class), new UploadParamReferenceImpl("x", Lists.newArrayList())); assertEquals(parsers.toString(), converted); }); } }