package com.hubspot.dropwizard.guice;
import com.google.inject.Injector;
import com.hubspot.dropwizard.guice.objects.ExplicitResource;
import com.hubspot.dropwizard.guice.objects.JitResource;
import com.hubspot.dropwizard.guice.objects.TestModule;
import com.squarespace.jersey2.guice.JerseyGuiceUtils;
import io.dropwizard.Application;
import io.dropwizard.Configuration;
import io.dropwizard.setup.Bootstrap;
import io.dropwizard.setup.Environment;
import org.glassfish.hk2.api.ServiceLocator;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import javax.servlet.ServletException;
import static org.assertj.core.api.Assertions.assertThat;
public class HK2LinkerTest {
private static Injector injector;
final ServiceLocator serviceLocator = injector.getInstance(ServiceLocator.class);
@BeforeClass
public static void setup() {
final GuiceBundle bundle = new GuiceBundle.Builder().addModule(new TestModule()).build();
bundle.initialize(new Bootstrap<Configuration>(new Application<Configuration>() {
@Override
public void run(Configuration configuration, Environment environment) throws Exception {
}
}));
injector = bundle.getInjector();
}
@AfterClass
public static void tearDown() {
JerseyGuiceUtils.reset();
}
@Test
public void explicitGuiceBindingsAreBridgedToHk2() throws ServletException {
// when
ExplicitResource resource = serviceLocator.createAndInitialize(ExplicitResource.class);
// then
assertThat(resource).isNotNull();
assertThat(resource.getDAO()).isNotNull();
}
@Test
public void jitGuiceBindingsAreBridgedToHk2() throws ServletException {
// when
JitResource resource = serviceLocator.createAndInitialize(JitResource.class);
// then
assertThat(resource).isNotNull();
assertThat(resource.getDAO()).isNotNull();
}
}