package co.smartreceipts.android.ocr.purchases;
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 org.junit.Assert.assertEquals;
@RunWith(RobolectricTestRunner.class)
public class LocalOcrScansTrackerTest {
// Class under test
LocalOcrScansTracker localOcrScansTracker;
SharedPreferences preferences;
@Before
public void setUp() {
preferences = PreferenceManager.getDefaultSharedPreferences(RuntimeEnvironment.application);
localOcrScansTracker = new LocalOcrScansTracker(preferences);
}
@After
public void tearDown() {
preferences.edit().clear().apply();
}
@Test
public void getRemainingScans() {
TestObserver<Integer> testObserver = localOcrScansTracker.getRemainingScansStream().test();
assertEquals(0, localOcrScansTracker.getRemainingScans());
testObserver.assertValues(0);
testObserver.assertNotComplete();
testObserver.assertNoErrors();
}
@Test
public void setRemainingScans() {
TestObserver<Integer> testObserver = localOcrScansTracker.getRemainingScansStream().test();
localOcrScansTracker.setRemainingScans(50);
assertEquals(50, localOcrScansTracker.getRemainingScans());
testObserver.assertValues(0, 50);
testObserver.assertNotComplete();
testObserver.assertNoErrors();
}
@Test
public void decrementRemainingScans() {
TestObserver<Integer> testObserver = localOcrScansTracker.getRemainingScansStream().test();
localOcrScansTracker.setRemainingScans(50);
localOcrScansTracker.decrementRemainingScans();
assertEquals(49, localOcrScansTracker.getRemainingScans());
testObserver.assertValues(0, 50, 49);
testObserver.assertNotComplete();
testObserver.assertNoErrors();
}
@Test
public void decrementRemainingDoesntGoNegative() {
TestObserver<Integer> testObserver = localOcrScansTracker.getRemainingScansStream().test();
localOcrScansTracker.decrementRemainingScans();
assertEquals(0, localOcrScansTracker.getRemainingScans());
testObserver.assertValues(0);
testObserver.assertNotComplete();
testObserver.assertNoErrors();
}
}