package by.istin.android.xcore.test.db; import android.app.Application; import android.content.ContentValues; import android.database.Cursor; import android.test.ApplicationTestCase; import by.istin.android.xcore.db.impl.DBHelper; import by.istin.android.xcore.db.IDBConnector; import by.istin.android.xcore.db.impl.sqlite.SQLiteSupport; import by.istin.android.xcore.model.BigTestEntity; import by.istin.android.xcore.model.BigTestSubEntity; import by.istin.android.xcore.utils.CursorUtils; public class TestDbHelper extends ApplicationTestCase<Application> { private DBHelper dbHelper; public TestDbHelper() { super(Application.class); } @Override protected void setUp() throws Exception { super.setUp(); createApplication(); IDBConnector connector = new SQLiteSupport().createConnector(getApplication()); dbHelper = new DBHelper(connector); } public void testInsert() throws Exception { ContentValues contentValues = MockStorage.generateSingleEntity(0); createAndClearTables(); dbHelper.updateOrInsert(BigTestEntity.class, contentValues); checkResults(1); } public void testDelete() throws Exception { testBulkInsert(); dbHelper.delete(BigTestEntity.class, null, null); dbHelper.delete(BigTestSubEntity.class, null, null); checkResults(0); } public void testDeleteWithCondition() throws Exception { testBulkInsert(); dbHelper.delete(BigTestEntity.class, BigTestEntity.ID + "= ?", new String[]{"0"}); dbHelper.delete(BigTestSubEntity.class, BigTestSubEntity.ID + "= ?", new String[]{"0"}); checkResults(MockStorage.SIZE-1); } public void testBulkInsert() throws Exception { ContentValues[] contentValues = MockStorage.generateArray(); createAndClearTables(); dbHelper.updateOrInsert(BigTestEntity.class, contentValues); checkResults(MockStorage.SIZE); } private void checkResults(int count) { Cursor cursor = dbHelper.query(BigTestSubEntity.class, new String[]{BigTestSubEntity.ID}, null, null, null, null, null, null); if (count == 0) { assertTrue(CursorUtils.isEmpty(cursor)); } else { assertEquals(count, cursor.getCount()); } CursorUtils.close(cursor); cursor = dbHelper.query(BigTestEntity.class, new String[]{BigTestEntity.ID}, null, null, null, null, null, null); if (count == 0) { assertTrue(CursorUtils.isEmpty(cursor)); } else { assertEquals(count, cursor.getCount()); } CursorUtils.close(cursor); } private void createAndClearTables() { dbHelper.createTablesForModels(BigTestSubEntity.class, BigTestEntity.class); dbHelper.delete(BigTestSubEntity.class, null, null); dbHelper.delete(BigTestEntity.class, null, null); } }