package com.hubspot.dropwizard.guice;
import com.codahale.metrics.MetricRegistry;
import com.google.inject.Injector;
import com.hubspot.dropwizard.guice.objects.TestModule;
import com.squarespace.jersey2.guice.JerseyGuiceUtils;
import io.dropwizard.Configuration;
import io.dropwizard.jackson.Jackson;
import io.dropwizard.setup.Bootstrap;
import io.dropwizard.setup.Environment;
import org.glassfish.hk2.api.ServiceLocator;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import javax.servlet.ServletException;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
@RunWith(MockitoJUnitRunner.class)
public class GuiceBundleTest {
@Mock
Environment environment;
private GuiceBundle<Configuration> guiceBundle;
@After
public void tearDown() {
JerseyGuiceUtils.reset();
}
@Before
public void setUp() {
//given
environment = new Environment("test env", Jackson.newObjectMapper(), null, new MetricRegistry(), null);
guiceBundle = GuiceBundle.newBuilder()
.addModule(new TestModule())
.build();
Bootstrap bootstrap = mock(Bootstrap.class);
guiceBundle.initialize(bootstrap);
guiceBundle.run(new Configuration(), environment);
}
@Test
public void createsInjectorWhenInit() throws ServletException {
//then
Injector injector = guiceBundle.getInjector();
assertThat(injector).isNotNull();
}
@Test
public void serviceLocatorIsAvaliable () throws ServletException {
ServiceLocator serviceLocator = guiceBundle.getInjector().getInstance(ServiceLocator.class);
assertThat(serviceLocator).isNotNull();
}
}