package com.codecademy.eventhub.integration; import com.google.inject.AbstractModule; import com.google.inject.Guice; import com.google.inject.Injector; import com.google.inject.Module; import com.google.inject.name.Names; import com.google.inject.util.Modules; import org.junit.Rule; import org.junit.rules.TemporaryFolder; import java.io.IOException; import java.util.Properties; public class GuiceTestCase { @Rule public TemporaryFolder folder = new TemporaryFolder(); protected Injector createInjectorFor(Properties properties, Module... modules) { return Guice.createInjector(Modules.override(modules).with(new ConfigModule(properties))); } protected String getTempDirectory() { try { return folder.newFolder("junit-test").getCanonicalPath() + "/"; } catch (IOException e) { throw new RuntimeException(e); } } private static class ConfigModule extends AbstractModule { private final Properties properties; private ConfigModule(Properties properties) { this.properties = properties; } @Override protected void configure() { Names.bindProperties(binder(), properties); } } }