void getFitnessData() { fitnessSessionDataList.clear(); view.showLoading(); DataReadRequest.Builder dataReadRequestBuilder = getDataReadRequestBuilder(); DataReadRequest dataReadRequest = dataReadRequestBuilder.build(); DataReadRequest dataReadRequestServer = dataReadRequestBuilder.enableServerQueries().build(); // First, request all data from the server. If there is an error (e.g. timeout), // switch to normal request disposable.add( rxFit.history().readBuckets(dataReadRequestServer) .doOnError(throwable -> { if(throwable instanceof StatusException && ((StatusException)throwable).getStatus().getStatusCode() == CommonStatusCodes.TIMEOUT) Log.e("MainActivity", "Timeout on server query request", throwable); }) .compose(RxFitOnExceptionResumeNext.with(rxFit.history().readBuckets(dataReadRequest))) .subscribeOn(Schedulers.computation()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(this::onBucketLoaded, this::onBucketLoadError, () -> view.onFitnessSessionDataLoaded(fitnessSessionDataList)) ); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = (RecyclerView) findViewById(R.id.rv_main); progressBar = (ProgressBar) findViewById(R.id.pb_main); recyclerView.setHasFixedSize(true); recyclerView.setLayoutManager(new LinearLayoutManager(this)); rxFit = new RxFit(this, new Api[] { Fitness.SESSIONS_API, Fitness.HISTORY_API }, new Scope[] { new Scope(Scopes.FITNESS_ACTIVITY_READ) }); rxFit.setDefaultTimeout(15, TimeUnit.SECONDS); presenter = new MainPresenter(rxFit); presenter.attachView(this); presenter.getFitnessData(); }
@Test public void Ble_ClaimDevice_BleDevice() throws Exception { ArgumentCaptor<BleClaimDeviceSingle> captor = ArgumentCaptor.forClass(BleClaimDeviceSingle.class); rxFit.ble().claimDevice(bleDevice); rxFit.ble().claimDevice(bleDevice, TIMEOUT_TIME, TIMEOUT_TIMEUNIT); PowerMockito.verifyStatic(times(2)); Single.create(captor.capture()); BleClaimDeviceSingle single = captor.getAllValues().get(0); assertEquals(bleDevice, single.bleDevice); assertNull(single.deviceAddress); assertNoTimeoutSet(single); single = captor.getAllValues().get(1); assertEquals(bleDevice, single.bleDevice); assertNull(single.deviceAddress); assertTimeoutSet(single); }
@Test public void resetDefaultTimeout() { rxFit.setDefaultTimeout(TIMEOUT_TIME, TIMEOUT_TIMEUNIT); rxFit.resetDefaultTimeout(); assertNull(rxFit.timeoutTime); assertNull(rxFit.timeoutUnit); }
@Test public void setTimeout() { rxFit.setDefaultTimeout(TIMEOUT_TIME, TIMEOUT_TIMEUNIT); assertEquals(TIMEOUT_TIME, (long) rxFit.timeoutTime); assertEquals(TIMEOUT_TIMEUNIT, rxFit.timeoutUnit); }
@CallSuper public void setup() throws Exception { when(ctx.getApplicationContext()).thenReturn(ctx); rxFit = new RxFit(ctx, new Api[] {Fitness.BLE_API}, new Scope[]{}); }
@Test public void Recording_Unsubscribe_Subscription() throws Exception { ArgumentCaptor<RecordingUnsubscribeSingle> captor = ArgumentCaptor.forClass(RecordingUnsubscribeSingle.class); final Subscription subscription = Mockito.mock(Subscription.class); rxFit.recording().unsubscribe(subscription); rxFit.recording().unsubscribe(subscription, TIMEOUT_TIME, TIMEOUT_TIMEUNIT); PowerMockito.verifyStatic(times(2)); Single.create(captor.capture()); RecordingUnsubscribeSingle single = captor.getAllValues().get(0); assertNull(single.dataType); assertNull(single.dataSource); assertEquals(subscription, single.subscription); assertNoTimeoutSet(single); single = captor.getAllValues().get(1); assertNull(single.dataType); assertNull(single.dataSource); assertEquals(subscription, single.subscription); assertTimeoutSet(single); }
@Test public void Config_DisableFit() throws Exception { ArgumentCaptor<ConfigDisableFitSingle> captor = ArgumentCaptor.forClass(ConfigDisableFitSingle.class); rxFit.config().disableFit(); rxFit.config().disableFit(TIMEOUT_TIME, TIMEOUT_TIMEUNIT); PowerMockito.verifyStatic(times(2)); Single.create(captor.capture()); ConfigDisableFitSingle single = captor.getAllValues().get(0); assertNoTimeoutSet(single); single = captor.getAllValues().get(1); assertTimeoutSet(single); }
@Test public void Goals_ReadCurrent() throws Exception { ArgumentCaptor<GoalsReadCurrentSingle> captor = ArgumentCaptor.forClass(GoalsReadCurrentSingle.class); final GoalsReadRequest request = Mockito.mock(GoalsReadRequest.class); rxFit.goals().readCurrent(request); rxFit.goals().readCurrent(request, TIMEOUT_TIME, TIMEOUT_TIMEUNIT); PowerMockito.verifyStatic(atLeast(2)); Single.create(captor.capture()); GoalsReadCurrentSingle single = captor.getAllValues().get(0); assertEquals(request, single.goalsReadRequest); assertNoTimeoutSet(single); single = captor.getAllValues().get(1); assertEquals(request, single.goalsReadRequest); assertTimeoutSet(single); }
@Test public void checkConnection() { final Observable<Void> observable = Observable.empty(); PowerMockito.mockStatic(Observable.class, invocation -> observable); ArgumentCaptor<CheckConnectionObservable> captor = ArgumentCaptor.forClass(CheckConnectionObservable.class); rxFit.checkConnection(); PowerMockito.verifyStatic(times(1)); Observable.create(captor.capture()); CheckConnectionObservable checkConnectionObservable = captor.getValue(); assertNotNull(checkConnectionObservable); }
@Test(expected = IllegalArgumentException.class) public void setTimeout_TimeUnitMissing() { rxFit.setDefaultTimeout(TIMEOUT_TIME, null); assertNull(rxFit.timeoutTime); assertNull(rxFit.timeoutUnit); }
@Test public void Recording_Subscribe_DataSource() throws Exception { ArgumentCaptor<RecordingSubscribeSingle> captor = ArgumentCaptor.forClass(RecordingSubscribeSingle.class); final DataSource dataSource = Mockito.mock(DataSource.class); rxFit.recording().subscribe(dataSource); rxFit.recording().subscribe(dataSource, TIMEOUT_TIME, TIMEOUT_TIMEUNIT); PowerMockito.verifyStatic(times(2)); Single.create(captor.capture()); RecordingSubscribeSingle single = captor.getAllValues().get(0); assertNull(single.dataType); assertEquals(dataSource, single.dataSource); assertNoTimeoutSet(single); single = captor.getAllValues().get(1); assertNull(single.dataType); assertEquals(dataSource, single.dataSource); assertTimeoutSet(single); }
@Test public void Config_CreateCustomDataType() throws Exception { ArgumentCaptor<ConfigCreateCustomDataTypeSingle> captor = ArgumentCaptor.forClass(ConfigCreateCustomDataTypeSingle.class); rxFit.config().createCustomDataType(dataTypeCreateRequest); rxFit.config().createCustomDataType(dataTypeCreateRequest, TIMEOUT_TIME, TIMEOUT_TIMEUNIT); PowerMockito.verifyStatic(times(2)); Single.create(captor.capture()); ConfigCreateCustomDataTypeSingle single = captor.getAllValues().get(0); assertEquals(dataTypeCreateRequest, single.dataTypeCreateRequest); assertNoTimeoutSet(single); single = captor.getAllValues().get(1); assertEquals(dataTypeCreateRequest, single.dataTypeCreateRequest); assertTimeoutSet(single); }
@Before public void setup() { MockitoAnnotations.initMocks(this); doReturn(history).when(rxFit).history(); mainPresenter = new MainPresenter(rxFit); mainPresenter.attachView(mainView); }
@Test public void Ble_ClaimDevice_DeviceAddress() throws Exception { ArgumentCaptor<BleClaimDeviceSingle> captor = ArgumentCaptor.forClass(BleClaimDeviceSingle.class); String deviceAddress = "deviceAddress"; rxFit.ble().claimDevice(deviceAddress); rxFit.ble().claimDevice(deviceAddress, TIMEOUT_TIME, TIMEOUT_TIMEUNIT); PowerMockito.verifyStatic(times(2)); Single.create(captor.capture()); BleClaimDeviceSingle single = captor.getAllValues().get(0); assertEquals(deviceAddress, single.deviceAddress); assertNoTimeoutSet(single); assertNull(single.bleDevice); single = captor.getAllValues().get(1); assertEquals(deviceAddress, single.deviceAddress); assertTimeoutSet(single); assertNull(single.bleDevice); }
@Test public void Recording_ListSubscriptions() throws Exception { ArgumentCaptor<RecordingListSubscriptionsSingle> captor = ArgumentCaptor.forClass(RecordingListSubscriptionsSingle.class); rxFit.recording().listSubscriptions(); rxFit.recording().listSubscriptions(TIMEOUT_TIME, TIMEOUT_TIMEUNIT); PowerMockito.verifyStatic(atLeast(2)); Single.create(captor.capture()); RecordingListSubscriptionsSingle single = captor.getAllValues().get(0); assertNull(single.dataType); assertNoTimeoutSet(single); single = captor.getAllValues().get(1); assertNull(single.dataType); assertTimeoutSet(single); }
@Test public void Config_ReadDataType() throws Exception { ArgumentCaptor<ConfigReadDataTypeSingle> captor = ArgumentCaptor.forClass(ConfigReadDataTypeSingle.class); final String dataTypeName = "name"; rxFit.config().readDataType(dataTypeName); rxFit.config().readDataType(dataTypeName, TIMEOUT_TIME, TIMEOUT_TIMEUNIT); PowerMockito.verifyStatic(times(2)); Single.create(captor.capture()); ConfigReadDataTypeSingle single = captor.getAllValues().get(0); assertEquals(dataTypeName, single.dataTypeName); assertNoTimeoutSet(single); single = captor.getAllValues().get(1); assertEquals(dataTypeName, single.dataTypeName); assertTimeoutSet(single); }
@Test public void History_InsertDataSet() throws Exception { ArgumentCaptor<HistoryInsertDataSingle> captor = ArgumentCaptor.forClass(HistoryInsertDataSingle.class); final DataSet dataSet = Mockito.mock(DataSet.class); rxFit.history().insert(dataSet); rxFit.history().insert(dataSet, TIMEOUT_TIME, TIMEOUT_TIMEUNIT); PowerMockito.verifyStatic(times(2)); Single.create(captor.capture()); HistoryInsertDataSingle single = captor.getAllValues().get(0); assertEquals(dataSet, single.dataSet); assertNoTimeoutSet(single); single = captor.getAllValues().get(1); assertEquals(dataSet, single.dataSet); assertTimeoutSet(single); }
@Test @SuppressWarnings("MissingPermission") public void Ble_Scan_DateTypes() throws Exception { ArgumentCaptor<BleScanObservable> captor = ArgumentCaptor.forClass(BleScanObservable.class); rxFit.ble().scan(dataTypes); rxFit.ble().scan(dataTypes, TIMEOUT_TIME, TIMEOUT_TIMEUNIT); PowerMockito.verifyStatic(times(2)); Observable.create(captor.capture()); BleScanObservable observable = captor.getAllValues().get(0); assertEquals(dataTypes, observable.dataTypes); assertNull(observable.stopTimeSecs); assertNoTimeoutSet(observable); observable = captor.getAllValues().get(1); assertEquals(dataTypes, observable.dataTypes); assertNull(observable.stopTimeSecs); assertTimeoutSet(observable); }
@Test public void Recording_Subscribe_DataType() throws Exception { ArgumentCaptor<RecordingSubscribeSingle> captor = ArgumentCaptor.forClass(RecordingSubscribeSingle.class); final DataType dataType = Mockito.mock(DataType.class); rxFit.recording().subscribe(dataType); rxFit.recording().subscribe(dataType, TIMEOUT_TIME, TIMEOUT_TIMEUNIT); PowerMockito.verifyStatic(times(2)); Single.create(captor.capture()); RecordingSubscribeSingle single = captor.getAllValues().get(0); assertEquals(dataType, single.dataType); assertNull(single.dataSource); assertNoTimeoutSet(single); single = captor.getAllValues().get(1); assertEquals(dataType, single.dataType); assertNull(single.dataSource); assertTimeoutSet(single); }