package org.jooby.json; import static org.easymock.EasyMock.expect; import static org.junit.Assert.assertEquals; import org.jooby.MediaType; import org.jooby.Renderer; import org.jooby.Renderer.Context; import org.jooby.test.MockUnit; import org.junit.Test; import org.junit.runner.RunWith; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import com.google.gson.Gson; @RunWith(PowerMockRunner.class) @PrepareForTest({GsonRenderer.class, Gson.class }) public class GsonRendererTest { @Test public void render() throws Exception { Object value = new GsonRendererTest(); new MockUnit(Gson.class, Renderer.Context.class) .expect(unit -> { Context ctx = unit.get(Renderer.Context.class); expect(ctx.accepts(MediaType.json)).andReturn(true); expect(ctx.type(MediaType.json)).andReturn(ctx); ctx.send("{}"); }) .expect(unit -> { Gson gson = unit.get(Gson.class); expect(gson.toJson(value)).andReturn("{}"); }) .run(unit -> { new GsonRenderer(MediaType.json, unit.get(Gson.class)) .render(value, unit.get(Renderer.Context.class)); }, unit -> { }); } @Test public void renderSkip() throws Exception { Object value = new GsonRendererTest(); new MockUnit(Gson.class, Renderer.Context.class) .expect(unit -> { Context ctx = unit.get(Renderer.Context.class); expect(ctx.accepts(MediaType.json)).andReturn(false); }) .run(unit -> { new GsonRenderer(MediaType.json, unit.get(Gson.class)) .render(value, unit.get(Renderer.Context.class)); }, unit -> { }); } @Test public void toStr() throws Exception { new MockUnit(Gson.class) .run(unit -> { assertEquals("json", new GsonRenderer(MediaType.json, unit.get(Gson.class)).toString()); }); } }