package co.mwater.clientapp.test;
import java.util.UUID;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.test.AndroidTestCase;
import co.mwater.clientapp.dbsync.SyncChangesTable;
public class SyncTableTests extends AndroidTestCase {
TestSyncDatabase testSyncDatabase = new TestSyncDatabase();
SQLiteDatabase db;
@Override
public void setUp() throws Exception {
super.setUp();
db = testSyncDatabase.setUp(getContext());
}
@Override
public void tearDown() throws Exception {
super.tearDown();
testSyncDatabase.tearDown();
}
public void testInsertClient() {
String uid = UUID.randomUUID().toString();
testSyncDatabase.insert(uid, 0);
// Check that changes table contains single entry
Cursor cursor = db.query(SyncChangesTable.TABLE_NAME, null, null,
null, null, null, null);
assertEquals(1, cursor.getCount());
cursor.moveToFirst();
assertEquals(TestSyncTable.TABLE_NAME, cursor.getString(cursor
.getColumnIndex(SyncChangesTable.COLUMN_TABLENAME)));
assertEquals(uid, cursor.getString(cursor
.getColumnIndex(SyncChangesTable.COLUMN_ROWUID)));
assertEquals("I", cursor.getString(cursor
.getColumnIndex(SyncChangesTable.COLUMN_ACTION)));
cursor.deactivate();
}
public void testInsertServer() {
String uid = UUID.randomUUID().toString();
testSyncDatabase.insert(uid, 1);
// Check that changes table contains no entry
Cursor cursor = db.query(SyncChangesTable.TABLE_NAME, null, null,
null, null, null, null);
assertEquals(0, cursor.getCount());
cursor.deactivate();
}
public void testDeleteClient() {
String uid = UUID.randomUUID().toString();
testSyncDatabase.insert(uid, 0);
testSyncDatabase.delete(uid);
// Check that changes table contains single entry
Cursor cursor = db.query(SyncChangesTable.TABLE_NAME, null,
SyncChangesTable.COLUMN_ACTION + "=?",
new String[] { "D" }, null, null, null);
assertEquals(1, cursor.getCount());
cursor.moveToFirst();
assertEquals(TestSyncTable.TABLE_NAME, cursor.getString(cursor
.getColumnIndex(SyncChangesTable.COLUMN_TABLENAME)));
assertEquals(uid, cursor.getString(cursor
.getColumnIndex(SyncChangesTable.COLUMN_ROWUID)));
assertEquals("D", cursor.getString(cursor
.getColumnIndex(SyncChangesTable.COLUMN_ACTION)));
cursor.deactivate();
}
public void testDeleteServer() {
String uid = UUID.randomUUID().toString();
testSyncDatabase.insert(uid, 0);
testSyncDatabase.update(uid, "apple", -1);
testSyncDatabase.delete(uid);
// Check that changes table contains no entry
Cursor cursor = db.query(SyncChangesTable.TABLE_NAME, null,
SyncChangesTable.COLUMN_ACTION + "=?",
new String[] { "D" }, null, null, null);
assertEquals(0, cursor.getCount());
cursor.deactivate();
}
public void testUpdateClient() {
String uid = UUID.randomUUID().toString();
testSyncDatabase.insert(uid, 1);
testSyncDatabase.update(uid, "change", 1);
// Check that changes table contains single entry
Cursor cursor = db.query(SyncChangesTable.TABLE_NAME, null,
SyncChangesTable.COLUMN_ACTION + "=?",
new String[] { "U" }, null, null, null);
assertEquals(1, cursor.getCount());
cursor.moveToFirst();
assertEquals(TestSyncTable.TABLE_NAME, cursor.getString(cursor
.getColumnIndex(SyncChangesTable.COLUMN_TABLENAME)));
assertEquals(uid, cursor.getString(cursor
.getColumnIndex(SyncChangesTable.COLUMN_ROWUID)));
assertEquals("U", cursor.getString(cursor
.getColumnIndex(SyncChangesTable.COLUMN_ACTION)));
cursor.deactivate();
}
public void testUpdateServer() {
String uid = UUID.randomUUID().toString();
testSyncDatabase.insert(uid, 1);
testSyncDatabase.update(uid, "change", 2);
// Check that changes table contains single entry
Cursor cursor = db.query(SyncChangesTable.TABLE_NAME, null,
SyncChangesTable.COLUMN_ACTION + "=?",
new String[] { "U" }, null, null, null);
assertEquals(0, cursor.getCount());
cursor.deactivate();
}
}