package org.nightscout.lasso.test;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import net.tribe7.common.base.Function;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.nightscout.lasso.BuildConfig;
import org.robolectric.RobolectricGradleTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Shadows;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class)
public class RobolectricTestBase {
private final boolean[] intentSeen = {false};
@Before
public final void setUpBase() {
// NPEs happen when using Robolectric + GA for some reason. Disable them for now.
// https://github.com/robolectric/robolectric/issues/1075
getShadowApplication().declareActionUnbindable("com.google.android.gms.analytics.service.START");
// mockServices();
}
@Test
public void doSomething() {
}
// private void mockServices(){
// CollectorService.LocalBinder collectorBinder = Mockito.mock(CollectorService.LocalBinder.class);
// Mockito.when(collectorBinder.getService()).thenReturn(Mockito.mock(CollectorService.class));
// getShadowApplication().setComponentNameAndServiceForBindService(new ComponentName("com.nightscout.android", "CollectorService"), collectorBinder);
// ProcessorService.LocalBinder processorBinder = Mockito.mock(ProcessorService.LocalBinder.class);
// Mockito.when(processorBinder.getService()).thenReturn(Mockito.mock(ProcessorService.class));
// getShadowApplication().setComponentNameAndServiceForBindService(new ComponentName("com.nightscout.android", "ProcessorService"), collectorBinder);
// }
public void whenOnBroadcastReceived(String intentKey, final Function<Intent, Void> verifyCallback) {
getShadowApplication().registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
intentSeen[0] = true;
verifyCallback.apply(intent);
}
}, new IntentFilter(intentKey));
}
public void assertIntentSeen() {
assertThat(intentSeen[0], is(true));
}
public Context getContext() {
return getShadowApplication().getApplicationContext();
}
public ShadowApplication getShadowApplication() {
return Shadows.shadowOf(RuntimeEnvironment.application);
}
}