package co.smartreceipts.android.push.store; import android.content.SharedPreferences; import android.preference.PreferenceManager; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import io.reactivex.observers.TestObserver; import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertTrue; @RunWith(RobolectricTestRunner.class) public class PushDataStoreTest { // Class under test PushDataStore pushDataStore; SharedPreferences sharedPreferences; @Before public void setUp() { sharedPreferences = PreferenceManager.getDefaultSharedPreferences(RuntimeEnvironment.application); pushDataStore = new PushDataStore(sharedPreferences); } @After public void tearDown() { sharedPreferences.edit().clear().apply(); } @Test public void isRemoteRefreshRequiredDefaultsToTrue() throws Exception { assertTrue(pushDataStore.isRemoteRefreshRequired()); final TestObserver<Boolean> testObserver = pushDataStore.isRemoteRefreshRequiredSingle().test(); testObserver.onNext(true); testObserver.assertComplete() .assertNoErrors(); } @Test public void setRemoteRefreshRequired() throws Exception { pushDataStore.setRemoteRefreshRequired(false); assertFalse(pushDataStore.isRemoteRefreshRequired()); final TestObserver<Boolean> testObserver = pushDataStore.isRemoteRefreshRequiredSingle().test(); testObserver.onNext(false); testObserver.assertComplete() .assertNoErrors(); } }