package co.smartreceipts.android.persistence.database.controllers.alterations; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import java.util.Arrays; import java.util.List; import io.reactivex.Completable; import static junit.framework.Assert.assertNotNull; @RunWith(RobolectricTestRunner.class) public class StubTableActionAlterationsTest { StubTableActionAlterations<Object> mStubTableActionAlterations; @Before public void setUp() throws Exception { mStubTableActionAlterations = new StubTableActionAlterations<>(); } @Test public void preGet() throws Exception { final Completable completable = mStubTableActionAlterations.preGet(); assertNotNull(completable); completable.test() .assertComplete() .assertNoErrors(); } @Test public void postGet() { final List<Object> objects = Arrays.asList(new Object(), new Object(), new Object()); mStubTableActionAlterations.postGet(objects) .test() .assertValue(objects) .assertComplete() .assertNoErrors(); } @Test public void preInsert() { final Object object = new Object(); mStubTableActionAlterations.preInsert(object) .test() .assertValue(object) .assertComplete() .assertNoErrors(); } @Test public void postInsert() { final Object object = new Object(); mStubTableActionAlterations.postInsert(object) .test() .assertValue(object) .assertComplete() .assertNoErrors(); } @Test public void postInsertNull() { mStubTableActionAlterations.postInsert(null) .test() .assertNoValues() .assertNotComplete() .assertError(Exception.class); } @Test public void preUpdate() { final Object oldObject = new Object(); final Object object = new Object(); mStubTableActionAlterations.preUpdate(oldObject, object) .test() .assertValue(object) .assertComplete() .assertNoErrors(); } @Test public void postUpdate() { final Object oldObject = new Object(); final Object object = new Object(); mStubTableActionAlterations.postUpdate(oldObject, object) .test() .assertValue(object) .assertComplete() .assertNoErrors(); } @Test public void postUpdateNull() { final Object oldObject = new Object(); mStubTableActionAlterations.postUpdate(oldObject, null) .test() .assertNoValues() .assertNotComplete() .assertError(Exception.class); } @Test public void preDelete() { final Object object = new Object(); mStubTableActionAlterations.preDelete(object) .test() .assertValue(object) .assertComplete() .assertNoErrors(); } @Test public void postDelete() { final Object object = new Object(); mStubTableActionAlterations.postDelete(object) .test() .assertValue(object) .assertComplete() .assertNoErrors(); } @Test public void postDeleteNull() { mStubTableActionAlterations.postDelete(null) .test() .assertNoValues() .assertNotComplete() .assertError(Exception.class); } }