package by.istin.android.xcore.test;
import android.app.Application;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.DatabaseUtils;
import android.net.Uri;
import android.test.ApplicationTestCase;
import android.util.Log;
import by.istin.android.xcore.ContextHolder;
import by.istin.android.xcore.processor.impl.AbstractGsonBatchProcessor;
import by.istin.android.xcore.processor.impl.GsonContentValuesProcessor;
import by.istin.android.xcore.provider.IDBContentProviderSupport;
import by.istin.android.xcore.provider.ModelContract;
import by.istin.android.xcore.provider.impl.DBContentProviderFactory;
import by.istin.android.xcore.source.DataSourceRequest;
import by.istin.android.xcore.source.impl.http.HttpAndroidDataSource;
import by.istin.android.xcore.model.BigTestEntity;
import by.istin.android.xcore.model.BigTestSubEntity;
import by.istin.android.xcore.utils.CursorUtils;
import java.io.InputStream;
public class TestGsonProcessor extends ApplicationTestCase<Application> {
public TestGsonProcessor() {
super(Application.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
createApplication();
}
public void testObjectLoad() throws Exception {
ContextHolder.getInstance().setContext(getApplication());
IDBContentProviderSupport defaultDBContentProvider = DBContentProviderFactory.getDefaultDBContentProvider(getApplication(), BigTestEntity.class, BigTestSubEntity.class);
Uri testEntityUri = ModelContract.getUri(BigTestEntity.class);
defaultDBContentProvider.delete(testEntityUri, null, null);
Uri testSubEntity = ModelContract.getUri(BigTestSubEntity.class);
defaultDBContentProvider.delete(testSubEntity, null, null);
HttpAndroidDataSource httpAndroidDataSource = new HttpAndroidDataSource();
DataSourceRequest dataSourceRequest = new DataSourceRequest("https://dl.dropboxusercontent.com/u/16403954/xcore/json_object.json");
InputStream inputStream = httpAndroidDataSource.getSource(dataSourceRequest);
ContentValues contentValues = new GsonContentValuesProcessor(BigTestEntity.class).execute(dataSourceRequest, httpAndroidDataSource, inputStream);
inputStream.close();
Log.d("TestHttpDataSource", contentValues.toString());
}
public void testArrayLoadAndInsert() throws Exception {
ContextHolder.getInstance().setContext(getApplication());
HttpAndroidDataSource httpAndroidDataSource = new HttpAndroidDataSource();
DataSourceRequest dataSourceRequest = new DataSourceRequest("https://dl.dropboxusercontent.com/u/16403954/xcore/json_array_big.json");
InputStream inputStream = httpAndroidDataSource.getSource(dataSourceRequest);
IDBContentProviderSupport defaultDBContentProvider = DBContentProviderFactory.getDefaultDBContentProvider(getApplication(), BigTestEntity.class, BigTestSubEntity.class);
Uri testEntityUri = ModelContract.getUri(BigTestEntity.class);
defaultDBContentProvider.delete(testEntityUri, null, null);
Uri testSubEntity = ModelContract.getUri(BigTestSubEntity.class);
defaultDBContentProvider.delete(testSubEntity, null, null);
ContentValues[] contentValues = new AbstractGsonBatchProcessor<ContentValues[]>(BigTestEntity.class, ContentValues[].class, defaultDBContentProvider){
@Override
public String getAppServiceKey() {
return "test key";
}
}.execute(dataSourceRequest, httpAndroidDataSource, inputStream);
Cursor entityCursor = defaultDBContentProvider.query(testEntityUri, null, null, null, null);
DatabaseUtils.dumpCursor(entityCursor);
//assertEquals(entityCursor.getCount(), 4);
Cursor subEntityCursor = defaultDBContentProvider.query(testSubEntity, null, null, null, null);
DatabaseUtils.dumpCursor(subEntityCursor);
//assertEquals(subEntityCursor.getCount(), 16);
CursorUtils.close(entityCursor);
CursorUtils.close(subEntityCursor);
}
}