package com.f2prateek.rx.receivers; import android.app.Application; import android.content.Intent; import android.content.IntentFilter; import com.f2prateek.rx.receivers.RxBroadcastReceiver; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import rx.Subscription; import rx.observers.TestSubscriber; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.fail; @RunWith(RobolectricTestRunner.class) // public class RxBroadcastReceiverTest { @Test public void createWithNullThrows() { try { //noinspection ResourceType RxBroadcastReceiver.create(null, null); fail(); } catch (NullPointerException e) { assertThat(e).hasMessage("context == null"); } } @Test public void subscribe() { IntentFilter intentFilter = new IntentFilter("test_action"); Application application = RuntimeEnvironment.application; TestSubscriber<Intent> o = new TestSubscriber<>(); Subscription subscription = RxBroadcastReceiver.create(application, intentFilter).subscribe(o); o.assertValues(); Intent intent1 = new Intent("test_action").putExtra("foo", "bar"); application.sendBroadcast(intent1); o.assertValues(intent1); Intent intent2 = new Intent("test_action").putExtra("bar", "baz"); application.sendBroadcast(intent2); o.assertValues(intent1, intent2); Intent intent3 = new Intent("test_action_ignored"); application.sendBroadcast(intent3); o.assertValues(intent1, intent2); Intent intent4 = new Intent("test_action").putExtra("bar", "baz"); subscription.unsubscribe(); application.sendBroadcast(intent4); o.assertValues(intent1, intent2); } }