package org.jooby.rocker;
import static org.easymock.EasyMock.expect;
import org.jooby.Env;
import org.jooby.Renderer;
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.inject.Binder;
import com.google.inject.binder.LinkedBindingBuilder;
import com.google.inject.multibindings.Multibinder;
import com.typesafe.config.Config;
@RunWith(PowerMockRunner.class)
@PrepareForTest({Rockerby.class, RockerRenderer.class, Multibinder.class })
public class RockerbyTest {
@SuppressWarnings({"rawtypes", "unchecked" })
@Test
public void newInstance() throws Exception {
new MockUnit(Env.class, Config.class, Binder.class)
.expect(unit -> {
RockerRenderer renderer = unit.constructor(RockerRenderer.class)
.build("", ".rocker.html");
Binder binder = unit.get(Binder.class);
unit.mockStatic(Multibinder.class);
Multibinder mb = unit.mock(Multibinder.class);
LinkedBindingBuilder lbb = unit.mock(LinkedBindingBuilder.class);
lbb.toInstance(renderer);
expect(mb.addBinding()).andReturn(lbb);
expect(Multibinder.newSetBinder(binder, Renderer.class)).andReturn(mb);
})
.run(unit -> {
new Rockerby().configure(unit.get(Env.class), unit.get(Config.class),
unit.get(Binder.class));
});
}
}