package roboguice.service; import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertThat; import javax.inject.Inject; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import roboguice.RoboGuice; import roboguice.inject.InjectView; import com.google.inject.ConfigurationException; import android.content.Context; import android.content.Intent; import android.os.IBinder; import android.view.View; @RunWith(RobolectricTestRunner.class) public class ServiceInjectionTest { @Test public void shouldBeAbleToInjectInRoboService() { final RoboServiceA roboService = new RoboServiceA(); roboService.onCreate(); assertThat( roboService.context, equalTo((Context)roboService) ); } @Test public void shouldBeAbleToInjectInRoboIntentService() { final RoboIntentServiceA roboService = new RoboIntentServiceA(""); roboService.onCreate(); assertThat( roboService.context, equalTo((Context)roboService) ); } @Test(expected=ConfigurationException.class) public void shouldNotAllowViewsInServices() { final RoboServiceB roboService = new RoboServiceB(); roboService.onCreate(); } public static class RoboServiceA extends RoboService { @Inject Context context; @Override public IBinder onBind(Intent intent) { return null; } } public static class RoboIntentServiceA extends RoboIntentService { @Inject Context context; public RoboIntentServiceA(String name) { super(name); } @Override protected void onHandleIntent(Intent intent) { } } public static class RoboServiceB extends RoboService { @InjectView(100) View v; @Override public IBinder onBind(Intent intent) { return null; } } }