use of com.jakdor.labday.common.repository.ProjectRepository in project LabDayApp by jakdor.
the class ProjectRepositoryIntegrationTest method setUp.
@Before
public void setUp() throws Exception {
targetContext = ApplicationProvider.getApplicationContext();
testContext = InstrumentationRegistry.getInstrumentation().getContext();
SoLoader.init(targetContext, false);
localDbHandler = new LocalDbHandler(Instrumentation.newApplication(TestApp.class, targetContext));
projectRepository = new ProjectRepository(new NetworkManager(new RetrofitBuilder()), localDbHandler, new RxSchedulersFacade());
}
use of com.jakdor.labday.common.repository.ProjectRepository in project LabDayApp by jakdor.
the class ProjectRepositoryIntegrationTest method integrationUpdateTestScenario2.
/**
* {@link ProjectRepository} getUpdate() integration test scenario 2
* - local last update id matches API id
* - get API last update id
* - load AppData from local db
* - check ProjectRepository after successful call/load
*/
@Test
public void integrationUpdateTestScenario2() throws Exception {
SharedPreferences sharedPreferences = targetContext.getSharedPreferences(targetContext.getString(R.string.pref_file_name), Context.MODE_PRIVATE);
Gson gson = new Gson();
LastUpdate expectedLastUpdate = gson.fromJson(readAssetFile(testContext, "api/last_update.json"), LastUpdate.class);
sharedPreferences.edit().putString(targetContext.getString(R.string.pref_api_last_update_id), expectedLastUpdate.getUpdatedAt()).commit();
Assert.assertEquals(projectRepository.getRepositoryState(), ProjectRepository.repositoryStates.INIT);
Assert.assertNull(projectRepository.getData());
projectRepository.setAccessToken(dummyToken);
AppData appData = gson.fromJson(readAssetFile(testContext, "api/app_data.json"), AppData.class);
localDbHandler.pushAppDataToDb(appData);
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_DB, appDataRxResponse.status);
Assert.assertEquals(appData, appDataRxResponse.data);
Assert.assertEquals(appData.hashCode(), appDataRxResponse.data.hashCode());
Assert.assertEquals(ProjectRepository.repositoryStates.READY, projectRepository.getRepositoryState());
Assert.assertNotNull(projectRepository.getData());
Assert.assertEquals(appData, projectRepository.getData().data);
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();
}
use of com.jakdor.labday.common.repository.ProjectRepository in project LabDayApp by jakdor.
the class ProjectRepositoryIntegrationTest method integrationLoginTestScenario1.
/**
* {@link ProjectRepository} login() api call
* - get accessToken after successful login
* - get AppData
* - check ProjectRepository after successful login/load
*/
@Test
public void integrationLoginTestScenario1() 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), "null").commit();
Assert.assertEquals(projectRepository.getRepositoryState(), ProjectRepository.repositoryStates.INIT);
Assert.assertNull(projectRepository.getData());
Gson gson = new Gson();
AppData appData = gson.fromJson(readAssetFile(testContext, "api/app_data.json"), AppData.class);
TestObserver<RxResponse<AppData>> testObserver = projectRepository.login(dummyApiUrl, targetContext, dummyLogin, dummyPassword).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));
Assert.assertTrue(projectRepository.isLoggedIn(targetContext));
return true;
});
testObserver.onComplete();
}
use of com.jakdor.labday.common.repository.ProjectRepository in project LabDayApp by jakdor.
the class ProjectRepositoryIntegrationTest method integrationUpdateTestScenario3.
/**
* {@link ProjectRepository} getUpdate() integration test scenario 3
* - get API last update id (failed)
* - load AppData from local db
* - check ProjectRepository after successful load
*/
@Test
public void integrationUpdateTestScenario3() throws Exception {
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);
localDbHandler.pushAppDataToDb(appData);
TestObserver<RxResponse<AppData>> testObserver = projectRepository.getUpdate(dummyApiBadUrl, 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_DB, appDataRxResponse.status);
Assert.assertEquals(appData, appDataRxResponse.data);
Assert.assertEquals(appData.hashCode(), appDataRxResponse.data.hashCode());
Assert.assertEquals(ProjectRepository.repositoryStates.READY, projectRepository.getRepositoryState());
Assert.assertNotNull(projectRepository.getData());
Assert.assertEquals(appData, projectRepository.getData().data);
return true;
});
testObserver.onComplete();
}
use of com.jakdor.labday.common.repository.ProjectRepository in project LabDayApp by jakdor.
the class ProjectRepositoryIntegrationTest method integrationDataTestScenario1.
/**
* {@link ProjectRepository} getAppData() / getData() integration test scenario 1
* - check init ProjectRepository state
* - get appData API response (successful)
* - check ProjectRepository after successful call
*/
@Test
public void integrationDataTestScenario1() throws Exception {
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.getAppData(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);
return true;
});
testObserver.onComplete();
}
Aggregations