package org.jooby.js; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.isA; import java.util.Collections; import java.util.Optional; import org.jooby.Response; import org.jooby.Result; import org.jooby.internal.js.JsResponse; 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.common.collect.ImmutableMap; import jdk.nashorn.api.scripting.ScriptObjectMirror; @RunWith(PowerMockRunner.class) @PrepareForTest({JsResponse.class, ScriptObjectMirror.class, ImmutableMap.class }) public class JsResponseTest { @Test public void sendjsObject() throws Exception { ImmutableMap<String, Object> value = ImmutableMap.of(); new MockUnit(Response.class, ScriptObjectMirror.class) .expect(unit -> { Response rsp = unit.get(Response.class); expect(rsp.status()).andReturn(Optional.empty()); expect(rsp.type()).andReturn(Optional.empty()); rsp.send(isA(Result.class)); }) .expect(unit -> { ScriptObjectMirror mirror = unit.get(ScriptObjectMirror.class); expect(mirror.isArray()).andReturn(false); unit.mockStatic(ImmutableMap.class); expect(ImmutableMap.copyOf(mirror)).andReturn(value); }) .run(unit -> { new JsResponse(unit.get(Response.class)) .sendjs(unit.get(ScriptObjectMirror.class)); ; }); } @Test public void sendjsArray() throws Exception { new MockUnit(Response.class, ScriptObjectMirror.class) .expect(unit -> { Response rsp = unit.get(Response.class); expect(rsp.status()).andReturn(Optional.empty()); expect(rsp.type()).andReturn(Optional.empty()); rsp.send(isA(Result.class)); }) .expect(unit -> { ScriptObjectMirror mirror = unit.get(ScriptObjectMirror.class); expect(mirror.isArray()).andReturn(true); expect(mirror.entrySet()).andReturn(Collections.emptySet()); }) .run(unit -> { new JsResponse(unit.get(Response.class)) .sendjs(unit.get(ScriptObjectMirror.class)); ; }); } }