package com.patloew.rxlocation; import android.support.v4.content.ContextCompat; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.api.Api; import com.google.android.gms.common.api.Scope; import com.google.android.gms.common.api.Status; import com.google.android.gms.location.ActivityRecognition; import com.google.android.gms.location.LocationServices; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.MockitoAnnotations; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareOnlyThisForTest; import org.powermock.modules.junit4.PowerMockRunner; import io.reactivex.BackpressureStrategy; import io.reactivex.Flowable; import io.reactivex.Observable; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; @RunWith(PowerMockRunner.class) @PrepareOnlyThisForTest({ Observable.class, ContextCompat.class, LocationServices.class, ActivityRecognition.class, Status.class, ConnectionResult.class, RxLocationBaseOnSubscribe.class }) public class RxLocationTest extends BaseOnSubscribeTest { @Before public void setup() throws Exception { MockitoAnnotations.initMocks(this); super.setup(); } // RxFit @Test public void setTimeout() { rxLocation.setDefaultTimeout(TIMEOUT_TIME, TIMEOUT_TIMEUNIT); assertEquals(TIMEOUT_TIME, (long) rxLocation.timeoutTime); assertEquals(TIMEOUT_TIMEUNIT, rxLocation.timeoutUnit); } @Test(expected = IllegalArgumentException.class) public void setTimeout_TimeUnitMissing() { rxLocation.setDefaultTimeout(TIMEOUT_TIME, null); assertNull(rxLocation.timeoutTime); assertNull(rxLocation.timeoutUnit); } @Test public void resetDefaultTimeout() { rxLocation.setDefaultTimeout(TIMEOUT_TIME, TIMEOUT_TIMEUNIT); rxLocation.resetDefaultTimeout(); assertNull(rxLocation.timeoutTime); assertNull(rxLocation.timeoutUnit); } // GoogleApiClientObservable @Test public void GoogleAPIClientObservable_Success() { GoogleApiClientFlowable single = PowerMockito.spy(new GoogleApiClientFlowable(ctx, new Api[]{}, new Scope[]{})); setupBaseFlowableSuccess(single); Flowable.create(single, BackpressureStrategy.LATEST).test().assertValue(apiClient); } @Test public void GoogleAPIClientObservable_ConnectionException() { final GoogleApiClientFlowable single = PowerMockito.spy(new GoogleApiClientFlowable(ctx, new Api[]{}, new Scope[]{})); setupBaseFlowableError(single); assertError(Flowable.create(single, BackpressureStrategy.LATEST).test(), GoogleApiConnectionException.class); } }