use of com.jakdor.labday.common.repository.ProjectRepository in project LabDayApp by jakdor.
the class ProjectRepositoryIntegrationTest method integrationUpdateTestScenario1.
/**
* {@link ProjectRepository} getUpdate() integration test scenario 1
* - local last update id doesn't match API id
* - get API last update id
* - get appData API response (successful)
* - check ProjectRepository after successful call
*/
@Test
public void integrationUpdateTestScenario1() throws Exception {
SharedPreferences sharedPreferences = targetContext.getSharedPreferences(targetContext.getString(R.string.pref_file_name), Context.MODE_PRIVATE);
sharedPreferences.edit().putString(targetContext.getString(R.string.pref_api_last_update_id), "0").commit();
Assert.assertEquals(projectRepository.getRepositoryState(), ProjectRepository.repositoryStates.INIT);
Assert.assertNull(projectRepository.getData());
projectRepository.setAccessToken(dummyToken);
Gson gson = new Gson();
AppData appData = gson.fromJson(readAssetFile(testContext, "api/app_data.json"), AppData.class);
TestObserver<RxResponse<AppData>> testObserver = projectRepository.getUpdate(dummyApiUrl, targetContext).subscribeOn(Schedulers.io()).doOnError(throwable -> Assert.fail()).test();
testObserver.assertSubscribed();
testObserver.awaitCount(1);
testObserver.assertNoErrors();
testObserver.assertValue(appDataRxResponse -> {
Assert.assertNotNull(appDataRxResponse);
Assert.assertNotNull(appDataRxResponse.data);
Assert.assertNull(appDataRxResponse.error);
Assert.assertEquals(RxStatus.SUCCESS, appDataRxResponse.status);
Assert.assertEquals(appData, appDataRxResponse.data);
Assert.assertEquals(appData.hashCode(), appDataRxResponse.data.hashCode());
Assert.assertEquals(projectRepository.getRepositoryState(), ProjectRepository.repositoryStates.READY);
Assert.assertNotNull(projectRepository.getData());
Assert.assertEquals(projectRepository.getData().data, appData);
LastUpdate expectedLastUpdate = gson.fromJson(readAssetFile(testContext, "api/last_update.json"), LastUpdate.class);
Assert.assertNotNull(expectedLastUpdate.getUpdatedAt());
Assert.assertEquals(new String(expectedLastUpdate.getUpdatedAt().toCharArray()), sharedPreferences.getString(targetContext.getString(R.string.pref_api_last_update_id), null));
return true;
});
testObserver.onComplete();
}
Aggregations