use of com.jakdor.labday.common.model.AppData in project LabDayApp by jakdor.
the class NetworkManagerIntegrationTest method getAppDataTest.
/**
* {@link NetworkManager} integration test: get AppData from local REST API mock server,
* compere parsed response to AppData parsed directly from .json file
*/
@Test
public void getAppDataTest() throws Exception {
networkManager.configAuth(dummyApiUrl, dummyToken);
Gson gson = new Gson();
AppData appData = gson.fromJson(readAssetFile(testContext, "api/app_data.json"), AppData.class);
TestObserver<AppData> testObserver = networkManager.getAppData().test();
testObserver.awaitCount(1);
testObserver.assertSubscribed();
testObserver.assertNoErrors();
testObserver.assertValue(appData1 -> {
Assert.assertEquals(appData, appData1);
Assert.assertEquals(appData.hashCode(), appData1.hashCode());
return true;
});
testObserver.onComplete();
}
use of com.jakdor.labday.common.model.AppData in project LabDayApp by jakdor.
the class NetworkManagerIntegrationTest method getAppDataTokenTest.
/**
* {@link NetworkManager} integration test: same as getAppDataTest() but with token Authorization
*/
@Test
public void getAppDataTokenTest() throws Exception {
networkManager.configAuth(dummyApiUrl, dummyToken);
Gson gson = new Gson();
AppData appData = gson.fromJson(readAssetFile(testContext, "api/app_data.json"), AppData.class);
TestObserver<AppData> testObserver = networkManager.getAppData().test();
testObserver.awaitCount(1);
testObserver.assertSubscribed();
testObserver.assertNoErrors();
testObserver.assertValue(appData1 -> {
Assert.assertEquals(appData, appData1);
Assert.assertEquals(appData.hashCode(), appData1.hashCode());
return true;
});
testObserver.onComplete();
}
use of com.jakdor.labday.common.model.AppData 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.model.AppData 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.model.AppData 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